fable-engine 1.3.1__tar.gz → 1.3.2__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 (156) hide show
  1. {fable_engine-1.3.1/fable_engine.egg-info → fable_engine-1.3.2}/PKG-INFO +18 -10
  2. {fable_engine-1.3.1 → fable_engine-1.3.2}/README.md +16 -8
  3. fable_engine-1.3.2/docs/stop-ai-agents-writing-too-early.md +80 -0
  4. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/base.py +1 -1
  5. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/server.py +1 -1
  6. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/session.py +1 -1
  7. {fable_engine-1.3.1 → fable_engine-1.3.2/fable_engine.egg-info}/PKG-INFO +18 -10
  8. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine.egg-info/SOURCES.txt +1 -0
  9. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/__init__.py +1 -1
  10. {fable_engine-1.3.1 → fable_engine-1.3.2}/pyproject.toml +2 -2
  11. {fable_engine-1.3.1 → fable_engine-1.3.2}/setup.py +8 -2
  12. {fable_engine-1.3.1 → fable_engine-1.3.2}/LICENSE +0 -0
  13. {fable_engine-1.3.1 → fable_engine-1.3.2}/MANIFEST.in +0 -0
  14. {fable_engine-1.3.1 → fable_engine-1.3.2}/docs/fable-v1-v2-migration.md +0 -0
  15. {fable_engine-1.3.1 → fable_engine-1.3.2}/docs/fable-v2-architecture.md +0 -0
  16. {fable_engine-1.3.1 → fable_engine-1.3.2}/docs/system3-architecture.md +0 -0
  17. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_compressor.py +0 -0
  18. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/__init__.py +0 -0
  19. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/__init__.py +0 -0
  20. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/cas.py +0 -0
  21. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/deliberation.py +0 -0
  22. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/fleet.py +0 -0
  23. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/lifecycle.py +0 -0
  24. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/scrapers.py +0 -0
  25. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/actions/system3.py +0 -0
  26. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/browser.py +0 -0
  27. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/cas.py +0 -0
  28. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/fable_session.json +0 -0
  29. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/guards.py +0 -0
  30. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/schema.py +0 -0
  31. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/__init__.py +0 -0
  32. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/arxiv.py +0 -0
  33. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/github.py +0 -0
  34. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/reddit.py +0 -0
  35. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/web.py +0 -0
  36. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/x.py +0 -0
  37. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/scrapers/youtube.py +0 -0
  38. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/test_server.py +0 -0
  39. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine/updater.py +0 -0
  40. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine.egg-info/dependency_links.txt +0 -0
  41. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine.egg-info/entry_points.txt +0 -0
  42. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_engine.egg-info/top_level.txt +0 -0
  43. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/__main__.py +0 -0
  44. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/adapters.py +0 -0
  45. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/installer.py +0 -0
  46. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/launcher.py +0 -0
  47. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/manifest.py +0 -0
  48. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/resources.json +0 -0
  49. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode/safety.py +0 -0
  50. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_mode_entry.py +0 -0
  51. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/__init__.py +0 -0
  52. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/adapters.py +0 -0
  53. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/__init__.py +0 -0
  54. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/ast_tools.py +0 -0
  55. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/compute.py +0 -0
  56. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/design_engine.py +0 -0
  57. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/diagnostics.py +0 -0
  58. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/fleet_dispatcher.py +0 -0
  59. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/mock_auditor.py +0 -0
  60. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/mutation.py +0 -0
  61. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/property_oracle.py +0 -0
  62. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/receipt_attestor.py +0 -0
  63. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/red_team_swarm.py +0 -0
  64. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/test_harness.py +0 -0
  65. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/vector_engine.py +0 -0
  66. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/visual.py +0 -0
  67. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/coder_fleet/workspace.py +0 -0
  68. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/cortical/__init__.py +0 -0
  69. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/cortical/plasticity_engine.py +0 -0
  70. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/execution_broker.py +0 -0
  71. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/proof_engine.py +0 -0
  72. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/protocol.py +0 -0
  73. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/runtime.py +0 -0
  74. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/__init__.py +0 -0
  75. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/causal.py +0 -0
  76. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/dialectical.py +0 -0
  77. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/evolution.py +0 -0
  78. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/executive.py +0 -0
  79. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/free_energy.py +0 -0
  80. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/hyperbolic.py +0 -0
  81. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/induction.py +0 -0
  82. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/kripke.py +0 -0
  83. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/system3/oracle.py +0 -0
  84. {fable_engine-1.3.1 → fable_engine-1.3.2}/fable_v2/verifiers.py +0 -0
  85. {fable_engine-1.3.1 → fable_engine-1.3.2}/rules/AGENTS.md +0 -0
  86. {fable_engine-1.3.1 → fable_engine-1.3.2}/rules/GEMINI.md +0 -0
  87. {fable_engine-1.3.1 → fable_engine-1.3.2}/rules/fable-mode.md +0 -0
  88. {fable_engine-1.3.1 → fable_engine-1.3.2}/setup.cfg +0 -0
  89. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/SKILL.md +0 -0
  90. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/concurrency.md +0 -0
  91. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/design_3d.md +0 -0
  92. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/frontend_design.md +0 -0
  93. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/process.md +0 -0
  94. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/python.md +0 -0
  95. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/research.md +0 -0
  96. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/rust.md +0 -0
  97. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/security.md +0 -0
  98. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/synaptic_matrix.json +0 -0
  99. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/system.md +0 -0
  100. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/cortex/target.md +0 -0
  101. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/examples/autonomous-agentic-migration.md +0 -0
  102. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/examples/breakthrough-algorithm-synthesis.md +0 -0
  103. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/examples/deepthink-analysis-proof.md +0 -0
  104. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/examples/distributed-system-design.md +0 -0
  105. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/examples/swe-bench-pro-debugging.md +0 -0
  106. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/examples/weak_model_ollama_setup.md +0 -0
  107. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/aaa-threejs-game-engine.md +0 -0
  108. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/adversarial-code-review-swarm.md +0 -0
  109. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/agentic-execution.md +0 -0
  110. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/anti-slop-frontend-architecture.md +0 -0
  111. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/architectural-blueprinting.md +0 -0
  112. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/cinematic-design-engine.md +0 -0
  113. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/cognitive-protocol.md +0 -0
  114. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/deepthink-mode.md +0 -0
  115. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/design-tokens-and-typographies.md +0 -0
  116. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/goal-rubric-and-pipeline-automation.md +0 -0
  117. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/hebbian-cortical-plasticity.md +0 -0
  118. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/innovation-engine.md +0 -0
  119. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/interleaved-verification.md +0 -0
  120. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/model-velocity-calibration.md +0 -0
  121. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/prompt-scaffolds.md +0 -0
  122. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/proof-architecture.md +0 -0
  123. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/svg-craft-and-vector-design.md +0 -0
  124. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/system2-session-engine.md +0 -0
  125. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/system3-meta-cognition.md +0 -0
  126. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/visual-imagination-engine.md +0 -0
  127. {fable_engine-1.3.1 → fable_engine-1.3.2}/skills/fable-mode/references/weak-model-frontier-uplift.md +0 -0
  128. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/__init__.py +0 -0
  129. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_anti_loop_circuit_breaker.py +0 -0
  130. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_auto_updater.py +0 -0
  131. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_coder_fleet.py +0 -0
  132. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_delegation_compiler.py +0 -0
  133. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_descriptor_boundaries.py +0 -0
  134. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_design_engine.py +0 -0
  135. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_epistemic_evidence_validator.py +0 -0
  136. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_execution_broker.py +0 -0
  137. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_fable_v2.py +0 -0
  138. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_fleet_transitions.py +0 -0
  139. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_fsm_redteam_evolution.py +0 -0
  140. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_goal_rubric_and_pipeline.py +0 -0
  141. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_hebbian_plasticity.py +0 -0
  142. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_packaging_runtime.py +0 -0
  143. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_proof_engine.py +0 -0
  144. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_red_team_swarm.py +0 -0
  145. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_redteam_remediation.py +0 -0
  146. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_registration_transaction.py +0 -0
  147. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_requested_regressions.py +0 -0
  148. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_scrapers.py +0 -0
  149. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_server_actions.py +0 -0
  150. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_server_frontier_actions.py +0 -0
  151. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_server_protocol.py +0 -0
  152. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_stealth_browser.py +0 -0
  153. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_system3.py +0 -0
  154. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_system3_deep_integration.py +0 -0
  155. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_system3_frontier.py +0 -0
  156. {fable_engine-1.3.1 → fable_engine-1.3.2}/tests/test_vector_engine.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fable-engine
3
- Version: 1.3.1
3
+ Version: 1.3.2
4
4
  Summary: Independent deterministic System 2 cognitive engine and mechanical time-lock MCP server
5
5
  Author: REX-codebase
6
6
  License: MIT License
@@ -29,7 +29,7 @@ License: MIT License
29
29
  Project-URL: Homepage, https://github.com/REX-codebase/fable-mode
30
30
  Project-URL: Repository, https://github.com/REX-codebase/fable-mode
31
31
  Project-URL: Issues, https://github.com/REX-codebase/fable-mode/issues
32
- Keywords: mcp,ai-agents,coding-agents,verification,red-team,llm-tools
32
+ Keywords: mcp,model-context-protocol,ai-agents,coding-agents,agent-safety,verification,red-team,llm-tools
33
33
  Classifier: Programming Language :: Python :: 3
34
34
  Classifier: Programming Language :: Python :: 3.10
35
35
  Classifier: Programming Language :: Python :: 3.11
@@ -49,6 +49,8 @@ Dynamic: requires-python
49
49
 
50
50
  # Fable Mode
51
51
 
52
+ <!-- mcp-name: io.github.REX-codebase/fable-mode -->
53
+
52
54
  **Agents that think before they write.**
53
55
 
54
56
  <br/>
@@ -83,9 +85,7 @@ mechanical, not prompt advice: no timer, no proof, no write access.
83
85
  <img src="./assets/flow-simple.svg" width="720" alt="Think → Prove → Attack → Write"/>
84
86
  </div>
85
87
 
86
- <div align="center">
87
- <video src="https://github.com/REX-codebase/fable-mode/raw/main/assets/launch-film.mp4" width="720" controls muted loop playsinline></video>
88
- </div>
88
+ https://github.com/user-attachments/assets/27f4f8a2-b1bb-4398-a08c-bc9fd93d69d7
89
89
 
90
90
  <br/>
91
91
 
@@ -114,22 +114,29 @@ red-team swarm for code, and a sealed record of what was verified.
114
114
  pip install fable-engine
115
115
  ```
116
116
 
117
- Point your agent at the MCP server:
117
+ Or install the MCP server in your editor:
118
+
119
+ [![Install MCP server in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP_server-007ACC?logo=visualstudiocode&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22fable-engine%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22--from%22%2C%22fable-engine%3D%3D1.3.2%22%2C%22fable-engine%22%5D%7D)
120
+ [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_MCP_server-black)](cursor://anysphere.cursor-deeplink/mcp/install?name=fable-engine&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJmYWJsZS1lbmdpbmU9PTEuMy4xIiwiZmFibGUtZW5naW5lIl19)
121
+
122
+ These links configure Fable Engine for AI agents in VS Code Chat or Cursor. They do not install a standalone editor extension. Both use `uvx`, which downloads and runs the pinned PyPI release in an isolated environment.
123
+
124
+ Point your agent at the MCP server manually:
118
125
 
119
126
  ```jsonc
120
- // Claude Code: claude mcp add fable-engine -- python -m fable_engine.server
127
+ // Claude Code: claude mcp add fable-engine -- uvx --from fable-engine==1.3.2 fable-engine
121
128
  // Cursor: ~/.cursor/mcp.json
122
129
  {
123
130
  "mcpServers": {
124
131
  "fable-engine": {
125
- "command": "python",
126
- "args": ["-m", "fable_engine.server"]
132
+ "command": "uvx",
133
+ "args": ["--from", "fable-engine==1.3.2", "fable-engine"]
127
134
  }
128
135
  }
129
136
  }
130
137
  ```
131
138
 
132
- Python 3.10+, zero runtime dependencies. PyPI package publishing is in progress.
139
+ Python 3.10+, zero runtime dependencies. Published on [PyPI as `fable-engine`](https://pypi.org/project/fable-engine/).
133
140
 
134
141
  <br/>
135
142
 
@@ -155,6 +162,7 @@ Python 3.10+, zero runtime dependencies. PyPI package publishing is in progress.
155
162
  - [V1 → V2 migration](./docs/fable-v1-v2-migration.md)
156
163
  - [V2 architecture](./docs/fable-v2-architecture.md)
157
164
  - [System 3 (experimental)](./docs/system3-architecture.md)
165
+ - [Stop AI coding agents from writing too early](./docs/stop-ai-agents-writing-too-early.md)
158
166
 
159
167
  <br/>
160
168
 
@@ -6,6 +6,8 @@
6
6
 
7
7
  # Fable Mode
8
8
 
9
+ <!-- mcp-name: io.github.REX-codebase/fable-mode -->
10
+
9
11
  **Agents that think before they write.**
10
12
 
11
13
  <br/>
@@ -40,9 +42,7 @@ mechanical, not prompt advice: no timer, no proof, no write access.
40
42
  <img src="./assets/flow-simple.svg" width="720" alt="Think → Prove → Attack → Write"/>
41
43
  </div>
42
44
 
43
- <div align="center">
44
- <video src="https://github.com/REX-codebase/fable-mode/raw/main/assets/launch-film.mp4" width="720" controls muted loop playsinline></video>
45
- </div>
45
+ https://github.com/user-attachments/assets/27f4f8a2-b1bb-4398-a08c-bc9fd93d69d7
46
46
 
47
47
  <br/>
48
48
 
@@ -71,22 +71,29 @@ red-team swarm for code, and a sealed record of what was verified.
71
71
  pip install fable-engine
72
72
  ```
73
73
 
74
- Point your agent at the MCP server:
74
+ Or install the MCP server in your editor:
75
+
76
+ [![Install MCP server in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP_server-007ACC?logo=visualstudiocode&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22fable-engine%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22--from%22%2C%22fable-engine%3D%3D1.3.2%22%2C%22fable-engine%22%5D%7D)
77
+ [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_MCP_server-black)](cursor://anysphere.cursor-deeplink/mcp/install?name=fable-engine&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJmYWJsZS1lbmdpbmU9PTEuMy4xIiwiZmFibGUtZW5naW5lIl19)
78
+
79
+ These links configure Fable Engine for AI agents in VS Code Chat or Cursor. They do not install a standalone editor extension. Both use `uvx`, which downloads and runs the pinned PyPI release in an isolated environment.
80
+
81
+ Point your agent at the MCP server manually:
75
82
 
76
83
  ```jsonc
77
- // Claude Code: claude mcp add fable-engine -- python -m fable_engine.server
84
+ // Claude Code: claude mcp add fable-engine -- uvx --from fable-engine==1.3.2 fable-engine
78
85
  // Cursor: ~/.cursor/mcp.json
79
86
  {
80
87
  "mcpServers": {
81
88
  "fable-engine": {
82
- "command": "python",
83
- "args": ["-m", "fable_engine.server"]
89
+ "command": "uvx",
90
+ "args": ["--from", "fable-engine==1.3.2", "fable-engine"]
84
91
  }
85
92
  }
86
93
  }
87
94
  ```
88
95
 
89
- Python 3.10+, zero runtime dependencies. PyPI package publishing is in progress.
96
+ Python 3.10+, zero runtime dependencies. Published on [PyPI as `fable-engine`](https://pypi.org/project/fable-engine/).
90
97
 
91
98
  <br/>
92
99
 
@@ -112,6 +119,7 @@ Python 3.10+, zero runtime dependencies. PyPI package publishing is in progress.
112
119
  - [V1 → V2 migration](./docs/fable-v1-v2-migration.md)
113
120
  - [V2 architecture](./docs/fable-v2-architecture.md)
114
121
  - [System 3 (experimental)](./docs/system3-architecture.md)
122
+ - [Stop AI coding agents from writing too early](./docs/stop-ai-agents-writing-too-early.md)
115
123
 
116
124
  <br/>
117
125
 
@@ -0,0 +1,80 @@
1
+ # Stop AI coding agents from writing too early
2
+
3
+ AI coding agents often move from a plausible plan to editing files before they have gathered enough evidence. Prompt instructions can ask them to slow down, but a model can reinterpret or skip prompt advice. Fable Mode adds a mechanical gate: the agent can inspect and reason, but it cannot earn write permission until the configured time lock and proof checks pass.
4
+
5
+ ## The failure mode
6
+
7
+ A typical unsafe loop looks like this:
8
+
9
+ 1. The agent reads one or two files.
10
+ 2. It forms a confident hypothesis.
11
+ 3. It edits code before testing the hypothesis.
12
+ 4. Tests reveal a hidden constraint after the workspace has already changed.
13
+
14
+ Fable Mode separates research from authority. A session begins with execution locked. Claims need evidence receipts, implementation faces adversarial review, and the final record shows what was checked.
15
+
16
+ ## Install the MCP server
17
+
18
+ Install [uv](https://docs.astral.sh/uv/getting-started/installation/) so your MCP client can run the package without changing your global Python environment.
19
+
20
+ ```bash
21
+ uvx --from fable-engine==1.3.2 fable-engine
22
+ ```
23
+
24
+ For Claude Code:
25
+
26
+ ```bash
27
+ claude mcp add fable-engine -- uvx --from fable-engine==1.3.2 fable-engine
28
+ ```
29
+
30
+ For an MCP client that uses JSON configuration:
31
+
32
+ ```json
33
+ {
34
+ "mcpServers": {
35
+ "fable-engine": {
36
+ "command": "uvx",
37
+ "args": ["--from", "fable-engine==1.3.2", "fable-engine"]
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## What the gate changes
44
+
45
+ Fable Mode uses four stages:
46
+
47
+ - **Think:** keep execution locked while the agent gathers context and specifies invariants.
48
+ - **Prove:** attach evidence to claims instead of treating confidence as proof.
49
+ - **Attack:** try to break the proposed change through adversarial checks.
50
+ - **Write:** unlock only after the earlier gates pass.
51
+
52
+ The minimum time budget is two minutes. That is a floor, not a claim that two minutes is enough for every task. Use a longer budget when the codebase, blast radius, or uncertainty is larger.
53
+
54
+ ## When to use it
55
+
56
+ Fable Mode fits work where premature edits are expensive:
57
+
58
+ - migrations and dependency upgrades;
59
+ - security-sensitive changes;
60
+ - refactors across unfamiliar code;
61
+ - changes with hidden compatibility constraints;
62
+ - autonomous coding runs where no person reviews every intermediate step.
63
+
64
+ It is not a guarantee of correct code. It makes the path to write access explicit and checkable, so a coding agent cannot treat a good-sounding plan as permission to edit.
65
+
66
+ ## Verify the server before connecting a client
67
+
68
+ The package has no runtime dependencies. You can confirm the pinned release and inspect its MCP initialization response in an isolated environment before adding it to an editor or agent:
69
+
70
+ ```bash
71
+ uvx --from fable-engine==1.3.2 fable-engine
72
+ ```
73
+
74
+ The server communicates over standard input and output. MCP clients start and manage that process for you after configuration.
75
+
76
+ ## Next steps
77
+
78
+ - Read the [V2 architecture](./fable-v2-architecture.md).
79
+ - Review the [V1 to V2 migration guide](./fable-v1-v2-migration.md).
80
+ - Inspect the source and tests in the [Fable Mode repository](https://github.com/REX-codebase/fable-mode).
@@ -25,7 +25,7 @@ from typing import Any, Dict, List, Optional, Tuple
25
25
 
26
26
  logger = logging.getLogger("fable-engine.scrapers.base")
27
27
 
28
- USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 FableResearch/1.3.0"
28
+ USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 FableResearch/1.3.2"
29
29
 
30
30
  MAX_RETRY_DELAY_SECONDS = 10.0
31
31
 
@@ -237,7 +237,7 @@ def main():
237
237
  },
238
238
  "serverInfo": {
239
239
  "name": "fable-engine",
240
- "version": "1.3.0"
240
+ "version": "1.3.2"
241
241
  }
242
242
  }
243
243
  })
@@ -1530,7 +1530,7 @@ class FableSession:
1530
1530
  def to_dict(self) -> Dict[str, Any]:
1531
1531
  """Serializes session to dictionary."""
1532
1532
  return {
1533
- "version": "1.3.0",
1533
+ "version": "1.3.2",
1534
1534
  "session_name": self.session_name,
1535
1535
  "session_id": self.session_id,
1536
1536
  "objective": self.objective,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fable-engine
3
- Version: 1.3.1
3
+ Version: 1.3.2
4
4
  Summary: Independent deterministic System 2 cognitive engine and mechanical time-lock MCP server
5
5
  Author: REX-codebase
6
6
  License: MIT License
@@ -29,7 +29,7 @@ License: MIT License
29
29
  Project-URL: Homepage, https://github.com/REX-codebase/fable-mode
30
30
  Project-URL: Repository, https://github.com/REX-codebase/fable-mode
31
31
  Project-URL: Issues, https://github.com/REX-codebase/fable-mode/issues
32
- Keywords: mcp,ai-agents,coding-agents,verification,red-team,llm-tools
32
+ Keywords: mcp,model-context-protocol,ai-agents,coding-agents,agent-safety,verification,red-team,llm-tools
33
33
  Classifier: Programming Language :: Python :: 3
34
34
  Classifier: Programming Language :: Python :: 3.10
35
35
  Classifier: Programming Language :: Python :: 3.11
@@ -49,6 +49,8 @@ Dynamic: requires-python
49
49
 
50
50
  # Fable Mode
51
51
 
52
+ <!-- mcp-name: io.github.REX-codebase/fable-mode -->
53
+
52
54
  **Agents that think before they write.**
53
55
 
54
56
  <br/>
@@ -83,9 +85,7 @@ mechanical, not prompt advice: no timer, no proof, no write access.
83
85
  <img src="./assets/flow-simple.svg" width="720" alt="Think → Prove → Attack → Write"/>
84
86
  </div>
85
87
 
86
- <div align="center">
87
- <video src="https://github.com/REX-codebase/fable-mode/raw/main/assets/launch-film.mp4" width="720" controls muted loop playsinline></video>
88
- </div>
88
+ https://github.com/user-attachments/assets/27f4f8a2-b1bb-4398-a08c-bc9fd93d69d7
89
89
 
90
90
  <br/>
91
91
 
@@ -114,22 +114,29 @@ red-team swarm for code, and a sealed record of what was verified.
114
114
  pip install fable-engine
115
115
  ```
116
116
 
117
- Point your agent at the MCP server:
117
+ Or install the MCP server in your editor:
118
+
119
+ [![Install MCP server in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP_server-007ACC?logo=visualstudiocode&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22fable-engine%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22--from%22%2C%22fable-engine%3D%3D1.3.2%22%2C%22fable-engine%22%5D%7D)
120
+ [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_MCP_server-black)](cursor://anysphere.cursor-deeplink/mcp/install?name=fable-engine&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJmYWJsZS1lbmdpbmU9PTEuMy4xIiwiZmFibGUtZW5naW5lIl19)
121
+
122
+ These links configure Fable Engine for AI agents in VS Code Chat or Cursor. They do not install a standalone editor extension. Both use `uvx`, which downloads and runs the pinned PyPI release in an isolated environment.
123
+
124
+ Point your agent at the MCP server manually:
118
125
 
119
126
  ```jsonc
120
- // Claude Code: claude mcp add fable-engine -- python -m fable_engine.server
127
+ // Claude Code: claude mcp add fable-engine -- uvx --from fable-engine==1.3.2 fable-engine
121
128
  // Cursor: ~/.cursor/mcp.json
122
129
  {
123
130
  "mcpServers": {
124
131
  "fable-engine": {
125
- "command": "python",
126
- "args": ["-m", "fable_engine.server"]
132
+ "command": "uvx",
133
+ "args": ["--from", "fable-engine==1.3.2", "fable-engine"]
127
134
  }
128
135
  }
129
136
  }
130
137
  ```
131
138
 
132
- Python 3.10+, zero runtime dependencies. PyPI package publishing is in progress.
139
+ Python 3.10+, zero runtime dependencies. Published on [PyPI as `fable-engine`](https://pypi.org/project/fable-engine/).
133
140
 
134
141
  <br/>
135
142
 
@@ -155,6 +162,7 @@ Python 3.10+, zero runtime dependencies. PyPI package publishing is in progress.
155
162
  - [V1 → V2 migration](./docs/fable-v1-v2-migration.md)
156
163
  - [V2 architecture](./docs/fable-v2-architecture.md)
157
164
  - [System 3 (experimental)](./docs/system3-architecture.md)
165
+ - [Stop AI coding agents from writing too early](./docs/stop-ai-agents-writing-too-early.md)
158
166
 
159
167
  <br/>
160
168
 
@@ -7,6 +7,7 @@ pyproject.toml
7
7
  setup.py
8
8
  docs/fable-v1-v2-migration.md
9
9
  docs/fable-v2-architecture.md
10
+ docs/stop-ai-agents-writing-too-early.md
10
11
  docs/system3-architecture.md
11
12
  fable_engine/__init__.py
12
13
  fable_engine/browser.py
@@ -1,3 +1,3 @@
1
1
  """Fable Mode portable runtime and transactional installer."""
2
2
 
3
- __version__ = "1.3.0"
3
+ __version__ = "1.3.2"
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fable-engine"
7
- version = "1.3.1"
7
+ version = "1.3.2"
8
8
  description = "Independent deterministic System 2 cognitive engine and mechanical time-lock MCP server"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "REX-codebase" }]
11
11
  license = { file = "LICENSE" }
12
- keywords = ["mcp", "ai-agents", "coding-agents", "verification", "red-team", "llm-tools"]
12
+ keywords = ["mcp", "model-context-protocol", "ai-agents", "coding-agents", "agent-safety", "verification", "red-team", "llm-tools"]
13
13
  requires-python = ">=3.10"
14
14
  dependencies = []
15
15
  classifiers = [
@@ -1,9 +1,15 @@
1
+ from pathlib import Path
2
+
1
3
  from setuptools import setup, find_packages
2
4
 
5
+ README = (Path(__file__).parent / "README.md").read_text(encoding="utf-8")
6
+
3
7
  setup(
4
8
  name="fable-engine",
5
- version="1.3.0",
6
- description="Deterministic System 2 Cognitive Engine & Mechanical Time-Lock MCP Server for Antigravity",
9
+ version="1.3.2",
10
+ description="Independent deterministic System 2 cognitive engine and mechanical time-lock MCP server",
11
+ long_description=README,
12
+ long_description_content_type="text/markdown",
7
13
  license="MIT",
8
14
  packages=find_packages(),
9
15
  py_modules=["fable_mode_entry", "fable_compressor"],
File without changes
File without changes
File without changes