Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1372 commits
Select commit Hold shift + click to select a range
ea32fef
fix(cleanup): scope the #1581 orphan agent-volume sweep to this stack…
dolho Oct 5, 2026
493d2a6
feat(delegation): every caller is taught that a receipt means running…
webmixgamer Oct 5, 2026
7787712
fix(setup): deploy the system agent once /setup creates the admin (#3…
dolho Oct 6, 2026
3abadfd
feat(workspace): Discuss and Dismiss on asks (abilityai/trinity-enter…
dolho Oct 6, 2026
9016aff
fix(pull): the pull sink applies post-turn delivery settings (#2329) …
obasilakis Oct 6, 2026
84b586b
feat(skills): a gated skill is refused inside the agent unless its ru…
webmixgamer Oct 6, 2026
b5b8460
docs(positioning): lead 'What is Trinity' with the operating-system l…
vybe Oct 6, 2026
a783ba7
docs(positioning): README, distribution surfaces and first-run screen…
vybe Oct 6, 2026
33dd14b
feat(positioning): runtime prompts carry the Trinity one-liner (abili…
vybe Oct 6, 2026
40eb490
docs(positioning): engineer context carries the ADR-0011 line (abilit…
vybe Oct 6, 2026
9b9a81a
fix(charts): the bar tooltip renders in <body> and flips below when t…
dolho Oct 6, 2026
41d72c9
fix(nevermined): card plans pay — per-plan x402 scheme, caller-origin…
vybe Oct 6, 2026
24d5d18
feat(workspace): opening an agent starts a new chat with the cursor i…
vybe Oct 6, 2026
4a0c065
feat(operator-queue): approvals get a "Something else" answer (#3242)…
vybe Oct 6, 2026
fa50b38
feat(operator-queue): atomic asks — authoring rules in the ask_operat…
vybe Oct 6, 2026
19bd6d3
fix(files): leading slashes no longer skip the deny list and fences; …
webmixgamer Oct 6, 2026
68141d5
fix(guardrails): GUARD-002 hooks in exec form under an isolated inter…
obasilakis Oct 6, 2026
42543a4
feat(workspace): the Workspace key map — agents, chats and the rail f…
vybe Oct 6, 2026
58c7b80
feat(messaging): caller-declared idempotency key + TTL on human-facin…
obasilakis Oct 6, 2026
f73d0c0
fix(operator-queue): platform alerts are conditions — one pending row…
vybe Oct 6, 2026
a72271d
feat(pull): /chat on the durable queue for pull pilots (#3127) (#3145)
obasilakis Oct 6, 2026
ec5857c
chore(skills): bump the bundled community-catalog pin to trinity-skil…
AndriiPasternak31 Oct 7, 2026
393f0a4
fix(idempotency): a failed async run stops replaying its receipt (#32…
AndriiPasternak31 Oct 7, 2026
4955b0d
fix(mcp): chat_with_agent carries the caller's turn so delegated work…
AndriiPasternak31 Oct 7, 2026
6c8dc55
fix(operator-queue): a broad list under an agent key filters before t…
AndriiPasternak31 Oct 7, 2026
f60008b
feat(metrics): a bound widget names one series with dims: (abilityai/…
AndriiPasternak31 Oct 7, 2026
032238a
fix(system-agent): resolve the platform owner through ADMIN_USERNAME,…
dolho Oct 7, 2026
0bcb162
fix(git-sync): fork-to-own and repo binding use the saved personal Gi…
dolho Oct 7, 2026
5aef934
fix(workspace): a sent message shows its attachments, and keeps them …
dolho Oct 7, 2026
aa80efa
test: edge-case + property suites for 10 key backend modules (/edge-c…
trinity-ability Oct 7, 2026
a515497
docs(user-docs): validate every page against dev + sync changes since…
vybe Oct 7, 2026
a687ecc
feat(auth): an agent changes its own shape only with a grant (ability…
dolho Oct 7, 2026
5c31448
test(portal): pin `now` in the background-ask Inbox spec — its fixtur…
trinity-ability Oct 7, 2026
3237ace
fix(operator-queue): one malformed entry no longer stops answer deliv…
trinity-ability Oct 7, 2026
bec4854
fix(loops): repair a run claimed but never closed after a mid-advance…
trinity-ability Oct 7, 2026
f6d2908
fix(operator-queue): acknowledging a platform alert ends it (#2372) (…
obasilakis Oct 7, 2026
547deb2
fix(skill-gate): close the #3208 validation gaps before the gate map …
webmixgamer Oct 7, 2026
99706d5
feat(skill-gates): the per-agent skill gate map (abilityai/trinity-en…
webmixgamer Oct 7, 2026
1874917
feat(workspace): an Asks tab in each agent's rail, and a calmer "need…
trinity-ability Oct 7, 2026
db4c1e9
test(system): chain tests on a rolled-out fleet, with a per-chain go/…
dolho Oct 7, 2026
c187c2f
docs(learnings): drop two stray diff3 base markers left by 2026-09-23…
trinity-ability Oct 7, 2026
f7506e5
feat(agents): the self-change permissions as four admin-only toggles …
dolho Oct 8, 2026
b70a85a
chore(enterprise): bump submodule pin to 72d1416 — Workspace Projects…
vybe Oct 8, 2026
c88d6f1
chore(deps): bump the patch-and-minor group (#3288)
dependabot[bot] Oct 8, 2026
0e07184
chore(deps-dev): bump vitest (#3286)
dependabot[bot] Oct 8, 2026
2f623db
chore(deps): bump the patch-and-minor group (#3284)
dependabot[bot] Oct 8, 2026
8b92254
fix(seat-decisions): an agent key records and reads only its own agen…
dolho Oct 8, 2026
fa5115e
fix(chat): send the current message once and describe the Chat tab's …
developerjillur Oct 8, 2026
c8d5a92
feat(workspace): ⌘/ focuses the sidebar search, and the rail shows sh…
trinity-ability Oct 8, 2026
02e7dc3
docs: How Trinity keeps agents in bounds — guardrails vision page (#3…
vybe Oct 8, 2026
0a93a75
fix(workspace): a turn shows its own reply on a shared thread (#3166)…
obasilakis Oct 8, 2026
51b01c7
chore(deps): bump mermaid from 11.17.2 to 12.1.0 in /src/frontend (#3…
dependabot[bot] Oct 8, 2026
82b99c3
feat(a2a): trusted internal networks — call agents across your own in…
dolho Oct 8, 2026
993cb2c
feat(workspace): the role card's objectives in plain words — owned fi…
dolho Oct 8, 2026
d24d9d8
fix(workspace): a live activity line and "Steps could not be read" ne…
dolho Oct 8, 2026
b6da31b
fix(capacity): make slot admission atomic across workers (#3306)
alex-furman Oct 8, 2026
836c0cb
fix: retain subprocess ownership after waiter cancellation (#3308)
alex-furman Oct 8, 2026
a18b024
feat(workspace): close a chat from its tab, unread count on tabs, fir…
trinity-ability Oct 8, 2026
f6bedcd
fix(sanitizer): redact a sensitive KEY=value chained after a harmless…
trinity-ability Oct 8, 2026
6be3a95
fix(sanitizer): fail closed past max_depth in both sanitizer copies (…
vybe Oct 9, 2026
897744a
fix(capacity): get_status picks the oldest slot by ZSET score, not sl…
vybe Oct 9, 2026
a1dfda2
fix(rooms): in-flight duplicate post returns 409, not a silent replay…
vybe Oct 9, 2026
714ae60
fix(pull): a pulled turn's prompt states the timeout it actually runs…
vybe Oct 9, 2026
fd4bd50
fix(credentials): a malformed credential archive is a 400 and an unst…
vybe Oct 9, 2026
11a2f79
fix(safe-yaml): deep nesting and control characters are named refusal…
vybe Oct 9, 2026
759ee7d
fix(url-validation): a token in a protocol-relative skills-library UR…
vybe Oct 9, 2026
a461789
fix(operator-queue): an empty options list or a numeric title no long…
vybe Oct 9, 2026
8cd434f
fix(skills): a library skill marked user-invocable: false is reported…
vybe Oct 9, 2026
bb29a62
fix(operator-queue): an agent-written type is bounded at ingest and a…
vybe Oct 9, 2026
41cced1
fix(public-links): an expired visitor session asks for the email agai…
webmixgamer Oct 9, 2026
ed59049
feat(objectives): guard metrics in the objective join (abilityai/trin…
obasilakis Oct 9, 2026
c90c711
chore: set version to 1.0.0-rc1 (#3429)
obasilakis Oct 9, 2026
21b4a11
feat(operator-queue): an agent sees its pending asks and can replace …
vybe Oct 9, 2026
606fa1a
fix(workspace): Esc while renaming a chat abandons the edit instead o…
trinity-ability Oct 9, 2026
84475b0
fix(operations): the Health tab reaches every alert and shows a dorma…
trinity-ability Oct 9, 2026
a9bc8bb
fix(operations): the global pending-notification count no longer foll…
trinity-ability Oct 9, 2026
15c966a
fix(dashboard): the list's tablet row renders only where the list is …
trinity-ability Oct 9, 2026
28c5a74
fix(workspace): a long token wraps inside its bubble, and the compose…
trinity-ability Oct 9, 2026
6ce8256
fix(settings): a gated tab survives a refresh and the Retention tab s…
trinity-ability Oct 9, 2026
c411014
fix(agent-detail): tab in the URL, help launcher off the Chat compose…
trinity-ability Oct 9, 2026
3510620
fix(settings): the email whitelist validates an entry and can remove …
trinity-ability Oct 9, 2026
36711e7
fix(tests): repair the tests and fixtures a full run-full.sh found dr…
trinity-ability Oct 9, 2026
3aabd93
chore(testing): ui-sweep 2026-10-09 all (explore + edges) @ c90c711ee…
trinity-ability Oct 9, 2026
4d411aa
docs(testing): rewrite the UI test phases for the v1 UI (#3437)
trinity-ability Oct 9, 2026
c68b487
fix(public-chat): a failed turn tells the visitor so in plain words, …
trinity-ability Oct 9, 2026
471e4c4
fix(public-chat): an anonymous session is looked up by its exact toke…
trinity-ability Oct 9, 2026
9e21584
feat(projects): an agent can start a project for its owner — projects…
dolho Oct 9, 2026
676898e
fix(sub-003): a turn walks every subscription and the API key before …
vybe Oct 9, 2026
2983fee
feat(skills): one Skills tab — own and shared skills, Run, Requires a…
webmixgamer Oct 9, 2026
db963b3
fix(auth): enforce the SSO email-code sign-in policy on every surface…
obasilakis Oct 10, 2026
dbf8095
fix(retention): approving a prune reads an env-supplied window the wa…
trinity-ability Oct 10, 2026
e28df0d
fix(workspace): the chat's Working clock shows the turn's real age on…
developerjillur Oct 10, 2026
d7ac976
fix(agent-server): report the API error the stream named instead of t…
trinity-ability Oct 10, 2026
8bf93f9
fix(gates): a delegate-minted Workspace session cannot self-approve a…
trinity-ability Oct 10, 2026
3a83576
fix(dashboards): a dims: tile reads its own series, so a busy neighbo…
trinity-ability Oct 10, 2026
6434ff9
fix(mcp): a usage-limit 429 after the run is no longer reported as ag…
trinity-ability Oct 10, 2026
ae9dcb7
chore(enterprise): bump submodule pin to f7cf7dc — agents start and i…
vybe Oct 10, 2026
96f88f9
chore: set version to 1.0.0-rc2; bump enterprise pin to 8331df5 (abil…
obasilakis Oct 10, 2026
60f5333
fix(asks): an ask to a role several people fill reaches every one of …
trinity-ability Oct 11, 2026
adbbe34
fix(operator-queue): an expired approval the platform did not hold is…
trinity-ability Oct 11, 2026
a27171a
feat(skills): admin keys manage library sources over MCP (abilityai/t…
trinity-ability Oct 11, 2026
9f47689
feat(workspace): tagging a person in a conversation reaches their Inb…
trinity-ability Oct 11, 2026
1414dad
fix(ui): preview the formatted agent identifier before creation (#346…
developerjillur Oct 11, 2026
d127132
feat(auth): the user role is Workspace-only; sharing stops creating l…
webmixgamer Oct 11, 2026
502921d
feat(access): who an agent serves, its seat, and what reads it (abili…
dolho Oct 11, 2026
6b72fa0
docs(loops): record the due-loop sweep, its idle cost and who reads t…
vybe Oct 11, 2026
edb0a34
refactor(scheduler): remove the process-schedule remnant (#3432) (#3440)
vybe Oct 11, 2026
94698cf
refactor(mcp): credential-migration tools are listed only for the key…
vybe Oct 11, 2026
f96fe45
refactor: remove 50 backend and scheduler symbols no production code …
vybe Oct 11, 2026
474e00c
refactor(api): remove nine uncalled routes and the orphan observabili…
vybe Oct 11, 2026
84ad179
fix(project hub): a pending ask is a list row on the Overview, the fu…
trinity-ability Oct 11, 2026
89e8503
Merge dev into feature/ent843-role-card-plain-objectives; answer the …
dolho Oct 12, 2026
b50f54a
fix(workspace): a thumbs-down comment reaches the operator's alert (#…
dolho Oct 12, 2026
14fa9bd
fix(operator-queue): a client's rating alert is the agent owner's, no…
dolho Oct 12, 2026
93ed16f
fix(operator-queue): resolve the caller's owned agents only for an ow…
dolho Oct 12, 2026
411e1d0
chore(enterprise): bump the submodule pointer to main (8331df5 -> b50…
dolho Oct 12, 2026
7035177
fix(skill-gate): tell the requester how an approved run ended (#3520)
dolho Oct 12, 2026
72d9e87
fix(skill-gate): every notice leads with its outcome (#3520)
dolho Oct 12, 2026
34588cc
feat(workspace): a Work card's title folds open to read the whole sen…
dolho Oct 12, 2026
ddf525d
Merge pull request #3606 from Abilityai/fix/ent866-problem-report-vis…
dolho Oct 12, 2026
7f7d1a2
Merge pull request #3604 from Abilityai/feature/3521-rating-comment-a…
dolho Oct 12, 2026
220ca09
fix(pull): the #1559 rebuild bakes the pull-worker env; one owner for…
Oct 12, 2026
71dcac2
fix(skill-gate): readers outside the gate service see an approved run…
dolho Oct 12, 2026
36ba51e
Merge pull request #3630 from Abilityai/fix/3520-gate-completion-notice
dolho Oct 12, 2026
ebae987
fix(gate): a held Chat-tab request stays in the conversation and is r…
obasilakis Oct 12, 2026
345493f
test(pull): the #3590 writer-set guard also finds an unknown fourth a…
Oct 12, 2026
bfc6b99
Merge origin/dev into feature/3590-rebuild-pull-env (resolve tests/re…
Oct 12, 2026
3f60683
feat(access): the platform role on the Access tab; a `user` assigned …
webmixgamer Oct 12, 2026
a519563
fix(gate): the approval card names who asked and what, sends in one c…
vybe Oct 12, 2026
1a98c24
fix(workspace): a chat keeps its fallback title when the generator ha…
obasilakis Oct 13, 2026
80c213f
fix(auth): an agent key reaches only itself, its edges and the agents…
dolho Oct 13, 2026
7d011cc
fix(files): credential files are owner-tier to read; file reads never…
AndriiPasternak31 Oct 13, 2026
cd8688a
chore(metrics): code-health dashboard 2026-10-12 @ 84ad179fd (#3605)
trinity-ability Oct 13, 2026
d427814
fix(watchdog): a claimed turn records the agent's finish time, not th…
pavshulin Oct 13, 2026
71f5bad
docs(user-docs): sync with dev since the 10-07 review — agent self-ch…
vybe Oct 13, 2026
64c7387
test(system): approval and project chains J21–J23 (abilityai/trinity-…
dolho Oct 13, 2026
a151e89
test(system): J21's expiry step widens the tier's 900 s timeout, only…
dolho Oct 13, 2026
d270ba8
feat(skill-gate): the gated-skill approval card — which agent, which …
obasilakis Oct 13, 2026
82c2dcc
Merge remote-tracking branch 'origin/dev' into feature/ent843-role-ca…
dolho Oct 13, 2026
c49b4d3
Merge pull request #3632 from Abilityai/feature/3590-rebuild-pull-env
pavshulin Oct 13, 2026
5e8bcfb
Merge pull request #3645 from Abilityai/feature/ent795-approval-proje…
dolho Oct 13, 2026
05612cd
Merge pull request #3407 from Abilityai/feature/ent843-role-card-plai…
dolho Oct 13, 2026
cf92405
Merge dev into the #3640 branch: ride ent#755's card and reason path;…
dolho Oct 13, 2026
3cc2bb7
fix(agents): an own non-catalog repo is no longer treated as a shared…
obasilakis Oct 13, 2026
35a76c6
fix(execution): a terminal completed_at is floored at the row's own s…
Oct 13, 2026
1e6e6d9
fix(gate): only a person's request is split into Request + history; t…
dolho Oct 13, 2026
df93c08
fix(activities): close cancelled-event and claimed-turn companion act…
pavshulin Oct 13, 2026
4c2e41b
Merge pull request #3648 from Abilityai/fix/3640-mergeable
dolho Oct 13, 2026
6624378
chore: set version to 1.0.0-rc3 (#3650)
obasilakis Oct 13, 2026
fa60374
Merge pull request #3649 from Abilityai/feature/882-completed-at-floor
pavshulin Oct 13, 2026
6093005
Merge origin/dev into feature/3588-close-cancelled-claimed-activities
obasilakis Oct 13, 2026
9fcb5b4
Merge pull request #3652 from Abilityai/feature/3588-close-cancelled-…
pavshulin Oct 13, 2026
15e3502
Merge pull request #3643 from Abilityai/docs/user-docs-sync-2026-10-12
dolho Oct 13, 2026
3dea26d
fix(seat-decisions): an assignment kind never widens the seat-decisio…
dolho Oct 13, 2026
87e6eba
Merge pull request #3666 from Abilityai/fix/3660-relationship-line
dolho Oct 13, 2026
14396f6
chore(enterprise): bump the submodule pointer to main (f8d1d3c -> 3f0…
dolho Oct 13, 2026
ac508c1
Merge pull request #3670 from Abilityai/chore/enterprise-pointer-3f0c1e1
dolho Oct 13, 2026
4bc8561
feat(a2a): AAuth agent identity across instances, behind an off-by-de…
vybe Oct 13, 2026
18d02a1
feat(aauth): person-token binding through a person server — an agent …
vybe Oct 13, 2026
5a52f35
feat(aauth): outbound resource client + call_aauth_resource — an agen…
vybe Oct 13, 2026
e3dacb9
chore(enterprise): bump the submodule pointer to main (3f0c1e1 -> f12…
webmixgamer Oct 13, 2026
ddc1a32
docs(releases): v1.0.0 code-freeze plan (#3665)
vybe Oct 13, 2026
75b3ab9
test: fix order-dependent and stale tests surfaced by the full suite …
trinity-ability Oct 13, 2026
397903e
fix(workspace): calm sidebar first load; rail tabs reordered, Asks al…
trinity-ability Oct 13, 2026
aca0a01
feat(workspace): chat tabs hold still while you are there; the Inbox …
vybe Oct 13, 2026
c5d3272
test(analytics): gap-fill day-stack test picks the seeded day, not ti…
trinity-ability Oct 14, 2026
5ef36f0
refactor(a2a): every inbound A2A call needs a credential — drop the k…
vybe Oct 14, 2026
5c1887f
fix(resume): a resume turn no longer hands the agent the responder's …
vybe Oct 14, 2026
a5f0f0f
chore(enterprise): bump the submodule pointer to main (a52ba5c -> a5f…
trinity-ability Oct 14, 2026
e656bc4
feat(skill-gate): gate approvers by canon role — role:<id> beside the…
vybe Oct 14, 2026
b2fffe0
fix(skill-gate): the person who asked sees how a gated request ended …
obasilakis Oct 14, 2026
984f8f4
fix: the Chat tab notice of a finished gated run quotes the run's rep…
obasilakis Oct 14, 2026
08c7328
docs(workspace): Workspace Projects user guide — continuing work, the…
trinity-ability Oct 14, 2026
11db30e
feat(workspace): sidebar top controls read Inbox, Projects, New chat,…
trinity-ability Oct 14, 2026
cf39aca
feat(aauth): graduate the agent identity for Trinity-to-Trinity calls…
vybe Oct 14, 2026
ab7f4cf
chore(enterprise): bump the submodule pointer to main (a5fdb07 -> 650…
trinity-ability Oct 14, 2026
f6a998f
feat(workspace): project page — markdown goal, one two-column Overvie…
trinity-ability Oct 14, 2026
cf1d747
fix(ui): A2A tab shows "Choose…" right after exposure is switched on …
dolho Oct 14, 2026
3c29003
chore: set version to 1.0.0-rc4 (#3703)
obasilakis Oct 14, 2026
fa6c9df
Merge pull request #3704 from Abilityai/fix/3702-a2a-choose-after-expose
dolho Oct 14, 2026
b400332
fix: preserve workspace .env when importing generated credential seed…
alex-furman Oct 14, 2026
32dde65
fix: run ordinary credential maintenance as workspace owner (#3721)
alex-furman Oct 14, 2026
a093f24
fix(a2a): the agent's A2A tab no longer registers endpoints call_a2a_…
dolho Oct 14, 2026
65b78a1
fix(codex): classify terminal failures before stale stderr (#3716)
alex-furman Oct 14, 2026
e4e739f
fix: scope tool activity completion and output to its execution (#3713)
alex-furman Oct 14, 2026
bdef2f1
fix(agents): public github: templates install when the resolved GitHu…
vybe Oct 14, 2026
475ea96
fix(workspace): Inbox pane — Open canvas on chats only; an ask's Open…
vybe Oct 14, 2026
acf8dfd
feat(asks): agents withdraw their own pending ask — withdraw route, w…
vybe Oct 14, 2026
a32a9c8
docs: README 1.0 refresh — positioning, hero, first 1.0 screenshots (…
vybe Oct 14, 2026
f8ae878
fix(workspace): keep a starred or pinned chat's title beside its glyp…
vybe Oct 14, 2026
77d9813
feat(workspace): remove a pending attachment from the composer with a…
vybe Oct 14, 2026
3e5622a
chore(enterprise): bump submodule to e408a6f — AAuth inbound allow-li…
trinity-ability Oct 15, 2026
f5fc04f
fix(a2a): inbound message/send answers a working task past a 25 s bud…
vybe Oct 15, 2026
292be57
fix(ui): approval card shows run links only to viewers who can open t…
dolho Oct 15, 2026
e10c605
fix(gates): send a run id only to a viewer who can open its page (#3708)
dolho Oct 15, 2026
03a379f
fix(gates): an approval reaches only approvers who can open the agent…
dolho Oct 15, 2026
55f08be
test(ent629): exempt the gate's approver reach check — it takes a per…
dolho Oct 15, 2026
fb341be
test(ent629): exempt the gate's approver reach check — it takes a per…
dolho Oct 15, 2026
4a4f7aa
test(gates): existing gate worlds' approvers can open the agent; shap…
dolho Oct 15, 2026
6e802a4
Merge pull request #3753 from Abilityai/fix/3708-gate-card-run-link
dolho Oct 15, 2026
f389c83
Merge remote-tracking branch 'origin/dev' into fix/ent881-gate-approv…
dolho Oct 15, 2026
44cca1b
Merge pull request #3755 from Abilityai/fix/ent881-gate-approver-unre…
dolho Oct 15, 2026
e025cb9
feat(security): an edge exposes declared skills; library skills need …
trinity-ability Oct 15, 2026
40bb7b9
Merge pull request #3761 from Abilityai/feature/ent662-edge-declared-…
vybe Oct 15, 2026
211b087
fix(sanitizer): stop URL-userinfo redaction at JSON/HTML delimiters (…
vybe Oct 15, 2026
025dbe7
feat(aauth): four-party resources — accept a resource token whose aud…
vybe Oct 15, 2026
e7edb46
docs(readme): AWS Marketplace launch button, drop the Files rail scre…
trinity-ability Oct 16, 2026
745aed4
Merge pull request #3774 from Abilityai/docs/readme-aws-marketplace-dev
vybe Oct 16, 2026
ac3f0ff
fix(messages): the owner stands in for an unseated primary (ent#904) …
dolho Oct 17, 2026
2762542
fix(workspace): a gated request's ending notice no longer reads "Fini…
dolho Oct 17, 2026
5f3b47a
fix(login): say so when the install has no email provider (#3655) (#3…
dolho Oct 17, 2026
0c216bd
chore(skills): bump the bundled community-catalog pin to trinity-skil…
trinity-ability Oct 17, 2026
7d7ac8b
chore(metrics): code-health dashboard 2026-10-13 @ 3f60683a0 (#3641)
trinity-ability Oct 17, 2026
c0ba81e
fix(mcp): a sequential chat_with_agent call that ends in a receipt re…
vybe Oct 17, 2026
93b57e4
fix(ui): redesign the Create Agent dialog as a fixed two-pane picker …
trinity-ability Oct 18, 2026
b7a7001
fix(setup): the provisioned admin has no sign-in email on PostgreSQL …
dolho Oct 19, 2026
e1b1d02
chore(deps): bump the patch-and-minor group (#3735)
dependabot[bot] Oct 19, 2026
ed5b1b2
chore(deps-dev): bump the patch-and-minor group (#3731)
dependabot[bot] Oct 19, 2026
e0cabc5
chore(deps): bump the patch-and-minor group (#3733)
dependabot[bot] Oct 19, 2026
f7fbce4
test(users): pin that the password upsert creates no email, so no dup…
dolho Oct 19, 2026
88f5e30
Merge pull request #3802 from Abilityai/fix/3554-admin-no-email
dolho Oct 19, 2026
8aec1c8
docs(guide): recommended workspace layout for Trinity-compatible agen…
vybe Oct 19, 2026
eaba15a
feat(prompt): "Your environment" block in the platform prompt (trinit…
vybe Oct 19, 2026
014927f
fix(workspace): show the new-chat state in a Main that Reset just min…
trinity-ability Oct 19, 2026
2db0e88
fix(telegram): preserve long replies and bound chunk retries (#3747)
alex-furman Oct 19, 2026
4c49093
fix(agent-runtime): drop the startup credentials auto-import that cal…
dolho Oct 19, 2026
5dd441c
chore(metrics): code-health dashboard 2026-10-19 @ 93b57e43d (#3803)
trinity-ability Oct 19, 2026
6abf087
fix(email): run SMTP sends off the event loop with a socket timeout (…
obasilakis Oct 19, 2026
c4f3175
fix(auth): email-login endpoints return 422 for a malformed body (#36…
obasilakis Oct 19, 2026
3a0f5d6
fix(public-links): reject an invalid expiry with 422 and keep the lis…
obasilakis Oct 19, 2026
3baec48
fix(model): an agent's 4xx on the model routes reaches the caller as …
dolho Oct 19, 2026
cd8b1a4
fix(asks): a capped read of pending asks keeps the longest-waiting on…
dolho Oct 19, 2026
9b865d2
fix: webhook and MCP URLs use https behind an HTTPS proxy (#3601, #29…
obasilakis Oct 19, 2026
a184e78
fix(auth): agent-scoped keys see only their reach on fleet routes (#3…
obasilakis Oct 19, 2026
b902ebf
fix(files): rule a tier per verb on the agent Files surface (ent#820)…
dolho Oct 19, 2026
80b23d0
chore(enterprise): bump submodule to 1cfaf0f (ent#947 agent-key reach…
trinity-ability Oct 19, 2026
52f2910
feat(ui): one Settings home for the agent — rail, General, Guardrails…
vybe Oct 19, 2026
85714fc
docs(user-docs): sync with dev since the 10-12 review + v1.0.0 What's…
vybe Oct 19, 2026
5b1eed8
feat(ui): agent header — repo, tags and a context chart back; Talk an…
trinity-ability Oct 20, 2026
d1c2447
feat(ui): the agent header, restored — in-place name and avatar, fund…
trinity-ability Oct 20, 2026
f3b58e8
chore: reconcile main into dev (#3780, #3786 + 9 earlier main-only co…
obasilakis Oct 20, 2026
8abac3b
fix: renamed agent re-bakes AGENT_NAME and its label on recreate (#38…
obasilakis Oct 20, 2026
01707a1
fix(pull): the system agent claims its own queue with its system-scop…
obasilakis Oct 20, 2026
87ac5a1
Merge pull request #3830 from Abilityai/chore/reconcile-main-3786-378…
vybe Oct 20, 2026
d6a89bf
chore(enterprise): pin the submodule to enterprise main tip — A2A/SSO…
trinity-ability Oct 20, 2026
3719f67
fix(a2a): a bearer tasks/get and tasks/cancel answer only for the cal…
dolho Oct 20, 2026
e96876b
fix(auth): /ws/events applies the account-state check the other doors…
dolho Oct 20, 2026
1c56ffb
fix(rooms): every principal's access is re-checked at wake time (trin…
dolho Oct 20, 2026
e0964d6
docs(user-docs): illustrate the v1.0.0 What's New with nine screensho…
trinity-ability Oct 20, 2026
e02d9a0
chore(release): v1.0.0 — version bump, release notes, learnings fold …
trinity-ability Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude
114 changes: 109 additions & 5 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ ADMIN_PASSWORD=
# password blank: no admin exists until the first person to open the instance
# creates one at /setup (ent#580). Anyone who reaches it first can — see
# docs/DEPLOYMENT.md -> Security Recommendations. Leave unset otherwise.
# The AWS image sets ADMIN_PASSWORD_SOURCE=instance-id instead: /setup also asks
# for the EC2 instance ID, which provisioning stores in
# ${TRINITY_DATA_PATH}/setup-claim (0600, deleted once the admin exists), and
# email becomes optional (#3004).
# ADMIN_PASSWORD_SOURCE=

# Anthropic API Key - Required for agents to use Claude
Expand Down Expand Up @@ -172,6 +176,13 @@ SLACK_SIGNING_SECRET=
# malformed values fall back to the default (2).
SLACK_SOCKET_CONNECTION_COUNT=2

# Telegram group conversation context (ent#600) — how much of a group's recent
# conversation a tagged turn carries: the newest N messages within a rolling
# window of H hours. Empty, non-integer or non-positive values fall back to the
# defaults (40 messages, 24 hours). Per-group on/off lives in the Telegram panel.
TELEGRAM_GROUP_CONTEXT_MAX_MESSAGES=
TELEGRAM_GROUP_CONTEXT_MAX_AGE_HOURS=

# GitHub OAuth (for GitHub MCP)
# Get from: https://github.com/settings/developers
GITHUB_CLIENT_ID=
Expand Down Expand Up @@ -263,6 +274,28 @@ VOIP_ENABLED=false
# sanitiser can stop a transformed secret. An admin can flip this at runtime
# (system_settings wins over this variable, no restart needed).
A2A_OUTBOUND_ENABLED=false
# AAuth agent identity (trinity-enterprise#623, graduated by #862). Every key
# resolves system_settings → env → default, and Settings → AAuth edits the first
# two, so an admin can flip them at runtime.
# AAUTH_ENABLED= — agents on this instance sign their calls to other
# instances, and verified callers from instances an
# agent lists are accepted. Off until set or switched
# on in Settings; left unset here on purpose.
# AAUTH_PROTOTYPE_ENABLED=false — the person-token and resource-calling prototypes
# (also need AAUTH_ENABLED).
# AAUTH_ISSUER= — this instance's AAuth server identifier (https://<host>).
# AAUTH_PERSON_SERVER= — the person server agents bind through (e.g.
# https://person.hello.coop); unset → person-token
# requests fail closed with person_server_unconfigured.
# AAUTH_RESOURCE_ALLOWLIST= — the AAuth resources agents may call (JSON list or
# comma-separated https origins, e.g.
# https://senzing.aauth.dev); empty/malformed → NO
# resource is callable (fail closed). Setting key:
# aauth_resource_allowlist.
AAUTH_PROTOTYPE_ENABLED=false
AAUTH_ISSUER=
AAUTH_PERSON_SERVER=
AAUTH_RESOURCE_ALLOWLIST=
# PSTN abuse / spend controls (sane defaults — tune for your Twilio plan).
VOIP_MAX_CALL_DURATION=600 # hard per-call cap (seconds)
VOIP_DEFAULT_DAILY_CALL_CAP=50 # per-agent calls/day (overridable per binding)
Expand All @@ -274,6 +307,28 @@ VOIP_INTENT_TTL_SECONDS=180 # staged Gemini-session intent TTL
# Agent structured reports (#918)
REPORT_RATE_LIMIT=30 # max reports an agent may create per 60s window

# --- Declared business metrics (trinity-enterprise#478) ---------------------
# Bootstrap values for the two metric knobs. Both are a FALLBACK, not an
# override: a value saved through Settings (PUT /api/settings/ops/config) wins,
# and while no such row exists these stay live — change one here and the next
# read honours it. GET /api/settings/retention reports which tier answered.
# Left COMMENTED on purpose (ent#671): a set variable is reported as the value's
# source and makes its Settings → Retention row read-only, so set one only to
# pin the value from the environment. Unset, the built-in default applies and
# the row stays editable.
METRICS_RATE_LIMIT=60 # max record_metrics calls per agent per 60s window
# METRICS_RETENTION_DAYS=365 # how long recorded points are kept (0 = keep forever)
# METRICS_DAILY_POINT_CAP=100000 # points one agent may record per UTC day (0 = unlimited)
METRICS_READ_RATE_LIMIT=240 # max GET /metrics reads per agent per 60s window (tiles, dashboard binds, get_metrics)
OBJECTIVES_READ_RATE_LIMIT=60 # max objective reads per agent per 60s window — GET /objectives and the Workspace role card share it (each one fans out into the agent container)

# Inter-agent chain depth (#2806). How many agent-to-agent hops one call chain
# may take (1-32); a hop past it is refused with 403 inter_agent_depth_exceeded.
# A FALLBACK like the metric knobs above: a value saved via
# PUT /api/settings/ops/config wins. Commented for the same reason (ent#671):
# a set variable is reported as the value's source; unset, the default 8 applies.
# INTER_AGENT_MAX_CHAIN_DEPTH=8

# Agent canvases (ent#438/ent#553)
CANVAS_MAX_PER_AGENT=100 # canvases an agent may hold before writes are refused

Expand Down Expand Up @@ -302,7 +357,7 @@ SKILLS_FLEET_INJECT_CONCURRENCY=5 # agents re-injected in parallel during a flee
# Pinned to a tag we bump, never a branch head — the catalog takes public PRs and
# skills carry executables. Set the URL to "" to disable the seed entirely.
# TRINITY_DEFAULT_SKILL_SOURCE=github.com/abilityai/trinity-skills
# TRINITY_DEFAULT_SKILL_SOURCE_REF=v0.2.0
# TRINITY_DEFAULT_SKILL_SOURCE_REF=v0.5.0

# ===========================================
# INSTALL PROVENANCE (#2380)
Expand All @@ -316,7 +371,8 @@ SKILLS_FLEET_INJECT_CONCURRENCY=5 # agents re-injected in parallel during a flee
# nothing: provenance is a fact about an installation event, not a setting. The
# API refuses to write or clear it for the same reason.
#
# Valid values: do-marketplace | vultr-marketplace | script | unknown
# Valid values: do-marketplace | vultr-marketplace | aws-marketplace | do-script |
# aws-script | script | unknown
# Case and surrounding whitespace are normalised, so `DO-Marketplace` is fine.
# Anything else is ignored with a warning and provenance reads as `unknown`
# (a typo is never recorded, so a corrected marker still lands on next boot).
Expand Down Expand Up @@ -349,15 +405,25 @@ OPERATOR_QUEUE_CREATE_RATE_WINDOW=60 # rate-limit window (seconds)
OPERATOR_QUEUE_FLEET_CREATE_RATE_LIMIT=300 # fleet-wide create rate / window
OPERATOR_QUEUE_MAX_SCAN_PER_CYCLE=500 # max requests scanned per agent per 5s cycle
OPERATOR_QUEUE_MAX_FILE_BYTES=2097152 # skip an operator-queue.json larger than this (bytes)
OPERATOR_QUEUE_TITLE_MAX=300 # title char cap (truncate-with-marker)
OPERATOR_QUEUE_TITLE_MAX=300 # title char cap (truncate-with-marker belt; agent titles are refused/held at OPERATOR_QUEUE_ASK_TITLE_MAX_CHARS first)
OPERATOR_QUEUE_QUESTION_MAX=4000 # question char cap (truncate-with-marker)
OPERATOR_QUEUE_CONTEXT_MAX_BYTES=8192 # context serialized-byte cap (marker over)
OPERATOR_QUEUE_OPTIONS_MAX_BYTES=4096 # options serialized-byte cap (dropped-marker over)
OPERATOR_QUEUE_MAX_OPTIONS=5 # #3243: options per agent ask, (something else) not counted (refused/held over; floor 2)
OPERATOR_QUEUE_OPTION_MAX_CHARS=60 # #3243: characters per option (refused/held over; floor 16)
OPERATOR_QUEUE_ASK_TITLE_MAX_CHARS=120 # #3243: title of an agent-raised ask (refused/held over; floor 40)
OPERATOR_QUEUE_PROPOSAL_MAX_BYTES=8192 # proposal serialized-byte cap (native asks; refused with 422 over)
OPERATOR_QUEUE_ID_MAX=256 # max agent-supplied id length
OPERATOR_QUEUE_EXECUTION_ID_MAX=128 # max execution_id preserved in a context marker
OPERATOR_QUEUE_EMAIL_MAX=320 # ent#364: addressee email length clamp (RFC 5321)
OPERATOR_QUEUE_FLOOD_ALERT_COOLDOWN_SECONDS=300 # one flood alert per agent per this window
OPERATOR_ALERT_MAX_PENDING_PER_TYPE=5 # per-(agent, type) pending budget for agent-influenceable platform alerts (#1677)
# #3246: a platform alert is one row per condition — it expires this many days after
# its LAST reading (bad value → default + WARNING) …
OPERATOR_PLATFORM_ALERT_LIFETIME_DAYS=14
# … and after a person ends one, the same reading files nothing for this many days
# unless its priority rises or a material field changes.
OPERATOR_PLATFORM_ALERT_SNOOZE_DAYS=7

# ===========================================
# SERVICE URLS (Usually no need to change)
Expand Down Expand Up @@ -540,12 +606,22 @@ SSH_HOST=
# 3. Set DATABASE_URL (uncomment) and restart the backend.
# Leave DATABASE_URL unset for the default SQLite behavior.
#
# HOSTED installs (docker-compose.hosted.yml, `start.sh --hosted`, every
# one-click image) default to the bundled PostgreSQL instead (#3159):
# - POSTGRES_PASSWORD is REQUIRED there (the file does not render without it);
# start.sh --hosted generates it.
# - DATABASE_URL unset → the bundled server. `DATABASE_URL=` (empty) → SQLite,
# which start.sh --hosted writes for an install that already has trinity.db.
# Keep the DATABASE_URL line below commented: start.sh reads an uncommented
# one, even empty, as a choice already made.
#
# DATABASE_URL=postgresql://trinity:your-postgres-password@postgres:5432/trinity
# DB_POOL_SIZE=10 # PostgreSQL connection pool size (ignored for SQLite)
# DB_MAX_OVERFLOW=20 # PostgreSQL pool overflow (ignored for SQLite)
#
# Credentials for the optional bundled postgres service (compose --profile postgres).
# POSTGRES_PASSWORD is required only when that profile is enabled.
# Credentials for the bundled postgres service. Dev compose: only with
# --profile postgres. Hosted compose: always, with POSTGRES_DB/POSTGRES_USER
# fixed at `trinity`.
# POSTGRES_DB=trinity
# POSTGRES_USER=trinity
# POSTGRES_PASSWORD=
Expand Down Expand Up @@ -628,6 +704,17 @@ AGENT_IDLE_FINALIZE_S=
# Default: false
MCP_AGENT_CHAT_PULL_ENABLED=false

# Delegation report-back kill switch (#3232, default ON). An agent that hands
# work off with chat_with_agent(..., parallel=true, async=true) from a Slack,
# Telegram or Workspace turn has the delegated run post its outcome back into
# that conversation by default (parallel=true sync calls opt in with
# execution_id; a plain sequential call never reports back). Set to
# false, 0, no or off (any case) to stop the MCP server sending any
# parent_execution_id — default and typed alike — without reverting the image.
# Any other value, empty included, leaves it on. Read by the mcp-server only.
# Default: true
MCP_REPORT_BACK_ENABLED=true

# MCP inline email auth (#848, default OFF). When true, an MCP request arriving
# with NO Authorization header opens a keyless "anonymous" session that may call
# request_login / verify_login to sign in with a 6-digit email code, and then
Expand Down Expand Up @@ -893,3 +980,20 @@ TRINITY_DEFAULT_SYSTEM_MANIFEST=
# than an error, so mounting the directory is required as well — setting this
# alone silently lists nothing.
TRINITY_MANIFESTS_DIR=

# ============================================================
# NEVERMINED x402 FACILITATOR CONCURRENCY (Optional)
# ============================================================
# Every payment verify and settle is an outbound call to the Nevermined
# facilitator that runs on the default thread executor, so a slow facilitator
# would otherwise hold backend threads for the whole fleet — and a priced
# agent's public URL needs no credential to make the backend dial out, so
# per-IP rate limiting alone cannot bound it (the bound has to hold across IPs).
# These two knobs are that bound: a fleet-wide ceiling on concurrent facilitator
# calls, and how long a call waits for a free slot before answering "busy,
# retry" rather than queueing without limit. Fleet-wide, not per agent — the
# thread pool is a platform resource. A refused call burns nothing.
# Defaults below are the code defaults; leave them unless the facilitator is
# demonstrably keeping up with more.
NEVERMINED_MAX_INFLIGHT=8
NEVERMINED_FACILITATOR_WAIT_SECONDS=5.0
25 changes: 25 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,23 @@ updates:
- patch
- minor

# Agent image (#3106): the exact pins in agent-image-requirements.txt only
# move by a deliberate bump, so this is their only bump channel — without it
# they would go stale past security releases with no signal.
- package-ecosystem: pip
directory: /docker/base-image
target-branch: dev
schedule:
interval: weekly
labels:
- dependencies
- docker
groups:
patch-and-minor:
update-types:
- patch
- minor

# MCP server (TypeScript).
- package-ecosystem: npm
directory: /src/mcp-server
Expand Down Expand Up @@ -115,10 +132,18 @@ updates:
# needing `pg_config`, which `-slim` does not carry. Ecosystem readiness is
# the thing to check first, and that is issue work, not PR review.
# Patch/minor still flow (that is where the CVE fixes are).
#
# Python's own 3.x step is semver-MINOR to Dependabot, so the rule above
# never caught it: #2477 and #3092 were the same 3.13 -> 3.14 migration
# arriving as a "minor" base-image bump. Other images' minors still flow;
# the Python minor moves only by deliberate issue work.
ignore:
- dependency-name: "*"
update-types:
- version-update:semver-major
- dependency-name: "python"
update-types:
- version-update:semver-minor
groups:
docker-base-images:
patterns:
Expand Down
Loading
Loading