ralphx 0.2.2__py3-none-any.whl → 0.3.5__py3-none-any.whl

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 (45) hide show
  1. ralphx/__init__.py +1 -1
  2. ralphx/api/main.py +9 -1
  3. ralphx/api/routes/auth.py +730 -65
  4. ralphx/api/routes/config.py +3 -56
  5. ralphx/api/routes/export_import.py +795 -0
  6. ralphx/api/routes/loops.py +4 -4
  7. ralphx/api/routes/planning.py +19 -5
  8. ralphx/api/routes/projects.py +84 -2
  9. ralphx/api/routes/templates.py +115 -2
  10. ralphx/api/routes/workflows.py +22 -22
  11. ralphx/cli.py +21 -6
  12. ralphx/core/auth.py +346 -171
  13. ralphx/core/database.py +615 -167
  14. ralphx/core/executor.py +0 -3
  15. ralphx/core/loop.py +15 -2
  16. ralphx/core/loop_templates.py +69 -3
  17. ralphx/core/planning_service.py +109 -21
  18. ralphx/core/preview.py +9 -25
  19. ralphx/core/project_db.py +175 -75
  20. ralphx/core/project_export.py +469 -0
  21. ralphx/core/project_import.py +670 -0
  22. ralphx/core/sample_project.py +430 -0
  23. ralphx/core/templates.py +46 -9
  24. ralphx/core/workflow_executor.py +35 -5
  25. ralphx/core/workflow_export.py +606 -0
  26. ralphx/core/workflow_import.py +1149 -0
  27. ralphx/examples/sample_project/DESIGN.md +345 -0
  28. ralphx/examples/sample_project/README.md +37 -0
  29. ralphx/examples/sample_project/guardrails.md +57 -0
  30. ralphx/examples/sample_project/stories.jsonl +10 -0
  31. ralphx/mcp/__init__.py +6 -2
  32. ralphx/mcp/registry.py +3 -3
  33. ralphx/mcp/server.py +99 -29
  34. ralphx/mcp/tools/__init__.py +4 -0
  35. ralphx/mcp/tools/help.py +204 -0
  36. ralphx/mcp/tools/workflows.py +114 -32
  37. ralphx/mcp_server.py +6 -2
  38. ralphx/static/assets/index-0ovNnfOq.css +1 -0
  39. ralphx/static/assets/index-CY9s08ZB.js +251 -0
  40. ralphx/static/assets/index-CY9s08ZB.js.map +1 -0
  41. ralphx/static/index.html +14 -0
  42. {ralphx-0.2.2.dist-info → ralphx-0.3.5.dist-info}/METADATA +34 -12
  43. {ralphx-0.2.2.dist-info → ralphx-0.3.5.dist-info}/RECORD +45 -30
  44. {ralphx-0.2.2.dist-info → ralphx-0.3.5.dist-info}/WHEEL +0 -0
  45. {ralphx-0.2.2.dist-info → ralphx-0.3.5.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>RalphX Dashboard</title>
8
+ <script type="module" crossorigin src="/assets/index-CY9s08ZB.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-0ovNnfOq.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ralphx
3
- Version: 0.2.2
3
+ Version: 0.3.5
4
4
  Summary: Autonomous AI loop orchestration for Claude Code - define workflows in YAML, run autonomously, monitor in real-time
5
5
  Project-URL: Homepage, https://github.com/jackneil/ralphx
6
6
  Project-URL: Repository, https://github.com/jackneil/ralphx
@@ -34,8 +34,6 @@ Requires-Dist: httpx>=0.24; extra == 'dev'
34
34
  Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
35
35
  Requires-Dist: pytest>=7.0; extra == 'dev'
36
36
  Requires-Dist: ruff>=0.1; extra == 'dev'
37
- Provides-Extra: mcp
38
- Requires-Dist: mcp>=0.1; extra == 'mcp'
39
37
  Description-Content-Type: text/markdown
40
38
 
41
39
  # RalphX
@@ -106,7 +104,7 @@ for product development. I'm not technical so please handle everything:
106
104
  1. Check if I have conda/miniconda installed. If not, install miniconda for my OS.
107
105
  2. Create a Python 3.11 environment called "ralphx" and activate it
108
106
  3. Install RalphX from PyPI: pip install ralphx
109
- 4. Add RalphX as an MCP server so you can control it: claude mcp add ralphx -- ralphx mcp
107
+ 4. Add RalphX as an MCP server using the full path to the ralphx binary in the conda env (use the right command for my OS to find it)
110
108
  5. Start the RalphX dashboard: ralphx serve
111
109
  6. Ask me if I want a desktop shortcut to launch the dashboard. If yes, create
112
110
  a shortcut for my OS that uses the full path to the Python executable in the
@@ -130,10 +128,26 @@ Open `http://localhost:16768` to monitor progress.
130
128
 
131
129
  ---
132
130
 
133
- **Already technical?** Here's the one-liner:
131
+ **Already technical?** Here's the quick setup:
134
132
 
135
133
  ```bash
136
- pip install ralphx && claude mcp add ralphx -- ralphx mcp
134
+ # Create and activate a Python 3.11+ environment:
135
+ conda create -n ralphx python=3.11 -y && conda activate ralphx
136
+
137
+ # Install RalphX:
138
+ pip install ralphx
139
+
140
+ # Add MCP server with full path to ralphx binary:
141
+
142
+ # Linux/Mac:
143
+ claude mcp add ralphx -e PYTHONDONTWRITEBYTECODE=1 -- "$(which ralphx)" mcp
144
+
145
+ # Mac (zsh) - if "which ralphx" fails, first run: conda init zsh && source ~/.zshrc
146
+
147
+ # Windows - first find your path, then use it:
148
+ # CMD: where.exe ralphx
149
+ # PowerShell: (Get-Command ralphx).Source
150
+ claude mcp add ralphx -e PYTHONDONTWRITEBYTECODE=1 -- C:\Users\YOU\miniconda3\envs\ralphx\Scripts\ralphx.exe mcp
137
151
  ```
138
152
 
139
153
  ---
@@ -226,16 +240,23 @@ Ask Claude: *"Set up a new-product workflow starting from my idea for a task man
226
240
  For those who prefer to do it themselves:
227
241
 
228
242
  ```bash
229
- # If you don't have conda, install miniconda first:
230
- # https://docs.conda.io/en/latest/miniconda.html
231
-
232
- # Create environment and install
243
+ # Create a virtual environment (use conda, venv, or your preferred tool)
244
+ # Example with conda:
233
245
  conda create -n ralphx python=3.11 -y
234
246
  conda activate ralphx
247
+
248
+ # Or with venv:
249
+ # python3 -m venv ~/.venvs/ralphx && source ~/.venvs/ralphx/bin/activate
250
+
251
+ # Install RalphX
235
252
  pip install ralphx
236
253
 
237
- # Set up MCP so Claude can control RalphX
238
- claude mcp add ralphx -- ralphx mcp
254
+ # Set up MCP so Claude can control RalphX (uses full path so it works outside the env)
255
+ # Linux/Mac:
256
+ claude mcp add ralphx -e PYTHONDONTWRITEBYTECODE=1 -- "$(which ralphx)" mcp
257
+ # Mac (zsh): if "which" fails, run: conda init zsh && source ~/.zshrc
258
+ # Windows: find path with "where.exe ralphx" (CMD) or "(Get-Command ralphx).Source" (PowerShell)
259
+ # then: claude mcp add ralphx -e PYTHONDONTWRITEBYTECODE=1 -- C:\Users\YOU\...\ralphx.exe mcp
239
260
 
240
261
  # Start the dashboard
241
262
  ralphx serve
@@ -296,6 +317,7 @@ Claude gets full access to RalphX:
296
317
  - [SDLC Workflows](design/SDLC_WORKFLOWS.md) - All workflow templates explained
297
318
  - [Design Overview](design/DESIGN.md) - Architecture deep dive
298
319
  - [Loop Schema](design/LOOP_SCHEMA.md) - Configuration reference
320
+ - [Backup & Import Guide](docs/BACKUP_AND_IMPORT.md) - Export workflows, import items
299
321
 
300
322
  ---
301
323
 
@@ -1,62 +1,69 @@
1
- ralphx/__init__.py,sha256=_FIbqmtiTVa7APjMrQbX7ncHJjq-PMz3AhjK38Am7yk,159
2
- ralphx/cli.py,sha256=vvydNYS8RCjXCZZL5-o-4T9hSUloP7PDJdvbV9b70Fk,45351
3
- ralphx/mcp_server.py,sha256=4rrtY28GQQFQW_A1yAGM5swkGxfWFO-Lxd4Jfg7GkEY,406
1
+ ralphx/__init__.py,sha256=e30Wxptgdwpx0R-hwf81DOLqPxxJ2UDvZuGp2myAd6I,159
2
+ ralphx/cli.py,sha256=G9AEJUZoOjyjcxRG5AJppj130dw9qLGVUMqdvijUa4Q,46204
3
+ ralphx/mcp_server.py,sha256=yaLz0VS1vg1Dm9yotEP9ugPsM0frxVXrgWg6R186ISc,676
4
4
  ralphx/adapters/__init__.py,sha256=oHYD7fJUfZ832-9lR0MJLqiBqKQKY3KRKs4uuIWkGQ0,332
5
5
  ralphx/adapters/base.py,sha256=KMSSpa0anknTmkVBGeeISTchP9bNasZOqjYpRyHRh2s,5204
6
6
  ralphx/adapters/claude_cli.py,sha256=vXaKiXcLZ63trGWVMxLGMZnt5X3oSOEMPdpAn4qvEdw,22556
7
7
  ralphx/api/__init__.py,sha256=eGkbq2sHbLKErsTA_Czm7EziHgdkl7y0Rc_IxYC1riM,39
8
- ralphx/api/main.py,sha256=rzEWdaa2MWFDpUnso5Se3DCRmEW5cvhMYB_8Tndu664,11724
8
+ ralphx/api/main.py,sha256=pxUt2wr2u-EoKMh9bLjQWzkl9ilSA3ODVWH8nNcIxrg,12089
9
9
  ralphx/api/routes/__init__.py,sha256=GYDWlO5eeQbScMB-X1JD_vKmxQQ94bO0eJ9T3gNjP54,139
10
- ralphx/api/routes/auth.py,sha256=2Sld7RDMgDzpQlWEvkJxAsHDKEXK6iNJFQvZuXV-geI,6642
11
- ralphx/api/routes/config.py,sha256=VgDnHNNnGH86gvdo21-41CmLLnnmZ7iccm6QoOfxT0g,21427
10
+ ralphx/api/routes/auth.py,sha256=r0LEHNveP1fwM3jQ4aKR7cqIKKfjC710Hi_clpc7qN4,29977
11
+ ralphx/api/routes/config.py,sha256=hXOvFzSUJhU90mKSObGW5HzZzOj8hD7BuDxdZc0JCKk,19871
12
+ ralphx/api/routes/export_import.py,sha256=hRgDBrSD5b6pzPi6Pk7FwNFSor5XLgqWHq2-ZDSAtWI,24468
12
13
  ralphx/api/routes/files.py,sha256=YE05Bi8LJQUz3-RHVhmdmQ2tHxpgtEJ1_1z18cd_Aso,8579
13
14
  ralphx/api/routes/filesystem.py,sha256=2Y8FLPYRDijJQDqwAxmMfkvmMQ6Ki0A6rF6-YCRJoMk,1445
14
15
  ralphx/api/routes/imports.py,sha256=gpmvBOZyL_JNmJKkFx1zOyYps5kkOZ7069UED_Zw5Tc,14760
15
16
  ralphx/api/routes/items.py,sha256=_7RTJ7bHgpjzOXYL7hj8DtETzHj3kxsCUnvE0WNG_hI,18871
16
17
  ralphx/api/routes/logs.py,sha256=8Bk5z0tsuD5XNdMs4QChb1i_JXUqo025361n8O35hmc,12323
17
- ralphx/api/routes/loops.py,sha256=pmHvPuiQY93s5P28-GxVUavN6wcgSjlGIKV4P1MbVu0,94815
18
- ralphx/api/routes/planning.py,sha256=Z3jz4gMKpDnRL0oyIJEhusUNm7DPrsLrnE8pv8cRGI0,20339
19
- ralphx/api/routes/projects.py,sha256=RKzvGyf0AA2ca8z0ecjyLJhW5XOdj8pYQwT3mXPXTfQ,7555
18
+ ralphx/api/routes/loops.py,sha256=1RVeWojX0i25snbrEpm8uuLMCnZdQx7Zfmso85TjSGc,94822
19
+ ralphx/api/routes/planning.py,sha256=8bSU-38zFbRbN_a3BsaPaJ601-uXFMrNudfxXf7tW_o,20956
20
+ ralphx/api/routes/projects.py,sha256=uyoaRHmxNiqKL25uHFJN4vvdQCWwJ1Lzv3LlNCQDjT0,10375
20
21
  ralphx/api/routes/resources.py,sha256=-D2Ej2ybEPQnSK1wH1TJgaOlFwF_KRnDbObpgfnh3WQ,10804
21
22
  ralphx/api/routes/runs.py,sha256=aQ0axIlIiYqAqTcNEXjHuwvIrOWi1XN5iIa3CVJOqT8,2382
22
23
  ralphx/api/routes/stream.py,sha256=RwZprHc407uTmkT-FLIbkhDGfksb5RAzSXW6mVxeJjQ,18764
23
- ralphx/api/routes/templates.py,sha256=7UzA6d6uKt2_IjM55F-K8rcXngAAkjhq87pNmr4mEAU,11772
24
- ralphx/api/routes/workflows.py,sha256=7eSieMnTvC8aIJ37awdUGCo-mqPTuppYaG1q8ayLFhk,75334
24
+ ralphx/api/routes/templates.py,sha256=KuvD_B4x0Oprfn7YzzW08y816BKoUxPmMpdkPG3TpGA,15223
25
+ ralphx/api/routes/workflows.py,sha256=tVulAZv5pak2Np8u4M2CMzFO_g_MOWa536aaCAHdG-A,75963
25
26
  ralphx/core/__init__.py,sha256=dLTjDYusnlvYywpAovhBxbXwDctCcQHA6kmO-A3hp8o,69
26
- ralphx/core/auth.py,sha256=ZU1DR7NTBCWFhHIsa0nPeiLSK5ShkmIC5KqrDWx9glU,32937
27
+ ralphx/core/auth.py,sha256=jUd9jmro5AMT46x-srCN6vSLU8yu-VQ0MIiXG0j3K3g,40707
27
28
  ralphx/core/checkpoint.py,sha256=9gFKQpou9n0WDSKC8aJBTBS85wpuh7QtZCFH1sSvJFY,14292
28
- ralphx/core/database.py,sha256=feFeHXhvqgVv-Rc3SOUfrY-iA8BJRInMsOyOMvRqGag,68540
29
+ ralphx/core/database.py,sha256=_4sfaNO9UgDUFB45oDsrkNaJkzLR-5o0HluOuAilzXg,84892
29
30
  ralphx/core/dependencies.py,sha256=CEtKWXcnQr7CckdvxmRJIPNE4LjWBVoGoNqPqJWr298,11960
30
31
  ralphx/core/display.py,sha256=R1Nf03n7LzMrp9S3Ppt5mJyH-7T3GBE097d1d7MbaQo,9385
31
32
  ralphx/core/doctor.py,sha256=f7X9ed7aax7UWdhleKis1Tek4HybQoW17kjtDwWdXs8,22843
32
- ralphx/core/executor.py,sha256=FN-jbCzHsqGq-uxCGDJ5rb3jurFimZ2t7DC-UtEcVlI,96144
33
+ ralphx/core/executor.py,sha256=zKP72m5buOZkzTs9lXPs1qZyyOs9BLmhgtcFK-5vQNY,95911
33
34
  ralphx/core/global_db.py,sha256=I3PrdIiS7yVKy_ETpggsCJT6xGb74JUhMVdA5Ywlydo,12915
34
35
  ralphx/core/guardrails.py,sha256=sPwaBqVhJ3RccHkKbTOuhIlvoOsGdjEUN0DO2KNX4VE,30126
35
36
  ralphx/core/import_manager.py,sha256=Vsst_zdw5IewAx-7YxHoO7cJsCHdo3-lgID3xm0JIJM,19949
36
37
  ralphx/core/input_templates.py,sha256=6E3MB_Pc9s97hrW6-Tx6nAFXfYUQ4jPHdukf5xeHN1Y,11099
37
38
  ralphx/core/logger.py,sha256=5-jzTs-FM-qDqhAwi7DMMG_2ScpoYftmVppl6nWfGmg,8657
38
- ralphx/core/loop.py,sha256=UkMLrK0Prk1DaSMKptGmJVsjDpPIyujWl2ei1QzVc5M,10571
39
- ralphx/core/loop_templates.py,sha256=Mb_LMW3ELaOQMAUSVu6zK8kARokA2nOcx4Fln5q-94k,21443
39
+ ralphx/core/loop.py,sha256=8xbe8nSkurkZd-dypuf9aBIw4P13r1nGUIMWaMlQb_8,11216
40
+ ralphx/core/loop_templates.py,sha256=GV9iCdbH-7aPNOO9J17Cz3um7wD-61X0mJydQVrneHI,23721
40
41
  ralphx/core/oauth.py,sha256=YfoKgS4kTIY6xtiRavQMeZvmoSAqG99dpsGW2BCtPbU,8653
41
42
  ralphx/core/permission_templates.py,sha256=vsOQlBizN2c0iVhT17djV-7EonZsJ_MTb8lx1nbnjtY,11787
42
43
  ralphx/core/permissions.py,sha256=L8msaFdEDGRN2QoYR0G3d9tPCqMrshAHdf5WFsFsgZ0,10271
43
- ralphx/core/planning_service.py,sha256=HrgeCdPNooKRLK-REE61R3oSPwjYgt1j6VpesRacen0,12139
44
- ralphx/core/preview.py,sha256=-WqwZrzQQe8LVatcO4jyGT6pOgFAJigdJDUnI2upRus,17484
44
+ ralphx/core/planning_service.py,sha256=zNnUjmVHdgMgpCF8nmQxvpUQJBtBYuBeuwkzyutrsXc,15737
45
+ ralphx/core/preview.py,sha256=W6vHC8XPVX6NcYtBkJRU6eCehAQrrwUFyi3jzEkNlW8,16740
45
46
  ralphx/core/project.py,sha256=lPfqzQDySOpoB61sxb3-UvamCctUntTu6bvf12STdoY,13564
46
- ralphx/core/project_db.py,sha256=Icd58UvLyeuMkMbqNGvhS_CBy_rp_utAxLjq7bL1UGM,186137
47
+ ralphx/core/project_db.py,sha256=ULcXj56trYFPK0SzeRYXnS4O3YJFfAvcTAeCPlxdT5o,190314
48
+ ralphx/core/project_export.py,sha256=METPK9-jbQafA8q_ywdRLwXE998-0i_Gd2jeWKNoP1M,17787
49
+ ralphx/core/project_import.py,sha256=BLQeN12aCrLYeR27ezYndxepQJAFwzII_yHv_AaaT0o,25556
47
50
  ralphx/core/resources.py,sha256=OJdRkwwTTMoXINl6rIsNki_68mxsOgIu17UPHrey3So,17816
51
+ ralphx/core/sample_project.py,sha256=cCo7JDBC-ymOS0U0FTQfi1TF9jYdSfSWovcWJPJFI20,14176
48
52
  ralphx/core/schemas.py,sha256=4tC519c-wsFZrW3ATpETNqRAm9sGOpKUSftRXTOLWiE,4200
49
53
  ralphx/core/session.py,sha256=pd6ieA44KoloYPELtPuKa7UHK_VUDTY1ss4GKWUzH3M,16986
50
- ralphx/core/templates.py,sha256=qkAeGCOxlo6uCMryGgW-rnhYtgSiT8DiYEorMpbMZbw,7538
51
- ralphx/core/workflow_executor.py,sha256=ztl3dZ11bSgblXPh2apl-CV-ElD39_lpXi1OcURovZA,22263
54
+ ralphx/core/templates.py,sha256=0tW-3-rTqFxW-SW8kxmKFLvpBwN_GMKIk0FKAgnFREA,9190
55
+ ralphx/core/workflow_executor.py,sha256=jok8xRls6GaVMHel2YWtISv2kbNWnJi7d6WkMe21UWI,23526
56
+ ralphx/core/workflow_export.py,sha256=pFaHhgDugXSgEsFb94evLFirSiQhAkBMJYZEp-YvQkY,22513
57
+ ralphx/core/workflow_import.py,sha256=hb6SDXbiFv-qhCb-rC9zMACPMle0F8865FV5bGYIi38,45343
52
58
  ralphx/core/workspace.py,sha256=0Z6mzypzZ7PSEhHY6_FnlXAVnfre1A-Rt9h_yIw1sgw,12988
53
- ralphx/mcp/__init__.py,sha256=47lMwRZnrgebcn13YeeNbMPLUnAmadVc7YeeGTiggi0,327
59
+ ralphx/mcp/__init__.py,sha256=p33Zu-o35PSLt33YRK4AyTrrhQHBc0bej4c-_jtUjk0,597
54
60
  ralphx/mcp/base.py,sha256=Uyowy6SX47jQLvWGOxWNavuTp8Nxk2JyWe9Uwjtx3tA,10534
55
- ralphx/mcp/registry.py,sha256=qjyGwslanetrvIqqBhCp1DtrU1WE5OZu3LajHSNNRWY,2026
56
- ralphx/mcp/server.py,sha256=HDoLzuNb5AdPjBIFGGeImWVxhOcSIiGT3hEFkHWCGGg,5726
57
- ralphx/mcp/tools/__init__.py,sha256=ewUXodEuY6xmGh6l0dE7b3YhFTj_Bny8r5spetb-DJE,1470
61
+ ralphx/mcp/registry.py,sha256=DeqtdH__sSGIoDhxi2K1G0F62UYsBGWXeuI1nIswUBs,2041
62
+ ralphx/mcp/server.py,sha256=KyAUG4ZJdmGwLuS7XFnl-IvnFQcTThr5DPr6H5aeCGw,9127
63
+ ralphx/mcp/tools/__init__.py,sha256=ux8G39HrsVZ2bEPHl8KEk6jvkpsYetvqDU_YbQyyXGY,1655
58
64
  ralphx/mcp/tools/diagnostics.py,sha256=EmidhFgNvT4Ep4vqmnled83S7EhOMd_AE-Ub3aQBYMM,15643
59
65
  ralphx/mcp/tools/guardrails.py,sha256=KnSufMXqaW2UCmOBQRK9rve0ynFIaT7XPVbB7owhjhc,13215
66
+ ralphx/mcp/tools/help.py,sha256=Tj-ysEv6kXGBd9_-FsWWjMCSl2by30QGUdgTl7fm8g8,8150
60
67
  ralphx/mcp/tools/imports.py,sha256=vxnMtib-bCUfqH_AFk7MvhtJDTu0KJ8Ku-3Z394OqCY,21116
61
68
  ralphx/mcp/tools/items.py,sha256=6sznvXRWAFDZwPU4jRuduqxWmKPLkFvzqQdm9UvoxfE,14194
62
69
  ralphx/mcp/tools/loops.py,sha256=S-hClTNVEsh4jBQE2YneIW7yEr3Nn6qRqQwuJ0Jckoc,13375
@@ -64,7 +71,7 @@ ralphx/mcp/tools/monitoring.py,sha256=HaY2qCITS_3QORozc1yd-yASPH8iAuhaaclNGEMFhe
64
71
  ralphx/mcp/tools/permissions.py,sha256=jlmvXMnP-AiDgBjQj1nPu1THZ_SG_F4bROTSTgz_paw,10356
65
72
  ralphx/mcp/tools/projects.py,sha256=rf5KaPViH42UN77hDK9xACtGIHzVlszno0b5MqcZikg,7979
66
73
  ralphx/mcp/tools/resources.py,sha256=Nqsu6xbs5m9wJ6EzioWjnDaCeTASh4IhNnnUsYnJw3c,13814
67
- ralphx/mcp/tools/workflows.py,sha256=Q6u3wAdkegTJOLjH6uTYx57nQNWVpjvBd_GjmbNl-tk,33200
74
+ ralphx/mcp/tools/workflows.py,sha256=Uev7UsjfCDBBXElG3pE2GnQj8T4kmREaxuTY2_FcjAQ,36770
68
75
  ralphx/models/__init__.py,sha256=Mizcjyz30Ae8S3Vz44uNplWhpk0RmS976cc_Ne8SUqc,1080
69
76
  ralphx/models/guardrail.py,sha256=li9J0u2I5F0elJO3mgssw5z4RnElqPqtoQXn8WYzx0k,5317
70
77
  ralphx/models/loop.py,sha256=p-x0eHZNjVv8L3tRgQDMUzxsGCQkcbeAwbbAalfpzSI,17466
@@ -77,7 +84,15 @@ ralphx/templates/guardrails/default.md,sha256=AFfKcjA6xX3qAURcseiHwVlgCBajifxEvE
77
84
  ralphx/templates/loop_templates/consumer.md,sha256=sE3MNzlddu800NaDW_GAyDzE1ux_iKvfcYyJt6BhlNE,953
78
85
  ralphx/templates/loop_templates/generator.md,sha256=gcZ6TmKj54pqm0NSwlPFHxbLvdT33dT4zY5OjONQAiQ,867
79
86
  ralphx/templates/loop_templates/hybrid.md,sha256=FFig_IoWOzSe6xkllc87huuUlambLTpCRYRvMU6VSLY,1013
80
- ralphx-0.2.2.dist-info/METADATA,sha256=4HBQi2SbMhFhyYQPKOJvIp6-z3Z7OubjqN5pzcbWK9U,11794
81
- ralphx-0.2.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
82
- ralphx-0.2.2.dist-info/entry_points.txt,sha256=93WPStHoKHFKfNIPsa99ROexUW4P1MoIdRj_lwY9-ms,43
83
- ralphx-0.2.2.dist-info/RECORD,,
87
+ ralphx/examples/sample_project/DESIGN.md,sha256=XbiCkeEnQG4asEhpFG2it_ZHx3Ra8byDTPdgqehTbRo,8370
88
+ ralphx/examples/sample_project/README.md,sha256=9nIOQBRKb3z6k3rWhhuLqH9sHXSmQACVJP3kw5cymI4,1263
89
+ ralphx/examples/sample_project/guardrails.md,sha256=fvNQRtuy8NmR-qB-STJLINhG6VwJQzHzvQ-NDKOX5Xs,1717
90
+ ralphx/examples/sample_project/stories.jsonl,sha256=BMv3kp1__wrlcBQsNdTscO3KWSkogGT34j1YgwkVFTs,5505
91
+ ralphx/static/index.html,sha256=Mp21_A9gLALyVKSbrr1lDVM9NMYsAClSMRwuWTp4Zn8,463
92
+ ralphx/static/assets/index-0ovNnfOq.css,sha256=PTgWEP9CFCJQAJTdxUphaCFUddlNwTGddPhQCyTfvN0,57554
93
+ ralphx/static/assets/index-CY9s08ZB.js,sha256=rnJWY7xDP6L0uF5ng1W9t-owyI7yBAAGuD6NMEyvksU,839933
94
+ ralphx/static/assets/index-CY9s08ZB.js.map,sha256=ed0UBwRipT29OTB_m0F5rCbmgz0HcUzdg6KlBHt4XG4,2616332
95
+ ralphx-0.3.5.dist-info/METADATA,sha256=vXEP3m0VDmZVl2Iw7x9XhgS4_Bu4CSFaVGCTuyqT178,12859
96
+ ralphx-0.3.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
97
+ ralphx-0.3.5.dist-info/entry_points.txt,sha256=93WPStHoKHFKfNIPsa99ROexUW4P1MoIdRj_lwY9-ms,43
98
+ ralphx-0.3.5.dist-info/RECORD,,
File without changes