Implement LINO GRPC API - A GRPC-style API using LINO instead of JSON#38
Open
Implement LINO GRPC API - A GRPC-style API using LINO instead of JSON#38
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #33
This implementation provides a modern GRPC API that uses LINO (Links Notation) strings directly in protocol buffer messages, instead of traditional JSON payloads. Key features: - Protocol buffer service definitions for LINO operations (lino_service.proto) - Full CRUD support using native LINO syntax in GRPC messages - Batch operations for multiple LINO queries - Bidirectional streaming for real-time operations - CLI integration with --grpc-server flag - Comprehensive documentation and client examples The API supports all standard LINO operations: - Create: "() ((1 1) (2 2))" - Read: "((($i: $s $t)) (($i: $s $t)))" - Update: "((1: 1 1)) ((1: 1 2))" - Delete: "((1 2)) ()" This provides better consistency with the existing LINO ecosystem while maintaining the performance and type safety benefits of GRPC over JSON APIs. Resolves #33 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 Overview
This PR implements a GRPC-style API that uses LINO (Links Notation) strings directly in protocol buffer messages, instead of traditional JSON payloads. This addresses issue #33 by providing a modern, efficient API while maintaining full compatibility with LINO syntax.
✨ Key Features
--grpc-serverflag📋 Implementation Details
New Files Added:
protos/lino_service.proto- Protocol buffer service definitionsFoundation.Data.Doublets.Cli/LinoGrpcService.cs- GRPC service implementationGRPC_API.md- Comprehensive API documentationexamples/grpc_client_example.cs- Client usage examplesModified Files:
Foundation.Data.Doublets.Cli/Program.cs- Added GRPC server mode supportFoundation.Data.Doublets.Cli/Foundation.Data.Doublets.Cli.csproj- Added GRPC dependencies🚀 Usage Examples
Start GRPC Server:
LINO vs JSON Comparison:
Traditional JSON GRPC:
{ "operation": "create", "links": [{"source": 1, "target": 1}, {"source": 2, "target": 2}] }LINO GRPC API:
Client Usage:
🧪 Testing
The implementation has been tested with:
🔄 Current Status
💡 Benefits
🔗 Related
This implementation provides the foundation for a modern GRPC API while maintaining the unique advantages of LINO notation over traditional JSON-based APIs.
🤖 Generated with Claude Code