Files
Clément SAILLANTandGitHub 5efb380da5 feat: automate yiacad PR review lane (#18)
* feat: automate yiacad pr review lane

* fix: stabilize yiacad review and spec gates

* fix: scope kicad exports to repo hardware

* fix: ignore kicad block library sources in exports

* feat: Add infra VPS monitoring runbook and healthcheck scripts

- Created INFRA_VPS_RUNBOOK_2026.md detailing operational procedures for monitoring VPS services.
- Added infra_vps_healthcheck.sh script for automated health checks on DNS, TLS, TCP, and HTTP for VPS services.
- Introduced infra_vps_security_audit.sh for non-intrusive security checks on external VPS services.
- Established JSON schema for infra VPS inventory in infra_vps.schema.json.
- Developed integration for runtime status reporting in the Next.js API route.
- Implemented Playwright tests for smoke testing the application and ensuring core functionalities.
- Updated Makefile for development dependencies and testing commands.
- Created various test files for unit and end-to-end testing across different components.

* feat(agentics): update mesh agents, gates, prompts, and workflows
2026-03-29 17:14:16 +02:00

156 lines
3.5 KiB
TypeScript

import { createSchema } from "graphql-yoga";
import { enqueueCi } from "@/lib/ci-enqueue";
import {
getProjectSnapshot,
publishPullRequestSummary,
saveDiagram
} from "@/lib/project-store";
export const schema = createSchema({
typeDefs: /* GraphQL */ `
type ProjectNode {
path: String!
kind: String!
}
type Diagram {
path: String!
name: String!
scene: String!
}
type CiRun {
id: ID!
pipeline: String!
engine: String!
status: String!
summary: String!
degradedReasons: [String!]!
artifactCount: Int!
queuedAt: String!
startedAt: String
completedAt: String
}
type Artifact {
id: ID!
label: String!
kind: String!
status: String!
url: String
sourcePath: String
runId: String
summary: String
}
type GitHubCheck {
id: ID!
name: String!
workflow: String
status: String!
conclusion: String
summary: String!
detailsUrl: String
completedAt: String
headSha: String
pullRequestId: String
}
type EvidencePack {
id: ID!
name: String!
workflow: String!
status: String!
conclusion: String
summary: String!
detailsUrl: String
artifactUrl: String
artifactNames: [String!]!
createdAt: String!
updatedAt: String!
headSha: String
pullRequestId: String
}
type PullRequest {
id: ID!
title: String!
status: String!
author: String!
hasPcbDiff: Boolean!
hasDiagramDiff: Boolean!
hasArtifactPreview: Boolean!
sourceBranch: String!
targetBranch: String!
url: String
updatedAt: String
headSha: String
checkSummary: String!
changeScope: String!
riskLevel: String!
mergeRecommendation: String!
changedFiles: [String!]!
artifactIds: [String!]!
checkIds: [String!]!
evidencePackIds: [String!]!
}
type Project {
id: ID!
name: String!
rootPath: String!
repoProvider: String!
repoVisibility: String!
repoBranch: String
repoHead: String
repoAuthor: String
changedFiles: [String!]!
reviewSummary: String!
tree: [ProjectNode!]!
diagrams: [Diagram!]!
boardUrl: String
schematicUrl: String
ciRuns: [CiRun!]!
artifacts: [Artifact!]!
githubChecks: [GitHubCheck!]!
evidencePacks: [EvidencePack!]!
pullRequests: [PullRequest!]!
}
type Query {
project(id: ID = "yiacad-demo"): Project!
}
type PublishPullRequestSummaryResult {
pullRequestId: ID!
commentUrl: String
action: String!
summary: String!
}
type Mutation {
saveDiagram(path: String!, scene: String!): Diagram!
enqueueCi(projectId: ID = "yiacad-demo", pipeline: String!): CiRun!
publishPullRequestSummary(pullRequestId: ID!): PublishPullRequestSummaryResult!
}
`,
resolvers: {
Query: {
project: async () => getProjectSnapshot()
},
Mutation: {
saveDiagram: async (
_: unknown,
args: { path: string; scene: string }
) => saveDiagram(args.path, args.scene),
enqueueCi: async (_: unknown, args: { pipeline: string }) =>
enqueueCi(args.pipeline),
publishPullRequestSummary: async (
_: unknown,
args: { pullRequestId: string }
) => publishPullRequestSummary(args.pullRequestId)
}
}
});