mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-06-30 17:09:38 +02:00
Use Match for knowledge core operations
This commit is contained in:
parent
47221d6ab5
commit
66e1009671
2 changed files with 42 additions and 27 deletions
|
|
@ -409,6 +409,23 @@ Notes:
|
|||
- `cd ts && bun run build`
|
||||
- `cd ts && bun run test`
|
||||
|
||||
### 2026-06-02: KnowledgeCore Operation Match Slice
|
||||
|
||||
- Status: migrated and package-verified.
|
||||
- Completed:
|
||||
- `ts/packages/flow/src/cores/service.ts` now dispatches
|
||||
`KnowledgeOperation` with `effect/Match` instead of a native `switch`.
|
||||
- The dispatcher is a named `Effect.fn` and uses `Match.exhaustive` against
|
||||
the schema-derived `KnowledgeOperation` union, so newly modeled operations
|
||||
should surface as type/check failures until handled.
|
||||
- Verification:
|
||||
- `bun run --cwd ts/packages/flow test -- src/__tests__/knowledge-core-service.test.ts`
|
||||
- `cd ts && bun run check:tsgo`
|
||||
- `cd ts && bun run build`
|
||||
- `cd ts && bun run test`
|
||||
- `cd ts && bun run lint`
|
||||
- `git diff --check`
|
||||
|
||||
### 2026-06-02: Flow Manager And Librarian Runtime Normalization
|
||||
|
||||
- Status: migrated and root-verified.
|
||||
|
|
@ -1775,6 +1792,9 @@ Notes:
|
|||
- FlowManager `() => Effect.gen(...)` factories are normalized to
|
||||
`Effect.fn` / `Effect.fnUntraced`. Sibling service factories still need a
|
||||
focused scan before treating them as valid migration targets.
|
||||
- KnowledgeCore operation dispatch now uses `effect/Match` with
|
||||
`Match.exhaustive`; remaining service operation switches are in config and
|
||||
librarian surfaces.
|
||||
- Long-lived `Map` / `Set` state in ref-backed services can move toward
|
||||
Effect collections later; local pure traversal maps/sets remain no-ops.
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import {
|
|||
type Message,
|
||||
type ProcessorConfig,
|
||||
} from "@trustgraph/base";
|
||||
import {Duration, Effect, Layer, ManagedRuntime, SynchronizedRef} from "effect";
|
||||
import {Duration, Effect, Layer, ManagedRuntime, Match, SynchronizedRef} from "effect";
|
||||
import * as O from "effect/Option";
|
||||
import * as S from "effect/Schema";
|
||||
import {ensureDirectory, joinPath, readTextFile, writeTextFile} from "../runtime/effect-files.js";
|
||||
|
|
@ -654,34 +654,29 @@ export function makeKnowledgeCoreService(config: KnowledgeCoreServiceConfig): Kn
|
|||
});
|
||||
const baseStop = base.stop;
|
||||
|
||||
const handleOperationEffect = (request: KnowledgeRequest, requestId: string) => {
|
||||
const handleOperationEffect = Effect.fn("KnowledgeCoreService.handleOperation")(function* (
|
||||
request: KnowledgeRequest,
|
||||
requestId: string,
|
||||
) {
|
||||
const operation: KnowledgeOperation = request.operation;
|
||||
|
||||
switch (operation) {
|
||||
case "list-kg-cores":
|
||||
return listKgCoresEffect(state, request, requestId);
|
||||
case "get-kg-core":
|
||||
return getKgCoreEffect(state, request, requestId);
|
||||
case "delete-kg-core":
|
||||
return deleteKgCoreEffect(state, persistPath, request, requestId);
|
||||
case "put-kg-core":
|
||||
return putKgCoreEffect(state, persistPath, request, requestId);
|
||||
case "load-kg-core":
|
||||
return getService.pipe(Effect.flatMap((current) => loadKgCoreEffect(state, current, request, requestId)));
|
||||
case "unload-kg-core":
|
||||
return sendResponse(state, {}, requestId);
|
||||
case "list-de-cores":
|
||||
return listDeCoresEffect(state, request, requestId);
|
||||
case "get-de-core":
|
||||
return getDeCoreEffect(state, request, requestId);
|
||||
case "delete-de-core":
|
||||
return deleteDeCoreEffect(state, persistPath, request, requestId);
|
||||
case "put-de-core":
|
||||
return putDeCoreEffect(state, persistPath, request, requestId);
|
||||
case "load-de-core":
|
||||
return loadDeCoreEffect(state, request, requestId);
|
||||
}
|
||||
};
|
||||
return yield* Match.value(operation).pipe(
|
||||
Match.when("list-kg-cores", () => listKgCoresEffect(state, request, requestId)),
|
||||
Match.when("get-kg-core", () => getKgCoreEffect(state, request, requestId)),
|
||||
Match.when("delete-kg-core", () => deleteKgCoreEffect(state, persistPath, request, requestId)),
|
||||
Match.when("put-kg-core", () => putKgCoreEffect(state, persistPath, request, requestId)),
|
||||
Match.when("load-kg-core", () =>
|
||||
getService.pipe(Effect.flatMap((current) => loadKgCoreEffect(state, current, request, requestId)))
|
||||
),
|
||||
Match.when("unload-kg-core", () => sendResponse(state, {}, requestId)),
|
||||
Match.when("list-de-cores", () => listDeCoresEffect(state, request, requestId)),
|
||||
Match.when("get-de-core", () => getDeCoreEffect(state, request, requestId)),
|
||||
Match.when("delete-de-core", () => deleteDeCoreEffect(state, persistPath, request, requestId)),
|
||||
Match.when("put-de-core", () => putDeCoreEffect(state, persistPath, request, requestId)),
|
||||
Match.when("load-de-core", () => loadDeCoreEffect(state, request, requestId)),
|
||||
Match.exhaustive,
|
||||
);
|
||||
});
|
||||
|
||||
const handleMessageEffect = Effect.fn("KnowledgeCoreService.handleMessage")(function* (msg: Message<KnowledgeRequest>) {
|
||||
const request = yield* S.decodeUnknownEffect(KnowledgeRequestSchema)(msg.value()).pipe(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue