Skip to content

DO NOT MERGE — merge train: 3754,3757,3756,3760,3641 - #3781

Closed
trinity-ability wants to merge 12 commits into
devfrom
train/20261017-0204
Closed

trinity-ability wants to merge 12 commits into
devfrom
train/20261017-0204

Conversation

@trinity-ability

Copy link
Copy Markdown
Contributor

Integration surface for #3754, #3757, #3756, #3760, #3641. Never merged; members merge individually once green.

🤖 Generated with Claude Code

Trinity Agent (trinity) and others added 12 commits October 12, 2026 20:04
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
With the assignments module entitled, an agent with no rows answers
"nobody fills primary", which overrides the owner fallback. That is the
default state of a fresh enterprise install, and send_message(to:
primary) then refused with 422 role_unassigned: the agent had no
sanctioned way to message a person. The tool text sent it to an alert,
which lands in the Operating Room and reaches no person.

On the message surface only, primary with no seat now goes to the
agent's owner, who is always allowed proactive messages. The resolver
is unchanged on purpose: it also decides who may approve a gated skill,
so asks still go to the operators and a primary-approved gate still
refuses. An owner with no email gets a 422 naming the remedy (assign a
primary in the agent's Access tab). The send_message description says
so instead of pointing at an alert.

Fixes Abilityai/trinity-enterprise#904

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With no email provider configured (the default for a localhost install
that skipped the Resend key) the sender falls back to console mode: the
code goes to the backend log and the send reports success. The Login
page still said "We sent a 6-digit code", and the person waited for an
email that never came.

GET /api/auth/mode now carries email_delivery_available, an install-level
flag like email_code_login_enabled, from EmailService.can_deliver(): false
for console, an unknown provider, or a provider missing its key or SMTP
settings; true on an unreadable config, so the page behaves as today.
When it is false, step 2 says no email was sent, that a code for an
address allowed to sign in is in the backend log (docker compose logs
backend), and points at Admin Login and Settings -> Integrations. The
wording is conditional because the request endpoint answers the same for
every address (#186) and never consults the flag. The code itself is
never rendered. FAQ entry added.

Fixes #3655

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…shed" (#3688)

After #3657 the requester is woken (triggered_by="skill_gate") with how
its gated request ended, and the reply is reported into the Workspace
thread it came from. _portal_body chose its header, and _portal_source
its pill, from the wake-up row's own run status, which completes
normally for a rejected, expired or not-run request. The reader saw a
"Finished" header and a green "Finished" pill above "Your request was
rejected."

A skill_gate row that completed now gets the header "Approval update"
and the source completion:notice, which shows no outcome pill and is
narrated as a background report. One predicate decides both, so the
header and the pill cannot disagree. A wake-up that itself failed still
reads "Didn't finish"; the approved run keeps its requester's trigger
and still reads "Finished". triggered_by is passed to every resolver,
per the shared call shape.

Fixes #3688

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ls v0.5.0 (#3430)

Fresh installs seed `abilityai/trinity-skills` at v0.5.0 (was v0.3.0).
v0.4.0 adds `project-status`; v0.5.0 adds `update-status` and fixes two
skills that fail on current dev: `project-status` filed asks under an id
the platform refuses (`invalid_request_id`), and `add-pipeline` taught a
300-char escalation title cap where the cap is 120. 40 skills, none
dropped since v0.3.0 (verified against the upstream tag).

config.DEFAULT_SKILL_SOURCE_REF, .env.example and the user doc move
together; test_2545_skill_source_pin.py raises its floor to v0.5.0
(red before the bump on the floor check, green after).

Fixes #3430

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sage (#3430) — mechanical

The floor assertion's message printed a literal {_PIN_FILES} on failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…snapshot — mechanical

dev carries the 2026-10-12 dashboard (#3605); this PR's 2026-10-13 run supersedes it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vybe

vybe commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

Members merged individually.

@vybe vybe closed this Oct 17, 2026
@vybe
vybe deleted the train/20261017-0204 branch October 17, 2026 02:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui PR touches the frontend UI — triggers Playwright e2e tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants