gini-toolkit 6.0.1.dev0__tar.gz → 6.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gini_toolkit-6.1.0/.gitattributes +17 -0
- gini_toolkit-6.1.0/PKG-INFO +94 -0
- gini_toolkit-6.1.0/README.md +70 -0
- gini_toolkit-6.1.0/dist/gini_toolkit-6.0.0-py3-none-any.whl +0 -0
- gini_toolkit-6.1.0/dist/gini_toolkit-6.0.0.tar.gz +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/pyproject.toml +18 -3
- gini_toolkit-6.1.0/scripts/measure_reachability.py +617 -0
- gini_toolkit-6.1.0/src/_wtest.tmp +1 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/__main__.py +41 -15
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/_version.py +3 -3
- gini_toolkit-6.1.0/src/gini/agent/aop_selector.py +359 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/embed.py +1 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/mcp_server.py +3 -3
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/teaching_center.py +5 -4
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/tools/registry.py +24 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/__init__.py +2 -1
- gini_toolkit-6.1.0/src/gini/agent/twin/aop.py +194 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/xv6_pack.py +11 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/app/context.py +17 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/app/paths.py +17 -4
- gini_toolkit-6.1.0/src/gini/data/examples/mcast_tree.lua +158 -0
- gini_toolkit-6.1.0/src/gini/data/examples/multicast_fs/README.md +29 -0
- gini_toolkit-6.1.0/src/gini/data/examples/multicast_fs/multicast.c +104 -0
- gini_toolkit-6.1.0/src/gini/data/examples/multicast_fs/multicast.h +64 -0
- gini_toolkit-6.1.0/src/gini/data/examples/multicast_fs/receiver.c +107 -0
- gini_toolkit-6.1.0/src/gini/data/examples/multicast_fs/sender.c +134 -0
- gini_toolkit-6.1.0/src/gini/data/examples/rip_reference.lua +126 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/grouter.py +1 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/shuttle.py +56 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/xv6_bridge.py +50 -6
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/server/__main__.py +2 -2
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/server/auth.py +1 -1
- gini_toolkit-6.1.0/src/gini/services/aop_observer.py +187 -0
- gini_toolkit-6.1.0/src/gini/services/bootstrap.py +140 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/compiler.py +40 -10
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/gloader.py +8 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/orchestrator.py +352 -53
- gini_toolkit-6.1.0/src/gini/services/outbox.py +124 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/persistence.py +2 -2
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/probe_runner.py +102 -4
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/project.py +6 -6
- gini_toolkit-6.1.0/src/gini/services/proof_recorder.py +447 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/rider_runner.py +1 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/rider_session.py +1 -1
- gini_toolkit-6.1.0/src/gini/services/tc_submit.py +117 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/terminal.py +13 -0
- gini_toolkit-6.1.0/src/gini/services/ttyd_client.py +170 -0
- gini_toolkit-6.1.0/src/gini/services/ttyd_protocol.py +127 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/setup/cli.py +61 -7
- gini_toolkit-6.1.0/src/gini/setup/images.py +88 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/setup/marker.py +6 -3
- gini_toolkit-6.1.0/src/gini/ui/app.py +59 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assistant.py +9 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/canvas.py +135 -13
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/cpu_lab.py +67 -5
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/dashboard.py +54 -31
- gini_toolkit-6.1.0/src/gini/ui/first_run.py +135 -0
- gini_toolkit-6.1.0/src/gini/ui/flow_hud.py +242 -0
- gini_toolkit-6.1.0/src/gini/ui/glass.py +55 -0
- gini_toolkit-6.1.0/src/gini/ui/gui_dispatch.py +83 -0
- gini_toolkit-6.1.0/src/gini/ui/hud.py +218 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/inspector.py +17 -0
- gini_toolkit-6.1.0/src/gini/ui/lock_lab.py +222 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/machine_lab.py +239 -15
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/main_window.py +808 -54
- gini_toolkit-6.1.0/src/gini/ui/mcast_hud.py +236 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/memory_lab.py +73 -3
- gini_toolkit-6.1.0/src/gini/ui/os_hud.py +842 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/process_tree.py +10 -2
- gini_toolkit-6.1.0/src/gini/ui/proof_issue_dialog.py +125 -0
- gini_toolkit-6.1.0/src/gini/ui/proof_strip.py +336 -0
- gini_toolkit-6.1.0/src/gini/ui/proof_verify_dialog.py +150 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/router_lab.py +318 -22
- gini_toolkit-6.1.0/src/gini/ui/routing_hud.py +683 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/settings_dialog.py +51 -1
- gini_toolkit-6.1.0/src/gini/ui/source_browser.py +419 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/storage_lab.py +158 -9
- gini_toolkit-6.1.0/src/gini/ui/terminal_panel.py +279 -0
- gini_toolkit-6.1.0/src/gini/ui/terminal_view.py +494 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/theme/icons.py +8 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/theme/manager.py +46 -5
- gini_toolkit-6.1.0/src/gini_toolkit.egg-info/PKG-INFO +94 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini_toolkit.egg-info/SOURCES.txt +100 -88
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini_toolkit.egg-info/entry_points.txt +0 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini_toolkit.egg-info/requires.txt +3 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini_toolkit.egg-info/scm_file_list.json +101 -89
- gini_toolkit-6.1.0/src/gini_toolkit.egg-info/scm_version.json +8 -0
- gini_toolkit-6.1.0/tests/conftest.py +83 -0
- gini_toolkit-6.1.0/tests/test_aop_assemble.py +256 -0
- gini_toolkit-6.1.0/tests/test_aop_end_to_end.py +225 -0
- gini_toolkit-6.1.0/tests/test_aop_observer.py +288 -0
- gini_toolkit-6.1.0/tests/test_aop_report.py +258 -0
- gini_toolkit-6.1.0/tests/test_aop_schema.py +317 -0
- gini_toolkit-6.1.0/tests/test_aop_selector.py +220 -0
- gini_toolkit-6.1.0/tests/test_auth.py +183 -0
- gini_toolkit-6.1.0/tests/test_bootstrap.py +301 -0
- gini_toolkit-6.1.0/tests/test_canvas_dead_items.py +204 -0
- gini_toolkit-6.1.0/tests/test_compose_valid.py +152 -0
- gini_toolkit-6.1.0/tests/test_flows_dedupe.py +50 -0
- gini_toolkit-6.1.0/tests/test_grconsole_shell.py +137 -0
- gini_toolkit-6.1.0/tests/test_gui_dispatch.py +144 -0
- gini_toolkit-6.1.0/tests/test_kernel_board.py +324 -0
- gini_toolkit-6.1.0/tests/test_kernel_source.py +115 -0
- gini_toolkit-6.1.0/tests/test_lab_lifetime.py +131 -0
- gini_toolkit-6.1.0/tests/test_launch_args.py +148 -0
- gini_toolkit-6.1.0/tests/test_launchable.py +86 -0
- gini_toolkit-6.1.0/tests/test_long_press_guard.py +78 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_machine_lab.py +35 -2
- gini_toolkit-6.1.0/tests/test_machine_lab_concurrency.py +248 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_machine_state.py +72 -0
- gini_toolkit-6.1.0/tests/test_memwatch.py +67 -0
- gini_toolkit-6.1.0/tests/test_naming.py +85 -0
- gini_toolkit-6.1.0/tests/test_network_hud_glue.py +374 -0
- gini_toolkit-6.1.0/tests/test_network_hud_model.py +413 -0
- gini_toolkit-6.1.0/tests/test_os_events.py +136 -0
- gini_toolkit-6.1.0/tests/test_os_hud_paint.py +312 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ota_build4.py +9 -0
- gini_toolkit-6.1.0/tests/test_packaging.py +271 -0
- gini_toolkit-6.1.0/tests/test_proof_chain.py +275 -0
- gini_toolkit-6.1.0/tests/test_proof_events.py +468 -0
- gini_toolkit-6.1.0/tests/test_proof_narration.py +201 -0
- gini_toolkit-6.1.0/tests/test_quit_guard.py +101 -0
- gini_toolkit-6.1.0/tests/test_reach_strategy.py +161 -0
- gini_toolkit-6.1.0/tests/test_receipt_distinctness.py +76 -0
- gini_toolkit-6.1.0/tests/test_route_history.py +57 -0
- gini_toolkit-6.1.0/tests/test_router_lab_polling.py +137 -0
- gini_toolkit-6.1.0/tests/test_router_restart.py +84 -0
- gini_toolkit-6.1.0/tests/test_router_scripts.py +59 -0
- gini_toolkit-6.1.0/tests/test_routing_hud.py +340 -0
- gini_toolkit-6.1.0/tests/test_routing_model.py +184 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sdn_dashboard.py +59 -0
- gini_toolkit-6.1.0/tests/test_sleep_channels.py +136 -0
- gini_toolkit-6.1.0/tests/test_source_browser.py +162 -0
- gini_toolkit-6.1.0/tests/test_source_browser_modes.py +133 -0
- gini_toolkit-6.1.0/tests/test_station_quiet.py +87 -0
- gini_toolkit-6.1.0/tests/test_tc_activities.py +394 -0
- gini_toolkit-6.1.0/tests/test_tc_console_behaviour.py +248 -0
- gini_toolkit-6.1.0/tests/test_tc_console_js.py +71 -0
- gini_toolkit-6.1.0/tests/test_tc_handin.py +247 -0
- gini_toolkit-6.1.0/tests/test_tc_migration.py +229 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_tc_new_format.py +10 -13
- gini_toolkit-6.1.0/tests/test_tc_outbox.py +394 -0
- gini_toolkit-6.1.0/tests/test_tc_routes.py +935 -0
- gini_toolkit-6.1.0/tests/test_tc_tls.py +266 -0
- gini_toolkit-6.1.0/tests/test_terminal.py +37 -0
- gini_toolkit-6.1.0/tests/test_terminal_panel.py +269 -0
- gini_toolkit-6.1.0/tests/test_terminal_persistence.py +110 -0
- gini_toolkit-6.1.0/tests/test_terminal_selection.py +236 -0
- gini_toolkit-6.1.0/tests/test_terminal_view.py +254 -0
- gini_toolkit-6.1.0/tests/test_theme_scope.py +131 -0
- gini_toolkit-6.1.0/tests/test_ticket.py +106 -0
- gini_toolkit-6.1.0/tests/test_ttyd_launcher.py +118 -0
- gini_toolkit-6.1.0/tests/test_ttyd_protocol.py +101 -0
- gini_toolkit-6.1.0/tests/test_twin_aop.py +259 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ui_tweaks.py +26 -3
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_upload_build3.py +7 -0
- gini_toolkit-6.1.0/tests/test_walker_corridor.py +189 -0
- gini_toolkit-6.1.0/tests/test_webengine_startup.py +80 -0
- gini_toolkit-6.1.0/tests/test_worker_outlives_dialog.py +91 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6.py +56 -1
- gini_toolkit-6.1.0/tests/test_xv6_agent_serial.py +125 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_compile.py +1 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_fs.py +31 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_pack.py +17 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_patch.py +15 -4
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_vm.py +29 -2
- gini_toolkit-6.0.1.dev0/PKG-INFO +0 -77
- gini_toolkit-6.0.1.dev0/README.md +0 -56
- gini_toolkit-6.0.1.dev0/src/gini/__init__.py +0 -12
- gini_toolkit-6.0.1.dev0/src/gini/domain/__init__.py +0 -9
- gini_toolkit-6.0.1.dev0/src/gini/domain/assembly.py +0 -209
- gini_toolkit-6.0.1.dev0/src/gini/domain/authoring.py +0 -353
- gini_toolkit-6.0.1.dev0/src/gini/domain/blueprints.py +0 -5
- gini_toolkit-6.0.1.dev0/src/gini/domain/capabilities.py +0 -177
- gini_toolkit-6.0.1.dev0/src/gini/domain/catalog.py +0 -85
- gini_toolkit-6.0.1.dev0/src/gini/domain/certify.py +0 -201
- gini_toolkit-6.0.1.dev0/src/gini/domain/compose.py +0 -413
- gini_toolkit-6.0.1.dev0/src/gini/domain/composition.py +0 -88
- gini_toolkit-6.0.1.dev0/src/gini/domain/concepts.py +0 -383
- gini_toolkit-6.0.1.dev0/src/gini/domain/connection_rules.py +0 -269
- gini_toolkit-6.0.1.dev0/src/gini/domain/constraints.py +0 -153
- gini_toolkit-6.0.1.dev0/src/gini/domain/content.py +0 -59
- gini_toolkit-6.0.1.dev0/src/gini/domain/cpu_journey.py +0 -89
- gini_toolkit-6.0.1.dev0/src/gini/domain/devices.py +0 -747
- gini_toolkit-6.0.1.dev0/src/gini/domain/diagnose.py +0 -201
- gini_toolkit-6.0.1.dev0/src/gini/domain/element_guide.py +0 -327
- gini_toolkit-6.0.1.dev0/src/gini/domain/explain.py +0 -90
- gini_toolkit-6.0.1.dev0/src/gini/domain/fingerprint.py +0 -201
- gini_toolkit-6.0.1.dev0/src/gini/domain/firewall.py +0 -34
- gini_toolkit-6.0.1.dev0/src/gini/domain/flowlog.py +0 -61
- gini_toolkit-6.0.1.dev0/src/gini/domain/flowtable.py +0 -179
- gini_toolkit-6.0.1.dev0/src/gini/domain/fragment_yaml.py +0 -230
- gini_toolkit-6.0.1.dev0/src/gini/domain/fragments.py +0 -169
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/__init__.py +0 -2
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/paging_games.py +0 -119
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/policy_game.py +0 -86
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/process_game.py +0 -48
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/thrash_game.py +0 -75
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/translate_game.py +0 -60
- gini_toolkit-6.0.1.dev0/src/gini/domain/games/trap_game.py +0 -86
- gini_toolkit-6.0.1.dev0/src/gini/domain/grader.py +0 -155
- gini_toolkit-6.0.1.dev0/src/gini/domain/grouping.py +0 -67
- gini_toolkit-6.0.1.dev0/src/gini/domain/legality.py +0 -103
- gini_toolkit-6.0.1.dev0/src/gini/domain/lesson.py +0 -241
- gini_toolkit-6.0.1.dev0/src/gini/domain/lexicon.py +0 -150
- gini_toolkit-6.0.1.dev0/src/gini/domain/machine_state.py +0 -410
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/basic-lan.yaml +0 -32
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/cache-in-front.yaml +0 -23
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/decouple-with-queue.yaml +0 -31
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/drive-load.yaml +0 -20
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/fix-the-address.yaml +0 -75
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/fix-the-lan.yaml +0 -43
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/inspect-flows.yaml +0 -16
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/k8s-autoscale.yaml +0 -27
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/least-privilege.yaml +0 -21
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/load-balanced-web.yaml +0 -29
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/observe-it.yaml +0 -24
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/put-in-vpc.yaml +0 -30
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/reachability-boundary.yaml +0 -56
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/sdn-reactive.yaml +0 -35
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/send-request.yaml +0 -19
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/serverless-api.yaml +0 -25
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/networking/service-chain.yaml +0 -33
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/os/lottery-fix.yaml +0 -19
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions/os/priority-fix.yaml +0 -24
- gini_toolkit-6.0.1.dev0/src/gini/domain/missions.py +0 -111
- gini_toolkit-6.0.1.dev0/src/gini/domain/modulechain.py +0 -36
- gini_toolkit-6.0.1.dev0/src/gini/domain/objectives.py +0 -488
- gini_toolkit-6.0.1.dev0/src/gini/domain/os_zoo.py +0 -79
- gini_toolkit-6.0.1.dev0/src/gini/domain/paging_sim.py +0 -141
- gini_toolkit-6.0.1.dev0/src/gini/domain/pricing.py +0 -199
- gini_toolkit-6.0.1.dev0/src/gini/domain/probes.py +0 -226
- gini_toolkit-6.0.1.dev0/src/gini/domain/profile.py +0 -142
- gini_toolkit-6.0.1.dev0/src/gini/domain/recipes.py +0 -738
- gini_toolkit-6.0.1.dev0/src/gini/domain/riders.py +0 -309
- gini_toolkit-6.0.1.dev0/src/gini/domain/router_modules.py +0 -224
- gini_toolkit-6.0.1.dev0/src/gini/domain/routetable.py +0 -67
- gini_toolkit-6.0.1.dev0/src/gini/domain/scoring.py +0 -76
- gini_toolkit-6.0.1.dev0/src/gini/domain/staging.py +0 -122
- gini_toolkit-6.0.1.dev0/src/gini/domain/syscall_builder.py +0 -144
- gini_toolkit-6.0.1.dev0/src/gini/domain/topic_cloud.py +0 -62
- gini_toolkit-6.0.1.dev0/src/gini/domain/topology.py +0 -213
- gini_toolkit-6.0.1.dev0/src/gini/domain/vocabulary.py +0 -51
- gini_toolkit-6.0.1.dev0/src/gini/domain/xv6.py +0 -808
- gini_toolkit-6.0.1.dev0/src/gini/domain/xv6_fs.py +0 -250
- gini_toolkit-6.0.1.dev0/src/gini/domain/xv6_runner.py +0 -113
- gini_toolkit-6.0.1.dev0/src/gini/domain/xv6_vm.py +0 -385
- gini_toolkit-6.0.1.dev0/src/gini/setup/images.py +0 -33
- gini_toolkit-6.0.1.dev0/src/gini_toolkit.egg-info/PKG-INFO +0 -77
- gini_toolkit-6.0.1.dev0/src/gini_toolkit.egg-info/scm_version.json +0 -8
- gini_toolkit-6.0.1.dev0/tests/conftest.py +0 -39
- gini_toolkit-6.0.1.dev0/tests/test_approval_build5.py +0 -145
- gini_toolkit-6.0.1.dev0/tests/test_auth.py +0 -233
- gini_toolkit-6.0.1.dev0/tests/test_auth_server.py +0 -129
- gini_toolkit-6.0.1.dev0/tests/test_naming.py +0 -37
- gini_toolkit-6.0.1.dev0/tests/test_photo.py +0 -68
- gini_toolkit-6.0.1.dev0/tests/test_profai.py +0 -212
- gini_toolkit-6.0.1.dev0/tests/test_social.py +0 -146
- gini_toolkit-6.0.1.dev0/tests/test_social_server.py +0 -172
- gini_toolkit-6.0.1.dev0/tests/test_store_features.py +0 -172
- gini_toolkit-6.0.1.dev0/tests/test_tc_delete.py +0 -74
- gini_toolkit-6.0.1.dev0/token.txt +0 -1
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/scripts/build_kb_index.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/scripts/gen_cue_shots.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/scripts/image_report.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/scripts/probe_doctor.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/scripts/server_smoke.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/scripts/validate_lesson.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/setup.cfg +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/agent_gamemaster.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/api.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/ask.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/authoring.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/blackboard.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/contracts.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/domains.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/gamemaster.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/kb.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/lesson_resolver.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/llm/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/llm/backend.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/llm/fake.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/llm/ollama.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/loop.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/meaning.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/mission.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/mission_controller.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/narration.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/notifier.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/personas.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/reasoning.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/recall.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/session.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/tools/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/authoring.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/contracts.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/dialectic.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/harness.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/justify.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/learner.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/mission.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/os_coach.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/twin/salience.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/understand.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/verifiers.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/agent/wizard.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/app/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/data/README.md +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/gloader.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/cloudfabric_agent.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/console.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/control.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/frame.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/gbridge.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/hostsim.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/switch.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/runtime/transport.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/server/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/server/app.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/server/policy.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/server/session.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/boardflash.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/boardsetup.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/cloud_catalog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/discovery.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/remote.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/services/shadow_store.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/setup/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/setup/runtime.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/app_icon.icns +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/app_icon.ico +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/app_icon.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/app_icon_1024.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/_w.txt +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ai.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/canvas.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/cloud.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/cost.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/ai.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/canvas.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/cloud.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/cost.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/metrics.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/router.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/run.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/serverless.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/settings.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/welcome.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/dark/wizard.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/ai.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/canvas.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/cloud.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/cost.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/metrics.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/router.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/run.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/serverless.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/settings.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/welcome.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/ginibrand/wizard.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/ai.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/canvas.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/cloud.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/cost.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/metrics.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/router.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/run.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/serverless.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/settings.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/welcome.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/highcontrast/wizard.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/ai.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/canvas.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/cloud.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/cost.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/metrics.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/router.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/run.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/serverless.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/settings.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/welcome.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/light/wizard.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/metrics.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/router.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/run.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/serverless.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/settings.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/welcome.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/assets/cue/wizard.png +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/author_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/board_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/branding.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/chat_panel.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/cpu_journey.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/cue_cards.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/diagnose_game.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/fingerprint_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/flash_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/flow_layout.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/fragment_manager.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/game_catalog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/game_renderers.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/games_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/live_metrics.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/mission_panel.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/mode_indicator.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/palette.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/peripherals.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/reset_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/run_button.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/signin_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/syscall_builder.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/syscall_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/theme/__init__.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/theme/tokens.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/trap_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/worker_host.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini/ui/zoo_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini_toolkit.egg-info/dependency_links.txt +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/src/gini_toolkit.egg-info/top_level.txt +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_addressing.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_agent.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_agent_integration.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_agent_loop.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ai_context.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ask.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ask_gini.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ask_pipeline.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_assembly.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_assistant_explain_routing.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_assistant_menu.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_authoring.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_authoring_build2.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_autobuild_setting.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_blackboard.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_blueprints.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_board_carry.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_board_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_board_liveness.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_boardflash.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_boardsetup.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_canvas_connect.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_catalog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_certify.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_chat_panel.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_cloud.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_cloud_fabric.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_compose.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_composer.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_composition.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_connect_gesture.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_connection_rules.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_console_routing.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_constraints.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_content_and_forks.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_contract.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_control.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_cpu_journey.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_cpu_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_cue_cards.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_delete.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_desktop.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_diagnose.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_diagnose_game.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_discovery.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_domain.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_domains.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_embed.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_experiments.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_explain.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_faas_authoring.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_faces.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_fingerprint.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_fingerprint_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_flash_dialog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_flowlog.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_flowtable.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_fragment_ports.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_fragment_terminals.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_fragment_yaml.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_gamemaster.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_gini32.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_gloader.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_gradebook_official.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_grader.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_grounding_stance.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_grouping.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_guided_missions.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_hub.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_integration.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_k8s.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_kata.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_kb.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_kb_index_sync.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_knowledge.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_legality.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_lesson.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_lesson_resolver.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_lexicon.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_live_metrics.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_loadgen_proxy.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_loop_visible.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_m2_behavioral.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_m7_polish.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_machine_toolkit.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_meaning.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_memory_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_mission.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_mission_controller.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_mission_panel.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_missions.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_missions_entry.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_missions_mode.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_name_independence.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_narration.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_nfv.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_no_vacuous_objectives.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_notifier.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_objectives.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_ollama_thinking.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_orchestrator_switch.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_os_zoo.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_oszoo_compile.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_paging.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_paging_games.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_palette_taxonomy.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_peripherals_wiring.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_persistence.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_policy_game.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_present.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_pricing.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_probes.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_process_tree.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_profile.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_projects.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_rank_spot.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_reasoning.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_recall.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_recipes.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_recorder.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_remote.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_remote_gui.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_rider_session.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_riders.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_router_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_routetable.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_scaffold.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_scoring.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sdn.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sdn_orchestrator.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_secgroup.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_server.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_serverless.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_session.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_settings.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_setup.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sfc_chain.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sfc_ui.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_shadow_store.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sizing.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_slots.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sources_sinks.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_sources_sinks_ui.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_staging.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_stars.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_storage_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_syscall_builder.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_syscall_builder_ui.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_tap_offload.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_teaching_center.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_themes_runbutton.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_topic_cloud.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_topic_cloud_ui.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_trap_fault_game.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_trap_lab.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_tutor.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_twin.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_twin_surfaces.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_understand.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_unified_chat.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_user_pill.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_validate.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_vnf.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_vpc.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_vpc_canvas.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_wizard.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_wizard_engine.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xray.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_agent.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_bridge.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_modes.py +0 -0
- {gini_toolkit-6.0.1.dev0 → gini_toolkit-6.1.0}/tests/test_xv6_runner.py +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Line endings. Much of this tree is copied into Linux containers at Run time (the
|
|
2
|
+
# dataplane/ modules, generated Dockerfiles and shell scripts), so keep LF everywhere even
|
|
3
|
+
# when cloned on Windows (git's core.autocrlf=true default would rewrite them to CRLF).
|
|
4
|
+
* text=auto eol=lf
|
|
5
|
+
|
|
6
|
+
*.py text eol=lf
|
|
7
|
+
*.sh text eol=lf
|
|
8
|
+
Dockerfile* text eol=lf
|
|
9
|
+
*.yml text eol=lf
|
|
10
|
+
*.yaml text eol=lf
|
|
11
|
+
*.lua text eol=lf
|
|
12
|
+
|
|
13
|
+
*.png binary
|
|
14
|
+
*.ico binary
|
|
15
|
+
*.icns binary
|
|
16
|
+
*.gz binary
|
|
17
|
+
*.zip binary
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: gini-toolkit
|
|
3
|
+
Version: 6.1.0
|
|
4
|
+
Summary: GINI gBuilder — next-generation topology builder for computer networks and cloud computing experimentation
|
|
5
|
+
Author: GINI Toolkit
|
|
6
|
+
License: GPL-3.0-or-later
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: gini-core
|
|
10
|
+
Requires-Dist: PySide6-Essentials>=6.6
|
|
11
|
+
Requires-Dist: PySide6-Addons>=6.6
|
|
12
|
+
Requires-Dist: PyYAML>=6.0
|
|
13
|
+
Requires-Dist: pyte>=0.8
|
|
14
|
+
Provides-Extra: agent
|
|
15
|
+
Requires-Dist: mcp>=1.0; extra == "agent"
|
|
16
|
+
Provides-Extra: graph
|
|
17
|
+
Requires-Dist: matplotlib>=3.7; extra == "graph"
|
|
18
|
+
Requires-Dist: numpy>=1.24; extra == "graph"
|
|
19
|
+
Provides-Extra: dev
|
|
20
|
+
Requires-Dist: pytest>=7; extra == "dev"
|
|
21
|
+
Requires-Dist: pytest-qt>=4; extra == "dev"
|
|
22
|
+
Requires-Dist: ruff>=0.4; extra == "dev"
|
|
23
|
+
Requires-Dist: mypy>=1.8; extra == "dev"
|
|
24
|
+
|
|
25
|
+
# gini-toolkit — gBuilder
|
|
26
|
+
|
|
27
|
+
The GINI desktop app: a visual builder and live runtime for **computer networking** and **cloud
|
|
28
|
+
computing** experiments, with an AI layer that can build, inspect and explain topologies.
|
|
29
|
+
|
|
30
|
+
Drag routers, switches, machines, VPCs and Kubernetes elements onto a canvas, press **Run**, and
|
|
31
|
+
they come up as real containers you can open a shell into.
|
|
32
|
+
|
|
33
|
+
## Install
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pipx install gini-toolkit # `pip install gini-toolkit` works too
|
|
37
|
+
gbuilder
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
PySide6 and QtWebEngine come with it. **There is no setup command to run** — gBuilder checks what
|
|
41
|
+
the machine needs the first time it launches and offers to install the container runtime and pull
|
|
42
|
+
the images. Demo mode works before any of that exists, so the app is useful the moment it opens.
|
|
43
|
+
|
|
44
|
+
Requires Python 3.10+ and, for live Run, a container runtime (Docker, Colima or Podman).
|
|
45
|
+
|
|
46
|
+
## What you get
|
|
47
|
+
|
|
48
|
+
- **Canvas and palette** — networking elements (routers, switches, OVS, machines, taps) alongside
|
|
49
|
+
cloud ones (VPCs, subnets, load balancers, Kubernetes pods, serverless functions).
|
|
50
|
+
- **Live Run** — each element is a real container. Double-click a machine for a shell, a router for
|
|
51
|
+
the **Router Lab**, a service for its web dashboard.
|
|
52
|
+
- **SDN and NFV** — a real OpenFlow data plane with a POX controller, and a flow-table view of what
|
|
53
|
+
the switch is actually doing.
|
|
54
|
+
- **xv6** — boot and modify a real RISC-V teaching kernel from inside a topology.
|
|
55
|
+
- **Ask GINI** — an assistant grounded in the topology on your canvas. Better with a local
|
|
56
|
+
[Ollama](https://ollama.com) model; the deterministic modes work without one.
|
|
57
|
+
- **Proof of work** — record a lab session as a tamper-evident chain and hand in a receipt, for
|
|
58
|
+
courses using the GINI Teaching Center.
|
|
59
|
+
|
|
60
|
+
## From source
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git clone https://github.com/citelab/gini && cd gini
|
|
64
|
+
./scripts/dev.sh install # editable installs of gini-core, gini-toolkit, gini-teaching-center
|
|
65
|
+
gbuilder
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use the script rather than `pip install -e ./frontend-ng` on its own: `gini` is a **namespace**
|
|
69
|
+
package split across `gini-core` (the domain model and proof format) and this distribution, and
|
|
70
|
+
installing one alone leaves half the tree unimportable — with an error that names a missing module
|
|
71
|
+
rather than a missing install.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
QT_QPA_PLATFORM=offscreen python -m gini --selftest # headless smoke test
|
|
75
|
+
./scripts/dev.sh test # the suite
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Layout
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
src/gini/
|
|
82
|
+
__main__.py the `gbuilder` entrypoint
|
|
83
|
+
ui/ canvas, palette, inspector, labs, theme system
|
|
84
|
+
services/ persistence, runtime, Teaching Center client, outbox
|
|
85
|
+
runtime/ container orchestration
|
|
86
|
+
agent/ programmatic API + MCP server, so external agents can drive GINI
|
|
87
|
+
setup/ first-run bootstrap (runtime detection, image pulls)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The domain model lives in the separate `gini-core` distribution, under `gini.domain`.
|
|
91
|
+
|
|
92
|
+
## License & links
|
|
93
|
+
|
|
94
|
+
Part of the GINI project — https://github.com/citelab/gini
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# gini-toolkit — gBuilder
|
|
2
|
+
|
|
3
|
+
The GINI desktop app: a visual builder and live runtime for **computer networking** and **cloud
|
|
4
|
+
computing** experiments, with an AI layer that can build, inspect and explain topologies.
|
|
5
|
+
|
|
6
|
+
Drag routers, switches, machines, VPCs and Kubernetes elements onto a canvas, press **Run**, and
|
|
7
|
+
they come up as real containers you can open a shell into.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pipx install gini-toolkit # `pip install gini-toolkit` works too
|
|
13
|
+
gbuilder
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
PySide6 and QtWebEngine come with it. **There is no setup command to run** — gBuilder checks what
|
|
17
|
+
the machine needs the first time it launches and offers to install the container runtime and pull
|
|
18
|
+
the images. Demo mode works before any of that exists, so the app is useful the moment it opens.
|
|
19
|
+
|
|
20
|
+
Requires Python 3.10+ and, for live Run, a container runtime (Docker, Colima or Podman).
|
|
21
|
+
|
|
22
|
+
## What you get
|
|
23
|
+
|
|
24
|
+
- **Canvas and palette** — networking elements (routers, switches, OVS, machines, taps) alongside
|
|
25
|
+
cloud ones (VPCs, subnets, load balancers, Kubernetes pods, serverless functions).
|
|
26
|
+
- **Live Run** — each element is a real container. Double-click a machine for a shell, a router for
|
|
27
|
+
the **Router Lab**, a service for its web dashboard.
|
|
28
|
+
- **SDN and NFV** — a real OpenFlow data plane with a POX controller, and a flow-table view of what
|
|
29
|
+
the switch is actually doing.
|
|
30
|
+
- **xv6** — boot and modify a real RISC-V teaching kernel from inside a topology.
|
|
31
|
+
- **Ask GINI** — an assistant grounded in the topology on your canvas. Better with a local
|
|
32
|
+
[Ollama](https://ollama.com) model; the deterministic modes work without one.
|
|
33
|
+
- **Proof of work** — record a lab session as a tamper-evident chain and hand in a receipt, for
|
|
34
|
+
courses using the GINI Teaching Center.
|
|
35
|
+
|
|
36
|
+
## From source
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/citelab/gini && cd gini
|
|
40
|
+
./scripts/dev.sh install # editable installs of gini-core, gini-toolkit, gini-teaching-center
|
|
41
|
+
gbuilder
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Use the script rather than `pip install -e ./frontend-ng` on its own: `gini` is a **namespace**
|
|
45
|
+
package split across `gini-core` (the domain model and proof format) and this distribution, and
|
|
46
|
+
installing one alone leaves half the tree unimportable — with an error that names a missing module
|
|
47
|
+
rather than a missing install.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
QT_QPA_PLATFORM=offscreen python -m gini --selftest # headless smoke test
|
|
51
|
+
./scripts/dev.sh test # the suite
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Layout
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
src/gini/
|
|
58
|
+
__main__.py the `gbuilder` entrypoint
|
|
59
|
+
ui/ canvas, palette, inspector, labs, theme system
|
|
60
|
+
services/ persistence, runtime, Teaching Center client, outbox
|
|
61
|
+
runtime/ container orchestration
|
|
62
|
+
agent/ programmatic API + MCP server, so external agents can drive GINI
|
|
63
|
+
setup/ first-run bootstrap (runtime detection, image pulls)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The domain model lives in the separate `gini-core` distribution, under `gini.domain`.
|
|
67
|
+
|
|
68
|
+
## License & links
|
|
69
|
+
|
|
70
|
+
Part of the GINI project — https://github.com/citelab/gini
|
|
Binary file
|
|
Binary file
|
|
@@ -11,10 +11,21 @@ requires-python = ">=3.10"
|
|
|
11
11
|
license = { text = "GPL-3.0-or-later" }
|
|
12
12
|
authors = [{ name = "GINI Toolkit" }]
|
|
13
13
|
# `pip install gini-toolkit` gives a runnable desktop app: engine + the PySide6/Qt GUI. The
|
|
14
|
-
# container runtime (Docker/Colima) and images are
|
|
14
|
+
# container runtime (Docker/Colima) and images are NOT pip-installable — gBuilder detects what is
|
|
15
|
+
# missing at launch and offers to bring them in (gini/services/bootstrap.py).
|
|
15
16
|
dependencies = [
|
|
17
|
+
"gini-core", # the shared domain model + proof format. Split out so a headless
|
|
18
|
+
# Teaching Center can install it without dragging in Qt, and so
|
|
19
|
+
# there is exactly ONE copy of the format both sides must agree on.
|
|
16
20
|
"PySide6-Essentials>=6.6", # the Qt6 desktop GUI (gini.ui + the `gbuilder` entrypoint)
|
|
21
|
+
"PySide6-Addons>=6.6", # QtWebEngine — embeds headful Desktops / OS-Zoo screens (else the
|
|
22
|
+
# system browser); QtWebSockets — the Terminal's link to ttyd.
|
|
23
|
+
# Bundled so one install pulls it in automatically.
|
|
17
24
|
"PyYAML>=6.0", # reads authored Lesson packs (Missions / Teaching Center)
|
|
25
|
+
"pyte>=0.8", # terminal emulation for the Terminal pane. Pure Python: it turns
|
|
26
|
+
# the container's byte stream into a grid of cells, which
|
|
27
|
+
# ui/terminal_view.py paints. Replaced an embedded xterm.js page
|
|
28
|
+
# in QtWebEngine — a Chromium process per terminal.
|
|
18
29
|
]
|
|
19
30
|
|
|
20
31
|
[project.optional-dependencies]
|
|
@@ -34,14 +45,18 @@ dev = [
|
|
|
34
45
|
|
|
35
46
|
[project.scripts]
|
|
36
47
|
gbuilder = "gini.__main__:main" # the desktop app
|
|
37
|
-
gini-setup
|
|
48
|
+
# `gini-setup` is gone: gBuilder now checks what the machine needs at launch and offers to do it
|
|
49
|
+
# (gini/services/bootstrap.py + gini/ui/first_run.py). The module stays for anyone with it in a
|
|
50
|
+
# script, but it is no longer a command a new user has to discover.
|
|
38
51
|
|
|
39
52
|
[tool.setuptools.packages.find]
|
|
40
53
|
where = ["src"]
|
|
54
|
+
# `gini` is an implicit NAMESPACE package shared with gini-core, which owns gini.domain. Neither
|
|
55
|
+
# distribution may ship gini/__init__.py, or one would shadow the other's half of the tree.
|
|
56
|
+
exclude = ["gini.domain*"]
|
|
41
57
|
|
|
42
58
|
[tool.setuptools.package-data]
|
|
43
59
|
"gini.ui" = ["assets/*.png", "assets/*.ico", "assets/*.icns"]
|
|
44
|
-
"gini.domain" = ["missions/**/*.yaml"]
|
|
45
60
|
|
|
46
61
|
# Version comes from git tags (e.g. `git tag v6.1.0` -> 6.1.0). The repo root is one level up from
|
|
47
62
|
# this pyproject, hence root = "..". A generated _version.py is written into the package at build
|