Add fi-research-brief executor for Freedom Intelligence daily rhythm.
activity-core owns schedule and spawn; rein-aharness executes the research brief via llm-connect, commits the artifact, and posts fi_daily_brief for fi_brief_status idempotence — same layering as brief-daily for Binky.
This commit is contained in:
parent
2ab33869f8
commit
877688b2e3
2 changed files with 492 additions and 0 deletions
|
|
@ -260,6 +260,35 @@ def main(argv: list[str] | None = None) -> int:
|
|||
help="Write brief file but do not git commit",
|
||||
)
|
||||
|
||||
fi_brief = sub.add_parser(
|
||||
"fi-research-brief",
|
||||
help=(
|
||||
"Freedom Intelligence research brief via llm-connect "
|
||||
"(activity-core consumer; posts fi_daily_brief)"
|
||||
),
|
||||
)
|
||||
fi_brief.add_argument(
|
||||
"--target-repo",
|
||||
required=True,
|
||||
help="freedom-intelligence checkout path",
|
||||
)
|
||||
fi_brief.add_argument(
|
||||
"--date",
|
||||
default=None,
|
||||
help="Brief date YYYY-MM-DD (default: today Europe/Berlin)",
|
||||
)
|
||||
fi_brief.add_argument(
|
||||
"--force",
|
||||
action="store_true",
|
||||
help="Overwrite if today's brief already exists",
|
||||
)
|
||||
fi_brief.add_argument("--no-hub", action="store_true", help="Skip hub reporting")
|
||||
fi_brief.add_argument(
|
||||
"--no-commit",
|
||||
action="store_true",
|
||||
help="Write brief file but do not git commit",
|
||||
)
|
||||
|
||||
validate = sub.add_parser(
|
||||
"validate",
|
||||
help="Validate instance manifest (.kaizen/schedule.yml + harness fields)",
|
||||
|
|
@ -425,6 +454,40 @@ def main(argv: list[str] | None = None) -> int:
|
|||
)
|
||||
return 0 if brief_result.ok else 1
|
||||
|
||||
if args.command == "fi-research-brief":
|
||||
from datetime import date as date_cls
|
||||
|
||||
from rein_aharness.fi_research_brief import run_fi_research_brief
|
||||
|
||||
day = None
|
||||
if args.date:
|
||||
day = date_cls.fromisoformat(args.date)
|
||||
fi_result = run_fi_research_brief(
|
||||
target_repo=Path(args.target_repo).expanduser(),
|
||||
day=day,
|
||||
force=bool(args.force),
|
||||
report_to_hub=not args.no_hub,
|
||||
commit=not args.no_commit,
|
||||
)
|
||||
print(
|
||||
json.dumps(
|
||||
{
|
||||
"ok": fi_result.ok,
|
||||
"date": fi_result.date,
|
||||
"path": fi_result.path,
|
||||
"wrote": fi_result.wrote,
|
||||
"committed": fi_result.committed,
|
||||
"skipped_existing": fi_result.skipped_existing,
|
||||
"collection_candidates": fi_result.collection_candidates,
|
||||
"head_after": fi_result.head_after,
|
||||
"reason": fi_result.reason,
|
||||
"model_meta": fi_result.model_meta,
|
||||
},
|
||||
indent=2,
|
||||
)
|
||||
)
|
||||
return 0 if fi_result.ok else 1
|
||||
|
||||
if args.command == "mail-scan":
|
||||
from rein_aharness.mailscan import run_mail_scan
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue