Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions trios/agent-server/apps/server/tests/api/queen-inngest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ describe('the vendored catalog, read by the compiler', () => {
])
expect(c.scheduler.tokenEnv).toBe('TRIOS_GITHUB_API_TOKEN')
expect(c.crons.length).toBe(33)
expect(c.skills.length).toBe(26)
expect(c.skills.length).toBe(27)
expect(c.refused).toEqual([])
expect(c.pin).toContain('26294613')
expect(c.pin).toContain('885189dd')
expect(new Set(c.crons.map((x) => x.host))).toEqual(
new Set(['github-actions', 'inngest', 'timer', 'railway-cron']),
)
Expand All @@ -115,7 +115,7 @@ describe('the vendored catalog, read by the compiler', () => {
})
const c = await loadSpecCatalog(root)
expect(c.crons.length).toBe(33)
expect(c.skills.length).toBe(26)
expect(c.skills.length).toBe(27)
const reasons = Object.fromEntries(c.refused.map((r) => [r.file, r.reason]))
expect(reasons['specs/crons/zz-broken.t27']).toBe('missing ID')
expect(reasons['specs/crons/zz-garbled.t27']).toMatch(/^compiler: /)
Expand Down Expand Up @@ -155,12 +155,12 @@ describe('the plan follows the constants', () => {
expect(plan.danglingRuns).toEqual([])
})

it('derives ids and events from the templates and keeps them unique across 59 functions', async () => {
it('derives ids and events from the templates and keeps them unique across 60 functions', async () => {
const c = await catalogPromise
const plan = planCatalog(c)
const ids = [...plan.crons, ...plan.skills].map((f) => f.functionId)
expect(ids.length).toBe(59)
expect(new Set(ids).size).toBe(59)
expect(ids.length).toBe(60)
expect(new Set(ids).size).toBe(60)
for (const p of plan.crons) {
expect(p.functionId).toBe(`cron-${slug(p.cardId)}`)
expect(p.tickEvent).toBe(`cron/${p.cardId}.tick`)
Expand Down Expand Up @@ -327,21 +327,21 @@ describe('dispatch, against a fake GitHub', () => {
})

describe('the app and its routes', () => {
it('builds 59 functions and a projection with counts, reasons and env presence (never values)', async () => {
it('builds 60 functions and a projection with counts, reasons and env presence (never values)', async () => {
const c = await catalogPromise
const env = {
INNGEST_SIGNING_KEY: 'signkey-test-secret',
TRIOS_GITHUB_API_TOKEN: 'ghp_secret',
}
const app = buildQueenApp(c, { env })
expect(app.functions.length).toBe(59)
expect(app.functions.length).toBe(60)
const p = schedulerProjection(app, env)
expect(p.app).toBe('t27-queen')
expect(p.counts).toEqual({
crons: 33,
cronsScheduled: 12,
cronsTickOnly: 21,
skills: 26,
skills: 27,
refused: 0,
danglingRuns: 0,
})
Expand Down Expand Up @@ -369,7 +369,7 @@ describe('the app and its routes', () => {
expect(status.status).toBe(200)
expect(
((await status.json()) as { counts: { skills: number } }).counts.skills,
).toBe(26)
).toBe(27)

const run = await server.request(
'/api/inngest?fnId=t27-queen-skill-t27-measure-corpus&stepId=step',
Expand Down
4 changes: 2 additions & 2 deletions trios/agent-server/specs/PIN
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
source: gHashTag/t27 feat/inngest-queen-scheduler @ 26294613 (specs/crons, specs/skills, specs/automation/inngest-queen-scheduler.t27), byte-identical
wasm: gHashTag/trinity main apps/website/public/t27/t27_compiler.wasm sha256 4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4
source: gHashTag/t27 master @ 885189dd (specs/crons, specs/skills, specs/automation/inngest-queen-scheduler.t27), byte-identical
wasm: gHashTag/trinity main apps/website/public/t27/t27_compiler.wasm sha256 4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4 (kept: the wasm on trinity main @ 3cf399fc answers the scheduler contract with output this loader cannot parse)
refresh: scripts/sync-t27-specs.sh (T27_ROOT, TRINITY_ROOT), then bun test tests/api/queen-inngest.test.ts
28 changes: 28 additions & 0 deletions trios/agent-server/specs/skills/trinity-connect-accounts.t27
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: Apache-2.0
; specs/skills/trinity-connect-accounts.t27 -- skill trinity/connect-accounts
; Source of truth for the skill card on t27.ai (#/skills?skill=trinity/connect-accounts).
; The skill body lives in gHashTag/trinity at .claude/skills/connect-accounts/SKILL.md
; (vendored copy: apps/website/public/skills/files/trinity/connect-accounts/SKILL.md, sha256 b8401486a420...).
; Written from two live runs on 2026-09-22: LinkedIn through Google (one press,
; one account choice, one consent) and X through Google (blocked until the
; browser allowed pop-ups), and two sessions an agent described but never ran.
; The JSON the site serves is generated from this file by the real compiler;
; nothing below is parsed with a regex.
; phi^2 + 1/phi^2 = 3 | TRINITY

module skill_trinity_connect_accounts;

pub const KIND : str = "skill";
pub const ID : str = "trinity/connect-accounts";
pub const NAME : str = "connect-accounts";
pub const REPO : str = "trinity";
pub const SOURCE : str = "SKILL.md";
pub const SUMMARY_EN : str = "Sign a person into their own accounts (LinkedIn, X, job boards, social networks) through their remote browser, as an agent the person watches: SSO buttons pressed by label, every case of a sign-in with the move that fits it, secrets and consent kept theirs, and only what the tools really did reported.";
; No slash command is declared for this skill.
pub const COMMAND : str = "";
; No spec is declared for this skill yet; the Skill Explorer lists it as unbound.
pub const SPECS : [0]str = [];
pub const TAGS : [4]str = ["browser", "sign-in", "sso", "agents"];
pub const ENABLED : bool = true;
; Default budget; SKILL.md declares no timeout of its own.
pub const TIMEOUT_MIN : u16 = 30;
Loading