mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-02 02:58:10 +02:00
refactor(ts): complete legacy host removal — drop fastify/commander/zod, delete MCP SDK server, remove ManagedRuntime facades
Finishes the remaining EFFECT_NATIVE_REWRITE_PLAN stages in one verified slice: - fastify, @fastify/websocket, commander, zod removed from all package manifests - legacy @modelcontextprotocol/sdk stdio server deleted; effect/unstable/ai McpServer is canonical - no ManagedRuntime or Effect.runPromise program facades remain in production source - gateway server/rpc-contract and client rpc/socket moved onto Effect v4 native http/rpc/socket layers Gates (force-run, no cache): check:tsgo, build, test (96 tests / 11 tasks) all green. Native-class inventory: zero blocking production classes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
a26463afc1
commit
cf12defcd8
30 changed files with 1506 additions and 456 deletions
|
|
@ -10,21 +10,11 @@
|
|||
"qa:browser": "playwright test"
|
||||
},
|
||||
"dependencies": {
|
||||
"@effect/ai-anthropic": "4.0.0-beta.78",
|
||||
"@effect/ai-openai": "4.0.0-beta.78",
|
||||
"@effect/ai-openrouter": "4.0.0-beta.78",
|
||||
"@effect/atom-react": "4.0.0-beta.78",
|
||||
"@effect/openapi-generator": "4.0.0-beta.78",
|
||||
"@effect/opentelemetry": "4.0.0-beta.78",
|
||||
"@effect/platform-browser": "4.0.0-beta.78",
|
||||
"@effect/platform-bun": "4.0.0-beta.78",
|
||||
"@effect/platform-node": "4.0.0-beta.78",
|
||||
"@effect/platform-node-shared": "4.0.0-beta.78",
|
||||
"@effect/tsgo": "0.14.0",
|
||||
"@effect/vitest": "4.0.0-beta.78",
|
||||
"@tanstack/react-query": "^5.75.0",
|
||||
"@trustgraph/client": "workspace:*",
|
||||
"clsx": "^2.1.0",
|
||||
"effect": "4.0.0-beta.78",
|
||||
"lucide-react": "^0.513.0",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
|
|
@ -32,8 +22,7 @@
|
|||
"react-force-graph-2d": "^1.29.1",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-router": "^7.6.0",
|
||||
"tailwind-merge": "^3.3.0",
|
||||
"zustand": "^5.0.0"
|
||||
"tailwind-merge": "^3.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@effect/vitest": "4.0.0-beta.78",
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -20,12 +20,12 @@ export function NotificationToasts() {
|
|||
if (notifications.length === 0) return null;
|
||||
|
||||
return (
|
||||
<div className="fixed bottom-4 right-4 z-50 flex flex-col gap-2" aria-live="polite">
|
||||
<div className="pointer-events-none fixed bottom-4 right-4 z-50 flex flex-col gap-2" aria-live="polite">
|
||||
{notifications.map((n) => (
|
||||
<div
|
||||
key={n.id}
|
||||
className={cn(
|
||||
"flex items-start gap-2 rounded-lg border px-4 py-3 text-sm shadow-lg",
|
||||
"pointer-events-none flex items-start gap-2 rounded-lg border px-4 py-3 text-sm shadow-lg",
|
||||
typeStyles[n.type],
|
||||
)}
|
||||
>
|
||||
|
|
@ -37,7 +37,7 @@ export function NotificationToasts() {
|
|||
</div>
|
||||
<button
|
||||
onClick={() => removeNotification(n.id)}
|
||||
className="shrink-0 opacity-60 hover:opacity-100"
|
||||
className="pointer-events-auto shrink-0 opacity-60 hover:opacity-100"
|
||||
aria-label="Dismiss notification"
|
||||
>
|
||||
<X className="h-3.5 w-3.5" />
|
||||
|
|
|
|||
|
|
@ -266,8 +266,10 @@ export default function SettingsPage() {
|
|||
</button>
|
||||
<button
|
||||
onClick={() => {
|
||||
if (collectionForm.id.trim().length === 0) return;
|
||||
const collectionId = collectionForm.id.trim();
|
||||
if (collectionId.length === 0) return;
|
||||
createCollection(collectionForm);
|
||||
setField({ key: "collection", value: collectionId });
|
||||
setCollectionForm({ id: "", name: "", description: "", tags: "", submitting: false });
|
||||
setCreateOpen(false);
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import {
|
|||
type Settings,
|
||||
type WorkbenchApiFactory,
|
||||
} from "@/atoms/workbench";
|
||||
import type { BaseApi } from "@trustgraph/client";
|
||||
import { makeMockBaseApi, qaSettingsFromFixture, type MockWorkbenchFixture } from "@/qa/mock-api";
|
||||
|
||||
export interface WorkbenchQaWindowConfig {
|
||||
|
|
@ -19,6 +20,7 @@ export interface WorkbenchQaWindowConfig {
|
|||
declare global {
|
||||
interface Window {
|
||||
__TRUSTGRAPH_WORKBENCH_QA__?: WorkbenchQaWindowConfig;
|
||||
__TRUSTGRAPH_WORKBENCH_QA_API__?: BaseApi;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -43,6 +45,7 @@ export function getWorkbenchQaInitialValues(): Iterable<readonly [Atom.Atom<unkn
|
|||
const apiFactory: WorkbenchApiFactory = {
|
||||
create: () => api,
|
||||
};
|
||||
window.__TRUSTGRAPH_WORKBENCH_QA_API__ = api;
|
||||
return [
|
||||
[apiFactoryAtom as Atom.Atom<unknown>, apiFactory],
|
||||
[settingsAtom as Atom.Atom<unknown>, qaSettings(fixture)],
|
||||
|
|
|
|||
|
|
@ -25,19 +25,21 @@ export default defineConfig({
|
|||
"@": path.resolve(__dirname, "./src"),
|
||||
},
|
||||
},
|
||||
server: {
|
||||
proxy: {
|
||||
"/api/v1/rpc": {
|
||||
target: "ws://localhost:8088/",
|
||||
ws: true,
|
||||
server: isWorkbenchQa
|
||||
? {}
|
||||
: {
|
||||
proxy: {
|
||||
"/api/v1/rpc": {
|
||||
target: "ws://localhost:8088/",
|
||||
ws: true,
|
||||
},
|
||||
"/api/v1": {
|
||||
target: "http://localhost:8088/",
|
||||
},
|
||||
"/otel": {
|
||||
target: "http://localhost:4328/",
|
||||
rewrite: (p) => p.replace(/^\/otel/, ""),
|
||||
},
|
||||
},
|
||||
},
|
||||
"/api/v1": {
|
||||
target: "http://localhost:8088/",
|
||||
},
|
||||
"/otel": {
|
||||
target: "http://localhost:4328/",
|
||||
rewrite: (p) => p.replace(/^\/otel/, ""),
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue