pyselfheal-rt 0.3.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.
Files changed (62) hide show
  1. pyselfheal_rt-0.3.0/.env.example +20 -0
  2. pyselfheal_rt-0.3.0/CHANGELOG.md +50 -0
  3. pyselfheal_rt-0.3.0/Cargo.lock +444 -0
  4. pyselfheal_rt-0.3.0/Cargo.toml +28 -0
  5. pyselfheal_rt-0.3.0/LICENSE +21 -0
  6. pyselfheal_rt-0.3.0/MANUAL_TESTING.md +204 -0
  7. pyselfheal_rt-0.3.0/PKG-INFO +441 -0
  8. pyselfheal_rt-0.3.0/README.md +404 -0
  9. pyselfheal_rt-0.3.0/SECURITY.md +92 -0
  10. pyselfheal_rt-0.3.0/THIRD_PARTY_NOTICES.md +10443 -0
  11. pyselfheal_rt-0.3.0/examples/demo_app/calculator.py +2 -0
  12. pyselfheal_rt-0.3.0/examples/demo_app/run_demo.py +37 -0
  13. pyselfheal_rt-0.3.0/examples/demo_app/run_live_demo.py +65 -0
  14. pyselfheal_rt-0.3.0/examples/live_calculator.py +221 -0
  15. pyselfheal_rt-0.3.0/pyproject.toml +75 -0
  16. pyselfheal_rt-0.3.0/python/selfheal/__init__.py +15 -0
  17. pyselfheal_rt-0.3.0/python/selfheal/__main__.py +157 -0
  18. pyselfheal_rt-0.3.0/python/selfheal/_async_support.py +151 -0
  19. pyselfheal_rt-0.3.0/python/selfheal/_coordination.py +125 -0
  20. pyselfheal_rt-0.3.0/python/selfheal/_core.pyi +72 -0
  21. pyselfheal_rt-0.3.0/python/selfheal/_health_worker.py +68 -0
  22. pyselfheal_rt-0.3.0/python/selfheal/_native.py +24 -0
  23. pyselfheal_rt-0.3.0/python/selfheal/_process_tree.py +110 -0
  24. pyselfheal_rt-0.3.0/python/selfheal/_symbols.py +95 -0
  25. pyselfheal_rt-0.3.0/python/selfheal/_watchdog.py +167 -0
  26. pyselfheal_rt-0.3.0/python/selfheal/agent.py +369 -0
  27. pyselfheal_rt-0.3.0/python/selfheal/checks.py +155 -0
  28. pyselfheal_rt-0.3.0/python/selfheal/config.py +123 -0
  29. pyselfheal_rt-0.3.0/python/selfheal/diagnostics.py +49 -0
  30. pyselfheal_rt-0.3.0/python/selfheal/errors.py +5 -0
  31. pyselfheal_rt-0.3.0/python/selfheal/health_worker.py +125 -0
  32. pyselfheal_rt-0.3.0/python/selfheal/languages/__init__.py +3 -0
  33. pyselfheal_rt-0.3.0/python/selfheal/languages/python.py +123 -0
  34. pyselfheal_rt-0.3.0/python/selfheal/live.py +291 -0
  35. pyselfheal_rt-0.3.0/python/selfheal/models.py +100 -0
  36. pyselfheal_rt-0.3.0/python/selfheal/observer.py +29 -0
  37. pyselfheal_rt-0.3.0/python/selfheal/privacy.py +27 -0
  38. pyselfheal_rt-0.3.0/python/selfheal/providers/__init__.py +10 -0
  39. pyselfheal_rt-0.3.0/python/selfheal/providers/base.py +16 -0
  40. pyselfheal_rt-0.3.0/python/selfheal/providers/compatible.py +207 -0
  41. pyselfheal_rt-0.3.0/python/selfheal/providers/errors.py +14 -0
  42. pyselfheal_rt-0.3.0/python/selfheal/providers/mock.py +40 -0
  43. pyselfheal_rt-0.3.0/python/selfheal/providers/routing.py +89 -0
  44. pyselfheal_rt-0.3.0/python/selfheal/py.typed +0 -0
  45. pyselfheal_rt-0.3.0/python/selfheal/registry.py +42 -0
  46. pyselfheal_rt-0.3.0/python/selfheal/runtime.py +693 -0
  47. pyselfheal_rt-0.3.0/python/selfheal/scope.py +29 -0
  48. pyselfheal_rt-0.3.0/python/selfheal/terminal.py +31 -0
  49. pyselfheal_rt-0.3.0/python/selfheal/timing.py +187 -0
  50. pyselfheal_rt-0.3.0/scripts/check_dist.py +122 -0
  51. pyselfheal_rt-0.3.0/scripts/generate_notices.py +77 -0
  52. pyselfheal_rt-0.3.0/scripts/manual_test.py +117 -0
  53. pyselfheal_rt-0.3.0/scripts/run_timing_calculator.py +182 -0
  54. pyselfheal_rt-0.3.0/selfheal.example.toml +38 -0
  55. pyselfheal_rt-0.3.0/src/audit.rs +55 -0
  56. pyselfheal_rt-0.3.0/src/engine.rs +287 -0
  57. pyselfheal_rt-0.3.0/src/error.rs +41 -0
  58. pyselfheal_rt-0.3.0/src/lib.rs +222 -0
  59. pyselfheal_rt-0.3.0/src/patch.rs +54 -0
  60. pyselfheal_rt-0.3.0/src/policy.rs +84 -0
  61. pyselfheal_rt-0.3.0/src/snapshot.rs +77 -0
  62. pyselfheal_rt-0.3.0/src/verifier.rs +295 -0
@@ -0,0 +1,20 @@
1
+ # Copy to .env in the directory where you run the app.
2
+ # Existing process environment variables take precedence over .env.
3
+ # true selects Groq; false selects OpenAI. Only the selected provider is used.
4
+ SELFHEAL_USE_GROQ=true
5
+ GROQ_API_KEY=
6
+ GROQ_MODEL=openai/gpt-oss-120b
7
+ OPENAI_API_KEY=
8
+ OPENAI_MODEL=
9
+ # Optional legacy ordering when SELFHEAL_USE_GROQ is absent.
10
+ SELFHEAL_PROVIDER_PRIORITY=groq,openai
11
+
12
+ # ONE total repair budget, including provider retries, verification, review and
13
+ # activation. 1..3600 seconds; process env > .env; explicit SDK/TOML values win.
14
+ SELFHEAL_REPAIR_TIMEOUT_SECONDS=180
15
+ # Reserved INSIDE that total for cleanup/rollback (capped at 10% of the total).
16
+ SELFHEAL_TIMEOUT_CLEANUP_SECONDS=5
17
+ # Fail-stop for uninterruptible native callbacks: terminates the owning app if
18
+ # it cannot unwind by the hard deadline. A process supervisor must restart it.
19
+ # false retains cooperative timeouts but cannot bound arbitrary native stalls.
20
+ SELFHEAL_HARD_TIMEOUT=true
@@ -0,0 +1,50 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ - Dotted targets for directly defined Python instance/static/class methods and
6
+ property accessors, with class-cell preservation and descriptor-aware rollback.
7
+ - Developer-owned `HealthSuite`, `ScenarioCheck` and optional Hypothesis-backed
8
+ `PropertyCheck`, including bounded exploration and retained counterexamples.
9
+ - Explicit, bounded `context_files` for read-only cross-module diagnosis, with
10
+ secret checks and stale-context rejection before commit.
11
+ - Native interface marker and offline `selfheal doctor` command to identify
12
+ stale editable extensions before contacting an AI provider.
13
+ - Windows virtualenv workers start the underlying interpreter while retaining
14
+ their environment, so parent ownership and process cleanup use the real PID.
15
+ - Broader CI matrix and release checks for worker files, required dependencies,
16
+ matching versions and rebuilding a wheel from the source distribution.
17
+ - Final validation was stopped at the maintainer's request. These source changes
18
+ require a fresh native build, complete regression runs and installed-wheel
19
+ validation before publication; they are not a verified production release.
20
+
21
+ - Module-level async function dispatch and safe retry on the owning asyncio loop,
22
+ with async health/inspection APIs and async agent bindings and lifecycle.
23
+ - Awaited calls participate in activation coordination; pending repairs drain
24
+ active calls and pause new admissions before changing function code.
25
+ - Cancellation requests abort accepted repairs at safe checkpoints and waits for
26
+ coroutine cleanup and rollback; failed retries cannot recursively request AI.
27
+ - Direct automatic repairs have an hourly transaction limit and failure cooldown,
28
+ alongside the background agent's existing budgets, backoff and suspension.
29
+ - Supplied offline async regression cases and an integration/cancellation guide.
30
+ Tests and native builds remain for maintainer execution; no passing result or
31
+ production-readiness claim is made for these changes.
32
+
33
+ ## 0.3.0 — initial PyPI release preparation
34
+
35
+ - Python SDK with registered live targets, developer health contracts, background
36
+ inspection, manual heal/improve commands, previews and opt-in automatic patching.
37
+ - Developer-owned Groq/OpenAI credentials required; `.env` boolean selection,
38
+ safe `ConfigurationError` messages and offline `selfheal check-config` command.
39
+ - Function-body activation preserves module state and function identity. Scope
40
+ checks protect unrelated code; candidate and running health checks gate commit.
41
+ - Same-process activation, retained function-code rollback, source snapshots,
42
+ review decisions, terminal diffs and Rust audit records.
43
+ - Native verification deadline and bounded diagnostics, copied-source import
44
+ paths, atomic source rollback and source-permission preservation.
45
+ - CPython 3.11+ ABI3 packaging, locked dependencies, MIT source license and
46
+ bundled dependency notices, archive checker and manual artifact workflow.
47
+
48
+ Release preparation does not establish a successful build, installed-wheel
49
+ compatibility, live-provider result or production deployment. Run the maintainer
50
+ release checks before publishing this version.
@@ -0,0 +1,444 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "bitflags"
7
+ version = "2.13.2"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
10
+
11
+ [[package]]
12
+ name = "bumpalo"
13
+ version = "3.20.3"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
16
+
17
+ [[package]]
18
+ name = "cfg-if"
19
+ version = "1.0.5"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
22
+
23
+ [[package]]
24
+ name = "errno"
25
+ version = "0.3.14"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
28
+ dependencies = [
29
+ "libc",
30
+ "windows-sys",
31
+ ]
32
+
33
+ [[package]]
34
+ name = "fastrand"
35
+ version = "2.5.0"
36
+ source = "registry+https://github.com/rust-lang/crates.io-index"
37
+ checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
38
+
39
+ [[package]]
40
+ name = "futures-core"
41
+ version = "0.3.34"
42
+ source = "registry+https://github.com/rust-lang/crates.io-index"
43
+ checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
44
+
45
+ [[package]]
46
+ name = "futures-task"
47
+ version = "0.3.34"
48
+ source = "registry+https://github.com/rust-lang/crates.io-index"
49
+ checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
50
+
51
+ [[package]]
52
+ name = "futures-util"
53
+ version = "0.3.34"
54
+ source = "registry+https://github.com/rust-lang/crates.io-index"
55
+ checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
56
+ dependencies = [
57
+ "futures-core",
58
+ "futures-task",
59
+ "pin-project-lite",
60
+ "slab",
61
+ ]
62
+
63
+ [[package]]
64
+ name = "getrandom"
65
+ version = "0.4.3"
66
+ source = "registry+https://github.com/rust-lang/crates.io-index"
67
+ checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
68
+ dependencies = [
69
+ "cfg-if",
70
+ "libc",
71
+ "r-efi",
72
+ ]
73
+
74
+ [[package]]
75
+ name = "heck"
76
+ version = "0.5.0"
77
+ source = "registry+https://github.com/rust-lang/crates.io-index"
78
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
79
+
80
+ [[package]]
81
+ name = "itoa"
82
+ version = "1.0.18"
83
+ source = "registry+https://github.com/rust-lang/crates.io-index"
84
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
85
+
86
+ [[package]]
87
+ name = "js-sys"
88
+ version = "0.3.106"
89
+ source = "registry+https://github.com/rust-lang/crates.io-index"
90
+ checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5"
91
+ dependencies = [
92
+ "cfg-if",
93
+ "futures-util",
94
+ "wasm-bindgen",
95
+ ]
96
+
97
+ [[package]]
98
+ name = "libc"
99
+ version = "0.2.190"
100
+ source = "registry+https://github.com/rust-lang/crates.io-index"
101
+ checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
102
+
103
+ [[package]]
104
+ name = "linux-raw-sys"
105
+ version = "0.12.1"
106
+ source = "registry+https://github.com/rust-lang/crates.io-index"
107
+ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
108
+
109
+ [[package]]
110
+ name = "memchr"
111
+ version = "2.8.3"
112
+ source = "registry+https://github.com/rust-lang/crates.io-index"
113
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
114
+
115
+ [[package]]
116
+ name = "once_cell"
117
+ version = "1.21.4"
118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
119
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
120
+
121
+ [[package]]
122
+ name = "pin-project-lite"
123
+ version = "0.2.17"
124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
125
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
126
+
127
+ [[package]]
128
+ name = "portable-atomic"
129
+ version = "1.15.0"
130
+ source = "registry+https://github.com/rust-lang/crates.io-index"
131
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
132
+
133
+ [[package]]
134
+ name = "proc-macro2"
135
+ version = "1.0.107"
136
+ source = "registry+https://github.com/rust-lang/crates.io-index"
137
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
138
+ dependencies = [
139
+ "unicode-ident",
140
+ ]
141
+
142
+ [[package]]
143
+ name = "pyo3"
144
+ version = "0.29.3"
145
+ source = "registry+https://github.com/rust-lang/crates.io-index"
146
+ checksum = "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655"
147
+ dependencies = [
148
+ "libc",
149
+ "once_cell",
150
+ "portable-atomic",
151
+ "pyo3-build-config",
152
+ "pyo3-ffi",
153
+ "pyo3-macros",
154
+ ]
155
+
156
+ [[package]]
157
+ name = "pyo3-build-config"
158
+ version = "0.29.3"
159
+ source = "registry+https://github.com/rust-lang/crates.io-index"
160
+ checksum = "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb"
161
+ dependencies = [
162
+ "target-lexicon",
163
+ ]
164
+
165
+ [[package]]
166
+ name = "pyo3-ffi"
167
+ version = "0.29.3"
168
+ source = "registry+https://github.com/rust-lang/crates.io-index"
169
+ checksum = "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330"
170
+ dependencies = [
171
+ "libc",
172
+ "pyo3-build-config",
173
+ ]
174
+
175
+ [[package]]
176
+ name = "pyo3-macros"
177
+ version = "0.29.3"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6"
180
+ dependencies = [
181
+ "proc-macro2",
182
+ "pyo3-macros-backend",
183
+ "quote",
184
+ "syn 2.0.119",
185
+ ]
186
+
187
+ [[package]]
188
+ name = "pyo3-macros-backend"
189
+ version = "0.29.3"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3"
192
+ dependencies = [
193
+ "heck",
194
+ "proc-macro2",
195
+ "quote",
196
+ "syn 2.0.119",
197
+ ]
198
+
199
+ [[package]]
200
+ name = "quote"
201
+ version = "1.0.47"
202
+ source = "registry+https://github.com/rust-lang/crates.io-index"
203
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
204
+ dependencies = [
205
+ "proc-macro2",
206
+ ]
207
+
208
+ [[package]]
209
+ name = "r-efi"
210
+ version = "6.0.0"
211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
212
+ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
213
+
214
+ [[package]]
215
+ name = "rustix"
216
+ version = "1.1.5"
217
+ source = "registry+https://github.com/rust-lang/crates.io-index"
218
+ checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d"
219
+ dependencies = [
220
+ "bitflags",
221
+ "errno",
222
+ "libc",
223
+ "linux-raw-sys",
224
+ "windows-sys",
225
+ ]
226
+
227
+ [[package]]
228
+ name = "rustversion"
229
+ version = "1.0.23"
230
+ source = "registry+https://github.com/rust-lang/crates.io-index"
231
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
232
+
233
+ [[package]]
234
+ name = "same-file"
235
+ version = "1.0.6"
236
+ source = "registry+https://github.com/rust-lang/crates.io-index"
237
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
238
+ dependencies = [
239
+ "winapi-util",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "selfheal-runtime"
244
+ version = "0.3.0"
245
+ dependencies = [
246
+ "pyo3",
247
+ "serde",
248
+ "serde_json",
249
+ "tempfile",
250
+ "uuid",
251
+ "walkdir",
252
+ ]
253
+
254
+ [[package]]
255
+ name = "serde"
256
+ version = "1.0.229"
257
+ source = "registry+https://github.com/rust-lang/crates.io-index"
258
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
259
+ dependencies = [
260
+ "serde_core",
261
+ "serde_derive",
262
+ ]
263
+
264
+ [[package]]
265
+ name = "serde_core"
266
+ version = "1.0.229"
267
+ source = "registry+https://github.com/rust-lang/crates.io-index"
268
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
269
+ dependencies = [
270
+ "serde_derive",
271
+ ]
272
+
273
+ [[package]]
274
+ name = "serde_derive"
275
+ version = "1.0.229"
276
+ source = "registry+https://github.com/rust-lang/crates.io-index"
277
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
278
+ dependencies = [
279
+ "proc-macro2",
280
+ "quote",
281
+ "syn 3.0.6",
282
+ ]
283
+
284
+ [[package]]
285
+ name = "serde_json"
286
+ version = "1.0.151"
287
+ source = "registry+https://github.com/rust-lang/crates.io-index"
288
+ checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
289
+ dependencies = [
290
+ "itoa",
291
+ "memchr",
292
+ "serde",
293
+ "serde_core",
294
+ "zmij",
295
+ ]
296
+
297
+ [[package]]
298
+ name = "slab"
299
+ version = "0.4.12"
300
+ source = "registry+https://github.com/rust-lang/crates.io-index"
301
+ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
302
+
303
+ [[package]]
304
+ name = "syn"
305
+ version = "2.0.119"
306
+ source = "registry+https://github.com/rust-lang/crates.io-index"
307
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
308
+ dependencies = [
309
+ "proc-macro2",
310
+ "quote",
311
+ "unicode-ident",
312
+ ]
313
+
314
+ [[package]]
315
+ name = "syn"
316
+ version = "3.0.6"
317
+ source = "registry+https://github.com/rust-lang/crates.io-index"
318
+ checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
319
+ dependencies = [
320
+ "proc-macro2",
321
+ "quote",
322
+ "unicode-ident",
323
+ ]
324
+
325
+ [[package]]
326
+ name = "target-lexicon"
327
+ version = "0.13.5"
328
+ source = "registry+https://github.com/rust-lang/crates.io-index"
329
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
330
+
331
+ [[package]]
332
+ name = "tempfile"
333
+ version = "3.27.0"
334
+ source = "registry+https://github.com/rust-lang/crates.io-index"
335
+ checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
336
+ dependencies = [
337
+ "fastrand",
338
+ "getrandom",
339
+ "once_cell",
340
+ "rustix",
341
+ "windows-sys",
342
+ ]
343
+
344
+ [[package]]
345
+ name = "unicode-ident"
346
+ version = "1.0.26"
347
+ source = "registry+https://github.com/rust-lang/crates.io-index"
348
+ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
349
+
350
+ [[package]]
351
+ name = "uuid"
352
+ version = "1.27.0"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a"
355
+ dependencies = [
356
+ "getrandom",
357
+ "js-sys",
358
+ "wasm-bindgen",
359
+ ]
360
+
361
+ [[package]]
362
+ name = "walkdir"
363
+ version = "2.5.0"
364
+ source = "registry+https://github.com/rust-lang/crates.io-index"
365
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
366
+ dependencies = [
367
+ "same-file",
368
+ "winapi-util",
369
+ ]
370
+
371
+ [[package]]
372
+ name = "wasm-bindgen"
373
+ version = "0.2.129"
374
+ source = "registry+https://github.com/rust-lang/crates.io-index"
375
+ checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409"
376
+ dependencies = [
377
+ "cfg-if",
378
+ "once_cell",
379
+ "rustversion",
380
+ "wasm-bindgen-macro",
381
+ "wasm-bindgen-shared",
382
+ ]
383
+
384
+ [[package]]
385
+ name = "wasm-bindgen-macro"
386
+ version = "0.2.129"
387
+ source = "registry+https://github.com/rust-lang/crates.io-index"
388
+ checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535"
389
+ dependencies = [
390
+ "quote",
391
+ "wasm-bindgen-macro-support",
392
+ ]
393
+
394
+ [[package]]
395
+ name = "wasm-bindgen-macro-support"
396
+ version = "0.2.129"
397
+ source = "registry+https://github.com/rust-lang/crates.io-index"
398
+ checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7"
399
+ dependencies = [
400
+ "bumpalo",
401
+ "proc-macro2",
402
+ "quote",
403
+ "syn 3.0.6",
404
+ "wasm-bindgen-shared",
405
+ ]
406
+
407
+ [[package]]
408
+ name = "wasm-bindgen-shared"
409
+ version = "0.2.129"
410
+ source = "registry+https://github.com/rust-lang/crates.io-index"
411
+ checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6"
412
+ dependencies = [
413
+ "unicode-ident",
414
+ ]
415
+
416
+ [[package]]
417
+ name = "winapi-util"
418
+ version = "0.1.11"
419
+ source = "registry+https://github.com/rust-lang/crates.io-index"
420
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
421
+ dependencies = [
422
+ "windows-sys",
423
+ ]
424
+
425
+ [[package]]
426
+ name = "windows-link"
427
+ version = "0.2.1"
428
+ source = "registry+https://github.com/rust-lang/crates.io-index"
429
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
430
+
431
+ [[package]]
432
+ name = "windows-sys"
433
+ version = "0.61.2"
434
+ source = "registry+https://github.com/rust-lang/crates.io-index"
435
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
436
+ dependencies = [
437
+ "windows-link",
438
+ ]
439
+
440
+ [[package]]
441
+ name = "zmij"
442
+ version = "1.0.23"
443
+ source = "registry+https://github.com/rust-lang/crates.io-index"
444
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
@@ -0,0 +1,28 @@
1
+ [package]
2
+ name = "selfheal-runtime"
3
+ version = "0.3.0"
4
+ edition = "2021"
5
+ description = "Rust core for a provider-independent self-healing Python application runtime"
6
+ license = "MIT"
7
+ publish = false
8
+ include = [
9
+ "src/**", "python/selfheal/**/*.py", "python/selfheal/**/*.pyi",
10
+ "python/selfheal/py.typed", "Cargo.toml", "Cargo.lock", "pyproject.toml",
11
+ "README.md", "LICENSE", "THIRD_PARTY_NOTICES.md", "SECURITY.md", "CHANGELOG.md",
12
+ ]
13
+ readme = "README.md"
14
+
15
+ [lib]
16
+ name = "_core"
17
+ crate-type = ["cdylib", "rlib"]
18
+
19
+ [dependencies]
20
+ pyo3 = { version = "0.29", features = ["abi3-py311"] }
21
+ serde = { version = "1", features = ["derive"] }
22
+ serde_json = "1"
23
+ tempfile = "3"
24
+ uuid = { version = "1", features = ["v4"] }
25
+ walkdir = "2"
26
+
27
+ [dev-dependencies]
28
+ tempfile = "3"
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SelfHeal Runtime Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.