gea-program 0.88.0__tar.gz → 0.90.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.
- {gea_program-0.88.0/gea_program.egg-info → gea_program-0.90.0}/PKG-INFO +81 -4
- {gea_program-0.88.0 → gea_program-0.90.0}/README.md +80 -3
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/__init__.py +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/__main__.py +124 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/acceptance_tests.py +439 -2
- gea_program-0.90.0/gea/benchmark.py +272 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/dysfunction.py +27 -9
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/edr.py +73 -6
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/IT_SECURITY.md +19 -1
- gea_program-0.90.0/gea/help/benchmark.md +13 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/driller.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/dysfunction.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/edr.md +3 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/install.md +2 -2
- gea_program-0.90.0/gea/help/mcp.md +15 -0
- gea_program-0.90.0/gea/help/public-data.md +15 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/reader.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/recorder.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/roadmap.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/01-install.md +2 -2
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/13-drilling-pages.md +10 -8
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/19-dossier-reader.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/20-admin.md +2 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/22-updates.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/23-vpn.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/25-install-recorder.md +2 -2
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/29-driller-rig.md +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial.md +2 -2
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/helplib.py +4 -1
- gea_program-0.90.0/gea/mcp_server.py +725 -0
- gea_program-0.90.0/gea/public_pad.py +603 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/rig_state.py +5 -2
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/roadmap.py +26 -7
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/service.py +36 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/web/app.html +82 -1
- {gea_program-0.88.0 → gea_program-0.90.0/gea_program.egg-info}/PKG-INFO +81 -4
- {gea_program-0.88.0 → gea_program-0.90.0}/gea_program.egg-info/SOURCES.txt +6 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/pyproject.toml +1 -1
- {gea_program-0.88.0 → gea_program-0.90.0}/LICENSE +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/accuracy_statement.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/alarm_engine.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/alerts.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/backup.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/bench.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/bit_seismic.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/blind_harness.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/calibration.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/casing_design.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog_map.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/catalog_register.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/certificates.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/cli.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/client_reports.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/collision.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/config_versioning.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/conformance.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/control_room.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/correlation.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/dashboard.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/declarations.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/decline.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/deviation.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/dlis.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/dnp3.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/doctor.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/dossier.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/dossier_verify.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/downhole_engine.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/drift_monitor.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/drill_string.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/driller_link.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/earth_model.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/economics.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/ed25519.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/elevation.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/etp.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/etp12_schemas.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/example_register_map.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fat_sat.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/field_pull.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/files.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fixtures/README.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fixtures/comcat_delaware_basin_2026-09.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fixtures/comcat_mahoning_1990-2026.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fixtures/comcat_youngstown_2011-2012.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fixtures/ne_110m_coastline.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/fluid.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/follower.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/forward_model.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/frac_hits.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/friction_priors.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/front.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/gamma.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/gauge_aging.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/gauge_specs.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/geodesy.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/geomag.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/gravity_reference.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/hartip.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/TESTER_GUIDE.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/alarms.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/alerts.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/audit-update.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/backup.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/bit-image.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/calibration.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/casing.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/catalog.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/charts.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/collision.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/company-sign-in.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/conformance.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/control-room.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/data-in.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/declare.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/decline.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/dlis.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/doctor.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/dossier.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/drift.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/drillstring.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/economics.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/etp.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/field-ports.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/files.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/fluid.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/frac-hits.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/front.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/historian.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/https.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/hydraulics.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/instruments.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/interval.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/invoice-check.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/map.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/month-end.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/notifications.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/opseis.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/osdu.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/pad-summary.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/patches.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/penetrator.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/plan.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/plume.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/pore-pressure.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/ppdm.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/quakeml.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/quality.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/records.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/report-history.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/rig-time.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/rocks.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/seedlink.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/seismic.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/setup.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/simulation.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/site.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/sites.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/slip.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/soak.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/sra.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/start.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/structure.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tools.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/torque-drag.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/transients.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/02-sign-in.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/03-site.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/04-add-well.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/05-records.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/06-well-page.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/07-declare.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/08-patches.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/09-alarms.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/10-control-room.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/11-summary-month.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/12-where-the-well-is.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/14-production-pages.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/15-seismic.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/16-seismicity.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/17-recorder-office.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/18-reports.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/21-upkeep.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/24-the-box.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/26-monitor.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/27-mirror-vpn.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/tutorial/28-driller-office.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/upkeep.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/vibration.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/vpn.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/well-report.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/well-tests.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/help/well3d.md +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/housekeeping.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/hydraulics.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/icon.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/interval.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/inverse_engine.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/invoice_check.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/jobs.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/launcher.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/live_ports.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/loadtest.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/modbus.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/modbus_rtu.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/model_card.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/month_end.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/mqtt_port.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/notify.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/oidc.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/oidc_mock.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/op_seismicity.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/opcua_port.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/operator_app.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/osdu.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/pad_summary.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/patches.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/pdf_report.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/penetrator.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/permits.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/piwebapi.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/plume.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/pore_pressure.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/ports.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/ppdm.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/profile_catalog.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/project.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/quakeml.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reader.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reader_app.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reconciler.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/recorder_link.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/WMM2025.COF +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/eia_henry_hub_daily.csv.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/eia_prices.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/eia_wti_daily.csv.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/iscwsa_rev4_example.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/iscwsa_rev5_example.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/l0701_sonic_gr.las.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/l0701_sonic_gr.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/mahoning_example.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/mud_motor_specs.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/owsg_tool_models.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/penetrator_ratings.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/seismicity_protocols.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/tool_sources.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/us_outline.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/us_outline.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_3d.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_f4_interpretation.las.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_f4_logs.provenance.json +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_f4_lwd.las.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_surfaces.json.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_traj_F-10.xml.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_traj_F-4.xml.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_traj_F-5_12.25in.xml.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_traj_F-5_17.5in.xml.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_traj_F-5_36in.xml.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_traj_F-5_8.5in.xml.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/reference/volve_well_picks.csv.gz +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/report_history.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/rock_inventory.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/sample_record.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/sbom.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seedlink.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/segy.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_array.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_assoc.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_detect.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_film.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_harmonic.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_qc.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_response.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_signature.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_track.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_uncertainty.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_unlisted.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/seismic_watch.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/sensor_swap.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/series_cache.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/service_life.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/setup_checklist.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/shapefile.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/shell.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/shut_in.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/simulation.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/site_map.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/sla_report.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/slip.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/soak.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/sra.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/store_forward.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/strata_join.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/structure.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/supervisor.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/survey_cmd.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/survey_view.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/telemetry.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/timestamp.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/tls.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/tool_catalog.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/tool_library.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/tool_taxonomy.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/torque_drag.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/transient.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/tray.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/tutorial.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/updates.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/vibration.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/vpn.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/web/reader.html +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/well3d.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/well_assembler.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/well_records.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/well_report.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/well_test_validation.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/wellplan.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/wellpos.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/winident.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/wits0.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/witsml.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/workspace.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/workspaces.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/x25519.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea/xlsx_read.py +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/setup.cfg +0 -0
- {gea_program-0.88.0 → gea_program-0.90.0}/tests/test_acceptance.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gea-program
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.90.0
|
|
4
4
|
Summary: GEA-Program: downhole gauge monitoring - canonical measurement records, quality rules, drift evaluation with a re-fit change log, well-test validation, alarm management, model cards, store-and-forward, monthly SLA measurement, FAT/SAT protocols and a dashboard, generated from live objects in the client's reporting outline.
|
|
5
5
|
Author: Daniel T. Murphy
|
|
6
6
|
License: MPL-2.0
|
|
@@ -847,7 +847,7 @@ unsigned, the key hand-overs - and shows the reports as they were signed. A
|
|
|
847
847
|
reader made from the workspace knows the site's key fingerprints, so it
|
|
848
848
|
says whether a dossier is the site's; it allows no network request, and it
|
|
849
849
|
leaves the trusted time-stamp to `verify_dossier.py`. For a client who wants
|
|
850
|
-
it installed, every release also carries `GEA-Reader-Setup-0.
|
|
850
|
+
it installed, every release also carries `GEA-Reader-Setup-0.90.0.exe`: GEA
|
|
851
851
|
Reader as a Windows program of its own - its own icon and taskbar button,
|
|
852
852
|
Check with GEA Reader on a dossier's right-click menu, fingerprints the client
|
|
853
853
|
saves kept on that computer, nothing of GEA-Program. `gea help reader`.
|
|
@@ -1053,6 +1053,83 @@ followed. The thresholds are settings, each changed with its source. On a
|
|
|
1053
1053
|
record still being written an event raises an alert once. The **Drilling
|
|
1054
1054
|
alerts** tab, `gea dysfunction`, `gea help dysfunction`.
|
|
1055
1055
|
|
|
1056
|
+
### Assistant access (MCP)
|
|
1057
|
+
|
|
1058
|
+
The site, readable by an assistant. `gea mcp` is a Model Context Protocol
|
|
1059
|
+
server: a chat program that speaks MCP - Claude Desktop, or any other
|
|
1060
|
+
client - starts it as its own child process and is given the program's
|
|
1061
|
+
pages as tools: the site and its wells, the rig time, the roadmap, the
|
|
1062
|
+
drilling alerts, torque and drag, hydraulics, the fluid balance, the plume,
|
|
1063
|
+
the front and their calibration, frac hits, the alerts, the audit log, the
|
|
1064
|
+
help. Each tool returns what the program itself computes, with its own
|
|
1065
|
+
labels - SIMULATION where it is one, "nothing declared" where nothing is -
|
|
1066
|
+
so the assistant's account of the site is the program's. It is local: no
|
|
1067
|
+
port is opened, the conversation is the child process's standard input and
|
|
1068
|
+
output. It is read-only: no tool declares, attaches, removes, writes a
|
|
1069
|
+
report or changes a setting. It is logged: every call is a line in the
|
|
1070
|
+
workspace. And the site chooses which pages are offered, because what a
|
|
1071
|
+
tool returns goes to whoever runs the model behind the assistant. Both
|
|
1072
|
+
eras of the protocol are spoken: the stateless revision 2026-07-28 and the
|
|
1073
|
+
`initialize` handshake of 2025-11-25 and earlier. The **Assistant access**
|
|
1074
|
+
tab (one button adds it to Claude Desktop), `gea mcp`, `gea help mcp`.
|
|
1075
|
+
|
|
1076
|
+
### Benchmark
|
|
1077
|
+
|
|
1078
|
+
The wells of a pad against one another, and each against the best the pad
|
|
1079
|
+
has done. Every well with a drilling record is measured the same way from
|
|
1080
|
+
its own record - the footage, the days from its first stand to its last,
|
|
1081
|
+
feet per day, the rate on bottom, rotary and sliding, the median connection
|
|
1082
|
+
weight to weight, the trip speeds - and ranked on each count. Then each
|
|
1083
|
+
well is set against the pad's best: the well it would have been had every
|
|
1084
|
+
stretch of hole been drilled at the rate of whichever well was fastest
|
|
1085
|
+
through that stretch (300 ft or more of it), and every connection made in
|
|
1086
|
+
the pad's best quarter. The gap is hours the pad has already shown can be
|
|
1087
|
+
saved, on some well in that stretch - not a forecast, and not a cause: the
|
|
1088
|
+
bit, the motor, the mud and the hole size are not in the record. The
|
|
1089
|
+
**Benchmark** tab, `gea benchmark`, `gea help benchmark`; an assistant
|
|
1090
|
+
reads it as the `benchmark` tool.
|
|
1091
|
+
|
|
1092
|
+
### Public data: a real pad
|
|
1093
|
+
|
|
1094
|
+
A pad anyone may check. The Utah FORGE project - the U.S. Department of
|
|
1095
|
+
Energy's geothermal field laboratory near Milford, Utah - publishes the
|
|
1096
|
+
rig recorders of five wells drilled through the same basin fill and
|
|
1097
|
+
granite between 2017 and 2023, under Creative Commons Attribution 4.0.
|
|
1098
|
+
`gea public-pad` turns those files into a site of its own, so the rig
|
|
1099
|
+
time, the roadmap, the drilling alerts and the benchmark run on real
|
|
1100
|
+
records before any client's. The program does not contain the files and
|
|
1101
|
+
does not fetch them: the site downloads them in a browser from the
|
|
1102
|
+
Geothermal Data Repository, names the folder, and the program checks each
|
|
1103
|
+
file against the size and the SHA-256 it had when this release was checked
|
|
1104
|
+
with it, converts the three layouts that are not the recorder's own
|
|
1105
|
+
export, attaches each well, and keeps on the record what was done to
|
|
1106
|
+
each - 16A(78)-32's bit depth is RECONSTRUCTED from the block and the
|
|
1107
|
+
slips and is marked so on every page. Every page and report of that site
|
|
1108
|
+
ends with the credit the licence asks for.
|
|
1109
|
+
|
|
1110
|
+
What this release made of them, on the five files as published:
|
|
1111
|
+
|
|
1112
|
+
| Well | Drilled, ft | Days | ft/day | On bottom, ft/h | Median connection, min |
|
|
1113
|
+
|---|---|---|---|---|---|
|
|
1114
|
+
| 58-32 (2017) | 6,288 | 43.5 | 145 | 15.9 | 14.4 |
|
|
1115
|
+
| 16A(78)-32 (2020) | 11,035 | 67.8 | 163 | 34.4 | 11.3 |
|
|
1116
|
+
| 56-32 (2021) | 9,232 | 19.0 | 487 | 46.6 | 7.5 |
|
|
1117
|
+
| 78B-32 (2021) | 9,372 | 29.1 | 322 | 84.7 | 7.7 |
|
|
1118
|
+
| 16B(78)-32 (2023) | 10,490 | 52.4 | 200 | 45.7 | 10.2 |
|
|
1119
|
+
|
|
1120
|
+
Against the pad's best the five wells spent 812 of their 1,256 on-bottom
|
|
1121
|
+
hours beyond it. The roadmap's own check on them is split - running nearer
|
|
1122
|
+
the window was the faster half on two wells and the slower on two - which
|
|
1123
|
+
is the page saying, of wells drilled six years apart in three hole sizes,
|
|
1124
|
+
that one well's parameters are not the next well's roadmap. The drilling
|
|
1125
|
+
alerts, replayed, find 27 motor stalls on the three wells whose records
|
|
1126
|
+
can show one, three falls in off-bottom pressure on 78B-32 that no trip followed
|
|
1127
|
+
and one on 58-32 that a trip out of the hole followed within twelve hours.
|
|
1128
|
+
Data: Utah FORGE, Energy & Geoscience Institute at the University of Utah,
|
|
1129
|
+
funded by the U.S. Department of Energy; Geothermal Data Repository,
|
|
1130
|
+
gdr.openei.org; CC BY 4.0. The **Public data** tab, `gea public-pad`,
|
|
1131
|
+
`gea help public-data`.
|
|
1132
|
+
|
|
1056
1133
|
### Plan vs actual and the survey tools
|
|
1057
1134
|
|
|
1058
1135
|
Each well against its directional plan: at every survey station, how far
|
|
@@ -1717,7 +1794,7 @@ attaches the zips to the GitHub release of that tag.
|
|
|
1717
1794
|
|
|
1718
1795
|
### The Windows installer
|
|
1719
1796
|
|
|
1720
|
-
Every release also carries `GEA-Program-Setup-0.
|
|
1797
|
+
Every release also carries `GEA-Program-Setup-0.90.0.exe` (for 0.90.0): the
|
|
1721
1798
|
same Windows kit installed like any Windows program, for the signed-in user
|
|
1722
1799
|
alone and with no administrator rights (`%LOCALAPPDATA%\Programs\GEA-Program`).
|
|
1723
1800
|
It asks for the site workspace (an existing one such as `C:\site` is used as
|
|
@@ -1736,7 +1813,7 @@ it, removes the program and leaves the workspace. Silent, for a site's
|
|
|
1736
1813
|
software deployment:
|
|
1737
1814
|
|
|
1738
1815
|
```
|
|
1739
|
-
GEA-Program-Setup-0.
|
|
1816
|
+
GEA-Program-Setup-0.90.0.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /WORKSPACE="C:\site" /SITENAME="Pad 3" /TASKS="desktopicon"
|
|
1740
1817
|
```
|
|
1741
1818
|
|
|
1742
1819
|
The setup is built by Inno Setup 6 from `tools/installer.iss` in the same
|
|
@@ -808,7 +808,7 @@ unsigned, the key hand-overs - and shows the reports as they were signed. A
|
|
|
808
808
|
reader made from the workspace knows the site's key fingerprints, so it
|
|
809
809
|
says whether a dossier is the site's; it allows no network request, and it
|
|
810
810
|
leaves the trusted time-stamp to `verify_dossier.py`. For a client who wants
|
|
811
|
-
it installed, every release also carries `GEA-Reader-Setup-0.
|
|
811
|
+
it installed, every release also carries `GEA-Reader-Setup-0.90.0.exe`: GEA
|
|
812
812
|
Reader as a Windows program of its own - its own icon and taskbar button,
|
|
813
813
|
Check with GEA Reader on a dossier's right-click menu, fingerprints the client
|
|
814
814
|
saves kept on that computer, nothing of GEA-Program. `gea help reader`.
|
|
@@ -1014,6 +1014,83 @@ followed. The thresholds are settings, each changed with its source. On a
|
|
|
1014
1014
|
record still being written an event raises an alert once. The **Drilling
|
|
1015
1015
|
alerts** tab, `gea dysfunction`, `gea help dysfunction`.
|
|
1016
1016
|
|
|
1017
|
+
### Assistant access (MCP)
|
|
1018
|
+
|
|
1019
|
+
The site, readable by an assistant. `gea mcp` is a Model Context Protocol
|
|
1020
|
+
server: a chat program that speaks MCP - Claude Desktop, or any other
|
|
1021
|
+
client - starts it as its own child process and is given the program's
|
|
1022
|
+
pages as tools: the site and its wells, the rig time, the roadmap, the
|
|
1023
|
+
drilling alerts, torque and drag, hydraulics, the fluid balance, the plume,
|
|
1024
|
+
the front and their calibration, frac hits, the alerts, the audit log, the
|
|
1025
|
+
help. Each tool returns what the program itself computes, with its own
|
|
1026
|
+
labels - SIMULATION where it is one, "nothing declared" where nothing is -
|
|
1027
|
+
so the assistant's account of the site is the program's. It is local: no
|
|
1028
|
+
port is opened, the conversation is the child process's standard input and
|
|
1029
|
+
output. It is read-only: no tool declares, attaches, removes, writes a
|
|
1030
|
+
report or changes a setting. It is logged: every call is a line in the
|
|
1031
|
+
workspace. And the site chooses which pages are offered, because what a
|
|
1032
|
+
tool returns goes to whoever runs the model behind the assistant. Both
|
|
1033
|
+
eras of the protocol are spoken: the stateless revision 2026-07-28 and the
|
|
1034
|
+
`initialize` handshake of 2025-11-25 and earlier. The **Assistant access**
|
|
1035
|
+
tab (one button adds it to Claude Desktop), `gea mcp`, `gea help mcp`.
|
|
1036
|
+
|
|
1037
|
+
### Benchmark
|
|
1038
|
+
|
|
1039
|
+
The wells of a pad against one another, and each against the best the pad
|
|
1040
|
+
has done. Every well with a drilling record is measured the same way from
|
|
1041
|
+
its own record - the footage, the days from its first stand to its last,
|
|
1042
|
+
feet per day, the rate on bottom, rotary and sliding, the median connection
|
|
1043
|
+
weight to weight, the trip speeds - and ranked on each count. Then each
|
|
1044
|
+
well is set against the pad's best: the well it would have been had every
|
|
1045
|
+
stretch of hole been drilled at the rate of whichever well was fastest
|
|
1046
|
+
through that stretch (300 ft or more of it), and every connection made in
|
|
1047
|
+
the pad's best quarter. The gap is hours the pad has already shown can be
|
|
1048
|
+
saved, on some well in that stretch - not a forecast, and not a cause: the
|
|
1049
|
+
bit, the motor, the mud and the hole size are not in the record. The
|
|
1050
|
+
**Benchmark** tab, `gea benchmark`, `gea help benchmark`; an assistant
|
|
1051
|
+
reads it as the `benchmark` tool.
|
|
1052
|
+
|
|
1053
|
+
### Public data: a real pad
|
|
1054
|
+
|
|
1055
|
+
A pad anyone may check. The Utah FORGE project - the U.S. Department of
|
|
1056
|
+
Energy's geothermal field laboratory near Milford, Utah - publishes the
|
|
1057
|
+
rig recorders of five wells drilled through the same basin fill and
|
|
1058
|
+
granite between 2017 and 2023, under Creative Commons Attribution 4.0.
|
|
1059
|
+
`gea public-pad` turns those files into a site of its own, so the rig
|
|
1060
|
+
time, the roadmap, the drilling alerts and the benchmark run on real
|
|
1061
|
+
records before any client's. The program does not contain the files and
|
|
1062
|
+
does not fetch them: the site downloads them in a browser from the
|
|
1063
|
+
Geothermal Data Repository, names the folder, and the program checks each
|
|
1064
|
+
file against the size and the SHA-256 it had when this release was checked
|
|
1065
|
+
with it, converts the three layouts that are not the recorder's own
|
|
1066
|
+
export, attaches each well, and keeps on the record what was done to
|
|
1067
|
+
each - 16A(78)-32's bit depth is RECONSTRUCTED from the block and the
|
|
1068
|
+
slips and is marked so on every page. Every page and report of that site
|
|
1069
|
+
ends with the credit the licence asks for.
|
|
1070
|
+
|
|
1071
|
+
What this release made of them, on the five files as published:
|
|
1072
|
+
|
|
1073
|
+
| Well | Drilled, ft | Days | ft/day | On bottom, ft/h | Median connection, min |
|
|
1074
|
+
|---|---|---|---|---|---|
|
|
1075
|
+
| 58-32 (2017) | 6,288 | 43.5 | 145 | 15.9 | 14.4 |
|
|
1076
|
+
| 16A(78)-32 (2020) | 11,035 | 67.8 | 163 | 34.4 | 11.3 |
|
|
1077
|
+
| 56-32 (2021) | 9,232 | 19.0 | 487 | 46.6 | 7.5 |
|
|
1078
|
+
| 78B-32 (2021) | 9,372 | 29.1 | 322 | 84.7 | 7.7 |
|
|
1079
|
+
| 16B(78)-32 (2023) | 10,490 | 52.4 | 200 | 45.7 | 10.2 |
|
|
1080
|
+
|
|
1081
|
+
Against the pad's best the five wells spent 812 of their 1,256 on-bottom
|
|
1082
|
+
hours beyond it. The roadmap's own check on them is split - running nearer
|
|
1083
|
+
the window was the faster half on two wells and the slower on two - which
|
|
1084
|
+
is the page saying, of wells drilled six years apart in three hole sizes,
|
|
1085
|
+
that one well's parameters are not the next well's roadmap. The drilling
|
|
1086
|
+
alerts, replayed, find 27 motor stalls on the three wells whose records
|
|
1087
|
+
can show one, three falls in off-bottom pressure on 78B-32 that no trip followed
|
|
1088
|
+
and one on 58-32 that a trip out of the hole followed within twelve hours.
|
|
1089
|
+
Data: Utah FORGE, Energy & Geoscience Institute at the University of Utah,
|
|
1090
|
+
funded by the U.S. Department of Energy; Geothermal Data Repository,
|
|
1091
|
+
gdr.openei.org; CC BY 4.0. The **Public data** tab, `gea public-pad`,
|
|
1092
|
+
`gea help public-data`.
|
|
1093
|
+
|
|
1017
1094
|
### Plan vs actual and the survey tools
|
|
1018
1095
|
|
|
1019
1096
|
Each well against its directional plan: at every survey station, how far
|
|
@@ -1678,7 +1755,7 @@ attaches the zips to the GitHub release of that tag.
|
|
|
1678
1755
|
|
|
1679
1756
|
### The Windows installer
|
|
1680
1757
|
|
|
1681
|
-
Every release also carries `GEA-Program-Setup-0.
|
|
1758
|
+
Every release also carries `GEA-Program-Setup-0.90.0.exe` (for 0.90.0): the
|
|
1682
1759
|
same Windows kit installed like any Windows program, for the signed-in user
|
|
1683
1760
|
alone and with no administrator rights (`%LOCALAPPDATA%\Programs\GEA-Program`).
|
|
1684
1761
|
It asks for the site workspace (an existing one such as `C:\site` is used as
|
|
@@ -1697,7 +1774,7 @@ it, removes the program and leaves the workspace. Silent, for a site's
|
|
|
1697
1774
|
software deployment:
|
|
1698
1775
|
|
|
1699
1776
|
```
|
|
1700
|
-
GEA-Program-Setup-0.
|
|
1777
|
+
GEA-Program-Setup-0.90.0.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /WORKSPACE="C:\site" /SITENAME="Pad 3" /TASKS="desktopicon"
|
|
1701
1778
|
```
|
|
1702
1779
|
|
|
1703
1780
|
The setup is built by Inno Setup 6 from `tools/installer.iss` in the same
|
|
@@ -677,6 +677,34 @@ def main(argv=None) -> int:
|
|
|
677
677
|
p_os.add_argument("--actor", type=str, default="cli")
|
|
678
678
|
p_os.add_argument("--json", action="store_true")
|
|
679
679
|
|
|
680
|
+
p_bm = sub.add_parser("benchmark", help="the wells of a pad against one another: feet per day, on-bottom rate, connections and trips ranked, and each well against the pad's best - every stretch at the rate of the fastest well through it")
|
|
681
|
+
p_bm.add_argument("--workspace", type=str, default=None, help="the workspace folder; without one the self-test runs")
|
|
682
|
+
p_bm.add_argument("--write", action="store_true", help="write reports/benchmark/benchmark.json, .md, .csv and stretches.csv")
|
|
683
|
+
p_bm.add_argument("--actor", type=str, default="cli")
|
|
684
|
+
p_bm.add_argument("--json", action="store_true")
|
|
685
|
+
p_pp = sub.add_parser("public-pad", help="a real pad from public data: the Utah FORGE wells' published rig recorders (CC BY 4.0) made into a site of their own - the files to get and where, checked against their sizes and hashes, converted and attached; the program fetches nothing")
|
|
686
|
+
p_pp.add_argument("--folder", type=str, default=None, help="the folder the downloaded files are in; with nothing else, lists each file and whether it is there. Without a folder the self-test runs (stand-ins in each published layout)")
|
|
687
|
+
p_pp.add_argument("--verify", action="store_true", help="hash each file that is there against the SHA-256 this release was checked with")
|
|
688
|
+
p_pp.add_argument("--build", action="store_true", help="make the site at --site from the files in --folder, or add to it the wells it does not have yet")
|
|
689
|
+
p_pp.add_argument("--site", type=str, default=None, help="--build: the folder the site's workspace is made in")
|
|
690
|
+
p_pp.add_argument("--list", action="store_true", help="list the dataset's files, sizes, hashes and where each is published, and exit")
|
|
691
|
+
p_pp.add_argument("--actor", type=str, default="cli")
|
|
692
|
+
p_pp.add_argument("--json", action="store_true")
|
|
693
|
+
p_mc = sub.add_parser("mcp", help="the site, readable by an assistant: a Model Context Protocol server on standard input and output - local (no port), read-only (every tool reads one of the program's pages, none changes anything), logged; with --workspace alone it serves until its input closes")
|
|
694
|
+
p_mc.add_argument("--workspace", type=str, default=None, help="the workspace folder; without one the self-test runs (both eras of the protocol against a labelled site)")
|
|
695
|
+
p_mc.add_argument("--allow", type=str, default=None, help="serve only these tools this run, comma-separated (never more than the site offers)")
|
|
696
|
+
p_mc.add_argument("--status", action="store_true", help="print the tools offered, how to start the server and the last calls, and exit")
|
|
697
|
+
p_mc.add_argument("--config", action="store_true", help="print the entry an MCP client's configuration needs to start this site's server, and exit")
|
|
698
|
+
p_mc.add_argument("--call", type=str, default=None, help="call one tool and print its answer, as an assistant would get it")
|
|
699
|
+
p_mc.add_argument("--well", type=str, default=None, help="--call: the well, by name or id")
|
|
700
|
+
p_mc.add_argument("--topic", type=str, default=None, help="--call help: the topic")
|
|
701
|
+
p_mc.add_argument("--json", action="store_true", help="--call: the page as JSON instead of its text")
|
|
702
|
+
p_mc.add_argument("--offer", type=str, default=None, help="settings: the tools the site offers, comma-separated (all: every tool)")
|
|
703
|
+
p_mc.add_argument("--max-chars", type=int, default=None, help="settings: the most characters one answer carries (default 40000)")
|
|
704
|
+
p_mc.add_argument("--source", type=str, default="", help="settings: who decided, and on what grounds")
|
|
705
|
+
p_mc.add_argument("--add-to-claude-desktop", action="store_true", help="add this site's server to Claude Desktop's configuration on this computer, keeping every other entry and a dated copy of the file")
|
|
706
|
+
p_mc.add_argument("--remove-from-claude-desktop", action="store_true", help="take it out again")
|
|
707
|
+
p_mc.add_argument("--actor", type=str, default="cli")
|
|
680
708
|
p_al = sub.add_parser("alerts", help="the program's alerts: earthquakes near operating wells and the protocol levels they reach, the earthquake watch going quiet, components due for service, penetrator checks outside their ratings, dossiers the workspace no longer matches")
|
|
681
709
|
p_al.add_argument("--workspace", type=str, required=True)
|
|
682
710
|
p_al.add_argument("--check", action="store_true", help="check the motors, penetrators and dossiers now, sending what began or cleared through the notification rules")
|
|
@@ -3560,6 +3588,102 @@ def main(argv=None) -> int:
|
|
|
3560
3588
|
for v in f_["versions"][: (50 if a.family else 3)]:
|
|
3561
3589
|
print(f" {v['utc']} {v.get('report_id') or ''} reports/{v['dir']}")
|
|
3562
3590
|
return 0
|
|
3591
|
+
elif a.cmd == "benchmark":
|
|
3592
|
+
import json as _json
|
|
3593
|
+
from . import benchmark as _BM
|
|
3594
|
+
from .cli import _safe_stdout
|
|
3595
|
+
from .workspace import Workspace, WorkspaceError
|
|
3596
|
+
_safe_stdout()
|
|
3597
|
+
if not a.workspace:
|
|
3598
|
+
r = _BM.selftest()
|
|
3599
|
+
print("\n".join(f"{'PASS' if c['pass'] else 'FAIL'} {c['check']}: {c['value']}" for c in r["checks"]) + f"\n{'OK' if r['ok'] else 'FAILED'} - {r['label']}")
|
|
3600
|
+
return 0 if r["ok"] else 1
|
|
3601
|
+
try:
|
|
3602
|
+
ws = Workspace(a.workspace)
|
|
3603
|
+
if a.write:
|
|
3604
|
+
from . import __version__ as _ver90b
|
|
3605
|
+
r = _BM.write_report(ws, _ver90b, a.actor)
|
|
3606
|
+
print(f"written: {', '.join(r['files'])} under {r['folder']}")
|
|
3607
|
+
p = _BM.page(ws)
|
|
3608
|
+
except (_BM.BenchmarkError, WorkspaceError, ValueError, OSError) as e:
|
|
3609
|
+
raise SystemExit(f"benchmark: {e.args[0] if e.args else e}")
|
|
3610
|
+
print(_json.dumps(p, default=str) if a.json else _BM.text(p))
|
|
3611
|
+
return 0
|
|
3612
|
+
elif a.cmd == "public-pad":
|
|
3613
|
+
import json as _json
|
|
3614
|
+
from . import public_pad as _PP
|
|
3615
|
+
from .cli import _safe_stdout
|
|
3616
|
+
_safe_stdout()
|
|
3617
|
+
if not a.folder and not a.list:
|
|
3618
|
+
r = _PP.selftest()
|
|
3619
|
+
print("\n".join(f"{'PASS' if c['pass'] else 'FAIL'} {c['check']}: {c['value']}" for c in r["checks"]) + f"\n{'OK' if r['ok'] else 'FAILED'} - {r['label']}")
|
|
3620
|
+
return 0 if r["ok"] else 1
|
|
3621
|
+
try:
|
|
3622
|
+
if a.build:
|
|
3623
|
+
if not a.site:
|
|
3624
|
+
raise SystemExit("public-pad: --build needs --site, the folder the site is made in")
|
|
3625
|
+
last_ = {"t": ""}
|
|
3626
|
+
|
|
3627
|
+
def say_(d_):
|
|
3628
|
+
t_ = f"{d_.get('well', '')} {d_.get('step', '')}".strip()
|
|
3629
|
+
if t_ != last_["t"] and d_.get("step") != "done":
|
|
3630
|
+
last_["t"] = t_
|
|
3631
|
+
print(f" {d_.get('n', '')}/{d_.get('of', '')} {t_}", flush=True)
|
|
3632
|
+
r = _PP.build(a.folder, a.site, a.actor, verify=True, progress=say_)
|
|
3633
|
+
print(f"{r['name']} at {r['path']}: " + (f"added {', '.join(r['added'])}" if r["added"] else "nothing to add") + f"; it has {', '.join(r['wells'])}")
|
|
3634
|
+
for e_ in r["record"]["wells"]:
|
|
3635
|
+
for n_ in e_["notes"]:
|
|
3636
|
+
print(f" {e_['well']}: {n_}")
|
|
3637
|
+
return 0
|
|
3638
|
+
s_ = _PP.status(a.folder or "", verify=a.verify)
|
|
3639
|
+
except (_PP.PublicPadError, OSError) as e:
|
|
3640
|
+
raise SystemExit(f"public-pad: {e.args[0] if e.args else e}")
|
|
3641
|
+
print(_json.dumps(s_, default=str) if a.json else _PP.text(s_))
|
|
3642
|
+
return 0
|
|
3643
|
+
elif a.cmd == "mcp":
|
|
3644
|
+
import json as _json
|
|
3645
|
+
from . import mcp_server as _MC
|
|
3646
|
+
from .workspace import Workspace, WorkspaceError
|
|
3647
|
+
allow_ = [t_.strip() for t_ in a.allow.split(",") if t_.strip()] if a.allow else None
|
|
3648
|
+
if not a.workspace:
|
|
3649
|
+
r = _MC.selftest()
|
|
3650
|
+
print("\n".join(f"{'PASS' if c['pass'] else 'FAIL'} {c['check']}: {c['value']}" for c in r["checks"]) + f"\n{'OK' if r['ok'] else 'FAILED'} - {r['label']}")
|
|
3651
|
+
return 0 if r["ok"] else 1
|
|
3652
|
+
try:
|
|
3653
|
+
ws = Workspace(a.workspace)
|
|
3654
|
+
except WorkspaceError as e:
|
|
3655
|
+
print(f"mcp: {e}", file=sys.stderr) # the error stream: standard output is the protocol's
|
|
3656
|
+
return 2
|
|
3657
|
+
if not (a.status or a.config or a.call or a.offer or a.max_chars is not None or a.add_to_claude_desktop or a.remove_from_claude_desktop):
|
|
3658
|
+
return _MC.serve(ws, allow=allow_) # the server: nothing but protocol messages on standard output
|
|
3659
|
+
from .cli import _safe_stdout
|
|
3660
|
+
_safe_stdout()
|
|
3661
|
+
try:
|
|
3662
|
+
if a.offer or a.max_chars is not None:
|
|
3663
|
+
st_ = _MC.set_settings(ws, a.actor, (list(_MC.NAMES) if a.offer and a.offer.strip().lower() == "all" else a.offer), a.max_chars, a.source)
|
|
3664
|
+
print(f"offered: {', '.join(_MC.offered(ws))}; an answer carries {st_['max_chars']:,} characters at most")
|
|
3665
|
+
if a.add_to_claude_desktop or a.remove_from_claude_desktop:
|
|
3666
|
+
r = _MC.install_claude_desktop(ws, a.actor, remove=a.remove_from_claude_desktop)
|
|
3667
|
+
for d_ in r["done"]:
|
|
3668
|
+
print(f"{'taken out of' if r['removed'] else 'added to'} {d_['path']}" + (f" (as it was: {d_['backup']})" if d_["backup"] else "") + " - quit Claude Desktop and start it again")
|
|
3669
|
+
for d_ in r["skipped"]:
|
|
3670
|
+
print(f"not changed: {d_['path']} - {d_['why']}")
|
|
3671
|
+
if a.config:
|
|
3672
|
+
print(_json.dumps(_MC.client_config(ws.path, allow_), indent=2))
|
|
3673
|
+
if a.call:
|
|
3674
|
+
if a.call not in _MC.offered(ws, allow_):
|
|
3675
|
+
raise SystemExit(f"mcp: no tool {a.call!r} is offered; offered: {', '.join(_MC.offered(ws, allow_))}")
|
|
3676
|
+
args_ = {k: v for k, v in (("well", a.well), ("topic", a.topic)) if v is not None}
|
|
3677
|
+
if a.json:
|
|
3678
|
+
args_["json"] = True
|
|
3679
|
+
r = _MC.call_tool(ws, a.call, args_, _MC.settings(ws)["max_chars"])
|
|
3680
|
+
print(r["text"])
|
|
3681
|
+
return 1 if r["is_error"] else 0
|
|
3682
|
+
if a.status:
|
|
3683
|
+
print(_MC.text(_MC.page(ws)))
|
|
3684
|
+
except (_MC.ToolError, WorkspaceError, OSError) as e:
|
|
3685
|
+
raise SystemExit(f"mcp: {e.args[0] if e.args else e}")
|
|
3686
|
+
return 0
|
|
3563
3687
|
elif a.cmd == "alerts":
|
|
3564
3688
|
import json as _json
|
|
3565
3689
|
from . import alerts as _AL
|