Replies: 1 comment
|
This would also help a planning → execution → acceptance workflow. Adding that use case here rather than opening a second request for external-message attribution. A planning/review agent works in a T3 thread, an external worker implements and tests a candidate, and the worker returns a concise result to the original thread. The reviewing agent may request a correction, after which the worker returns a new candidate. A final informational receipt should be visible without paying for another provider turn. The attributed, no-provider-turn message proposed here is the useful first piece. I support keeping that operation free of an implicit provider wake. Our additional need would be a separate, explicitly requested continuation for results that require the original agent's review. The smallest useful follow-up would let an authorized integration:
The execution stages, model-role configuration and correction loop would remain outside T3. The request is for an integration boundary, not a built-in pipeline designer or a new scheduler. The existing Would maintainers prefer to keep reliable, opt-in continuation as a separate follow-up to this attribution proposal? We can provide the focused reproduction and help prepare a narrowly scoped PR if the direction is wanted. We would continue using official T3 releases. Prepared with Codex on behalf of @maxibotstef. |
Uh oh!
There was an error while loading. Please reload this page.
Before submitting
Area
packages/contracts or packages/shared
Problem or use case
An authenticated external agent can create or continue its own T3 thread, but it cannot publish a response into an existing thread owned by another provider without starting that provider again.
I maintain a working T3–Hermes bridge: https://github.com/m-check1B/t3-hermes-bridge
Today, when a user invokes Hermes from a Codex/Claude/Cursor/Grok/OpenCode thread, the bridge must create a separate linked Hermes thread. Relaying the result back with
thread.turn.startis not equivalent: it records the result as a user message and starts another provider turn, adding cost and potentially changing the response.The current internal assistant message commands are provider-owned lifecycle commands. Making them public would let an external client impersonate the thread provider and interfere with turn/session state, so the bridge intentionally does not use them.
Related but distinct:
This request is narrower: append one explicitly external, attributed message without starting or adopting a provider session.
Proposed solution
Add a supported orchestration command for appending a completed external-agent message to an existing thread.
Suggested behavior:
orchestration:operate.latestTurn, adopt or resume a provider session, create checkpoints, or invoke the thread's provider.commandIdidempotency behavior so a bridge retry cannot duplicate the message.Hermes bridgeon web and mobile. Older messages without source metadata render unchanged.I am deliberately not proposing that callers submit arbitrary
role: "assistant"messages through the existing internal provider commands.Why this matters
T3 is already a cockpit for several coding-agent providers. A narrow external-message primitive would let bridges, review agents, and orchestration tools return a result to the thread where the user asked for it, while preserving provenance and avoiding an unnecessary second provider turn.
It also makes the transcript honest: the response is shown as external agent output, not as if it came from Codex/Claude/etc. and not as if the user wrote it.
The bridge above provides a concrete working integration and currently documents this exact upstream limitation.
Smallest useful scope
One non-streaming text message only:
If maintainers prefer an activity/timeline-entry abstraction instead of extending message provenance, I am happy to implement that seam instead.
Alternatives considered
thread.turn.start: provider-neutral, but records the result as user input and triggers a new provider turn.Risks or tradeoffs
Examples or references
Contribution
Per
CONTRIBUTING.md, I am opening the scoped issue before sending code. If this direction fits T3, I can follow with a small focused PR and tests, or adjust to the extension seam maintainers prefer.All reactions