mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-01 09:29:38 +02:00
feat(ts): add real quality gates — Biome lint + effect-law ratchet + class inventory
- biome.json (2.4.16, linter-only) wired as "lint" in all six packages - scripts/check-effect-laws.ts: Effect-native law enforcement encoding the adapted beep-effect effect-first/schema-first laws (no native JSON/switch/ sort/fetch/timers, no process.env, no throw new, no Effect.run* outside boundaries, no Schema-suffixed constants, no node:fs/path, AST-based pure-data interface detection per law 38/39) - ratcheting baseline allowlist (95 entries / 290 findings) that must shrink to documented exemptions only; stale counts fail the gate - root lint chains turbo lint + law check + native-class inventory - fix all 163 initial Biome findings: import-type style, templates, two `any`s, ten non-null assertions (librarian getService gate, A.matchRight in atoms, ensureNode returning nodes, main.tsx mount guard) Gates: lint, check:tsgo, build, test (force, 11 tasks) all green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
cf12defcd8
commit
0746d7ffd5
109 changed files with 951 additions and 611 deletions
|
|
@ -15,6 +15,9 @@ import {
|
|||
} from "lucide-react";
|
||||
import Markdown from "react-markdown";
|
||||
import { cn } from "@/lib/utils";
|
||||
import type {
|
||||
ChatMessage,
|
||||
} from "@/atoms/workbench";
|
||||
import {
|
||||
agentPhaseExpandedAtom,
|
||||
cancelChatAtom,
|
||||
|
|
@ -27,7 +30,6 @@ import {
|
|||
setConversationInputAtom,
|
||||
settingsAtom,
|
||||
submitMessageAtom,
|
||||
type ChatMessage,
|
||||
} from "@/atoms/workbench";
|
||||
import { AutoTextarea } from "@/components/ui/textarea";
|
||||
import { MessageActions } from "@/components/chat/message-actions";
|
||||
|
|
|
|||
|
|
@ -19,14 +19,16 @@ import {
|
|||
settingsAtom,
|
||||
} from "@/atoms/workbench";
|
||||
import type { Triple } from "@trustgraph/client";
|
||||
import type {
|
||||
GraphNode,
|
||||
GraphLink,
|
||||
} from "@/lib/graph-utils";
|
||||
import {
|
||||
localName,
|
||||
triplesToGraph,
|
||||
RDFS_LABEL,
|
||||
RDF_TYPE,
|
||||
termValue,
|
||||
type GraphNode,
|
||||
type GraphLink,
|
||||
directedGraphLinkProps,
|
||||
DEFAULT_GRAPH_NODE_COLOR,
|
||||
} from "@/lib/graph-utils";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@ import {
|
|||
Hash,
|
||||
} from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import type {
|
||||
UploadForm,
|
||||
} from "@/atoms/workbench";
|
||||
import {
|
||||
documentMetadataAtom,
|
||||
encodeJsonUnknownString,
|
||||
|
|
@ -31,7 +34,6 @@ import {
|
|||
submitUploadDocumentAtom,
|
||||
uploadDialogOpenAtom,
|
||||
uploadFormAtom,
|
||||
type UploadForm,
|
||||
} from "@/atoms/workbench";
|
||||
import { Dialog } from "@/components/ui/dialog";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
|
|
|
|||
|
|
@ -15,6 +15,10 @@ import {
|
|||
} from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { Dialog } from "@/components/ui/dialog";
|
||||
import type {
|
||||
McpServerEntry,
|
||||
ToolEntry,
|
||||
} from "@/atoms/workbench";
|
||||
import {
|
||||
deleteMcpServerAtom,
|
||||
deleteMcpToolAtom,
|
||||
|
|
@ -31,8 +35,6 @@ import {
|
|||
resultLoading,
|
||||
saveMcpServerAtom,
|
||||
saveMcpToolAtom,
|
||||
type McpServerEntry,
|
||||
type ToolEntry,
|
||||
} from "@/atoms/workbench";
|
||||
|
||||
const INPUT_CLASS =
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ export default function PromptsPage() {
|
|||
)}
|
||||
|
||||
{activeTab === "templates" && (
|
||||
<div id="panel-templates" role="tabpanel" aria-labelledby="tab-templates" tabIndex={0} className="flex flex-1 flex-col gap-4 overflow-hidden">
|
||||
<div id="panel-templates" role="tabpanel" aria-labelledby="tab-templates" className="flex flex-1 flex-col gap-4 overflow-hidden">
|
||||
{loading && prompts.length === 0 && (
|
||||
<div className="flex items-center justify-center py-12">
|
||||
<Loader2 className="mr-2 h-5 w-5 animate-spin text-fg-subtle" />
|
||||
|
|
@ -203,7 +203,7 @@ export default function PromptsPage() {
|
|||
)}
|
||||
|
||||
{activeTab === "system" && (
|
||||
<div id="panel-system" role="tabpanel" aria-labelledby="tab-system" tabIndex={0} className="flex flex-1 flex-col overflow-hidden rounded-lg border border-border">
|
||||
<div id="panel-system" role="tabpanel" aria-labelledby="tab-system" className="flex flex-1 flex-col overflow-hidden rounded-lg border border-border">
|
||||
<div className="border-b border-border bg-surface-100 px-4 py-3">
|
||||
<h2 className="text-xs font-medium uppercase tracking-wider text-fg-muted">
|
||||
System Prompt
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue