gemcode 0.4.11__tar.gz → 0.4.12__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.
- {gemcode-0.4.11/src/gemcode.egg-info → gemcode-0.4.12}/PKG-INFO +1 -1
- {gemcode-0.4.11 → gemcode-0.4.12}/pyproject.toml +1 -1
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/agent_habits.py +5 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/agent_mesh.py +15 -5
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/fleet_reports.py +16 -9
- {gemcode-0.4.11 → gemcode-0.4.12/src/gemcode.egg-info}/PKG-INFO +1 -1
- {gemcode-0.4.11 → gemcode-0.4.12}/LICENSE +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/MANIFEST.in +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/README.md +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/setup.cfg +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/__main__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/a2a_bridge.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/agent.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/agent_intelligence.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/agent_triggers.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/audit.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/autocompact.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/automations.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/autotune.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/callbacks.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/capability_routing.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/checkpoints.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/cli.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/codebase_awareness.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/compaction.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/computer_use/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/computer_use/browser_computer.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/config.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/context_budget.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/context_warning.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/credentials.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/curated_memory.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/delegation_learning.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/dynamic_policy.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/evals/harness.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/event_bus.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/hitl_session.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/hooks.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/ide_protocol.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/ide_stdio.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/intent_classifier.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/interactions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/invoke.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/kaira_client.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/kaira_daemon.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/kaira_ipc.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/kaira_job_store.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/learning.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/limits.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/live_audio_engine.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/logging_config.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/mcp_loader.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/memory/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/memory/embedding_memory_service.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/memory/file_memory_service.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/modality_tools.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/model_errors.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/model_routing.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/multimodal_input.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/openapi_loader.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/org.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/output_styles.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/paths.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/permissions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/plugins/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/plugins/terminal_hooks_plugin.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/plugins/tool_recovery_plugin.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/policy_profile.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/pricing.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/prompt_suggestions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/config.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/deps.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/engine.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/stop_hooks.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/token_budget.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query/transitions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/query_sanitizer.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/refine.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/repl_commands.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/repl_slash.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/review_agent.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/rules.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/self_healing.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/session_runtime.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/session_store.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/session_summariser.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/skills.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/slash_commands.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/thinking.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tool_prompt_manifest.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tool_registry.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tool_result_store.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tool_synthesis.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/automations_tools.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/bash.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/browser.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/compress_memory.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/curated_memory.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/edit.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/filesystem.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/notebook.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/notes.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/org_tools.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/repo_map.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/search.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/shell.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/shell_gate.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/skills.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/subtask.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/tasks.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/think.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/todo.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/user_choice.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/veomem_tools.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/web.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools/web_search.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tools_inspector.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/trust.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tui/input_handler.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tui/scrollback.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tui/spinner.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tui/welcome_banner.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/tui/welcome_rich.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/veomem_bridge.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/version.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/vertex.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/wal.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/web/__init__.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/web/sse_adapter.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/web/terminal_repl.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/web/web_sse_compat.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode/workspace_hints.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode.egg-info/SOURCES.txt +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode.egg-info/dependency_links.txt +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode.egg-info/entry_points.txt +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode.egg-info/requires.txt +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/src/gemcode.egg-info/top_level.txt +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_add_dir.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_agent_habits.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_agent_instruction.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_agent_mesh.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_autocompact.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_automations.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_capability_routing.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_checkpoint_diff_command.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_cli_init.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_compress_memory_tool.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_computer_use_permissions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_context_budget.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_context_warning.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_credentials.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_eval_harness_layout.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_event_bus.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_fleet_reports.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_ide_stdio_attachments.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_interactive_permission_ask.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_kaira_ipc_paths.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_kaira_scheduler.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_modality_tools.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_model_error_retry.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_model_errors.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_model_routing.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_multimodal_input.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_output_styles_and_rules.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_paths.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_permissions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_prompt_suggestions.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_repl_commands.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_repl_slash.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_session_runtime_cache.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_skills.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_slash_commands.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_slash_completion_registry.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_thinking_config.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_token_budget.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_tool_context_circulation.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_tools.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_tools_inspector.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_web_sse_adapter.py +0 -0
- {gemcode-0.4.11 → gemcode-0.4.12}/tests/test_workspace_hints.py +0 -0
|
@@ -323,6 +323,11 @@ def make_habits_tools(cfg: GemCodeConfig) -> list:
|
|
|
323
323
|
Habits run inside the main GemCode process — no separate daemon needed.
|
|
324
324
|
They fire as long as GemCode is open (REPL/TUI session).
|
|
325
325
|
|
|
326
|
+
Results go to the fleet inbox (.gemcode/fleet_reports.jsonl). Fleet auto-continue
|
|
327
|
+
(GEMCODE_FLEET_REPORTS_AUTO_CONTINUE, default on) can inject digest turns after each assistant
|
|
328
|
+
reply so the main agent summarizes habit output. Set GEMCODE_FLEET_REPORTS_AUTO_CONTINUE=0 to
|
|
329
|
+
only drain on your next normal message.
|
|
330
|
+
|
|
326
331
|
Args:
|
|
327
332
|
name: Unique name for this habit (e.g., "test-watch", "nightly-audit").
|
|
328
333
|
agent: Org member name to run this (e.g., "kaira", "verifier").
|
|
@@ -400,16 +400,21 @@ class AgentMesh:
|
|
|
400
400
|
except Exception:
|
|
401
401
|
pass
|
|
402
402
|
|
|
403
|
-
# Persist to fleet reports
|
|
403
|
+
# Persist to fleet reports (include habit + member so the manager inbox reads clearly)
|
|
404
404
|
try:
|
|
405
405
|
from gemcode.fleet_reports import maybe_append_job_report
|
|
406
406
|
fleet_root = resolve_fleet_root(self.cfg.project_root)
|
|
407
|
-
|
|
407
|
+
pl: dict[str, Any] = {
|
|
408
408
|
"job_id": job.job_id,
|
|
409
409
|
"session_id": job.session_id,
|
|
410
410
|
"status": "finished",
|
|
411
411
|
"report": result_text[:8000],
|
|
412
|
-
|
|
412
|
+
"member": job.member_name or "",
|
|
413
|
+
}
|
|
414
|
+
hm = job.meta.get("habit") if isinstance(job.meta, dict) else None
|
|
415
|
+
if isinstance(hm, dict):
|
|
416
|
+
pl["habit"] = hm
|
|
417
|
+
maybe_append_job_report(fleet_root, pl)
|
|
413
418
|
except Exception:
|
|
414
419
|
pass
|
|
415
420
|
|
|
@@ -434,12 +439,17 @@ class AgentMesh:
|
|
|
434
439
|
try:
|
|
435
440
|
from gemcode.fleet_reports import maybe_append_job_report
|
|
436
441
|
fleet_root = resolve_fleet_root(self.cfg.project_root)
|
|
437
|
-
|
|
442
|
+
plf: dict[str, Any] = {
|
|
438
443
|
"job_id": job.job_id,
|
|
439
444
|
"session_id": job.session_id,
|
|
440
445
|
"status": "failed",
|
|
441
446
|
"report": job.error[:8000],
|
|
442
|
-
|
|
447
|
+
"member": job.member_name or "",
|
|
448
|
+
}
|
|
449
|
+
hm = job.meta.get("habit") if isinstance(job.meta, dict) else None
|
|
450
|
+
if isinstance(hm, dict):
|
|
451
|
+
plf["habit"] = hm
|
|
452
|
+
maybe_append_job_report(fleet_root, plf)
|
|
443
453
|
except Exception:
|
|
444
454
|
pass
|
|
445
455
|
|
|
@@ -33,12 +33,9 @@ def inject_enabled() -> bool:
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def auto_continue_enabled() -> bool:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"yes",
|
|
40
|
-
"on",
|
|
41
|
-
)
|
|
36
|
+
"""When true, queue a manager digest after each turn if fleet reports are pending (TUI/REPL). Default on; set GEMCODE_FLEET_REPORTS_AUTO_CONTINUE=0 to disable."""
|
|
37
|
+
v = os.environ.get("GEMCODE_FLEET_REPORTS_AUTO_CONTINUE", "1").strip().lower()
|
|
38
|
+
return v not in ("0", "false", "no", "off")
|
|
42
39
|
|
|
43
40
|
|
|
44
41
|
def auto_continue_mode() -> str:
|
|
@@ -59,9 +56,10 @@ def max_auto_chain() -> int:
|
|
|
59
56
|
def fleet_digest_prompt() -> str:
|
|
60
57
|
return (
|
|
61
58
|
f"{_DIGEST_MARKER}\n"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
59
|
+
"New background work arrived (habits, mesh jobs, or agent messages). Summarize for the user in a short, "
|
|
60
|
+
"conversational way—like you are relaying what the other agent just did. Call out what changed since last time "
|
|
61
|
+
"if the report looks like a recurring check. Do not call org_delegate, org_spawn, or spawn_subtasks unless you "
|
|
62
|
+
"must fix a reported error."
|
|
65
63
|
)
|
|
66
64
|
|
|
67
65
|
|
|
@@ -248,6 +246,15 @@ def _format_record(rec: dict[str, Any]) -> str:
|
|
|
248
246
|
f"[job.report] job_id={payload.get('job_id')} status={payload.get('status')} "
|
|
249
247
|
f"session_id={payload.get('session_id')}"
|
|
250
248
|
)
|
|
249
|
+
mem = str(payload.get("member") or "").strip()
|
|
250
|
+
if mem:
|
|
251
|
+
lines.append(f" member: {mem}")
|
|
252
|
+
hab = payload.get("habit")
|
|
253
|
+
if isinstance(hab, dict):
|
|
254
|
+
hn = str(hab.get("name") or "").strip()
|
|
255
|
+
ha = str(hab.get("agent") or "").strip()
|
|
256
|
+
if hn:
|
|
257
|
+
lines.append(f" habit: {hn}" + (f" (runs as agent `{ha}`)" if ha else ""))
|
|
251
258
|
rpt = str(payload.get("report") or "").strip()
|
|
252
259
|
if rpt:
|
|
253
260
|
lines.append(f" report: {rpt[:8000]}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|