Skip to content
Merged
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
13 changes: 13 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,19 @@
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR/scripts/hooks/log-skill.sh\"",
"async": true
},
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR/scripts/hooks/bead-session.sh\""
}
]
},
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR/scripts/hooks/bead-session.sh\""
}
]
}
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/diagram-intake
1 change: 1 addition & 0 deletions .claude/skills/lint-audit
1 change: 1 addition & 0 deletions .claude/skills/orchestrate
1 change: 1 addition & 0 deletions .claude/skills/resume-audit
13 changes: 13 additions & 0 deletions .claude/standup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Standup Extension — seh-study

## Current blockers
- (none)

## This week's priorities
- P1: (update with this week's priorities)

## Open work
- [ ] (update with current tasks)

## Context for today
(free-form notes for /frame-standup planning context)
30 changes: 30 additions & 0 deletions packages/api/src/beads/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* SehBeadLike — FrameBeadLike shape for SEH Study scenarios.
*
* Satisfies the FrameBeadLike contract defined in ADR-0016 (core repo).
* Deliberately not imported from @core/workflows to avoid cross-repo coupling.
*
* Prefix: "seh-"
* sourceApp: "seh-study"
*
* Note: study sessions are currently client-side (localStorage).
* This route returns an empty array until server-side session persistence is added.
*/

export type SehBeadStatus = 'created' | 'live' | 'closed' | 'archived';

export interface SehBead {
id: string;
type: 'task';
status: SehBeadStatus;
sourceApp: 'seh-study';
created_at: string;
updated_at: string;
payload: {
scenarioId: string;
title: string;
difficulty: string;
missionStatus?: string;
score?: number;
};
}
17 changes: 17 additions & 0 deletions packages/api/src/routes/beads.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Router, type IRouter, type Request, type Response } from 'express';

export const beadsRouter: IRouter = Router();

/**
* GET /api/beads
*
* FrameBeadLike projection endpoint (ADR-0016).
* Read-only — Mayor/frame-agent aggregation endpoint.
*
* Currently returns empty: study sessions are client-side (localStorage).
* Once server-side session persistence is added, this will return
* scenario runs as beads with seh- prefix.
*/
beadsRouter.get('/', (_req: Request, res: Response) => {
res.json({ beads: [], count: 0 });
});
2 changes: 2 additions & 0 deletions packages/api/src/routes/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import type { Express } from 'express'
import healthRouter from './health.js'
import toolsRouter from './tools.js'
import { beadsRouter } from './beads.js'

export function registerRoutes(app: Express): void {
app.use('/health', healthRouter)
app.use('/api/tools', toolsRouter)
app.use('/api/beads', beadsRouter)
}
Loading
Loading