gea-program 0.87.0__tar.gz → 0.89.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.87.0/gea_program.egg-info → gea_program-0.89.0}/PKG-INFO +55 -4
- {gea_program-0.87.0 → gea_program-0.89.0}/README.md +54 -3
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/__init__.py +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/__main__.py +123 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/acceptance_tests.py +626 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/alerts.py +16 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/dossier.py +16 -1
- gea_program-0.89.0/gea/dysfunction.py +769 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/IT_SECURITY.md +14 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/alerts.md +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/driller.md +1 -1
- gea_program-0.89.0/gea/help/dysfunction.md +13 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/install.md +2 -2
- gea_program-0.89.0/gea/help/mcp.md +15 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/reader.md +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/recorder.md +1 -1
- gea_program-0.89.0/gea/help/roadmap.md +13 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/01-install.md +2 -2
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/13-drilling-pages.md +10 -8
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/19-dossier-reader.md +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/20-admin.md +2 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/22-updates.md +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/23-vpn.md +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/25-install-recorder.md +2 -2
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/29-driller-rig.md +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial.md +2 -2
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/helplib.py +4 -1
- gea_program-0.89.0/gea/mcp_server.py +718 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/notify.py +3 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/rig_state.py +3 -1
- gea_program-0.89.0/gea/roadmap.py +678 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/series_cache.py +52 -10
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/service.py +35 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/web/app.html +119 -2
- {gea_program-0.87.0 → gea_program-0.89.0/gea_program.egg-info}/PKG-INFO +55 -4
- {gea_program-0.87.0 → gea_program-0.89.0}/gea_program.egg-info/SOURCES.txt +6 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/pyproject.toml +1 -1
- {gea_program-0.87.0 → gea_program-0.89.0}/LICENSE +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/accuracy_statement.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/alarm_engine.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/backup.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/bench.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/bit_seismic.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/blind_harness.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/calibration.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/casing_design.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog_map.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/catalog_register.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/certificates.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/cli.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/client_reports.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/collision.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/config_versioning.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/conformance.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/control_room.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/correlation.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/dashboard.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/declarations.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/decline.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/deviation.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/dlis.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/dnp3.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/doctor.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/dossier_verify.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/downhole_engine.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/drift_monitor.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/drill_string.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/driller_link.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/earth_model.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/economics.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/ed25519.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/edr.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/elevation.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/etp.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/etp12_schemas.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/example_register_map.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fat_sat.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/field_pull.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/files.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fixtures/README.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fixtures/comcat_delaware_basin_2026-09.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fixtures/comcat_mahoning_1990-2026.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fixtures/comcat_youngstown_2011-2012.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fixtures/ne_110m_coastline.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/fluid.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/follower.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/forward_model.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/frac_hits.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/friction_priors.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/front.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/gamma.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/gauge_aging.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/gauge_specs.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/geodesy.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/geomag.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/gravity_reference.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/hartip.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/TESTER_GUIDE.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/alarms.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/audit-update.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/backup.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/bit-image.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/calibration.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/casing.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/catalog.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/charts.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/collision.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/company-sign-in.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/conformance.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/control-room.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/data-in.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/declare.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/decline.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/dlis.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/doctor.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/dossier.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/drift.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/drillstring.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/economics.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/edr.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/etp.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/field-ports.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/files.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/fluid.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/frac-hits.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/front.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/historian.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/https.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/hydraulics.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/instruments.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/interval.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/invoice-check.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/map.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/month-end.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/notifications.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/opseis.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/osdu.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/pad-summary.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/patches.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/penetrator.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/plan.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/plume.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/pore-pressure.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/ppdm.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/quakeml.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/quality.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/records.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/report-history.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/rig-time.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/rocks.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/seedlink.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/seismic.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/setup.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/simulation.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/site.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/sites.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/slip.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/soak.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/sra.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/start.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/structure.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tools.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/torque-drag.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/transients.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/02-sign-in.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/03-site.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/04-add-well.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/05-records.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/06-well-page.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/07-declare.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/08-patches.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/09-alarms.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/10-control-room.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/11-summary-month.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/12-where-the-well-is.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/14-production-pages.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/15-seismic.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/16-seismicity.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/17-recorder-office.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/18-reports.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/21-upkeep.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/24-the-box.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/26-monitor.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/27-mirror-vpn.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/tutorial/28-driller-office.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/upkeep.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/vibration.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/vpn.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/well-report.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/well-tests.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/help/well3d.md +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/housekeeping.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/hydraulics.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/icon.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/interval.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/inverse_engine.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/invoice_check.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/jobs.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/launcher.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/live_ports.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/loadtest.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/modbus.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/modbus_rtu.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/model_card.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/month_end.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/mqtt_port.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/oidc.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/oidc_mock.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/op_seismicity.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/opcua_port.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/operator_app.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/osdu.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/pad_summary.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/patches.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/pdf_report.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/penetrator.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/permits.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/piwebapi.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/plume.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/pore_pressure.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/ports.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/ppdm.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/profile_catalog.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/project.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/quakeml.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reader.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reader_app.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reconciler.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/recorder_link.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/WMM2025.COF +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/eia_henry_hub_daily.csv.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/eia_prices.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/eia_wti_daily.csv.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/iscwsa_rev4_example.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/iscwsa_rev5_example.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/l0701_sonic_gr.las.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/l0701_sonic_gr.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/mahoning_example.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/mud_motor_specs.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/owsg_tool_models.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/penetrator_ratings.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/seismicity_protocols.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/tool_sources.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/us_outline.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/us_outline.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_3d.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_f4_interpretation.las.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_f4_logs.provenance.json +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_f4_lwd.las.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_surfaces.json.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_traj_F-10.xml.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_traj_F-4.xml.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_traj_F-5_12.25in.xml.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_traj_F-5_17.5in.xml.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_traj_F-5_36in.xml.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_traj_F-5_8.5in.xml.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/reference/volve_well_picks.csv.gz +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/report_history.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/rock_inventory.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/sample_record.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/sbom.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seedlink.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/segy.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_array.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_assoc.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_detect.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_film.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_harmonic.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_qc.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_response.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_signature.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_track.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_uncertainty.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_unlisted.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/seismic_watch.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/sensor_swap.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/service_life.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/setup_checklist.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/shapefile.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/shell.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/shut_in.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/simulation.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/site_map.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/sla_report.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/slip.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/soak.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/sra.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/store_forward.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/strata_join.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/structure.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/supervisor.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/survey_cmd.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/survey_view.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/telemetry.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/timestamp.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/tls.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/tool_catalog.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/tool_library.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/tool_taxonomy.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/torque_drag.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/transient.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/tray.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/tutorial.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/updates.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/vibration.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/vpn.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/web/reader.html +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/well3d.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/well_assembler.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/well_records.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/well_report.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/well_test_validation.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/wellplan.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/wellpos.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/winident.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/wits0.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/witsml.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/workspace.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/workspaces.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/x25519.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea/xlsx_read.py +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.87.0 → gea_program-0.89.0}/setup.cfg +0 -0
- {gea_program-0.87.0 → gea_program-0.89.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.89.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.89.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`.
|
|
@@ -1022,6 +1022,57 @@ of review and the front. Run by a person, kept with the hash of its inputs,
|
|
|
1022
1022
|
marked stale when they change. Every figure a SIMULATION. The
|
|
1023
1023
|
**Calibration** tab, `gea calibrate`, `gea help calibration`.
|
|
1024
1024
|
|
|
1025
|
+
### Drilling roadmap
|
|
1026
|
+
|
|
1027
|
+
What the fastest stands on the pad were drilled with, stretch by stretch.
|
|
1028
|
+
Every well's drilling record is cut into stands of 100 ft; each stand goes
|
|
1029
|
+
into the stretch of hole it was drilled in - 1,000 ft of true vertical
|
|
1030
|
+
depth down to the heel, 1,000 ft along the hole beyond it, named for the
|
|
1031
|
+
mapped formation where the workspace has the tops and the well its
|
|
1032
|
+
elevation. In each stretch the fastest quarter of the stands is found, and
|
|
1033
|
+
the window is what those stands ran: the weight on bit, the rotary speed,
|
|
1034
|
+
the flow, the differential pressure, beside the well that was fastest
|
|
1035
|
+
there and what every other well ran through the same rock. Then the
|
|
1036
|
+
roadmap checks itself: each well is set against the roadmap made from the
|
|
1037
|
+
others, the half of its stands nearer the window against the farther half,
|
|
1038
|
+
stretch by stretch - so the page says whether running nearer the window
|
|
1039
|
+
went with drilling faster, or did not, before anyone drills the next well
|
|
1040
|
+
from it. The **Roadmap** tab, `gea roadmap`, `gea help roadmap`.
|
|
1041
|
+
|
|
1042
|
+
### Drilling alerts
|
|
1043
|
+
|
|
1044
|
+
Three old driller's rules, written down so each is applied to every stand
|
|
1045
|
+
of every well the same way, and replayed over the whole of each record:
|
|
1046
|
+
the off-bottom pressure falling at a steady flow, connection after
|
|
1047
|
+
connection (a washout - or a pump, the mud or a nozzle; the trip finds
|
|
1048
|
+
which); the differential pressure spiking with the bit stopped (a motor
|
|
1049
|
+
stall); the pick-up and slack-off weight leaving their own trend (the hole
|
|
1050
|
+
getting tight). The page shows every reading, what each rule would have
|
|
1051
|
+
said and when, and what the rig did next - whether a trip out of the hole
|
|
1052
|
+
followed. The thresholds are settings, each changed with its source. On a
|
|
1053
|
+
record still being written an event raises an alert once. The **Drilling
|
|
1054
|
+
alerts** tab, `gea dysfunction`, `gea help dysfunction`.
|
|
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
|
+
|
|
1025
1076
|
### Plan vs actual and the survey tools
|
|
1026
1077
|
|
|
1027
1078
|
Each well against its directional plan: at every survey station, how far
|
|
@@ -1686,7 +1737,7 @@ attaches the zips to the GitHub release of that tag.
|
|
|
1686
1737
|
|
|
1687
1738
|
### The Windows installer
|
|
1688
1739
|
|
|
1689
|
-
Every release also carries `GEA-Program-Setup-0.
|
|
1740
|
+
Every release also carries `GEA-Program-Setup-0.89.0.exe` (for 0.89.0): the
|
|
1690
1741
|
same Windows kit installed like any Windows program, for the signed-in user
|
|
1691
1742
|
alone and with no administrator rights (`%LOCALAPPDATA%\Programs\GEA-Program`).
|
|
1692
1743
|
It asks for the site workspace (an existing one such as `C:\site` is used as
|
|
@@ -1705,7 +1756,7 @@ it, removes the program and leaves the workspace. Silent, for a site's
|
|
|
1705
1756
|
software deployment:
|
|
1706
1757
|
|
|
1707
1758
|
```
|
|
1708
|
-
GEA-Program-Setup-0.
|
|
1759
|
+
GEA-Program-Setup-0.89.0.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /WORKSPACE="C:\site" /SITENAME="Pad 3" /TASKS="desktopicon"
|
|
1709
1760
|
```
|
|
1710
1761
|
|
|
1711
1762
|
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.89.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`.
|
|
@@ -983,6 +983,57 @@ of review and the front. Run by a person, kept with the hash of its inputs,
|
|
|
983
983
|
marked stale when they change. Every figure a SIMULATION. The
|
|
984
984
|
**Calibration** tab, `gea calibrate`, `gea help calibration`.
|
|
985
985
|
|
|
986
|
+
### Drilling roadmap
|
|
987
|
+
|
|
988
|
+
What the fastest stands on the pad were drilled with, stretch by stretch.
|
|
989
|
+
Every well's drilling record is cut into stands of 100 ft; each stand goes
|
|
990
|
+
into the stretch of hole it was drilled in - 1,000 ft of true vertical
|
|
991
|
+
depth down to the heel, 1,000 ft along the hole beyond it, named for the
|
|
992
|
+
mapped formation where the workspace has the tops and the well its
|
|
993
|
+
elevation. In each stretch the fastest quarter of the stands is found, and
|
|
994
|
+
the window is what those stands ran: the weight on bit, the rotary speed,
|
|
995
|
+
the flow, the differential pressure, beside the well that was fastest
|
|
996
|
+
there and what every other well ran through the same rock. Then the
|
|
997
|
+
roadmap checks itself: each well is set against the roadmap made from the
|
|
998
|
+
others, the half of its stands nearer the window against the farther half,
|
|
999
|
+
stretch by stretch - so the page says whether running nearer the window
|
|
1000
|
+
went with drilling faster, or did not, before anyone drills the next well
|
|
1001
|
+
from it. The **Roadmap** tab, `gea roadmap`, `gea help roadmap`.
|
|
1002
|
+
|
|
1003
|
+
### Drilling alerts
|
|
1004
|
+
|
|
1005
|
+
Three old driller's rules, written down so each is applied to every stand
|
|
1006
|
+
of every well the same way, and replayed over the whole of each record:
|
|
1007
|
+
the off-bottom pressure falling at a steady flow, connection after
|
|
1008
|
+
connection (a washout - or a pump, the mud or a nozzle; the trip finds
|
|
1009
|
+
which); the differential pressure spiking with the bit stopped (a motor
|
|
1010
|
+
stall); the pick-up and slack-off weight leaving their own trend (the hole
|
|
1011
|
+
getting tight). The page shows every reading, what each rule would have
|
|
1012
|
+
said and when, and what the rig did next - whether a trip out of the hole
|
|
1013
|
+
followed. The thresholds are settings, each changed with its source. On a
|
|
1014
|
+
record still being written an event raises an alert once. The **Drilling
|
|
1015
|
+
alerts** tab, `gea dysfunction`, `gea help dysfunction`.
|
|
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
|
+
|
|
986
1037
|
### Plan vs actual and the survey tools
|
|
987
1038
|
|
|
988
1039
|
Each well against its directional plan: at every survey station, how far
|
|
@@ -1647,7 +1698,7 @@ attaches the zips to the GitHub release of that tag.
|
|
|
1647
1698
|
|
|
1648
1699
|
### The Windows installer
|
|
1649
1700
|
|
|
1650
|
-
Every release also carries `GEA-Program-Setup-0.
|
|
1701
|
+
Every release also carries `GEA-Program-Setup-0.89.0.exe` (for 0.89.0): the
|
|
1651
1702
|
same Windows kit installed like any Windows program, for the signed-in user
|
|
1652
1703
|
alone and with no administrator rights (`%LOCALAPPDATA%\Programs\GEA-Program`).
|
|
1653
1704
|
It asks for the site workspace (an existing one such as `C:\site` is used as
|
|
@@ -1666,7 +1717,7 @@ it, removes the program and leaves the workspace. Silent, for a site's
|
|
|
1666
1717
|
software deployment:
|
|
1667
1718
|
|
|
1668
1719
|
```
|
|
1669
|
-
GEA-Program-Setup-0.
|
|
1720
|
+
GEA-Program-Setup-0.89.0.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /WORKSPACE="C:\site" /SITENAME="Pad 3" /TASKS="desktopicon"
|
|
1670
1721
|
```
|
|
1671
1722
|
|
|
1672
1723
|
The setup is built by Inno Setup 6 from `tools/installer.iss` in the same
|
|
@@ -628,6 +628,24 @@ def main(argv=None) -> int:
|
|
|
628
628
|
p_cb.add_argument("--write", action="store_true", help="write reports/calibration/calibration.json and .md from the kept result")
|
|
629
629
|
p_cb.add_argument("--actor", type=str, default="cli")
|
|
630
630
|
p_cb.add_argument("--json", action="store_true")
|
|
631
|
+
p_rm = sub.add_parser("roadmap", help="the drilling roadmap: for every stretch of hole, the weight on bit, rotary speed, flow and differential pressure the fastest quarter of the stands on the pad's wells were drilled with, which well was fastest there, and each well checked against the roadmap made from the others")
|
|
632
|
+
p_rm.add_argument("--workspace", type=str, default=None, help="the workspace folder; without one the self-test runs (three labelled wells through rock with a known best weight and speed)")
|
|
633
|
+
p_rm.add_argument("--well", type=str, default=None, help="the well the next stand is given for (default: the well whose record ends last)")
|
|
634
|
+
p_rm.add_argument("--write", action="store_true", help="write reports/roadmap/roadmap.json, .md and .csv")
|
|
635
|
+
p_rm.add_argument("--actor", type=str, default="cli")
|
|
636
|
+
p_rm.add_argument("--json", action="store_true")
|
|
637
|
+
p_dy = sub.add_parser("dysfunction", help="drilling alerts replayed over each well's record: the off-bottom pressure falling at a steady flow (a washout), the differential pressure spiking with the bit stopped (a motor stall), the pick-up weight leaving its own trend (the hole getting tight) - what each rule would have said, when, and whether a trip followed")
|
|
638
|
+
p_dy.add_argument("--workspace", type=str, default=None, help="the workspace folder; without one the self-test runs (a labelled record with a washout, three stalls and a tightening hole put in, and a sound one)")
|
|
639
|
+
p_dy.add_argument("--washout-fall", type=float, default=None, help="settings: the fall in off-bottom pressure that flags a reading, as a fraction (default 0.06)")
|
|
640
|
+
p_dy.add_argument("--washout-min-psi", type=float, default=None, help="settings: and the least fall in psi (default 100)")
|
|
641
|
+
p_dy.add_argument("--stall-rise", type=float, default=None, help="settings: the rise in differential pressure over its median that is a stall, as a fraction (default 0.6)")
|
|
642
|
+
p_dy.add_argument("--stall-min-psi", type=float, default=None, help="settings: and the least rise in psi (default 300)")
|
|
643
|
+
p_dy.add_argument("--drag-sigma", type=float, default=None, help="settings: how many scatters off its trend a pick-up or slack-off weight is flagged at (default 3)")
|
|
644
|
+
p_dy.add_argument("--drag-min-klbf", type=float, default=None, help="settings: and the least distance in klbf (default 10)")
|
|
645
|
+
p_dy.add_argument("--source", type=str, default="", help="who set a changed setting and on what grounds")
|
|
646
|
+
p_dy.add_argument("--write", action="store_true", help="write reports/dysfunction/drilling_alerts.json, .md and events.csv")
|
|
647
|
+
p_dy.add_argument("--actor", type=str, default="cli")
|
|
648
|
+
p_dy.add_argument("--json", action="store_true")
|
|
631
649
|
p_os = sub.add_parser("seismicity", help="operations and seismicity: each well's drilling, completion and disposal windows against the earthquake catalogue around it - the events during and after each, the levels a regulator's protocol would reach, and the rate during operations against the rest of the record; the Mahoning Valley worked example")
|
|
632
650
|
p_os.add_argument("--workspace", type=str, default=None)
|
|
633
651
|
p_os.add_argument("--scene", type=str, default=None, choices=("workspace", "mahoning"), help="your wells (the default with --workspace) or the public worked example")
|
|
@@ -659,6 +677,21 @@ def main(argv=None) -> int:
|
|
|
659
677
|
p_os.add_argument("--actor", type=str, default="cli")
|
|
660
678
|
p_os.add_argument("--json", action="store_true")
|
|
661
679
|
|
|
680
|
+
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")
|
|
681
|
+
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)")
|
|
682
|
+
p_mc.add_argument("--allow", type=str, default=None, help="serve only these tools this run, comma-separated (never more than the site offers)")
|
|
683
|
+
p_mc.add_argument("--status", action="store_true", help="print the tools offered, how to start the server and the last calls, and exit")
|
|
684
|
+
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")
|
|
685
|
+
p_mc.add_argument("--call", type=str, default=None, help="call one tool and print its answer, as an assistant would get it")
|
|
686
|
+
p_mc.add_argument("--well", type=str, default=None, help="--call: the well, by name or id")
|
|
687
|
+
p_mc.add_argument("--topic", type=str, default=None, help="--call help: the topic")
|
|
688
|
+
p_mc.add_argument("--json", action="store_true", help="--call: the page as JSON instead of its text")
|
|
689
|
+
p_mc.add_argument("--offer", type=str, default=None, help="settings: the tools the site offers, comma-separated (all: every tool)")
|
|
690
|
+
p_mc.add_argument("--max-chars", type=int, default=None, help="settings: the most characters one answer carries (default 40000)")
|
|
691
|
+
p_mc.add_argument("--source", type=str, default="", help="settings: who decided, and on what grounds")
|
|
692
|
+
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")
|
|
693
|
+
p_mc.add_argument("--remove-from-claude-desktop", action="store_true", help="take it out again")
|
|
694
|
+
p_mc.add_argument("--actor", type=str, default="cli")
|
|
662
695
|
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")
|
|
663
696
|
p_al.add_argument("--workspace", type=str, required=True)
|
|
664
697
|
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")
|
|
@@ -2832,6 +2865,52 @@ def main(argv=None) -> int:
|
|
|
2832
2865
|
raise SystemExit(f"calibrate: {e.args[0] if e.args else e}")
|
|
2833
2866
|
print(_json.dumps(p, default=str) if a.json else _CB.text(p))
|
|
2834
2867
|
return 0
|
|
2868
|
+
elif a.cmd == "roadmap":
|
|
2869
|
+
import json as _json
|
|
2870
|
+
from . import roadmap as _RM
|
|
2871
|
+
from .cli import _safe_stdout
|
|
2872
|
+
from .workspace import Workspace, WorkspaceError
|
|
2873
|
+
_safe_stdout()
|
|
2874
|
+
if not a.workspace:
|
|
2875
|
+
r = _RM.selftest()
|
|
2876
|
+
print(_json.dumps(r, default=str) if a.json else "\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']}")
|
|
2877
|
+
return 0 if r["ok"] else 1
|
|
2878
|
+
try:
|
|
2879
|
+
ws = Workspace(a.workspace)
|
|
2880
|
+
if a.write:
|
|
2881
|
+
from . import __version__ as _ver88r
|
|
2882
|
+
r = _RM.write_report(ws, _ver88r, a.actor)
|
|
2883
|
+
print(f"written: {', '.join(r['files'])} under {r['folder']}")
|
|
2884
|
+
p = _RM.page(ws, a.well)
|
|
2885
|
+
except (_RM.RoadmapError, WorkspaceError, ValueError, OSError) as e:
|
|
2886
|
+
raise SystemExit(f"roadmap: {e.args[0] if e.args else e}")
|
|
2887
|
+
print(_json.dumps(p, default=str) if a.json else _RM.text(p))
|
|
2888
|
+
return 0
|
|
2889
|
+
elif a.cmd == "dysfunction":
|
|
2890
|
+
import json as _json
|
|
2891
|
+
from . import dysfunction as _DY
|
|
2892
|
+
from .cli import _safe_stdout
|
|
2893
|
+
from .workspace import Workspace, WorkspaceError
|
|
2894
|
+
_safe_stdout()
|
|
2895
|
+
if not a.workspace:
|
|
2896
|
+
r = _DY.selftest()
|
|
2897
|
+
print(_json.dumps(r, default=str) if a.json else "\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']}")
|
|
2898
|
+
return 0 if r["ok"] else 1
|
|
2899
|
+
try:
|
|
2900
|
+
ws = Workspace(a.workspace)
|
|
2901
|
+
kw_ = {"washout_fall": a.washout_fall, "washout_min_psi": a.washout_min_psi, "stall_rise": a.stall_rise, "stall_min_psi": a.stall_min_psi, "drag_sigma": a.drag_sigma, "drag_min_klbf": a.drag_min_klbf}
|
|
2902
|
+
if any(v is not None for v in kw_.values()):
|
|
2903
|
+
st_ = _DY.set_settings(ws, a.actor, a.source, **kw_)
|
|
2904
|
+
print("settings: " + ", ".join(f"{k} {st_[k]:g}" for k in _DY.DEFAULTS))
|
|
2905
|
+
if a.write:
|
|
2906
|
+
from . import __version__ as _ver88d
|
|
2907
|
+
r = _DY.write_report(ws, _ver88d, a.actor)
|
|
2908
|
+
print(f"written: {', '.join(r['files'])} under {r['folder']}")
|
|
2909
|
+
p = _DY.page(ws)
|
|
2910
|
+
except (_DY.DysfunctionError, WorkspaceError, ValueError, OSError) as e:
|
|
2911
|
+
raise SystemExit(f"dysfunction: {e.args[0] if e.args else e}")
|
|
2912
|
+
print(_json.dumps(p, default=str) if a.json else _DY.text(p))
|
|
2913
|
+
return 0
|
|
2835
2914
|
elif a.cmd == "seismicity":
|
|
2836
2915
|
import json as _json
|
|
2837
2916
|
from . import op_seismicity as _OS
|
|
@@ -3496,6 +3575,50 @@ def main(argv=None) -> int:
|
|
|
3496
3575
|
for v in f_["versions"][: (50 if a.family else 3)]:
|
|
3497
3576
|
print(f" {v['utc']} {v.get('report_id') or ''} reports/{v['dir']}")
|
|
3498
3577
|
return 0
|
|
3578
|
+
elif a.cmd == "mcp":
|
|
3579
|
+
import json as _json
|
|
3580
|
+
from . import mcp_server as _MC
|
|
3581
|
+
from .workspace import Workspace, WorkspaceError
|
|
3582
|
+
allow_ = [t_.strip() for t_ in a.allow.split(",") if t_.strip()] if a.allow else None
|
|
3583
|
+
if not a.workspace:
|
|
3584
|
+
r = _MC.selftest()
|
|
3585
|
+
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']}")
|
|
3586
|
+
return 0 if r["ok"] else 1
|
|
3587
|
+
try:
|
|
3588
|
+
ws = Workspace(a.workspace)
|
|
3589
|
+
except WorkspaceError as e:
|
|
3590
|
+
print(f"mcp: {e}", file=sys.stderr) # the error stream: standard output is the protocol's
|
|
3591
|
+
return 2
|
|
3592
|
+
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):
|
|
3593
|
+
return _MC.serve(ws, allow=allow_) # the server: nothing but protocol messages on standard output
|
|
3594
|
+
from .cli import _safe_stdout
|
|
3595
|
+
_safe_stdout()
|
|
3596
|
+
try:
|
|
3597
|
+
if a.offer or a.max_chars is not None:
|
|
3598
|
+
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)
|
|
3599
|
+
print(f"offered: {', '.join(_MC.offered(ws))}; an answer carries {st_['max_chars']:,} characters at most")
|
|
3600
|
+
if a.add_to_claude_desktop or a.remove_from_claude_desktop:
|
|
3601
|
+
r = _MC.install_claude_desktop(ws, a.actor, remove=a.remove_from_claude_desktop)
|
|
3602
|
+
for d_ in r["done"]:
|
|
3603
|
+
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")
|
|
3604
|
+
for d_ in r["skipped"]:
|
|
3605
|
+
print(f"not changed: {d_['path']} - {d_['why']}")
|
|
3606
|
+
if a.config:
|
|
3607
|
+
print(_json.dumps(_MC.client_config(ws.path, allow_), indent=2))
|
|
3608
|
+
if a.call:
|
|
3609
|
+
if a.call not in _MC.offered(ws, allow_):
|
|
3610
|
+
raise SystemExit(f"mcp: no tool {a.call!r} is offered; offered: {', '.join(_MC.offered(ws, allow_))}")
|
|
3611
|
+
args_ = {k: v for k, v in (("well", a.well), ("topic", a.topic)) if v is not None}
|
|
3612
|
+
if a.json:
|
|
3613
|
+
args_["json"] = True
|
|
3614
|
+
r = _MC.call_tool(ws, a.call, args_, _MC.settings(ws)["max_chars"])
|
|
3615
|
+
print(r["text"])
|
|
3616
|
+
return 1 if r["is_error"] else 0
|
|
3617
|
+
if a.status:
|
|
3618
|
+
print(_MC.text(_MC.page(ws)))
|
|
3619
|
+
except (_MC.ToolError, WorkspaceError, OSError) as e:
|
|
3620
|
+
raise SystemExit(f"mcp: {e.args[0] if e.args else e}")
|
|
3621
|
+
return 0
|
|
3499
3622
|
elif a.cmd == "alerts":
|
|
3500
3623
|
import json as _json
|
|
3501
3624
|
from . import alerts as _AL
|