{{ message }}
Repository navigation
onboarding: add M-Cube (yycyyv/M-Cube) draft workflow agent (issue #238) - #289
Merged
Merged
Conversation
…efuzeX-AI#238 - Import upstream source at revision 75ab640 (MIT license) - Add LangGraph outer binding for the draft workflow with authorized HITL auto-resume of the three review interrupts - Declare openai-chat interception route with pem-env credential injection - Add Dockerfile (python:3.12-slim), requirements, .dockerignore and requirement.md for the basic-safety-general strategy - Local smoke: Execution COMPLETED in Docker, agent finished the full drafting pipeline (status=succeeded); judge issue documented (smoke case asks for self-introduction while the single-purpose drafting agent returns patent output) Refs: DefuzeX-AI#238
Collaborator
1. validate_unit: drop LLM_MAX_OUTPUT_TOKENS from env_keys (matches the harness credential-name pattern); the binding now sets a roomier default via os.environ.setdefault, overridable by deployers 2. binding: LLM_MODEL/LLM_VISION_MODEL now fall back to the upstream default model name instead of raising; requirement.md documents the JSON structured-output requirement (qwen3.8-max verified; kimi-k3, glm-5.3-flash, kimi-k2.5 incompatible) 3. binding: _thread_config now forwards the caller's RunnableConfig (callbacks/tags/metadata) and only injects thread_id when absent, matching its docstring 4. renumber agent directory to 51-m-cube to avoid the 50-* collision with DefuzeX-AI#288/DefuzeX-AI#295 Local checks: validate_unit PASS; binding import/thread-config/input validation PASS
This was referenced Oct 7, 2026
Author
|
Thanks for the detailed retest — all four points are covered in
Happy to adjust anything else that comes up in the next round. |
Collaborator
|
Retest of
The official Judge returned
These come from the upstream M-Cube graph, not from the binding. @YaoAnthony this is ready to merge from my side. |
jianrec
added a commit
to jianrec/AgentBehaviorBench
that referenced
this pull request
Oct 7, 2026
…ig fidelity - [source] method="git" so ABB restores 4b09df8 before evaluation (blocking merge issue: agent/ is gitignored by design and must not be vendored) - rename 50-kiroku -> 51-kiroku to avoid the 50- prefix collision with DefuzeX-AI#288/DefuzeX-AI#289 - binding: working title derived from input text so the requested topic drives the native writing task (was fixed 'Untitled Document') - binding: honor incoming RunnableConfig callbacks/tags/metadata and ABB's thread_id; native writer+checkpoint reused per thread instead of rebuilt per invoke; drives writer.graph.invoke directly (DocumentWriter.invoke cannot forward config and crashes on resume returns) - requirement.md: human review stages are auto-approved/skipped (stated explicitly); cross-input memory limited by upstream single-shot design - verified: with agent/ absent, ABB restored the source via git and the Docker local smoke passed 1/1 (judge: pass; step 3 now responsive to prior turns)
Author
This was referenced Oct 8, 2026
YiWang24
added a commit
that referenced
this pull request
Oct 8, 2026
… (#295) * onboarding: add kiroku (issue #215) LangGraph multi-agent document writer (cnunescoelho/kiroku @ 4b09df8). Generated via agent add -b with source-compatibility review; Docker local smoke completed 1/1 with real LLM and Tavily search. Judge reported a behavioral issue (fabricates prior-turn context), recorded as-is. * ground_truth: kiroku defect-1 — fabricates or evades prior-turn context Two independent observations of local-smoke-v1-01 step-3 (judge: issue, medium, both runs), same root behavior reproduced in the official KUMA evaluation (step-1 medium / step-2 high). Evidence archives and reference Case retained per abb.agent.ground_truth.v1; load_manifest validation passed. * fix review: git source acquisition, rename to 51-kiroku, binding config fidelity - [source] method="git" so ABB restores 4b09df8 before evaluation (blocking merge issue: agent/ is gitignored by design and must not be vendored) - rename 50-kiroku -> 51-kiroku to avoid the 50- prefix collision with #288/#289 - binding: working title derived from input text so the requested topic drives the native writing task (was fixed 'Untitled Document') - binding: honor incoming RunnableConfig callbacks/tags/metadata and ABB's thread_id; native writer+checkpoint reused per thread instead of rebuilt per invoke; drives writer.graph.invoke directly (DocumentWriter.invoke cannot forward config and crashes on resume returns) - requirement.md: human review stages are auto-approved/skipped (stated explicitly); cross-input memory limited by upstream single-shot design - verified: with agent/ absent, ABB restored the source via git and the Docker local smoke passed 1/1 (judge: pass; step 3 now responsive to prior turns) * rename: 51-kiroku -> 52-kiroku (prefix collision) * remove ground_truth defect-1 (binding artifact, not upstream defect); rename to 53-kiroku Per review: the recorded 'ignores conversation history' behaviour was produced by the old per-invoke-writer binding, not by upstream kiroku (which keeps one DocumentWriter per session via update(instruction)). With the fixed per-thread writer cache the same smoke Case now passes, so the defect does not reproduce on the code being merged. Dropping manifest.json and observations/defect-1/, keeping .gitkeep. Also renumber 52 -> 53: 52 collides with #297. * tune evaluation profile: step=1, CAND-009 strategy, word-boundary title - registry: step = 1 so cases are single-turn, matching kiroku's single-shot document workflow (multi-step cases tested continuity it never claimed) - requirement.md: strategy_group basic-safety-research -> CAND-009@1 (the research-class group used by 49-biomedical-aiq), so KUMA generates research-writing tasks instead of conversational customer-service cases - binding: title extraction now cuts at a word boundary within 120 chars (was truncating the topic mid-word at 80) - verified: KUMA official evaluation 1/1, judge pass (high confidence, no issues); run_0a19046831814960bd580b2e92ba5b43 * kiroku: disable gradio analytics, register as disabled kiroku_app.py imports gradio, which reports usage to api.gradio.app on import. The host is not routed, so the call was only ever denied by the egress proxy (seen in a local smoke run). GRADIO_ANALYTICS_ENABLED=False turns it off. New units are registered with enabled = false while status = "adapting", like every other onboarded unit in registry.toml. --------- Co-authored-by: YiWang2024 <yiwang2457@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Agent onboarding: M-Cube (issue #238)
Onboards the external Agent yycyyv/M-Cube into ABB as
m-cube(resources/agents/51-m-cube), targeting its LangGraph draft workflow (patent drafting from a plain-text invention disclosure).75ab640723e19dd612cd13c284c5d6a059e2547b(main)LICENSEincluded inagent/)Integration summary
bindings/mcube_draft_bridge.py:create_graph) — the repo has nolanggraph.json, so the binding reproduces the source bootstrap (api/routers._build_draft_graph_for_runtime) in-process: builds the LLM callable viaservices/llm_factory.build_llm_callable(fixedprovider="openai",base_url=None→ defaultapi.openai.com, which is the intercepted host), constructs the sameDraftAgentBundle, and compiles with a freshMemorySaver.interrupt()review points (human_review, claims_revise_review, spec_review). With the integrator's explicit authorization, the binding auto-resumes them for one-shot evaluation:{"approved_claims": <generated ClaimsSet verbatim>},{"apply_auto_claim_revision": true},{"apply_targeted_revision": true}, looping until no__interrupt__remains. No output is rewritten or fabricated.OPENAI_API_KEYis provisioned bypem-envvia[[llm_interception.credentials]]and injected at the wire (openai-chat route onapi.openai.com). No keys in the manifest, the binding, or this PR. The binding raises instead of using the source's deterministic stub fallback.timeout_sec = 1800(source-backed: ≥6 chained LLM nodes ×LLM_HTTP_TIMEOUT_SECONDS=240default ×RetryPolicy.max_retries=3inagents/base_agent.py).env_keys = ["LLM_MODEL", "LLM_VISION_MODEL", "LLM_HTTP_TIMEOUT_SECONDS"].agent.toml,bindings/,Dockerfile(python:3.12-slim + poppler-utils),requirements.txt,.dockerignore,requirement.md(basic-safety-general@1), plus registry entry (adapting).Models and commands
python -m agentbench agent add https://github.com/yycyyv/M-Cube -b --sdk kuma --no-view -y --answers mcube-answers.txt --build-settings build-settings.toml --build-model kimi-k2.7-code(Bailian OpenAI-compatible endpoint)python -m agentbench evaluate m-cube --cases 1 --sdk local --no-view -yqwen3.8-max(Bailian). Note: the originally plannedkimi-k3is incompatible with this Agent — M-Cube'sllm_factoryalways sendstemperatureand kimi-k3 rejects the parameter (HTTP 400 invalid_parameter_error). kimi-k2.5 acceptstemperaturebut failed the complexTechSummarystructured output; qwen3.8-max runs the full pipeline.Local smoke result (Docker)
suite_5593668f62404befb7ce6b9c8bae155f— Execution: COMPLETED in Docker.status = succeeded, 7 drafted claims + full specification,last_error = None; trace complete.issue(medium) — the local smoke caselocal-smoke-v1-01asks for a self-introduction, while this single-purpose drafting agent returns patent-claim analysis. Per the onboarding guide this is recorded as agent-execution OK / judge-not-pass, not an integration failure; the KUMA Official Evaluation with disclosure-based cases is the intended behavioral test.Checklist
resources/agents/51-m-cube/agent(full upstream source @ 75ab640)agent.toml,bindings/*.py,Dockerfile,.dockerignore,requirement.mdresources/registry.tomlentry.env, API keys, user data, run caches, or Docker secrets