Files
GEWU/scripts/prepare_ingest_handoff.py
vasily 78033bb830
CI / quality (push) Canceled after 0s
feat: online verification, node removals, and knowledge browser
Adds claim-bound online evidence records and citation verification scripts,
node removal transport/adapter, retrieval benchmark and owner-review tooling,
GraphCanvas/SourceDetail knowledge browser UI, and the ingest handoff helper.
Bumps the agents/gewu pack to the online-verification branch.
2026-10-16 20:02:29 +08:00

69 lines
3.4 KiB
Python

"""Print an explicit, bounded operator handoff without reading credentials or calling GEWU."""
from __future__ import annotations
import argparse
import re
def identifier(value: str) -> str:
if not re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9._:-]{0,127}", value):
raise argparse.ArgumentTypeError("use a non-empty identifier of at most 128 characters")
if value.startswith("gwu_"):
raise argparse.ArgumentTypeError("supply a non-secret identifier, not a bearer credential")
return value
def tool_budget(value: str) -> int:
try:
budget = int(value)
except ValueError as error:
raise argparse.ArgumentTypeError("tool budget must be an integer") from error
if not 1 <= budget <= 200:
raise argparse.ArgumentTypeError("tool budget must be between 1 and 200")
return budget
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--principal-id", required=True, type=identifier)
parser.add_argument("--project-id", required=True, type=identifier)
parser.add_argument("--file-id", required=True, action="append", type=identifier)
parser.add_argument("--resume-run-id", type=identifier)
parser.add_argument("--max-tool-calls", default=35, type=tool_budget)
args = parser.parse_args()
run_instruction = (
f"Resume run {args.resume_run_id}: call run_status first, "
"preserve its run/source identities "
"and unchanged pack pins, and do not create a replacement run."
if args.resume_run_id
else "After diagnostics and project context, create the service run using the installed "
"compact run_pins before transferring source bytes."
)
print(
"Use the installed GEWU kb-ingest skill. Read its profile, contribution/evidence/scope "
"protocols and ingestion pipeline once. Use discovered MCP schemas and the compact "
"factual draft contract in CONTRIBUTIONS.md.\n\n"
f"Operator-supplied principal_id={args.principal_id}; project_id={args.project_id}; "
f"selected connector file_ids={', '.join(args.file_id)}; "
f"turn budget={args.max_tool_calls} tool calls. "
"This identifier supplies attribution, not additional authority; the service credential "
"must authenticate it. Use it for proposer_id, agent_id and assessor_id.\n\n"
f"{run_instruction}\n\n"
"Process one small evidence-backed learning unit across the selected sources this turn. "
"Recover their connector receipts, read relevant bounded extraction slices, search for "
"duplicates, prepare a complete draft, evaluate, and submit only eligible work. Pass "
"prepared proposal_json unchanged. Keep policy holds and unsupported claims explicit. "
"Checkpoint actual coverage, accepted receipts and pending sections before returning. "
"Do not claim the paper or packet complete from this bounded turn.\n\n"
"Do not inspect credentials, environment variables, host MCP configuration, service "
"databases or old benchmark logs. Never probe proposal tools with empty objects or "
"guessed identities. Correct one actionable argument error; stop an unchanged failure "
"loop and report the exact blocker. Respect the tool budget and return a partial "
"checkpoint/report if work remains."
)
if __name__ == "__main__":
main()