From 2516c860024a9060bcab33a166b4983e90114084 Mon Sep 17 00:00:00 2001 From: shahondin1624 Date: Thu, 12 Mar 2026 11:14:11 +0100 Subject: [PATCH] feat: add proto codegen pipeline with buf and connect-es - Add llm-multiverse repo as git submodule for proto files - Configure buf with @bufbuild/protoc-gen-es for TypeScript codegen - Generate typed Connect service stubs to src/lib/proto/ - Add `generate` npm script for proto regeneration - Exclude generated proto files from ESLint Closes #2 Co-Authored-By: Claude Opus 4.6 --- .gitmodules | 3 + buf.gen.yaml | 8 + eslint.config.js | 2 +- implementation-plans/_index.md | 1 + implementation-plans/issue-002.md | 49 ++ package-lock.json | 241 ++++++++ package.json | 6 + proto/upstream | 1 + src/lib/proto/llm_multiverse/v1/audit_pb.ts | 211 +++++++ src/lib/proto/llm_multiverse/v1/common_pb.ts | 452 ++++++++++++++ src/lib/proto/llm_multiverse/v1/memory_pb.ts | 581 ++++++++++++++++++ .../llm_multiverse/v1/model_gateway_pb.ts | 339 ++++++++++ .../llm_multiverse/v1/orchestrator_pb.ts | 272 ++++++++ src/lib/proto/llm_multiverse/v1/search_pb.ts | 133 ++++ src/lib/proto/llm_multiverse/v1/secrets_pb.ts | 84 +++ .../proto/llm_multiverse/v1/tool_broker_pb.ts | 376 ++++++++++++ 16 files changed, 2758 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 100644 buf.gen.yaml create mode 100644 implementation-plans/issue-002.md create mode 160000 proto/upstream create mode 100644 src/lib/proto/llm_multiverse/v1/audit_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/common_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/memory_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/model_gateway_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/orchestrator_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/search_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/secrets_pb.ts create mode 100644 src/lib/proto/llm_multiverse/v1/tool_broker_pb.ts diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..5df70da --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "proto/upstream"] + path = proto/upstream + url = https://git.shahondin1624.de/llm-multiverse/llm-multiverse.git diff --git a/buf.gen.yaml b/buf.gen.yaml new file mode 100644 index 0000000..e71a2de --- /dev/null +++ b/buf.gen.yaml @@ -0,0 +1,8 @@ +version: v2 +plugins: + - local: protoc-gen-es + out: src/lib/proto + opt: + - target=ts +inputs: + - directory: proto/upstream/proto diff --git a/eslint.config.js b/eslint.config.js index 9365833..49cacc2 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -18,6 +18,6 @@ export default ts.config( } }, { - ignores: ['build/', '.svelte-kit/', 'dist/'] + ignores: ['build/', '.svelte-kit/', 'dist/', 'src/lib/proto/'] } ); diff --git a/implementation-plans/_index.md b/implementation-plans/_index.md index 92b1adb..67739ee 100644 --- a/implementation-plans/_index.md +++ b/implementation-plans/_index.md @@ -3,3 +3,4 @@ | Issue | Title | Status | Plan | | ----- | ------------------------------------------------------ | ------------ | ---------------------------- | | #1 | Project scaffolding: SvelteKit + Tailwind + TypeScript | COMPLETED | [issue-001.md](issue-001.md) | +| #2 | Proto codegen pipeline for TypeScript gRPC-Web stubs | IMPLEMENTING | [issue-002.md](issue-002.md) | diff --git a/implementation-plans/issue-002.md b/implementation-plans/issue-002.md new file mode 100644 index 0000000..c6ed2e3 --- /dev/null +++ b/implementation-plans/issue-002.md @@ -0,0 +1,49 @@ +--- +--- + +# Issue #2: Proto codegen pipeline for TypeScript gRPC-Web stubs + +**Status:** IMPLEMENTING +**Issue:** https://git.shahondin1624.de/llm-multiverse/llm-multiverse-ui/issues/2 +**Branch:** `feature/issue-2-proto-codegen` + +## Summary + +Set up buf + @connectrpc/connect-web to generate TypeScript client stubs from the llm-multiverse proto files. Use a git submodule to consume proto files. Output generated code to `src/lib/proto/`. + +## Acceptance Criteria + +- [ ] Codegen toolchain chosen and configured (buf + connect-es) +- [ ] Proto files from llm-multiverse repo consumed (git submodule) +- [ ] TypeScript gRPC-Web client stubs generated to `src/lib/proto/` +- [ ] `generate` npm script added to package.json +- [ ] Generated types are importable and type-safe + +## Implementation Phases + +### Phase 1: Add proto files via git submodule + +Add the `llm-multiverse` repo as a git submodule at `proto/upstream` to keep proto files in sync. + +### Phase 2: Configure buf for connect-es codegen + +Install buf CLI dependencies and configure: +- `@bufbuild/protobuf` — runtime protobuf library +- `@connectrpc/connect` — Connect protocol runtime +- `@connectrpc/connect-web` — browser transport +- `@bufbuild/protoc-gen-es` — protobuf ES codegen plugin +- `@connectrpc/protoc-gen-connect-es` — Connect service codegen plugin + +Create `buf.gen.yaml` in project root targeting `src/lib/proto/` output. + +### Phase 3: Generate stubs and verify + +Run `npx buf generate` and verify generated TypeScript files are importable and type-safe. + +### Phase 4: Add npm script + +Add `"generate": "buf generate proto/upstream/proto"` to package.json. + +## Deviations + +(none yet) diff --git a/package-lock.json b/package-lock.json index 588a97e..b737c94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,11 @@ "name": "llm-multiverse-ui", "version": "0.0.1", "devDependencies": { + "@bufbuild/buf": "^1.66.1", + "@bufbuild/protobuf": "^2.11.0", + "@bufbuild/protoc-gen-es": "^2.11.0", + "@connectrpc/connect": "^2.1.1", + "@connectrpc/connect-web": "^2.1.1", "@eslint/js": "^9.0.0", "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.50.2", @@ -26,6 +31,229 @@ "vite": "^7.3.1" } }, + "node_modules/@bufbuild/buf": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.66.1.tgz", + "integrity": "sha512-TelMLptEDfdcl8D+WjKQLzGGYKAwOSVjCPJ21L9X9xT7KZHigTAhHP5idrTCtXKHHPPQB6Sq12wVnhWgFQ9s7w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "buf": "bin/buf", + "protoc-gen-buf-breaking": "bin/protoc-gen-buf-breaking", + "protoc-gen-buf-lint": "bin/protoc-gen-buf-lint" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@bufbuild/buf-darwin-arm64": "1.66.1", + "@bufbuild/buf-darwin-x64": "1.66.1", + "@bufbuild/buf-linux-aarch64": "1.66.1", + "@bufbuild/buf-linux-armv7": "1.66.1", + "@bufbuild/buf-linux-x64": "1.66.1", + "@bufbuild/buf-win32-arm64": "1.66.1", + "@bufbuild/buf-win32-x64": "1.66.1" + } + }, + "node_modules/@bufbuild/buf-darwin-arm64": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.66.1.tgz", + "integrity": "sha512-Yl7vvFhKrA87ctsIiwN2XWbJq34VxWoEzNBe9dhrutKLpy7hM7l/ylDCuctqPh+CGdSUijQfmHiA4bQgK8s2yQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-darwin-x64": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.66.1.tgz", + "integrity": "sha512-pRbu0l7jtbXBBCq/7wrs2ZUFzCkDBDGuT3xlQt04k1SgIoW1lznpDnUZ6vbQj1rIU94dCbnsuL7M6k+rCFafOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-aarch64": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.66.1.tgz", + "integrity": "sha512-V/dwOAcQ9r5B6BUEtUeVPvkpNxYhmHLILrJZmIqNdjpInVQWknpGm1Mmpy2xANuOhRh7O/Huq7kaoQvNjSdnWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-armv7": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-armv7/-/buf-linux-armv7-1.66.1.tgz", + "integrity": "sha512-WDmspvGLq/lNVj4jAb2TDWVKLzG9l5nwhNsZOo1I5UKrE0PD2LdbM7YdnMne15AIg3qlUxHqq2Eg8pVyxHqCqw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-x64": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.66.1.tgz", + "integrity": "sha512-at0JeAlc+pquaNB/80R5F6bQs1gtdSuJRj+naei+lH2L2M1yQTiYU3f9dJnY4hVbq4/JbxSdxqJx2VOLPt1ztw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-win32-arm64": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.66.1.tgz", + "integrity": "sha512-gb2LDuqkY1RSFIOMYJQTimTLIsW2/pqOvcPWBDApUZBOQS5CJdrAtuoBqRzpqrI02OF45uinKmqq+9dun/X92A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-win32-x64": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.66.1.tgz", + "integrity": "sha512-QzDiv9dAUr89HjHsKOrC5EQB+2aWVwKmhZFYzAGgHTt+ONAgz9RgLhwIm6LTtrLigB0LIHk/nLMIXB3sXUhyrg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", + "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@bufbuild/protoc-gen-es": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoc-gen-es/-/protoc-gen-es-2.11.0.tgz", + "integrity": "sha512-VzQuwEQDXipbZ1soWUuAWm1Z0C3B/IDWGeysnbX6ogJ6As91C2mdvAND/ekQ4YIWgen4d5nqLfIBOWLqCCjYUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "2.11.0", + "@bufbuild/protoplugin": "2.11.0" + }, + "bin": { + "protoc-gen-es": "bin/protoc-gen-es" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@bufbuild/protobuf": "2.11.0" + }, + "peerDependenciesMeta": { + "@bufbuild/protobuf": { + "optional": true + } + } + }, + "node_modules/@bufbuild/protoplugin": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-2.11.0.tgz", + "integrity": "sha512-lyZVNFUHArIOt4W0+dwYBe5GBwbKzbOy8ObaloEqsw9Mmiwv2O48TwddDoHN4itylC+BaEGqFdI1W8WQt2vWJQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "2.11.0", + "@typescript/vfs": "^1.6.2", + "typescript": "5.4.5" + } + }, + "node_modules/@bufbuild/protoplugin/node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@connectrpc/connect": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-2.1.1.tgz", + "integrity": "sha512-JzhkaTvM73m2K1URT6tv53k2RwngSmCXLZJgK580qNQOXRzZRR/BCMfZw3h+90JpnG6XksP5bYT+cz0rpUzUWQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "@bufbuild/protobuf": "^2.7.0" + } + }, + "node_modules/@connectrpc/connect-web": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@connectrpc/connect-web/-/connect-web-2.1.1.tgz", + "integrity": "sha512-J8317Q2MaFRCT1jzVR1o06bZhDIBmU0UAzWx6xOIXzOq8+k71/+k7MUF7AwcBUX+34WIvbm5syRgC5HXQA8fOg==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "@bufbuild/protobuf": "^2.7.0", + "@connectrpc/connect": "2.1.1" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", @@ -1761,6 +1989,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@typescript/vfs": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.4.tgz", + "integrity": "sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3" + }, + "peerDependencies": { + "typescript": "*" + } + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", diff --git a/package.json b/package.json index 3dc28b8..f8aa47e 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,16 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "generate": "buf generate", "lint": "eslint .", "format": "prettier --write ." }, "devDependencies": { + "@bufbuild/buf": "^1.66.1", + "@bufbuild/protobuf": "^2.11.0", + "@bufbuild/protoc-gen-es": "^2.11.0", + "@connectrpc/connect": "^2.1.1", + "@connectrpc/connect-web": "^2.1.1", "@eslint/js": "^9.0.0", "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.50.2", diff --git a/proto/upstream b/proto/upstream new file mode 160000 index 0000000..aae9889 --- /dev/null +++ b/proto/upstream @@ -0,0 +1 @@ +Subproject commit aae98895d22623364306621dcf77a243b3d2bbfc diff --git a/src/lib/proto/llm_multiverse/v1/audit_pb.ts b/src/lib/proto/llm_multiverse/v1/audit_pb.ts new file mode 100644 index 0000000..fdc3657 --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/audit_pb.ts @@ -0,0 +1,211 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/audit.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { AgentLineage, AgentType, SessionContext } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/audit.proto. + */ +export const file_llm_multiverse_v1_audit: GenFile = /*@__PURE__*/ + fileDesc("Ch1sbG1fbXVsdGl2ZXJzZS92MS9hdWRpdC5wcm90bxIRbGxtX211bHRpdmVyc2UudjEipAMKCkF1ZGl0RW50cnkSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpzZXNzaW9uX2lkGAIgASgJEhAKCGFnZW50X2lkGAMgASgJEjAKCmFnZW50X3R5cGUYBCABKA4yHC5sbG1fbXVsdGl2ZXJzZS52MS5BZ2VudFR5cGUSMAoHbGluZWFnZRgFIAEoCzIfLmxsbV9tdWx0aXZlcnNlLnYxLkFnZW50TGluZWFnZRIuCgZhY3Rpb24YBiABKA4yHi5sbG1fbXVsdGl2ZXJzZS52MS5BdWRpdEFjdGlvbhIRCgl0b29sX25hbWUYByABKAkSEwoLcGFyYW1zX2hhc2gYCCABKAkSFQoNcmVzdWx0X3N0YXR1cxgJIAEoCRI9CghtZXRhZGF0YRgKIAMoCzIrLmxsbV9tdWx0aXZlcnNlLnYxLkF1ZGl0RW50cnkuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicQoNQXBwZW5kUmVxdWVzdBIyCgdjb250ZXh0GAEgASgLMiEubGxtX211bHRpdmVyc2UudjEuU2Vzc2lvbkNvbnRleHQSLAoFZW50cnkYAiABKAsyHS5sbG1fbXVsdGl2ZXJzZS52MS5BdWRpdEVudHJ5Ik8KDkFwcGVuZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGgoNZXJyb3JfbWVzc2FnZRgCIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlKrkCCgtBdWRpdEFjdGlvbhIcChhBVURJVF9BQ1RJT05fVU5TUEVDSUZJRUQQABIgChxBVURJVF9BQ1RJT05fVE9PTF9JTlZPQ0FUSU9OEAESIAocQVVESVRfQUNUSU9OX0JST0tFUl9ERUNJU0lPThACEhwKGEFVRElUX0FDVElPTl9NRU1PUllfUkVBRBADEh0KGUFVRElUX0FDVElPTl9NRU1PUllfV1JJVEUQBBIfChtBVURJVF9BQ1RJT05fU1VCQUdFTlRfU1BBV04QBRImCiJBVURJVF9BQ1RJT05fU0VTU0lPTl9DT05GSUdfQ0hBTkdFEAYSIgoeQVVESVRfQUNUSU9OX0lORkVSRU5DRV9SRVFVRVNUEAcSHgoaQVVESVRfQUNUSU9OX1NFQ1JFVF9BQ0NFU1MQCDJdCgxBdWRpdFNlcnZpY2USTQoGQXBwZW5kEiAubGxtX211bHRpdmVyc2UudjEuQXBwZW5kUmVxdWVzdBohLmxsbV9tdWx0aXZlcnNlLnYxLkFwcGVuZFJlc3BvbnNlYgZwcm90bzM", [file_google_protobuf_timestamp, file_llm_multiverse_v1_common]); + +/** + * A single audit log entry. + * + * @generated from message llm_multiverse.v1.AuditEntry + */ +export type AuditEntry = Message<"llm_multiverse.v1.AuditEntry"> & { + /** + * @generated from field: google.protobuf.Timestamp timestamp = 1; + */ + timestamp?: Timestamp; + + /** + * @generated from field: string session_id = 2; + */ + sessionId: string; + + /** + * @generated from field: string agent_id = 3; + */ + agentId: string; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 4; + */ + agentType: AgentType; + + /** + * @generated from field: llm_multiverse.v1.AgentLineage lineage = 5; + */ + lineage?: AgentLineage; + + /** + * @generated from field: llm_multiverse.v1.AuditAction action = 6; + */ + action: AuditAction; + + /** + * Tool name, if action is tool-related. + * + * @generated from field: string tool_name = 7; + */ + toolName: string; + + /** + * Hash of parameters — never raw params to avoid logging credentials. + * + * @generated from field: string params_hash = 8; + */ + paramsHash: string; + + /** + * Result of the action (allow/deny/success/failure). + * + * @generated from field: string result_status = 9; + */ + resultStatus: string; + + /** + * Additional context as key-value pairs. + * + * @generated from field: map metadata = 10; + */ + metadata: { [key: string]: string }; +}; + +/** + * Describes the message llm_multiverse.v1.AuditEntry. + * Use `create(AuditEntrySchema)` to create a new message. + */ +export const AuditEntrySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_audit, 0); + +/** + * @generated from message llm_multiverse.v1.AppendRequest + */ +export type AppendRequest = Message<"llm_multiverse.v1.AppendRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: llm_multiverse.v1.AuditEntry entry = 2; + */ + entry?: AuditEntry; +}; + +/** + * Describes the message llm_multiverse.v1.AppendRequest. + * Use `create(AppendRequestSchema)` to create a new message. + */ +export const AppendRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_audit, 1); + +/** + * @generated from message llm_multiverse.v1.AppendResponse + */ +export type AppendResponse = Message<"llm_multiverse.v1.AppendResponse"> & { + /** + * @generated from field: bool success = 1; + */ + success: boolean; + + /** + * @generated from field: optional string error_message = 2; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.AppendResponse. + * Use `create(AppendResponseSchema)` to create a new message. + */ +export const AppendResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_audit, 2); + +/** + * Action categories for audit log entries. + * + * @generated from enum llm_multiverse.v1.AuditAction + */ +export enum AuditAction { + /** + * @generated from enum value: AUDIT_ACTION_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: AUDIT_ACTION_TOOL_INVOCATION = 1; + */ + TOOL_INVOCATION = 1, + + /** + * @generated from enum value: AUDIT_ACTION_BROKER_DECISION = 2; + */ + BROKER_DECISION = 2, + + /** + * @generated from enum value: AUDIT_ACTION_MEMORY_READ = 3; + */ + MEMORY_READ = 3, + + /** + * @generated from enum value: AUDIT_ACTION_MEMORY_WRITE = 4; + */ + MEMORY_WRITE = 4, + + /** + * @generated from enum value: AUDIT_ACTION_SUBAGENT_SPAWN = 5; + */ + SUBAGENT_SPAWN = 5, + + /** + * @generated from enum value: AUDIT_ACTION_SESSION_CONFIG_CHANGE = 6; + */ + SESSION_CONFIG_CHANGE = 6, + + /** + * @generated from enum value: AUDIT_ACTION_INFERENCE_REQUEST = 7; + */ + INFERENCE_REQUEST = 7, + + /** + * @generated from enum value: AUDIT_ACTION_SECRET_ACCESS = 8; + */ + SECRET_ACCESS = 8, +} + +/** + * Describes the enum llm_multiverse.v1.AuditAction. + */ +export const AuditActionSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_audit, 0); + +/** + * Write-only append log for all service actions. + * + * @generated from service llm_multiverse.v1.AuditService + */ +export const AuditService: GenService<{ + /** + * Append a single audit log entry. Write-only — no read RPC exposed. + * + * @generated from rpc llm_multiverse.v1.AuditService.Append + */ + append: { + methodKind: "unary"; + input: typeof AppendRequestSchema; + output: typeof AppendResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_audit, 0); + diff --git a/src/lib/proto/llm_multiverse/v1/common_pb.ts b/src/lib/proto/llm_multiverse/v1/common_pb.ts new file mode 100644 index 0000000..faea233 --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/common_pb.ts @@ -0,0 +1,452 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/common.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/common.proto. + */ +export const file_llm_multiverse_v1_common: GenFile = /*@__PURE__*/ + fileDesc("Ch5sbG1fbXVsdGl2ZXJzZS92MS9jb21tb24ucHJvdG8SEWxsbV9tdWx0aXZlcnNlLnYxImoKD0FnZW50SWRlbnRpZmllchIQCghhZ2VudF9pZBgBIAEoCRIwCgphZ2VudF90eXBlGAIgASgOMhwubGxtX211bHRpdmVyc2UudjEuQWdlbnRUeXBlEhMKC3NwYXduX2RlcHRoGAMgASgNIkIKDEFnZW50TGluZWFnZRIyCgZhZ2VudHMYASADKAsyIi5sbG1fbXVsdGl2ZXJzZS52MS5BZ2VudElkZW50aWZpZXIi1wEKDlNlc3Npb25Db250ZXh0EhIKCnNlc3Npb25faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRI2Cg1hZ2VudF9saW5lYWdlGAMgASgLMh8ubGxtX211bHRpdmVyc2UudjEuQWdlbnRMaW5lYWdlEjgKDm92ZXJyaWRlX2xldmVsGAQgASgOMiAubGxtX211bHRpdmVyc2UudjEuT3ZlcnJpZGVMZXZlbBIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKdAQoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEj4KCG1ldGFkYXRhGAMgAygLMiwubGxtX211bHRpdmVyc2UudjEuRXJyb3JEZXRhaWwuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiZwoPTWVtb3J5Q2FuZGlkYXRlEg8KB2NvbnRlbnQYASABKAkSLwoGc291cmNlGAIgASgOMh8ubGxtX211bHRpdmVyc2UudjEuUmVzdWx0U291cmNlEhIKCmNvbmZpZGVuY2UYAyABKAIiwwIKDlN1YmFnZW50UmVzdWx0Ei8KBnN0YXR1cxgBIAEoDjIfLmxsbV9tdWx0aXZlcnNlLnYxLlJlc3VsdFN0YXR1cxIPCgdzdW1tYXJ5GAIgASgJEhEKCWFydGlmYWN0cxgDIAMoCRI4Cg5yZXN1bHRfcXVhbGl0eRgEIAEoDjIgLmxsbV9tdWx0aXZlcnNlLnYxLlJlc3VsdFF1YWxpdHkSLwoGc291cmNlGAUgASgOMh8ubGxtX211bHRpdmVyc2UudjEuUmVzdWx0U291cmNlEkEKFW5ld19tZW1vcnlfY2FuZGlkYXRlcxgGIAMoCzIiLmxsbV9tdWx0aXZlcnNlLnYxLk1lbW9yeUNhbmRpZGF0ZRIbCg5mYWlsdXJlX3JlYXNvbhgHIAEoCUgAiAEBQhEKD19mYWlsdXJlX3JlYXNvbiqoAQoJQWdlbnRUeXBlEhoKFkFHRU5UX1RZUEVfVU5TUEVDSUZJRUQQABIbChdBR0VOVF9UWVBFX09SQ0hFU1RSQVRPUhABEhkKFUFHRU5UX1RZUEVfUkVTRUFSQ0hFUhACEhQKEEFHRU5UX1RZUEVfQ09ERVIQAxIXChNBR0VOVF9UWVBFX1NZU0FETUlOEAQSGAoUQUdFTlRfVFlQRV9BU1NJU1RBTlQQBSr1AQoIVG9vbFR5cGUSGQoVVE9PTF9UWVBFX1VOU1BFQ0lGSUVEEAASGQoVVE9PTF9UWVBFX01FTU9SWV9SRUFEEAESGgoWVE9PTF9UWVBFX01FTU9SWV9XUklURRACEhgKFFRPT0xfVFlQRV9XRUJfU0VBUkNIEAMSFQoRVE9PTF9UWVBFX0ZTX1JFQUQQBBIWChJUT09MX1RZUEVfRlNfV1JJVEUQBRIWChJUT09MX1RZUEVfUlVOX0NPREUQBhIXChNUT09MX1RZUEVfUlVOX1NIRUxMEAcSHQoZVE9PTF9UWVBFX1BBQ0tBR0VfSU5TVEFMTBAIKnoKDU92ZXJyaWRlTGV2ZWwSHgoaT1ZFUlJJREVfTEVWRUxfVU5TUEVDSUZJRUQQABIXChNPVkVSUklERV9MRVZFTF9OT05FEAESGAoUT1ZFUlJJREVfTEVWRUxfUkVMQVgQAhIWChJPVkVSUklERV9MRVZFTF9BTEwQAyp9CgxSZXN1bHRTdGF0dXMSHQoZUkVTVUxUX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVJFU1VMVF9TVEFUVVNfU1VDQ0VTUxABEhkKFVJFU1VMVF9TVEFUVVNfUEFSVElBTBACEhgKFFJFU1VMVF9TVEFUVVNfRkFJTEVEEAMqhwEKDVJlc3VsdFF1YWxpdHkSHgoaUkVTVUxUX1FVQUxJVFlfVU5TUEVDSUZJRUQQABIbChdSRVNVTFRfUVVBTElUWV9WRVJJRklFRBABEhsKF1JFU1VMVF9RVUFMSVRZX0lORkVSUkVEEAISHAoYUkVTVUxUX1FVQUxJVFlfVU5DRVJUQUlOEAMqhgEKDFJlc3VsdFNvdXJjZRIdChlSRVNVTFRfU09VUkNFX1VOU1BFQ0lGSUVEEAASHQoZUkVTVUxUX1NPVVJDRV9UT09MX09VVFBVVBABEiEKHVJFU1VMVF9TT1VSQ0VfTU9ERUxfS05PV0xFREdFEAISFQoRUkVTVUxUX1NPVVJDRV9XRUIQA2IGcHJvdG8z", [file_google_protobuf_timestamp]); + +/** + * Identifies a single agent in the lineage chain. + * + * @generated from message llm_multiverse.v1.AgentIdentifier + */ +export type AgentIdentifier = Message<"llm_multiverse.v1.AgentIdentifier"> & { + /** + * @generated from field: string agent_id = 1; + */ + agentId: string; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 2; + */ + agentType: AgentType; + + /** + * @generated from field: uint32 spawn_depth = 3; + */ + spawnDepth: number; +}; + +/** + * Describes the message llm_multiverse.v1.AgentIdentifier. + * Use `create(AgentIdentifierSchema)` to create a new message. + */ +export const AgentIdentifierSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_common, 0); + +/** + * Ordered chain of agents from orchestrator (index 0) to current agent. + * Used by the Tool Broker for lineage constraint enforcement. + * + * @generated from message llm_multiverse.v1.AgentLineage + */ +export type AgentLineage = Message<"llm_multiverse.v1.AgentLineage"> & { + /** + * @generated from field: repeated llm_multiverse.v1.AgentIdentifier agents = 1; + */ + agents: AgentIdentifier[]; +}; + +/** + * Describes the message llm_multiverse.v1.AgentLineage. + * Use `create(AgentLineageSchema)` to create a new message. + */ +export const AgentLineageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_common, 1); + +/** + * Carried in every gRPC request for audit trail and broker enforcement. + * + * @generated from message llm_multiverse.v1.SessionContext + */ +export type SessionContext = Message<"llm_multiverse.v1.SessionContext"> & { + /** + * @generated from field: string session_id = 1; + */ + sessionId: string; + + /** + * @generated from field: string user_id = 2; + */ + userId: string; + + /** + * @generated from field: llm_multiverse.v1.AgentLineage agent_lineage = 3; + */ + agentLineage?: AgentLineage; + + /** + * @generated from field: llm_multiverse.v1.OverrideLevel override_level = 4; + */ + overrideLevel: OverrideLevel; + + /** + * @generated from field: google.protobuf.Timestamp created_at = 5; + */ + createdAt?: Timestamp; +}; + +/** + * Describes the message llm_multiverse.v1.SessionContext. + * Use `create(SessionContextSchema)` to create a new message. + */ +export const SessionContextSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_common, 2); + +/** + * Structured error detail for gRPC error responses. + * + * @generated from message llm_multiverse.v1.ErrorDetail + */ +export type ErrorDetail = Message<"llm_multiverse.v1.ErrorDetail"> & { + /** + * @generated from field: string code = 1; + */ + code: string; + + /** + * @generated from field: string message = 2; + */ + message: string; + + /** + * @generated from field: map metadata = 3; + */ + metadata: { [key: string]: string }; +}; + +/** + * Describes the message llm_multiverse.v1.ErrorDetail. + * Use `create(ErrorDetailSchema)` to create a new message. + */ +export const ErrorDetailSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_common, 3); + +/** + * A candidate memory entry proposed by a subagent for persistence. + * + * @generated from message llm_multiverse.v1.MemoryCandidate + */ +export type MemoryCandidate = Message<"llm_multiverse.v1.MemoryCandidate"> & { + /** + * @generated from field: string content = 1; + */ + content: string; + + /** + * @generated from field: llm_multiverse.v1.ResultSource source = 2; + */ + source: ResultSource; + + /** + * @generated from field: float confidence = 3; + */ + confidence: number; +}; + +/** + * Describes the message llm_multiverse.v1.MemoryCandidate. + * Use `create(MemoryCandidateSchema)` to create a new message. + */ +export const MemoryCandidateSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_common, 4); + +/** + * Standardized return value from any subagent to its parent. + * + * @generated from message llm_multiverse.v1.SubagentResult + */ +export type SubagentResult = Message<"llm_multiverse.v1.SubagentResult"> & { + /** + * @generated from field: llm_multiverse.v1.ResultStatus status = 1; + */ + status: ResultStatus; + + /** + * 3-sentence max summary of work performed. + * + * @generated from field: string summary = 2; + */ + summary: string; + + /** + * @generated from field: repeated string artifacts = 3; + */ + artifacts: string[]; + + /** + * @generated from field: llm_multiverse.v1.ResultQuality result_quality = 4; + */ + resultQuality: ResultQuality; + + /** + * @generated from field: llm_multiverse.v1.ResultSource source = 5; + */ + source: ResultSource; + + /** + * @generated from field: repeated llm_multiverse.v1.MemoryCandidate new_memory_candidates = 6; + */ + newMemoryCandidates: MemoryCandidate[]; + + /** + * @generated from field: optional string failure_reason = 7; + */ + failureReason?: string; +}; + +/** + * Describes the message llm_multiverse.v1.SubagentResult. + * Use `create(SubagentResultSchema)` to create a new message. + */ +export const SubagentResultSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_common, 5); + +/** + * Agent types with distinct tool permission manifests. + * + * @generated from enum llm_multiverse.v1.AgentType + */ +export enum AgentType { + /** + * @generated from enum value: AGENT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: AGENT_TYPE_ORCHESTRATOR = 1; + */ + ORCHESTRATOR = 1, + + /** + * @generated from enum value: AGENT_TYPE_RESEARCHER = 2; + */ + RESEARCHER = 2, + + /** + * @generated from enum value: AGENT_TYPE_CODER = 3; + */ + CODER = 3, + + /** + * @generated from enum value: AGENT_TYPE_SYSADMIN = 4; + */ + SYSADMIN = 4, + + /** + * @generated from enum value: AGENT_TYPE_ASSISTANT = 5; + */ + ASSISTANT = 5, +} + +/** + * Describes the enum llm_multiverse.v1.AgentType. + */ +export const AgentTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_common, 0); + +/** + * Tool categories enforced by the Tool Broker. + * + * @generated from enum llm_multiverse.v1.ToolType + */ +export enum ToolType { + /** + * @generated from enum value: TOOL_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: TOOL_TYPE_MEMORY_READ = 1; + */ + MEMORY_READ = 1, + + /** + * @generated from enum value: TOOL_TYPE_MEMORY_WRITE = 2; + */ + MEMORY_WRITE = 2, + + /** + * @generated from enum value: TOOL_TYPE_WEB_SEARCH = 3; + */ + WEB_SEARCH = 3, + + /** + * @generated from enum value: TOOL_TYPE_FS_READ = 4; + */ + FS_READ = 4, + + /** + * @generated from enum value: TOOL_TYPE_FS_WRITE = 5; + */ + FS_WRITE = 5, + + /** + * @generated from enum value: TOOL_TYPE_RUN_CODE = 6; + */ + RUN_CODE = 6, + + /** + * @generated from enum value: TOOL_TYPE_RUN_SHELL = 7; + */ + RUN_SHELL = 7, + + /** + * @generated from enum value: TOOL_TYPE_PACKAGE_INSTALL = 8; + */ + PACKAGE_INSTALL = 8, +} + +/** + * Describes the enum llm_multiverse.v1.ToolType. + */ +export const ToolTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_common, 1); + +/** + * Session-level override for broker enforcement. + * + * @generated from enum llm_multiverse.v1.OverrideLevel + */ +export enum OverrideLevel { + /** + * @generated from enum value: OVERRIDE_LEVEL_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Full manifest + broker enforcement (default). + * + * @generated from enum value: OVERRIDE_LEVEL_NONE = 1; + */ + NONE = 1, + + /** + * High-risk tools unlocked, lineage still enforced. + * + * @generated from enum value: OVERRIDE_LEVEL_RELAX = 2; + */ + RELAX = 2, + + /** + * Broker passes everything through. + * + * @generated from enum value: OVERRIDE_LEVEL_ALL = 3; + */ + ALL = 3, +} + +/** + * Describes the enum llm_multiverse.v1.OverrideLevel. + */ +export const OverrideLevelSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_common, 2); + +/** + * Status of a subagent's result. + * + * @generated from enum llm_multiverse.v1.ResultStatus + */ +export enum ResultStatus { + /** + * @generated from enum value: RESULT_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: RESULT_STATUS_SUCCESS = 1; + */ + SUCCESS = 1, + + /** + * @generated from enum value: RESULT_STATUS_PARTIAL = 2; + */ + PARTIAL = 2, + + /** + * @generated from enum value: RESULT_STATUS_FAILED = 3; + */ + FAILED = 3, +} + +/** + * Describes the enum llm_multiverse.v1.ResultStatus. + */ +export const ResultStatusSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_common, 3); + +/** + * Confidence level of a result. + * + * @generated from enum llm_multiverse.v1.ResultQuality + */ +export enum ResultQuality { + /** + * @generated from enum value: RESULT_QUALITY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: RESULT_QUALITY_VERIFIED = 1; + */ + VERIFIED = 1, + + /** + * @generated from enum value: RESULT_QUALITY_INFERRED = 2; + */ + INFERRED = 2, + + /** + * @generated from enum value: RESULT_QUALITY_UNCERTAIN = 3; + */ + UNCERTAIN = 3, +} + +/** + * Describes the enum llm_multiverse.v1.ResultQuality. + */ +export const ResultQualitySchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_common, 4); + +/** + * Provenance of a result. + * + * @generated from enum llm_multiverse.v1.ResultSource + */ +export enum ResultSource { + /** + * @generated from enum value: RESULT_SOURCE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: RESULT_SOURCE_TOOL_OUTPUT = 1; + */ + TOOL_OUTPUT = 1, + + /** + * @generated from enum value: RESULT_SOURCE_MODEL_KNOWLEDGE = 2; + */ + MODEL_KNOWLEDGE = 2, + + /** + * @generated from enum value: RESULT_SOURCE_WEB = 3; + */ + WEB = 3, +} + +/** + * Describes the enum llm_multiverse.v1.ResultSource. + */ +export const ResultSourceSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_common, 5); + diff --git a/src/lib/proto/llm_multiverse/v1/memory_pb.ts b/src/lib/proto/llm_multiverse/v1/memory_pb.ts new file mode 100644 index 0000000..a95bbcb --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/memory_pb.ts @@ -0,0 +1,581 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/memory.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { SessionContext } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/memory.proto. + */ +export const file_llm_multiverse_v1_memory: GenFile = /*@__PURE__*/ + fileDesc("Ch5sbG1fbXVsdGl2ZXJzZS92MS9tZW1vcnkucHJvdG8SEWxsbV9tdWx0aXZlcnNlLnYxIu4CChJQcm92ZW5hbmNlTWV0YWRhdGESFwoPc291cmNlX2FnZW50X2lkGAEgASgJEhkKEXNvdXJjZV9zZXNzaW9uX2lkGAIgASgJEhUKDWNyZWF0aW9uX3Rvb2wYAyABKAkSPAoLdHJ1c3RfbGV2ZWwYBCABKA4yJy5sbG1fbXVsdGl2ZXJzZS52MS5Qcm92ZW5hbmNlVHJ1c3RMZXZlbBIZChFwYXJlbnRfbWVtb3J5X2lkcxgFIAMoCRISCgppc19yZXZva2VkGAYgASgIEh4KEXJldm9jYXRpb25fcmVhc29uGAcgASgJSACIAQESMwoKcmV2b2tlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAkgASgJSAKIAQFCFAoSX3Jldm9jYXRpb25fcmVhc29uQg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5IroDCgtNZW1vcnlFbnRyeRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEgwKBHRhZ3MYBCADKAkSFwoPY29ycmVsYXRpbmdfaWRzGAUgAygJEg4KBmNvcnB1cxgGIAEoCRIWCg5uYW1lX2VtYmVkZGluZxgHIAEoDBIdChVkZXNjcmlwdGlvbl9lbWJlZGRpbmcYCCABKAwSGAoQY29ycHVzX2VtYmVkZGluZxgJIAEoDBIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1sYXN0X2FjY2Vzc2VkGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxhY2Nlc3NfY291bnQYDCABKA0SNwoKcHJvdmVuYW5jZRgNIAEoDjIjLmxsbV9tdWx0aXZlcnNlLnYxLk1lbW9yeVByb3ZlbmFuY2USQgoTcHJvdmVuYW5jZV9tZXRhZGF0YRgOIAEoCzIlLmxsbV9tdWx0aXZlcnNlLnYxLlByb3ZlbmFuY2VNZXRhZGF0YSLvAQoSUXVlcnlNZW1vcnlSZXF1ZXN0EjIKB2NvbnRleHQYASABKAsyIS5sbG1fbXVsdGl2ZXJzZS52MS5TZXNzaW9uQ29udGV4dBINCgVxdWVyeRgCIAEoCRITCgttZW1vcnlfdHlwZRgDIAEoCRINCgVsaW1pdBgEIAEoDRIXCg9za2lwX2V4dHJhY3Rpb24YBSABKAgSQAoPbWluX3RydXN0X2xldmVsGAYgASgOMicubGxtX211bHRpdmVyc2UudjEuUHJvdmVuYW5jZVRydXN0TGV2ZWwSFwoPaW5jbHVkZV9yZXZva2VkGAcgASgIIoICChNRdWVyeU1lbW9yeVJlc3BvbnNlEgwKBHJhbmsYASABKA0SLQoFZW50cnkYAiABKAsyHi5sbG1fbXVsdGl2ZXJzZS52MS5NZW1vcnlFbnRyeRIZChFjb3NpbmVfc2ltaWxhcml0eRgDIAEoAhIRCglpc19jYWNoZWQYBCABKAgSJQoYY2FjaGVkX2V4dHJhY3RlZF9zZWdtZW50GAUgASgJSACIAQESIgoVZXh0cmFjdGlvbl9jb25maWRlbmNlGAYgASgCSAGIAQFCGwoZX2NhY2hlZF9leHRyYWN0ZWRfc2VnbWVudEIYChZfZXh0cmFjdGlvbl9jb25maWRlbmNlIrABChJXcml0ZU1lbW9yeVJlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0Ei0KBWVudHJ5GAIgASgLMh4ubGxtX211bHRpdmVyc2UudjEuTWVtb3J5RW50cnkSNwoKcHJvdmVuYW5jZRgDIAEoDjIjLmxsbV9tdWx0aXZlcnNlLnYxLk1lbW9yeVByb3ZlbmFuY2UiZwoTV3JpdGVNZW1vcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhEKCW1lbW9yeV9pZBgCIAEoCRIaCg1lcnJvcl9tZXNzYWdlGAMgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UidgoUR2V0Q29ycmVsYXRlZFJlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0EhEKCW1lbW9yeV9pZBgCIAEoCRIXCg9jb3JyZWxhdGluZ19pZHMYAyADKAkivgEKFUdldENvcnJlbGF0ZWRSZXNwb25zZRJQCgxjb3JyZWxhdGlvbnMYASADKAsyOi5sbG1fbXVsdGl2ZXJzZS52MS5HZXRDb3JyZWxhdGVkUmVzcG9uc2UuQ29ycmVsYXRpb25zRW50cnkaUwoRQ29ycmVsYXRpb25zRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgLMh4ubGxtX211bHRpdmVyc2UudjEuTWVtb3J5RW50cnk6AjgBIm0KE1Jldm9rZU1lbW9yeVJlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0EhIKCm1lbW9yeV9pZHMYAiADKAkSDgoGcmVhc29uGAMgASgJImwKFFJldm9rZU1lbW9yeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSFQoNcmV2b2tlZF9jb3VudBgCIAEoDRIaCg1lcnJvcl9tZXNzYWdlGAMgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UqdQoQTWVtb3J5UHJvdmVuYW5jZRIhCh1NRU1PUllfUFJPVkVOQU5DRV9VTlNQRUNJRklFRBAAEh4KGk1FTU9SWV9QUk9WRU5BTkNFX0lOVEVSTkFMEAESHgoaTUVNT1JZX1BST1ZFTkFOQ0VfRVhURVJOQUwQAirSAQoUUHJvdmVuYW5jZVRydXN0TGV2ZWwSJgoiUFJPVkVOQU5DRV9UUlVTVF9MRVZFTF9VTlNQRUNJRklFRBAAEiIKHlBST1ZFTkFOQ0VfVFJVU1RfTEVWRUxfVFJVU1RFRBABEiQKIFBST1ZFTkFOQ0VfVFJVU1RfTEVWRUxfU0FOSVRJWkVEEAISJAogUFJPVkVOQU5DRV9UUlVTVF9MRVZFTF9VTlRSVVNURUQQAxIiCh5QUk9WRU5BTkNFX1RSVVNUX0xFVkVMX1JFVk9LRUQQBDKSAwoNTWVtb3J5U2VydmljZRJeCgtRdWVyeU1lbW9yeRIlLmxsbV9tdWx0aXZlcnNlLnYxLlF1ZXJ5TWVtb3J5UmVxdWVzdBomLmxsbV9tdWx0aXZlcnNlLnYxLlF1ZXJ5TWVtb3J5UmVzcG9uc2UwARJcCgtXcml0ZU1lbW9yeRIlLmxsbV9tdWx0aXZlcnNlLnYxLldyaXRlTWVtb3J5UmVxdWVzdBomLmxsbV9tdWx0aXZlcnNlLnYxLldyaXRlTWVtb3J5UmVzcG9uc2USYgoNR2V0Q29ycmVsYXRlZBInLmxsbV9tdWx0aXZlcnNlLnYxLkdldENvcnJlbGF0ZWRSZXF1ZXN0GigubGxtX211bHRpdmVyc2UudjEuR2V0Q29ycmVsYXRlZFJlc3BvbnNlEl8KDFJldm9rZU1lbW9yeRImLmxsbV9tdWx0aXZlcnNlLnYxLlJldm9rZU1lbW9yeVJlcXVlc3QaJy5sbG1fbXVsdGl2ZXJzZS52MS5SZXZva2VNZW1vcnlSZXNwb25zZWIGcHJvdG8z", [file_google_protobuf_timestamp, file_llm_multiverse_v1_common]); + +/** + * Detailed provenance metadata for a memory entry. + * + * @generated from message llm_multiverse.v1.ProvenanceMetadata + */ +export type ProvenanceMetadata = Message<"llm_multiverse.v1.ProvenanceMetadata"> & { + /** + * The agent ID that created this memory. + * + * @generated from field: string source_agent_id = 1; + */ + sourceAgentId: string; + + /** + * The session ID during which this memory was created. + * + * @generated from field: string source_session_id = 2; + */ + sourceSessionId: string; + + /** + * The tool that produced the content (e.g., "web_search", "fs_read", "model_inference"). + * + * @generated from field: string creation_tool = 3; + */ + creationTool: string; + + /** + * Trust level of this memory. + * + * @generated from field: llm_multiverse.v1.ProvenanceTrustLevel trust_level = 4; + */ + trustLevel: ProvenanceTrustLevel; + + /** + * For derived memories: IDs of parent memories this was derived from. + * + * @generated from field: repeated string parent_memory_ids = 5; + */ + parentMemoryIds: string[]; + + /** + * Whether this memory has been administratively tainted/revoked. + * + * @generated from field: bool is_revoked = 6; + */ + isRevoked: boolean; + + /** + * Reason for revocation (set by admin). + * + * @generated from field: optional string revocation_reason = 7; + */ + revocationReason?: string; + + /** + * Timestamp when the memory was revoked. + * + * @generated from field: optional google.protobuf.Timestamp revoked_at = 8; + */ + revokedAt?: Timestamp; + + /** + * The agent ID that revoked this memory (admin action). + * + * @generated from field: optional string revoked_by = 9; + */ + revokedBy?: string; +}; + +/** + * Describes the message llm_multiverse.v1.ProvenanceMetadata. + * Use `create(ProvenanceMetadataSchema)` to create a new message. + */ +export const ProvenanceMetadataSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 0); + +/** + * A single memory entry stored in DuckDB with VSS. + * + * @generated from message llm_multiverse.v1.MemoryEntry + */ +export type MemoryEntry = Message<"llm_multiverse.v1.MemoryEntry"> & { + /** + * @generated from field: string id = 1; + */ + id: string; + + /** + * @generated from field: string name = 2; + */ + name: string; + + /** + * @generated from field: string description = 3; + */ + description: string; + + /** + * @generated from field: repeated string tags = 4; + */ + tags: string[]; + + /** + * @generated from field: repeated string correlating_ids = 5; + */ + correlatingIds: string[]; + + /** + * Full text content. + * + * @generated from field: string corpus = 6; + */ + corpus: string; + + /** + * Embedding vectors (from nomic-embed-text). + * + * @generated from field: bytes name_embedding = 7; + */ + nameEmbedding: Uint8Array; + + /** + * @generated from field: bytes description_embedding = 8; + */ + descriptionEmbedding: Uint8Array; + + /** + * @generated from field: bytes corpus_embedding = 9; + */ + corpusEmbedding: Uint8Array; + + /** + * @generated from field: google.protobuf.Timestamp created_at = 10; + */ + createdAt?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp last_accessed = 11; + */ + lastAccessed?: Timestamp; + + /** + * @generated from field: uint32 access_count = 12; + */ + accessCount: number; + + /** + * @generated from field: llm_multiverse.v1.MemoryProvenance provenance = 13; + */ + provenance: MemoryProvenance; + + /** + * Detailed provenance metadata (source agent, trust level, revocation status). + * + * @generated from field: llm_multiverse.v1.ProvenanceMetadata provenance_metadata = 14; + */ + provenanceMetadata?: ProvenanceMetadata; +}; + +/** + * Describes the message llm_multiverse.v1.MemoryEntry. + * Use `create(MemoryEntrySchema)` to create a new message. + */ +export const MemoryEntrySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 1); + +/** + * @generated from message llm_multiverse.v1.QueryMemoryRequest + */ +export type QueryMemoryRequest = Message<"llm_multiverse.v1.QueryMemoryRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: string query = 2; + */ + query: string; + + /** + * Optional filter by memory type/tag. + * + * @generated from field: string memory_type = 3; + */ + memoryType: string; + + /** + * Max results to return (default 5). + * + * @generated from field: uint32 limit = 4; + */ + limit: number; + + /** + * When true, skip the extraction step for lower latency. + * + * @generated from field: bool skip_extraction = 5; + */ + skipExtraction: boolean; + + /** + * Filter results by provenance trust level (only return entries at or above this level). + * + * @generated from field: llm_multiverse.v1.ProvenanceTrustLevel min_trust_level = 6; + */ + minTrustLevel: ProvenanceTrustLevel; + + /** + * When true, include revoked memories in results (default: false, meaning revoked memories are excluded). + * + * @generated from field: bool include_revoked = 7; + */ + includeRevoked: boolean; +}; + +/** + * Describes the message llm_multiverse.v1.QueryMemoryRequest. + * Use `create(QueryMemoryRequestSchema)` to create a new message. + */ +export const QueryMemoryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 2); + +/** + * Streamed result for each matching memory entry. + * + * @generated from message llm_multiverse.v1.QueryMemoryResponse + */ +export type QueryMemoryResponse = Message<"llm_multiverse.v1.QueryMemoryResponse"> & { + /** + * @generated from field: uint32 rank = 1; + */ + rank: number; + + /** + * @generated from field: llm_multiverse.v1.MemoryEntry entry = 2; + */ + entry?: MemoryEntry; + + /** + * @generated from field: float cosine_similarity = 3; + */ + cosineSimilarity: number; + + /** + * @generated from field: bool is_cached = 4; + */ + isCached: boolean; + + /** + * Extracted relevant segment if cache hit. + * + * @generated from field: optional string cached_extracted_segment = 5; + */ + cachedExtractedSegment?: string; + + /** + * Confidence of the extraction (0.0-1.0). Only set when extraction was performed. + * + * @generated from field: optional float extraction_confidence = 6; + */ + extractionConfidence?: number; +}; + +/** + * Describes the message llm_multiverse.v1.QueryMemoryResponse. + * Use `create(QueryMemoryResponseSchema)` to create a new message. + */ +export const QueryMemoryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 3); + +/** + * @generated from message llm_multiverse.v1.WriteMemoryRequest + */ +export type WriteMemoryRequest = Message<"llm_multiverse.v1.WriteMemoryRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: llm_multiverse.v1.MemoryEntry entry = 2; + */ + entry?: MemoryEntry; + + /** + * @generated from field: llm_multiverse.v1.MemoryProvenance provenance = 3; + */ + provenance: MemoryProvenance; +}; + +/** + * Describes the message llm_multiverse.v1.WriteMemoryRequest. + * Use `create(WriteMemoryRequestSchema)` to create a new message. + */ +export const WriteMemoryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 4); + +/** + * @generated from message llm_multiverse.v1.WriteMemoryResponse + */ +export type WriteMemoryResponse = Message<"llm_multiverse.v1.WriteMemoryResponse"> & { + /** + * @generated from field: bool success = 1; + */ + success: boolean; + + /** + * ID of the created or updated memory entry. + * + * @generated from field: string memory_id = 2; + */ + memoryId: string; + + /** + * @generated from field: optional string error_message = 3; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.WriteMemoryResponse. + * Use `create(WriteMemoryResponseSchema)` to create a new message. + */ +export const WriteMemoryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 5); + +/** + * @generated from message llm_multiverse.v1.GetCorrelatedRequest + */ +export type GetCorrelatedRequest = Message<"llm_multiverse.v1.GetCorrelatedRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: string memory_id = 2; + */ + memoryId: string; + + /** + * @generated from field: repeated string correlating_ids = 3; + */ + correlatingIds: string[]; +}; + +/** + * Describes the message llm_multiverse.v1.GetCorrelatedRequest. + * Use `create(GetCorrelatedRequestSchema)` to create a new message. + */ +export const GetCorrelatedRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 6); + +/** + * @generated from message llm_multiverse.v1.GetCorrelatedResponse + */ +export type GetCorrelatedResponse = Message<"llm_multiverse.v1.GetCorrelatedResponse"> & { + /** + * Map of memory ID to entry (descriptions only, not full corpus). + * + * @generated from field: map correlations = 1; + */ + correlations: { [key: string]: MemoryEntry }; +}; + +/** + * Describes the message llm_multiverse.v1.GetCorrelatedResponse. + * Use `create(GetCorrelatedResponseSchema)` to create a new message. + */ +export const GetCorrelatedResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 7); + +/** + * Request to mark memories as tainted/revoked (admin operation). + * + * @generated from message llm_multiverse.v1.RevokeMemoryRequest + */ +export type RevokeMemoryRequest = Message<"llm_multiverse.v1.RevokeMemoryRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * Memory IDs to revoke. + * + * @generated from field: repeated string memory_ids = 2; + */ + memoryIds: string[]; + + /** + * Reason for revocation. + * + * @generated from field: string reason = 3; + */ + reason: string; +}; + +/** + * Describes the message llm_multiverse.v1.RevokeMemoryRequest. + * Use `create(RevokeMemoryRequestSchema)` to create a new message. + */ +export const RevokeMemoryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 8); + +/** + * @generated from message llm_multiverse.v1.RevokeMemoryResponse + */ +export type RevokeMemoryResponse = Message<"llm_multiverse.v1.RevokeMemoryResponse"> & { + /** + * @generated from field: bool success = 1; + */ + success: boolean; + + /** + * Number of memories revoked. + * + * @generated from field: uint32 revoked_count = 2; + */ + revokedCount: number; + + /** + * @generated from field: optional string error_message = 3; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.RevokeMemoryResponse. + * Use `create(RevokeMemoryResponseSchema)` to create a new message. + */ +export const RevokeMemoryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_memory, 9); + +/** + * Provenance of a memory entry. + * + * @generated from enum llm_multiverse.v1.MemoryProvenance + */ +export enum MemoryProvenance { + /** + * @generated from enum value: MEMORY_PROVENANCE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Generated internally by agents. + * + * @generated from enum value: MEMORY_PROVENANCE_INTERNAL = 1; + */ + INTERNAL = 1, + + /** + * Sourced from external content (web, files). Tagged for poisoning protection. + * + * @generated from enum value: MEMORY_PROVENANCE_EXTERNAL = 2; + */ + EXTERNAL = 2, +} + +/** + * Describes the enum llm_multiverse.v1.MemoryProvenance. + */ +export const MemoryProvenanceSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_memory, 0); + +/** + * Trust level for provenance-based filtering. + * + * @generated from enum llm_multiverse.v1.ProvenanceTrustLevel + */ +export enum ProvenanceTrustLevel { + /** + * @generated from enum value: PROVENANCE_TRUST_LEVEL_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Fully trusted (internal agent-generated content). + * + * @generated from enum value: PROVENANCE_TRUST_LEVEL_TRUSTED = 1; + */ + TRUSTED = 1, + + /** + * External content that has been sanitized. + * + * @generated from enum value: PROVENANCE_TRUST_LEVEL_SANITIZED = 2; + */ + SANITIZED = 2, + + /** + * External content, not yet sanitized. + * + * @generated from enum value: PROVENANCE_TRUST_LEVEL_UNTRUSTED = 3; + */ + UNTRUSTED = 3, + + /** + * Administratively revoked/tainted. + * + * @generated from enum value: PROVENANCE_TRUST_LEVEL_REVOKED = 4; + */ + REVOKED = 4, +} + +/** + * Describes the enum llm_multiverse.v1.ProvenanceTrustLevel. + */ +export const ProvenanceTrustLevelSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_memory, 1); + +/** + * Vector-backed memory storage with staged retrieval. + * + * @generated from service llm_multiverse.v1.MemoryService + */ +export const MemoryService: GenService<{ + /** + * Query memory with staged coarse-to-fine retrieval. Server-streaming. + * + * @generated from rpc llm_multiverse.v1.MemoryService.QueryMemory + */ + queryMemory: { + methodKind: "server_streaming"; + input: typeof QueryMemoryRequestSchema; + output: typeof QueryMemoryResponseSchema; + }, + /** + * Write or update a memory entry. + * + * @generated from rpc llm_multiverse.v1.MemoryService.WriteMemory + */ + writeMemory: { + methodKind: "unary"; + input: typeof WriteMemoryRequestSchema; + output: typeof WriteMemoryResponseSchema; + }, + /** + * Get correlated memory entries by ID. + * + * @generated from rpc llm_multiverse.v1.MemoryService.GetCorrelated + */ + getCorrelated: { + methodKind: "unary"; + input: typeof GetCorrelatedRequestSchema; + output: typeof GetCorrelatedResponseSchema; + }, + /** + * Mark memories as tainted/revoked (admin operation). + * + * @generated from rpc llm_multiverse.v1.MemoryService.RevokeMemory + */ + revokeMemory: { + methodKind: "unary"; + input: typeof RevokeMemoryRequestSchema; + output: typeof RevokeMemoryResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_memory, 0); + diff --git a/src/lib/proto/llm_multiverse/v1/model_gateway_pb.ts b/src/lib/proto/llm_multiverse/v1/model_gateway_pb.ts new file mode 100644 index 0000000..21ecf83 --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/model_gateway_pb.ts @@ -0,0 +1,339 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/model_gateway.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { SessionContext } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/model_gateway.proto. + */ +export const file_llm_multiverse_v1_model_gateway: GenFile = /*@__PURE__*/ + fileDesc("CiVsbG1fbXVsdGl2ZXJzZS92MS9tb2RlbF9nYXRld2F5LnByb3RvEhFsbG1fbXVsdGl2ZXJzZS52MSKtAgoPSW5mZXJlbmNlUGFyYW1zEjIKB2NvbnRleHQYASABKAsyIS5sbG1fbXVsdGl2ZXJzZS52MS5TZXNzaW9uQ29udGV4dBIOCgZwcm9tcHQYAiABKAkSOgoPdGFza19jb21wbGV4aXR5GAMgASgOMiEubGxtX211bHRpdmVyc2UudjEuVGFza0NvbXBsZXhpdHkSEgoKbWF4X3Rva2VucxgEIAEoDRIYCgt0ZW1wZXJhdHVyZRgFIAEoAkgAiAEBEhIKBXRvcF9wGAYgASgCSAGIAQESFgoOc3RvcF9zZXF1ZW5jZXMYByADKAkSFwoKbW9kZWxfaGludBgIIAEoCUgCiAEBQg4KDF90ZW1wZXJhdHVyZUIICgZfdG9wX3BCDQoLX21vZGVsX2hpbnQiTAoWU3RyZWFtSW5mZXJlbmNlUmVxdWVzdBIyCgZwYXJhbXMYASABKAsyIi5sbG1fbXVsdGl2ZXJzZS52MS5JbmZlcmVuY2VQYXJhbXMiRgoQSW5mZXJlbmNlUmVxdWVzdBIyCgZwYXJhbXMYASABKAsyIi5sbG1fbXVsdGl2ZXJzZS52MS5JbmZlcmVuY2VQYXJhbXMiVgoXU3RyZWFtSW5mZXJlbmNlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSGgoNZmluaXNoX3JlYXNvbhgCIAEoCUgAiAEBQhAKDl9maW5pc2hfcmVhc29uIk0KEUluZmVyZW5jZVJlc3BvbnNlEgwKBHRleHQYASABKAkSFQoNZmluaXNoX3JlYXNvbhgCIAEoCRITCgt0b2tlbnNfdXNlZBgDIAEoDSJ6ChhHZW5lcmF0ZUVtYmVkZGluZ1JlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0EgwKBHRleHQYAiABKAkSEgoFbW9kZWwYAyABKAlIAIgBAUIICgZfbW9kZWwiQgoZR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRIRCgllbWJlZGRpbmcYASADKAISEgoKZGltZW5zaW9ucxgCIAEoDSI9ChNJc01vZGVsUmVhZHlSZXF1ZXN0EhcKCm1vZGVsX25hbWUYASABKAlIAIgBAUINCgtfbW9kZWxfbmFtZSJtChRJc01vZGVsUmVhZHlSZXNwb25zZRINCgVyZWFkeRgBIAEoCBIYChBhdmFpbGFibGVfbW9kZWxzGAIgAygJEhoKDWVycm9yX21lc3NhZ2UYAyABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZSpqCg5UYXNrQ29tcGxleGl0eRIfChtUQVNLX0NPTVBMRVhJVFlfVU5TUEVDSUZJRUQQABIaChZUQVNLX0NPTVBMRVhJVFlfU0lNUExFEAESGwoXVEFTS19DT01QTEVYSVRZX0NPTVBMRVgQAjKqAwoTTW9kZWxHYXRld2F5U2VydmljZRJqCg9TdHJlYW1JbmZlcmVuY2USKS5sbG1fbXVsdGl2ZXJzZS52MS5TdHJlYW1JbmZlcmVuY2VSZXF1ZXN0GioubGxtX211bHRpdmVyc2UudjEuU3RyZWFtSW5mZXJlbmNlUmVzcG9uc2UwARJWCglJbmZlcmVuY2USIy5sbG1fbXVsdGl2ZXJzZS52MS5JbmZlcmVuY2VSZXF1ZXN0GiQubGxtX211bHRpdmVyc2UudjEuSW5mZXJlbmNlUmVzcG9uc2USbgoRR2VuZXJhdGVFbWJlZGRpbmcSKy5sbG1fbXVsdGl2ZXJzZS52MS5HZW5lcmF0ZUVtYmVkZGluZ1JlcXVlc3QaLC5sbG1fbXVsdGl2ZXJzZS52MS5HZW5lcmF0ZUVtYmVkZGluZ1Jlc3BvbnNlEl8KDElzTW9kZWxSZWFkeRImLmxsbV9tdWx0aXZlcnNlLnYxLklzTW9kZWxSZWFkeVJlcXVlc3QaJy5sbG1fbXVsdGl2ZXJzZS52MS5Jc01vZGVsUmVhZHlSZXNwb25zZWIGcHJvdG8z", [file_llm_multiverse_v1_common]); + +/** + * Shared inference parameters used by both streaming and unary RPCs. + * + * @generated from message llm_multiverse.v1.InferenceParams + */ +export type InferenceParams = Message<"llm_multiverse.v1.InferenceParams"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: string prompt = 2; + */ + prompt: string; + + /** + * @generated from field: llm_multiverse.v1.TaskComplexity task_complexity = 3; + */ + taskComplexity: TaskComplexity; + + /** + * @generated from field: uint32 max_tokens = 4; + */ + maxTokens: number; + + /** + * @generated from field: optional float temperature = 5; + */ + temperature?: number; + + /** + * @generated from field: optional float top_p = 6; + */ + topP?: number; + + /** + * @generated from field: repeated string stop_sequences = 7; + */ + stopSequences: string[]; + + /** + * Explicit model name or alias override. If set, bypasses task_complexity routing. + * + * @generated from field: optional string model_hint = 8; + */ + modelHint?: string; +}; + +/** + * Describes the message llm_multiverse.v1.InferenceParams. + * Use `create(InferenceParamsSchema)` to create a new message. + */ +export const InferenceParamsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 0); + +/** + * @generated from message llm_multiverse.v1.StreamInferenceRequest + */ +export type StreamInferenceRequest = Message<"llm_multiverse.v1.StreamInferenceRequest"> & { + /** + * @generated from field: llm_multiverse.v1.InferenceParams params = 1; + */ + params?: InferenceParams; +}; + +/** + * Describes the message llm_multiverse.v1.StreamInferenceRequest. + * Use `create(StreamInferenceRequestSchema)` to create a new message. + */ +export const StreamInferenceRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 1); + +/** + * @generated from message llm_multiverse.v1.InferenceRequest + */ +export type InferenceRequest = Message<"llm_multiverse.v1.InferenceRequest"> & { + /** + * @generated from field: llm_multiverse.v1.InferenceParams params = 1; + */ + params?: InferenceParams; +}; + +/** + * Describes the message llm_multiverse.v1.InferenceRequest. + * Use `create(InferenceRequestSchema)` to create a new message. + */ +export const InferenceRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 2); + +/** + * Single token in a streaming response. + * + * @generated from message llm_multiverse.v1.StreamInferenceResponse + */ +export type StreamInferenceResponse = Message<"llm_multiverse.v1.StreamInferenceResponse"> & { + /** + * @generated from field: string token = 1; + */ + token: string; + + /** + * @generated from field: optional string finish_reason = 2; + */ + finishReason?: string; +}; + +/** + * Describes the message llm_multiverse.v1.StreamInferenceResponse. + * Use `create(StreamInferenceResponseSchema)` to create a new message. + */ +export const StreamInferenceResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 3); + +/** + * Complete inference result. + * + * @generated from message llm_multiverse.v1.InferenceResponse + */ +export type InferenceResponse = Message<"llm_multiverse.v1.InferenceResponse"> & { + /** + * @generated from field: string text = 1; + */ + text: string; + + /** + * @generated from field: string finish_reason = 2; + */ + finishReason: string; + + /** + * @generated from field: uint32 tokens_used = 3; + */ + tokensUsed: number; +}; + +/** + * Describes the message llm_multiverse.v1.InferenceResponse. + * Use `create(InferenceResponseSchema)` to create a new message. + */ +export const InferenceResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 4); + +/** + * @generated from message llm_multiverse.v1.GenerateEmbeddingRequest + */ +export type GenerateEmbeddingRequest = Message<"llm_multiverse.v1.GenerateEmbeddingRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: string text = 2; + */ + text: string; + + /** + * Model to use (defaults to nomic-embed-text). + * + * @generated from field: optional string model = 3; + */ + model?: string; +}; + +/** + * Describes the message llm_multiverse.v1.GenerateEmbeddingRequest. + * Use `create(GenerateEmbeddingRequestSchema)` to create a new message. + */ +export const GenerateEmbeddingRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 5); + +/** + * @generated from message llm_multiverse.v1.GenerateEmbeddingResponse + */ +export type GenerateEmbeddingResponse = Message<"llm_multiverse.v1.GenerateEmbeddingResponse"> & { + /** + * Raw embedding vector. + * + * @generated from field: repeated float embedding = 1; + */ + embedding: number[]; + + /** + * @generated from field: uint32 dimensions = 2; + */ + dimensions: number; +}; + +/** + * Describes the message llm_multiverse.v1.GenerateEmbeddingResponse. + * Use `create(GenerateEmbeddingResponseSchema)` to create a new message. + */ +export const GenerateEmbeddingResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 6); + +/** + * @generated from message llm_multiverse.v1.IsModelReadyRequest + */ +export type IsModelReadyRequest = Message<"llm_multiverse.v1.IsModelReadyRequest"> & { + /** + * Specific model to check. If empty, checks all configured models. + * + * @generated from field: optional string model_name = 1; + */ + modelName?: string; +}; + +/** + * Describes the message llm_multiverse.v1.IsModelReadyRequest. + * Use `create(IsModelReadyRequestSchema)` to create a new message. + */ +export const IsModelReadyRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 7); + +/** + * @generated from message llm_multiverse.v1.IsModelReadyResponse + */ +export type IsModelReadyResponse = Message<"llm_multiverse.v1.IsModelReadyResponse"> & { + /** + * @generated from field: bool ready = 1; + */ + ready: boolean; + + /** + * @generated from field: repeated string available_models = 2; + */ + availableModels: string[]; + + /** + * @generated from field: optional string error_message = 3; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.IsModelReadyResponse. + * Use `create(IsModelReadyResponseSchema)` to create a new message. + */ +export const IsModelReadyResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_model_gateway, 8); + +/** + * Hint for model routing based on task complexity. + * + * @generated from enum llm_multiverse.v1.TaskComplexity + */ +export enum TaskComplexity { + /** + * @generated from enum value: TASK_COMPLEXITY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Route to smaller models (3B/7B). + * + * @generated from enum value: TASK_COMPLEXITY_SIMPLE = 1; + */ + SIMPLE = 1, + + /** + * Route to larger models (14B) for reasoning/code. + * + * @generated from enum value: TASK_COMPLEXITY_COMPLEX = 2; + */ + COMPLEX = 2, +} + +/** + * Describes the enum llm_multiverse.v1.TaskComplexity. + */ +export const TaskComplexitySchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_model_gateway, 0); + +/** + * Wraps Ollama HTTP API, exposes inference via gRPC. + * + * @generated from service llm_multiverse.v1.ModelGatewayService + */ +export const ModelGatewayService: GenService<{ + /** + * Streaming token-by-token inference. + * + * @generated from rpc llm_multiverse.v1.ModelGatewayService.StreamInference + */ + streamInference: { + methodKind: "server_streaming"; + input: typeof StreamInferenceRequestSchema; + output: typeof StreamInferenceResponseSchema; + }, + /** + * Synchronous full-text inference. + * + * @generated from rpc llm_multiverse.v1.ModelGatewayService.Inference + */ + inference: { + methodKind: "unary"; + input: typeof InferenceRequestSchema; + output: typeof InferenceResponseSchema; + }, + /** + * Generate embedding vector for text input. + * + * @generated from rpc llm_multiverse.v1.ModelGatewayService.GenerateEmbedding + */ + generateEmbedding: { + methodKind: "unary"; + input: typeof GenerateEmbeddingRequestSchema; + output: typeof GenerateEmbeddingResponseSchema; + }, + /** + * Check model availability. + * + * @generated from rpc llm_multiverse.v1.ModelGatewayService.IsModelReady + */ + isModelReady: { + methodKind: "unary"; + input: typeof IsModelReadyRequestSchema; + output: typeof IsModelReadyResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_model_gateway, 0); + diff --git a/src/lib/proto/llm_multiverse/v1/orchestrator_pb.ts b/src/lib/proto/llm_multiverse/v1/orchestrator_pb.ts new file mode 100644 index 0000000..235d8af --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/orchestrator_pb.ts @@ -0,0 +1,272 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/orchestrator.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { AgentType, OverrideLevel, SessionContext, SubagentResult, ToolType } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/orchestrator.proto. + */ +export const file_llm_multiverse_v1_orchestrator: GenFile = /*@__PURE__*/ + fileDesc("CiRsbG1fbXVsdGl2ZXJzZS92MS9vcmNoZXN0cmF0b3IucHJvdG8SEWxsbV9tdWx0aXZlcnNlLnYxIn4KDVNlc3Npb25Db25maWcSOAoOb3ZlcnJpZGVfbGV2ZWwYASABKA4yIC5sbG1fbXVsdGl2ZXJzZS52MS5PdmVycmlkZUxldmVsEhYKDmRpc2FibGVkX3Rvb2xzGAIgAygJEhsKE2dyYW50ZWRfcGVybWlzc2lvbnMYAyADKAkirwEKEVN1YnRhc2tEZWZpbml0aW9uEgoKAmlkGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEjAKCmFnZW50X3R5cGUYAyABKA4yHC5sbG1fbXVsdGl2ZXJzZS52MS5BZ2VudFR5cGUSEgoKZGVwZW5kc19vbhgEIAMoCRIzCg50b29sc19yZXF1aXJlZBgFIAMoDjIbLmxsbV9tdWx0aXZlcnNlLnYxLlRvb2xUeXBlIoYCCg9TdWJhZ2VudFJlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0EhAKCGFnZW50X2lkGAIgASgJEjAKCmFnZW50X3R5cGUYAyABKA4yHC5sbG1fbXVsdGl2ZXJzZS52MS5BZ2VudFR5cGUSDAoEdGFzaxgEIAEoCRIfChdyZWxldmFudF9tZW1vcnlfY29udGV4dBgFIAMoCRISCgptYXhfdG9rZW5zGAYgASgNEjgKDnNlc3Npb25fY29uZmlnGAcgASgLMiAubGxtX211bHRpdmVyc2UudjEuU2Vzc2lvbkNvbmZpZyKTAQoVUHJvY2Vzc1JlcXVlc3RSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMdXNlcl9tZXNzYWdlGAIgASgJEj0KDnNlc3Npb25fY29uZmlnGAMgASgLMiAubGxtX211bHRpdmVyc2UudjEuU2Vzc2lvbkNvbmZpZ0gAiAEBQhEKD19zZXNzaW9uX2NvbmZpZyLoAQoWUHJvY2Vzc1JlcXVlc3RSZXNwb25zZRI0CgVzdGF0ZRgBIAEoDjIlLmxsbV9tdWx0aXZlcnNlLnYxLk9yY2hlc3RyYXRpb25TdGF0ZRIPCgdtZXNzYWdlGAIgASgJEiAKE2ludGVybWVkaWF0ZV9yZXN1bHQYAyABKAlIAIgBARI8CgxmaW5hbF9yZXN1bHQYBCABKAsyIS5sbG1fbXVsdGl2ZXJzZS52MS5TdWJhZ2VudFJlc3VsdEgBiAEBQhYKFF9pbnRlcm1lZGlhdGVfcmVzdWx0Qg8KDV9maW5hbF9yZXN1bHQq7AEKEk9yY2hlc3RyYXRpb25TdGF0ZRIjCh9PUkNIRVNUUkFUSU9OX1NUQVRFX1VOU1BFQ0lGSUVEEAASIwofT1JDSEVTVFJBVElPTl9TVEFURV9ERUNPTVBPU0lORxABEiMKH09SQ0hFU1RSQVRJT05fU1RBVEVfRElTUEFUQ0hJTkcQAhIhCh1PUkNIRVNUUkFUSU9OX1NUQVRFX0VYRUNVVElORxADEiIKHk9SQ0hFU1RSQVRJT05fU1RBVEVfQ09NUEFDVElORxAEEiAKHE9SQ0hFU1RSQVRJT05fU1RBVEVfQ09NUExFVEUQBTJ+ChNPcmNoZXN0cmF0b3JTZXJ2aWNlEmcKDlByb2Nlc3NSZXF1ZXN0EigubGxtX211bHRpdmVyc2UudjEuUHJvY2Vzc1JlcXVlc3RSZXF1ZXN0GikubGxtX211bHRpdmVyc2UudjEuUHJvY2Vzc1JlcXVlc3RSZXNwb25zZTABYgZwcm90bzM", [file_llm_multiverse_v1_common]); + +/** + * Per-session configuration for override control. + * + * @generated from message llm_multiverse.v1.SessionConfig + */ +export type SessionConfig = Message<"llm_multiverse.v1.SessionConfig"> & { + /** + * @generated from field: llm_multiverse.v1.OverrideLevel override_level = 1; + */ + overrideLevel: OverrideLevel; + + /** + * Tools explicitly disabled for this session. + * + * @generated from field: repeated string disabled_tools = 2; + */ + disabledTools: string[]; + + /** + * Explicit grants in "agent_type:tool" format. + * + * @generated from field: repeated string granted_permissions = 3; + */ + grantedPermissions: string[]; +}; + +/** + * Describes the message llm_multiverse.v1.SessionConfig. + * Use `create(SessionConfigSchema)` to create a new message. + */ +export const SessionConfigSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_orchestrator, 0); + +/** + * A subtask decomposed from a user request. + * + * @generated from message llm_multiverse.v1.SubtaskDefinition + */ +export type SubtaskDefinition = Message<"llm_multiverse.v1.SubtaskDefinition"> & { + /** + * @generated from field: string id = 1; + */ + id: string; + + /** + * @generated from field: string description = 2; + */ + description: string; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 3; + */ + agentType: AgentType; + + /** + * IDs of subtasks this depends on. + * + * @generated from field: repeated string depends_on = 4; + */ + dependsOn: string[]; + + /** + * @generated from field: repeated llm_multiverse.v1.ToolType tools_required = 5; + */ + toolsRequired: ToolType[]; +}; + +/** + * Describes the message llm_multiverse.v1.SubtaskDefinition. + * Use `create(SubtaskDefinitionSchema)` to create a new message. + */ +export const SubtaskDefinitionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_orchestrator, 1); + +/** + * Internal request dispatched to a subagent. + * + * @generated from message llm_multiverse.v1.SubagentRequest + */ +export type SubagentRequest = Message<"llm_multiverse.v1.SubagentRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: string agent_id = 2; + */ + agentId: string; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 3; + */ + agentType: AgentType; + + /** + * @generated from field: string task = 4; + */ + task: string; + + /** + * Relevant memory summaries (max extracted segments only). + * + * @generated from field: repeated string relevant_memory_context = 5; + */ + relevantMemoryContext: string[]; + + /** + * @generated from field: uint32 max_tokens = 6; + */ + maxTokens: number; + + /** + * @generated from field: llm_multiverse.v1.SessionConfig session_config = 7; + */ + sessionConfig?: SessionConfig; +}; + +/** + * Describes the message llm_multiverse.v1.SubagentRequest. + * Use `create(SubagentRequestSchema)` to create a new message. + */ +export const SubagentRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_orchestrator, 2); + +/** + * User-facing request to the orchestrator. + * + * @generated from message llm_multiverse.v1.ProcessRequestRequest + */ +export type ProcessRequestRequest = Message<"llm_multiverse.v1.ProcessRequestRequest"> & { + /** + * @generated from field: string session_id = 1; + */ + sessionId: string; + + /** + * @generated from field: string user_message = 2; + */ + userMessage: string; + + /** + * @generated from field: optional llm_multiverse.v1.SessionConfig session_config = 3; + */ + sessionConfig?: SessionConfig; +}; + +/** + * Describes the message llm_multiverse.v1.ProcessRequestRequest. + * Use `create(ProcessRequestRequestSchema)` to create a new message. + */ +export const ProcessRequestRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_orchestrator, 3); + +/** + * Streamed orchestration progress. + * + * @generated from message llm_multiverse.v1.ProcessRequestResponse + */ +export type ProcessRequestResponse = Message<"llm_multiverse.v1.ProcessRequestResponse"> & { + /** + * @generated from field: llm_multiverse.v1.OrchestrationState state = 1; + */ + state: OrchestrationState; + + /** + * User-facing status message or summary. + * + * @generated from field: string message = 2; + */ + message: string; + + /** + * Intermediate result for UX feedback. + * + * @generated from field: optional string intermediate_result = 3; + */ + intermediateResult?: string; + + /** + * Final subagent result when state is COMPLETE. + * + * @generated from field: optional llm_multiverse.v1.SubagentResult final_result = 4; + */ + finalResult?: SubagentResult; +}; + +/** + * Describes the message llm_multiverse.v1.ProcessRequestResponse. + * Use `create(ProcessRequestResponseSchema)` to create a new message. + */ +export const ProcessRequestResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_orchestrator, 4); + +/** + * Orchestration lifecycle states. + * + * @generated from enum llm_multiverse.v1.OrchestrationState + */ +export enum OrchestrationState { + /** + * @generated from enum value: ORCHESTRATION_STATE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ORCHESTRATION_STATE_DECOMPOSING = 1; + */ + DECOMPOSING = 1, + + /** + * @generated from enum value: ORCHESTRATION_STATE_DISPATCHING = 2; + */ + DISPATCHING = 2, + + /** + * @generated from enum value: ORCHESTRATION_STATE_EXECUTING = 3; + */ + EXECUTING = 3, + + /** + * @generated from enum value: ORCHESTRATION_STATE_COMPACTING = 4; + */ + COMPACTING = 4, + + /** + * @generated from enum value: ORCHESTRATION_STATE_COMPLETE = 5; + */ + COMPLETE = 5, +} + +/** + * Describes the enum llm_multiverse.v1.OrchestrationState. + */ +export const OrchestrationStateSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_orchestrator, 0); + +/** + * Entry point for user requests. Decomposes tasks and dispatches to subagents. + * + * @generated from service llm_multiverse.v1.OrchestratorService + */ +export const OrchestratorService: GenService<{ + /** + * Process a user request. Server-streaming for progressive status updates. + * + * @generated from rpc llm_multiverse.v1.OrchestratorService.ProcessRequest + */ + processRequest: { + methodKind: "server_streaming"; + input: typeof ProcessRequestRequestSchema; + output: typeof ProcessRequestResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_orchestrator, 0); + diff --git a/src/lib/proto/llm_multiverse/v1/search_pb.ts b/src/lib/proto/llm_multiverse/v1/search_pb.ts new file mode 100644 index 0000000..178e0a6 --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/search_pb.ts @@ -0,0 +1,133 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/search.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { SessionContext } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/search.proto. + */ +export const file_llm_multiverse_v1_search: GenFile = /*@__PURE__*/ + fileDesc("Ch5sbG1fbXVsdGl2ZXJzZS92MS9zZWFyY2gucHJvdG8SEWxsbV9tdWx0aXZlcnNlLnYxImcKDVNlYXJjaFJlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0Eg0KBXF1ZXJ5GAIgASgJEhMKC251bV9yZXN1bHRzGAMgASgNImQKDFNlYXJjaFJlc3VsdBINCgVjbGFpbRgBIAEoCRISCgpzb3VyY2VfdXJsGAIgASgJEhIKCmNvbmZpZGVuY2UYAyABKAISDAoEZGF0ZRgEIAEoCRIPCgdzdW1tYXJ5GAUgASgJInAKDlNlYXJjaFJlc3BvbnNlEjAKB3Jlc3VsdHMYASADKAsyHy5sbG1fbXVsdGl2ZXJzZS52MS5TZWFyY2hSZXN1bHQSGgoNZXJyb3JfbWVzc2FnZRgCIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlMl4KDVNlYXJjaFNlcnZpY2USTQoGU2VhcmNoEiAubGxtX211bHRpdmVyc2UudjEuU2VhcmNoUmVxdWVzdBohLmxsbV9tdWx0aXZlcnNlLnYxLlNlYXJjaFJlc3BvbnNlYgZwcm90bzM", [file_llm_multiverse_v1_common]); + +/** + * @generated from message llm_multiverse.v1.SearchRequest + */ +export type SearchRequest = Message<"llm_multiverse.v1.SearchRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: string query = 2; + */ + query: string; + + /** + * Number of results to return (default 5). + * + * @generated from field: uint32 num_results = 3; + */ + numResults: number; +}; + +/** + * Describes the message llm_multiverse.v1.SearchRequest. + * Use `create(SearchRequestSchema)` to create a new message. + */ +export const SearchRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_search, 0); + +/** + * A single search result, summarized and structured. + * + * @generated from message llm_multiverse.v1.SearchResult + */ +export type SearchResult = Message<"llm_multiverse.v1.SearchResult"> & { + /** + * Key assertion extracted from the content. + * + * @generated from field: string claim = 1; + */ + claim: string; + + /** + * @generated from field: string source_url = 2; + */ + sourceUrl: string; + + /** + * Confidence score (0.0-1.0). + * + * @generated from field: float confidence = 3; + */ + confidence: number; + + /** + * Publication or extraction date (ISO 8601). + * + * @generated from field: string date = 4; + */ + date: string; + + /** + * Summarized content — never raw web content. + * + * @generated from field: string summary = 5; + */ + summary: string; +}; + +/** + * Describes the message llm_multiverse.v1.SearchResult. + * Use `create(SearchResultSchema)` to create a new message. + */ +export const SearchResultSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_search, 1); + +/** + * @generated from message llm_multiverse.v1.SearchResponse + */ +export type SearchResponse = Message<"llm_multiverse.v1.SearchResponse"> & { + /** + * @generated from field: repeated llm_multiverse.v1.SearchResult results = 1; + */ + results: SearchResult[]; + + /** + * @generated from field: optional string error_message = 2; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.SearchResponse. + * Use `create(SearchResponseSchema)` to create a new message. + */ +export const SearchResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_search, 2); + +/** + * Web search via local SearXNG instance with summarization pipeline. + * + * @generated from service llm_multiverse.v1.SearchService + */ +export const SearchService: GenService<{ + /** + * Search the web. Returns summarized results — never raw web content. + * + * @generated from rpc llm_multiverse.v1.SearchService.Search + */ + search: { + methodKind: "unary"; + input: typeof SearchRequestSchema; + output: typeof SearchResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_search, 0); + diff --git a/src/lib/proto/llm_multiverse/v1/secrets_pb.ts b/src/lib/proto/llm_multiverse/v1/secrets_pb.ts new file mode 100644 index 0000000..43f95fc --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/secrets_pb.ts @@ -0,0 +1,84 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/secrets.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { SessionContext } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/secrets.proto. + */ +export const file_llm_multiverse_v1_secrets: GenFile = /*@__PURE__*/ + fileDesc("Ch9sbG1fbXVsdGl2ZXJzZS92MS9zZWNyZXRzLnByb3RvEhFsbG1fbXVsdGl2ZXJzZS52MSJbChBHZXRTZWNyZXRSZXF1ZXN0EjIKB2NvbnRleHQYASABKAsyIS5sbG1fbXVsdGl2ZXJzZS52MS5TZXNzaW9uQ29udGV4dBITCgtzZWNyZXRfbmFtZRgCIAEoCSJQChFHZXRTZWNyZXRSZXNwb25zZRINCgV2YWx1ZRgBIAEoCRIaCg1lcnJvcl9tZXNzYWdlGAIgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UyaAoOU2VjcmV0c1NlcnZpY2USVgoJR2V0U2VjcmV0EiMubGxtX211bHRpdmVyc2UudjEuR2V0U2VjcmV0UmVxdWVzdBokLmxsbV9tdWx0aXZlcnNlLnYxLkdldFNlY3JldFJlc3BvbnNlYgZwcm90bzM", [file_llm_multiverse_v1_common]); + +/** + * @generated from message llm_multiverse.v1.GetSecretRequest + */ +export type GetSecretRequest = Message<"llm_multiverse.v1.GetSecretRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * Secret name as declared in tool definition placeholder. + * + * @generated from field: string secret_name = 2; + */ + secretName: string; +}; + +/** + * Describes the message llm_multiverse.v1.GetSecretRequest. + * Use `create(GetSecretRequestSchema)` to create a new message. + */ +export const GetSecretRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_secrets, 0); + +/** + * @generated from message llm_multiverse.v1.GetSecretResponse + */ +export type GetSecretResponse = Message<"llm_multiverse.v1.GetSecretResponse"> & { + /** + * The actual credential value. Never exposed in logs or agent context. + * + * @generated from field: string value = 1; + */ + value: string; + + /** + * @generated from field: optional string error_message = 2; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.GetSecretResponse. + * Use `create(GetSecretResponseSchema)` to create a new message. + */ +export const GetSecretResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_secrets, 1); + +/** + * Credential retrieval via Linux Secret Service API. + * Only the Tool Broker is authorized to call this service. + * + * @generated from service llm_multiverse.v1.SecretsService + */ +export const SecretsService: GenService<{ + /** + * Retrieve a secret by name. No list or write RPCs exposed. + * + * @generated from rpc llm_multiverse.v1.SecretsService.GetSecret + */ + getSecret: { + methodKind: "unary"; + input: typeof GetSecretRequestSchema; + output: typeof GetSecretResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_secrets, 0); + diff --git a/src/lib/proto/llm_multiverse/v1/tool_broker_pb.ts b/src/lib/proto/llm_multiverse/v1/tool_broker_pb.ts new file mode 100644 index 0000000..d4f12ab --- /dev/null +++ b/src/lib/proto/llm_multiverse/v1/tool_broker_pb.ts @@ -0,0 +1,376 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file llm_multiverse/v1/tool_broker.proto (package llm_multiverse.v1, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { AgentType, SessionContext } from "./common_pb"; +import { file_llm_multiverse_v1_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file llm_multiverse/v1/tool_broker.proto. + */ +export const file_llm_multiverse_v1_tool_broker: GenFile = /*@__PURE__*/ + fileDesc("CiNsbG1fbXVsdGl2ZXJzZS92MS90b29sX2Jyb2tlci5wcm90bxIRbGxtX211bHRpdmVyc2UudjEiYgoPUGFyYW1ldGVyU2NoZW1hEgwKBHR5cGUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSGgoNZGVmYXVsdF92YWx1ZRgDIAEoCUgAiAEBQhAKDl9kZWZhdWx0X3ZhbHVlIqQCCg5Ub29sRGVmaW5pdGlvbhIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEkUKCnBhcmFtZXRlcnMYAyADKAsyMS5sbG1fbXVsdGl2ZXJzZS52MS5Ub29sRGVmaW5pdGlvbi5QYXJhbWV0ZXJzRW50cnkSFwoPcmVxdWlyZWRfcGFyYW1zGAQgAygJEiAKE3JlcXVpcmVzX2NyZWRlbnRpYWwYBSABKAlIAIgBARpVCg9QYXJhbWV0ZXJzRW50cnkSCwoDa2V5GAEgASgJEjEKBXZhbHVlGAIgASgLMiIubGxtX211bHRpdmVyc2UudjEuUGFyYW1ldGVyU2NoZW1hOgI4AUIWChRfcmVxdWlyZXNfY3JlZGVudGlhbCKWAQoURGlzY292ZXJUb29sc1JlcXVlc3QSMgoHY29udGV4dBgBIAEoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlNlc3Npb25Db250ZXh0EjAKCmFnZW50X3R5cGUYAiABKA4yHC5sbG1fbXVsdGl2ZXJzZS52MS5BZ2VudFR5cGUSGAoQdGFza19kZXNjcmlwdGlvbhgDIAEoCSKBAQoVRGlzY292ZXJUb29sc1Jlc3BvbnNlEjoKD2F2YWlsYWJsZV90b29scxgBIAMoCzIhLmxsbV9tdWx0aXZlcnNlLnYxLlRvb2xEZWZpbml0aW9uEhoKDWVycm9yX21lc3NhZ2UYAiABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZSKLAgoSRXhlY3V0ZVRvb2xSZXF1ZXN0EjIKB2NvbnRleHQYASABKAsyIS5sbG1fbXVsdGl2ZXJzZS52MS5TZXNzaW9uQ29udGV4dBIwCgphZ2VudF90eXBlGAIgASgOMhwubGxtX211bHRpdmVyc2UudjEuQWdlbnRUeXBlEhEKCXRvb2xfbmFtZRgDIAEoCRJJCgpwYXJhbWV0ZXJzGAQgAygLMjUubGxtX211bHRpdmVyc2UudjEuRXhlY3V0ZVRvb2xSZXF1ZXN0LlBhcmFtZXRlcnNFbnRyeRoxCg9QYXJhbWV0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKHAQoTRXhlY3V0ZVRvb2xSZXNwb25zZRIOCgZvdXRwdXQYASABKAkSMgoGc3RhdHVzGAIgASgOMiIubGxtX211bHRpdmVyc2UudjEuRXhlY3V0aW9uU3RhdHVzEhoKDWVycm9yX21lc3NhZ2UYAyABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZSKNAgoTVmFsaWRhdGVDYWxsUmVxdWVzdBIyCgdjb250ZXh0GAEgASgLMiEubGxtX211bHRpdmVyc2UudjEuU2Vzc2lvbkNvbnRleHQSMAoKYWdlbnRfdHlwZRgCIAEoDjIcLmxsbV9tdWx0aXZlcnNlLnYxLkFnZW50VHlwZRIRCgl0b29sX25hbWUYAyABKAkSSgoKcGFyYW1ldGVycxgEIAMoCzI2LmxsbV9tdWx0aXZlcnNlLnYxLlZhbGlkYXRlQ2FsbFJlcXVlc3QuUGFyYW1ldGVyc0VudHJ5GjEKD1BhcmFtZXRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpgBChRWYWxpZGF0ZUNhbGxSZXNwb25zZRISCgppc19hbGxvd2VkGAEgASgIEhoKDWRlbmlhbF9yZWFzb24YAiABKAlIAIgBARI+ChFlbmZvcmNlbWVudF9sYXllchgDIAEoDjIjLmxsbV9tdWx0aXZlcnNlLnYxLkVuZm9yY2VtZW50TGF5ZXJCEAoOX2RlbmlhbF9yZWFzb24qjQEKD0V4ZWN1dGlvblN0YXR1cxIgChxFWEVDVVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHAoYRVhFQ1VUSU9OX1NUQVRVU19SVU5OSU5HEAESHAoYRVhFQ1VUSU9OX1NUQVRVU19TVUNDRVNTEAISHAoYRVhFQ1VUSU9OX1NUQVRVU19GQUlMVVJFEAMq+QEKEEVuZm9yY2VtZW50TGF5ZXISIQodRU5GT1JDRU1FTlRfTEFZRVJfVU5TUEVDSUZJRUQQABImCiJFTkZPUkNFTUVOVF9MQVlFUl9TRVNTSU9OX09WRVJSSURFEAESJAogRU5GT1JDRU1FTlRfTEFZRVJfQUdFTlRfTUFOSUZFU1QQAhIoCiRFTkZPUkNFTUVOVF9MQVlFUl9MSU5FQUdFX0NPTlNUUkFJTlQQAxIkCiBFTkZPUkNFTUVOVF9MQVlFUl9QQVRIX0FMTE9XTElTVBAEEiQKIEVORk9SQ0VNRU5UX0xBWUVSX05FVFdPUktfRUdSRVNTEAUyuAIKEVRvb2xCcm9rZXJTZXJ2aWNlEmIKDURpc2NvdmVyVG9vbHMSJy5sbG1fbXVsdGl2ZXJzZS52MS5EaXNjb3ZlclRvb2xzUmVxdWVzdBooLmxsbV9tdWx0aXZlcnNlLnYxLkRpc2NvdmVyVG9vbHNSZXNwb25zZRJeCgtFeGVjdXRlVG9vbBIlLmxsbV9tdWx0aXZlcnNlLnYxLkV4ZWN1dGVUb29sUmVxdWVzdBomLmxsbV9tdWx0aXZlcnNlLnYxLkV4ZWN1dGVUb29sUmVzcG9uc2UwARJfCgxWYWxpZGF0ZUNhbGwSJi5sbG1fbXVsdGl2ZXJzZS52MS5WYWxpZGF0ZUNhbGxSZXF1ZXN0GicubGxtX211bHRpdmVyc2UudjEuVmFsaWRhdGVDYWxsUmVzcG9uc2ViBnByb3RvMw", [file_llm_multiverse_v1_common]); + +/** + * Schema for a tool parameter. + * + * @generated from message llm_multiverse.v1.ParameterSchema + */ +export type ParameterSchema = Message<"llm_multiverse.v1.ParameterSchema"> & { + /** + * @generated from field: string type = 1; + */ + type: string; + + /** + * @generated from field: string description = 2; + */ + description: string; + + /** + * @generated from field: optional string default_value = 3; + */ + defaultValue?: string; +}; + +/** + * Describes the message llm_multiverse.v1.ParameterSchema. + * Use `create(ParameterSchemaSchema)` to create a new message. + */ +export const ParameterSchemaSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 0); + +/** + * Definition of a tool available through the broker. + * + * @generated from message llm_multiverse.v1.ToolDefinition + */ +export type ToolDefinition = Message<"llm_multiverse.v1.ToolDefinition"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: string description = 2; + */ + description: string; + + /** + * @generated from field: map parameters = 3; + */ + parameters: { [key: string]: ParameterSchema }; + + /** + * @generated from field: repeated string required_params = 4; + */ + requiredParams: string[]; + + /** + * Credential placeholder name, if tool requires a secret. + * + * @generated from field: optional string requires_credential = 5; + */ + requiresCredential?: string; +}; + +/** + * Describes the message llm_multiverse.v1.ToolDefinition. + * Use `create(ToolDefinitionSchema)` to create a new message. + */ +export const ToolDefinitionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 1); + +/** + * @generated from message llm_multiverse.v1.DiscoverToolsRequest + */ +export type DiscoverToolsRequest = Message<"llm_multiverse.v1.DiscoverToolsRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 2; + */ + agentType: AgentType; + + /** + * Brief task description for tool selector model call. + * + * @generated from field: string task_description = 3; + */ + taskDescription: string; +}; + +/** + * Describes the message llm_multiverse.v1.DiscoverToolsRequest. + * Use `create(DiscoverToolsRequestSchema)` to create a new message. + */ +export const DiscoverToolsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 2); + +/** + * @generated from message llm_multiverse.v1.DiscoverToolsResponse + */ +export type DiscoverToolsResponse = Message<"llm_multiverse.v1.DiscoverToolsResponse"> & { + /** + * Filtered tools (typically 2-4) relevant to the agent and task. + * + * @generated from field: repeated llm_multiverse.v1.ToolDefinition available_tools = 1; + */ + availableTools: ToolDefinition[]; + + /** + * @generated from field: optional string error_message = 2; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.DiscoverToolsResponse. + * Use `create(DiscoverToolsResponseSchema)` to create a new message. + */ +export const DiscoverToolsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 3); + +/** + * @generated from message llm_multiverse.v1.ExecuteToolRequest + */ +export type ExecuteToolRequest = Message<"llm_multiverse.v1.ExecuteToolRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 2; + */ + agentType: AgentType; + + /** + * @generated from field: string tool_name = 3; + */ + toolName: string; + + /** + * @generated from field: map parameters = 4; + */ + parameters: { [key: string]: string }; +}; + +/** + * Describes the message llm_multiverse.v1.ExecuteToolRequest. + * Use `create(ExecuteToolRequestSchema)` to create a new message. + */ +export const ExecuteToolRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 4); + +/** + * Streamed tool execution output. All results tagged [TOOL_RESULT: UNTRUSTED]. + * + * @generated from message llm_multiverse.v1.ExecuteToolResponse + */ +export type ExecuteToolResponse = Message<"llm_multiverse.v1.ExecuteToolResponse"> & { + /** + * @generated from field: string output = 1; + */ + output: string; + + /** + * @generated from field: llm_multiverse.v1.ExecutionStatus status = 2; + */ + status: ExecutionStatus; + + /** + * @generated from field: optional string error_message = 3; + */ + errorMessage?: string; +}; + +/** + * Describes the message llm_multiverse.v1.ExecuteToolResponse. + * Use `create(ExecuteToolResponseSchema)` to create a new message. + */ +export const ExecuteToolResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 5); + +/** + * @generated from message llm_multiverse.v1.ValidateCallRequest + */ +export type ValidateCallRequest = Message<"llm_multiverse.v1.ValidateCallRequest"> & { + /** + * @generated from field: llm_multiverse.v1.SessionContext context = 1; + */ + context?: SessionContext; + + /** + * @generated from field: llm_multiverse.v1.AgentType agent_type = 2; + */ + agentType: AgentType; + + /** + * @generated from field: string tool_name = 3; + */ + toolName: string; + + /** + * @generated from field: map parameters = 4; + */ + parameters: { [key: string]: string }; +}; + +/** + * Describes the message llm_multiverse.v1.ValidateCallRequest. + * Use `create(ValidateCallRequestSchema)` to create a new message. + */ +export const ValidateCallRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 6); + +/** + * @generated from message llm_multiverse.v1.ValidateCallResponse + */ +export type ValidateCallResponse = Message<"llm_multiverse.v1.ValidateCallResponse"> & { + /** + * @generated from field: bool is_allowed = 1; + */ + isAllowed: boolean; + + /** + * @generated from field: optional string denial_reason = 2; + */ + denialReason?: string; + + /** + * Which enforcement layer would deny (for audit). + * + * @generated from field: llm_multiverse.v1.EnforcementLayer enforcement_layer = 3; + */ + enforcementLayer: EnforcementLayer; +}; + +/** + * Describes the message llm_multiverse.v1.ValidateCallResponse. + * Use `create(ValidateCallResponseSchema)` to create a new message. + */ +export const ValidateCallResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_llm_multiverse_v1_tool_broker, 7); + +/** + * Execution status of a tool call. + * + * @generated from enum llm_multiverse.v1.ExecutionStatus + */ +export enum ExecutionStatus { + /** + * @generated from enum value: EXECUTION_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: EXECUTION_STATUS_RUNNING = 1; + */ + RUNNING = 1, + + /** + * @generated from enum value: EXECUTION_STATUS_SUCCESS = 2; + */ + SUCCESS = 2, + + /** + * @generated from enum value: EXECUTION_STATUS_FAILURE = 3; + */ + FAILURE = 3, +} + +/** + * Describes the enum llm_multiverse.v1.ExecutionStatus. + */ +export const ExecutionStatusSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_tool_broker, 0); + +/** + * Which enforcement layer denied a tool call. + * + * @generated from enum llm_multiverse.v1.EnforcementLayer + */ +export enum EnforcementLayer { + /** + * @generated from enum value: ENFORCEMENT_LAYER_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ENFORCEMENT_LAYER_SESSION_OVERRIDE = 1; + */ + SESSION_OVERRIDE = 1, + + /** + * @generated from enum value: ENFORCEMENT_LAYER_AGENT_MANIFEST = 2; + */ + AGENT_MANIFEST = 2, + + /** + * @generated from enum value: ENFORCEMENT_LAYER_LINEAGE_CONSTRAINT = 3; + */ + LINEAGE_CONSTRAINT = 3, + + /** + * @generated from enum value: ENFORCEMENT_LAYER_PATH_ALLOWLIST = 4; + */ + PATH_ALLOWLIST = 4, + + /** + * @generated from enum value: ENFORCEMENT_LAYER_NETWORK_EGRESS = 5; + */ + NETWORK_EGRESS = 5, +} + +/** + * Describes the enum llm_multiverse.v1.EnforcementLayer. + */ +export const EnforcementLayerSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_llm_multiverse_v1_tool_broker, 1); + +/** + * Single enforcement point for all tool calls. + * + * @generated from service llm_multiverse.v1.ToolBrokerService + */ +export const ToolBrokerService: GenService<{ + /** + * Discover available tools for an agent based on type, lineage, and task. + * + * @generated from rpc llm_multiverse.v1.ToolBrokerService.DiscoverTools + */ + discoverTools: { + methodKind: "unary"; + input: typeof DiscoverToolsRequestSchema; + output: typeof DiscoverToolsResponseSchema; + }, + /** + * Execute a tool through all enforcement layers. Server-streaming for progressive output. + * + * @generated from rpc llm_multiverse.v1.ToolBrokerService.ExecuteTool + */ + executeTool: { + methodKind: "server_streaming"; + input: typeof ExecuteToolRequestSchema; + output: typeof ExecuteToolResponseSchema; + }, + /** + * Dry-run validation of a tool call without execution. + * + * @generated from rpc llm_multiverse.v1.ToolBrokerService.ValidateCall + */ + validateCall: { + methodKind: "unary"; + input: typeof ValidateCallRequestSchema; + output: typeof ValidateCallResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_llm_multiverse_v1_tool_broker, 0); +