borisxdave 0.3.1__py3-none-any.whl → 0.3.2__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.
- boris.py +8 -5
- Users/david/AppData/Local/Programs/Python/Python313/Lib/site-packages/boris_prompt.md → boris_prompt_data.py +5 -2
- {borisxdave-0.3.1.dist-info → borisxdave-0.3.2.dist-info}/METADATA +1 -1
- borisxdave-0.3.2.dist-info/RECORD +14 -0
- {borisxdave-0.3.1.dist-info → borisxdave-0.3.2.dist-info}/top_level.txt +1 -0
- prompts.py +9 -0
- borisxdave-0.3.1.dist-info/RECORD +0 -14
- {borisxdave-0.3.1.dist-info → borisxdave-0.3.2.dist-info}/WHEEL +0 -0
- {borisxdave-0.3.1.dist-info → borisxdave-0.3.2.dist-info}/entry_points.txt +0 -0
boris.py
CHANGED
|
@@ -973,17 +973,20 @@ def main():
|
|
|
973
973
|
print_banner()
|
|
974
974
|
logger.info("Starting Boris for task: %s", args.task[:200])
|
|
975
975
|
|
|
976
|
-
# Create plan (retry
|
|
976
|
+
# Create plan (retry on transient errors: timeouts and API 500s)
|
|
977
977
|
print("[Boris] Creating plan...", flush=True)
|
|
978
978
|
plan = None
|
|
979
|
-
|
|
979
|
+
max_plan_attempts = 3
|
|
980
|
+
for attempt in range(max_plan_attempts):
|
|
980
981
|
try:
|
|
981
982
|
plan = prompts.create_plan(args.task, project_dir, turbo=args.turbo)
|
|
982
983
|
break
|
|
983
984
|
except RuntimeError as e:
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
985
|
+
err_msg = str(e).lower()
|
|
986
|
+
is_retryable = "timed out" in err_msg or "500" in err_msg or "internal server error" in err_msg
|
|
987
|
+
if attempt < max_plan_attempts - 1 and is_retryable:
|
|
988
|
+
print(f" [Boris] Plan generation failed (transient error). Retrying ({attempt + 2}/{max_plan_attempts})...", flush=True)
|
|
989
|
+
logger.warning("Plan failed (transient), retrying (attempt %d): %s", attempt + 2, e)
|
|
987
990
|
else:
|
|
988
991
|
print(f"[Boris] Error creating plan: {e}", flush=True)
|
|
989
992
|
logger.error("Plan creation failed: %s", e)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"""Boris prompt embedded as a Python string for reliable pip installation."""
|
|
2
|
+
|
|
3
|
+
BORIS_PROMPT = r"""# Boris - Project Manager Orchestrator
|
|
2
4
|
|
|
3
5
|
Boris is a **project manager**, He plans, delegates, and verifies. DaveLoop is the builder.
|
|
4
6
|
|
|
@@ -10,7 +12,7 @@ Boris is a **project manager**, He plans, delegates, and verifies. DaveLoop is t
|
|
|
10
12
|
2. **Craft** - Write precise, context-rich prompts for each milestone
|
|
11
13
|
3. **Delegate** - Spawn DaveLoop with the crafted prompt
|
|
12
14
|
4. **Verify** - Check DaveLoop's output against acceptance criteria
|
|
13
|
-
5. **Manage Git** - init git add and stage then commit when user request fully built
|
|
15
|
+
5. **Manage Git** - init git add and stage then commit when user request fully built
|
|
14
16
|
6. **Repeat** - Move to next milestone until project is done
|
|
15
17
|
|
|
16
18
|
---
|
|
@@ -189,3 +191,4 @@ Boris is methodical, relentless, and focused:
|
|
|
189
191
|
- He does not get stuck. He moves forward.
|
|
190
192
|
- He trusts DaveLoop to build. He verifies the results.
|
|
191
193
|
- He keeps perfect records (state, logs, plan markdown, summary report).
|
|
194
|
+
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
boris.py,sha256=W5k3eNJzhHSKIAtzvwmTYHX7PBCaxxLwRzdAize6Xy8,63235
|
|
2
|
+
boris_prompt_data.py,sha256=ZBvWMrQOBrl07cNFzgeGumJ54cYg0Be9RSSnK6a3YQY,7940
|
|
3
|
+
config.py,sha256=KfFKyCGasdm1yBvIRFv-ykzA_oRo-zu1Euu9YC7V1Cg,324
|
|
4
|
+
engine.py,sha256=Pdu0i4XrNxiU246EV8MjXvYp9CBvuJWGLA18QMIYvFM,37468
|
|
5
|
+
file_lock.py,sha256=1YriAAayVy8YFe7JFuGIloiJWWvN2FSY0Ry1sB043Sc,4823
|
|
6
|
+
git_manager.py,sha256=BuuTT4naPb5-jLhOik1xHM2ztzuKvJ_bnecZmlYgwFs,8493
|
|
7
|
+
planner.py,sha256=UrU--kBvzvyD1gOVxIn-kdbJiu8tt4rcowsln66WkGw,5670
|
|
8
|
+
prompts.py,sha256=-eSwZ-oTBR12Wx4Md57sVF816T9vHEFlMsvT4zMkwOg,35187
|
|
9
|
+
state.py,sha256=2DCPlcM7SBlCkwWvcnIabltcduv74W46FZ7DxKurWkw,5752
|
|
10
|
+
borisxdave-0.3.2.dist-info/METADATA,sha256=NxpmhoGuCnJCHbNc7bkV03dllb6AAGu-JacgT_JJIjk,133
|
|
11
|
+
borisxdave-0.3.2.dist-info/WHEEL,sha256=hPN0AlP2dZM_3ZJZWP4WooepkmU9wzjGgCLCeFjkHLA,92
|
|
12
|
+
borisxdave-0.3.2.dist-info/entry_points.txt,sha256=a6FLWgxiQjGMJIRSV5sDxaaaaQchunm04ZuzX8N7-6I,61
|
|
13
|
+
borisxdave-0.3.2.dist-info/top_level.txt,sha256=C3fTm1vt0QEQyJtvSZiFiOvmR4d0hWmmr6hujJqFrQE,82
|
|
14
|
+
borisxdave-0.3.2.dist-info/RECORD,,
|
prompts.py
CHANGED
|
@@ -53,6 +53,15 @@ def _load_boris_prompt() -> str:
|
|
|
53
53
|
except (FileNotFoundError, OSError, TypeError):
|
|
54
54
|
continue
|
|
55
55
|
|
|
56
|
+
# Fallback: use embedded prompt from boris_prompt_data.py (always available after pip install)
|
|
57
|
+
try:
|
|
58
|
+
from boris_prompt_data import BORIS_PROMPT
|
|
59
|
+
_boris_prompt_cache = BORIS_PROMPT.strip()
|
|
60
|
+
logger.debug("Loaded Boris prompt from embedded boris_prompt_data.py (%d chars)", len(_boris_prompt_cache))
|
|
61
|
+
return _boris_prompt_cache
|
|
62
|
+
except ImportError:
|
|
63
|
+
pass
|
|
64
|
+
|
|
56
65
|
logger.warning("boris_prompt.md not found in any search path: %s", search_paths)
|
|
57
66
|
_boris_prompt_cache = ""
|
|
58
67
|
return _boris_prompt_cache
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
boris.py,sha256=VwVjetw6Tfs397btdCDRuM_iRlPI5XSzqfalqlwSLlA,62940
|
|
2
|
-
config.py,sha256=KfFKyCGasdm1yBvIRFv-ykzA_oRo-zu1Euu9YC7V1Cg,324
|
|
3
|
-
engine.py,sha256=Pdu0i4XrNxiU246EV8MjXvYp9CBvuJWGLA18QMIYvFM,37468
|
|
4
|
-
file_lock.py,sha256=1YriAAayVy8YFe7JFuGIloiJWWvN2FSY0Ry1sB043Sc,4823
|
|
5
|
-
git_manager.py,sha256=BuuTT4naPb5-jLhOik1xHM2ztzuKvJ_bnecZmlYgwFs,8493
|
|
6
|
-
planner.py,sha256=UrU--kBvzvyD1gOVxIn-kdbJiu8tt4rcowsln66WkGw,5670
|
|
7
|
-
prompts.py,sha256=Sln8ukCby2gWcs_U3ru4YSXCTWI5MgkI4WB4ONLIyWk,34779
|
|
8
|
-
state.py,sha256=2DCPlcM7SBlCkwWvcnIabltcduv74W46FZ7DxKurWkw,5752
|
|
9
|
-
Users/david/AppData/Local/Programs/Python/Python313/Lib/site-packages/boris_prompt.md,sha256=W8bQP4c-iLLtxSsscIxbjXI2PlWTNbOrq05UGp9mLWs,7839
|
|
10
|
-
borisxdave-0.3.1.dist-info/METADATA,sha256=1Q8uBCfA2BpHdmgK-6kwR58ESpChi2JcTsRoLbz2MoU,133
|
|
11
|
-
borisxdave-0.3.1.dist-info/WHEEL,sha256=hPN0AlP2dZM_3ZJZWP4WooepkmU9wzjGgCLCeFjkHLA,92
|
|
12
|
-
borisxdave-0.3.1.dist-info/entry_points.txt,sha256=a6FLWgxiQjGMJIRSV5sDxaaaaQchunm04ZuzX8N7-6I,61
|
|
13
|
-
borisxdave-0.3.1.dist-info/top_level.txt,sha256=GSKxzJ_M15C-hpRGaC1C5pusFxA1JIaxaSHYaLg4rQc,64
|
|
14
|
-
borisxdave-0.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|