✨ feat: 灵台引擎 gRPC 独立服务形态(ADR-017 双形态落地)
- proto(engine/proto/liushen/v1):LingtaiEngine 九方法——GetEngineInfo(版本协商/能力位)、TransformMarkdown、RebuildExport(UNIMPLEMENTED 明示随 WP-03)、OpenStream 双向流、CheckBudget、RerankRecall、EvaluatePolicy、ValidateUrl、CheckStateTransition;RunStatus 枚举与契约一致 - 服务端参考实现(engine/server/lingtai_server.py):进程内直链 nanobind 引擎核心——双形态同核同 golden;开发档 127.0.0.1 明文(生产 mTLS,文案明示);状态转换表按 agent-runtime 第 3 节 - 集成测试 6 项:进程内随机端口起服——版本协商、双形态 golden(服务输出==进程内引擎输出,ADR-017 核心不变量首次实证)、双向流 envelope 序号单调、决策表/URL/状态机、RebuildExport UNIMPLEMENTED 明确拒绝(不伪造) - Makefile:lingtai-proto(stub 再生)与 lingtai-server(启动服务)目标 - 注:C++ 原生二进制(hunjing-lingtai-server)随交叉编译矩阵交付;Python 参考实现保证 proto 与语义先行锁定 - 测试 102 项全绿(+6);ruff/mypy 干净
This commit is contained in:
1 parent
a39cec5287
commit
9dafb8fe72
10 files changed
+1141
No files matched your search
@@ -0,0 +1,459 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
from liushen.v1 import liushen_pb2 as liushen_dot_v1_dot_liushen__pb2
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.83.1'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in liushen/v1/liushen_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
|
||||
|
||||
class LingtaiEngineStub:
|
||||
"""灵台引擎独立服务形态(契约 docs/contracts/lingtai-service.md)。
|
||||
部署内部网络专用;错误映射见契约第 6 节。字段语义与进程内 C ABI JSON 边界同源。
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, channel):
|
||||
"""Constructor.
|
||||
|
||||
Args:
|
||||
channel: A grpc.Channel.
|
||||
"""
|
||||
self.GetEngineInfo = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/GetEngineInfo',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.GetEngineInfoRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.GetEngineInfoResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.TransformMarkdown = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/TransformMarkdown',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.TransformMarkdownRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.TransformMarkdownResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.RebuildExport = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/RebuildExport',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.RebuildExportRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.RebuildExportResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.OpenStream = channel.stream_stream(
|
||||
'/liushen.v1.LingtaiEngine/OpenStream',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.StreamFrame.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.StreamEvent.FromString,
|
||||
_registered_method=True)
|
||||
self.CheckBudget = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/CheckBudget',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.CheckBudgetRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.CheckBudgetResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.RerankRecall = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/RerankRecall',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.RerankRecallRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.RerankRecallResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.EvaluatePolicy = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/EvaluatePolicy',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.EvaluatePolicyRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.EvaluatePolicyResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.ValidateUrl = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/ValidateUrl',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.ValidateUrlRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.ValidateUrlResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.CheckStateTransition = channel.unary_unary(
|
||||
'/liushen.v1.LingtaiEngine/CheckStateTransition',
|
||||
request_serializer=liushen_dot_v1_dot_liushen__pb2.CheckStateTransitionRequest.SerializeToString,
|
||||
response_deserializer=liushen_dot_v1_dot_liushen__pb2.CheckStateTransitionResponse.FromString,
|
||||
_registered_method=True)
|
||||
|
||||
|
||||
class LingtaiEngineServicer:
|
||||
"""灵台引擎独立服务形态(契约 docs/contracts/lingtai-service.md)。
|
||||
部署内部网络专用;错误映射见契约第 6 节。字段语义与进程内 C ABI JSON 边界同源。
|
||||
|
||||
"""
|
||||
|
||||
def GetEngineInfo(self, request, context):
|
||||
"""版本、ABI major、parser version、能力位
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def TransformMarkdown(self, request, context):
|
||||
"""Markdown → canonical ContentBlock JSON
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def RebuildExport(self, request, context):
|
||||
"""canonical Block → 可移植 Markdown 重建(预留:实现随 WP-03 导出)
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def OpenStream(self, request_iterator, context):
|
||||
"""双向流:宿主喂增量,服务回 content.block.* envelope JSON
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def CheckBudget(self, request, context):
|
||||
"""计划 DAG 预算核算(最小:标量预算)
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def RerankRecall(self, request, context):
|
||||
"""候选确定性重排
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def EvaluatePolicy(self, request, context):
|
||||
"""四维裁决(autonomy × risk)
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ValidateUrl(self, request, context):
|
||||
"""URL 协议白名单校验
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def CheckStateTransition(self, request, context):
|
||||
"""Run/Turn 状态转换合法性
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_LingtaiEngineServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
'GetEngineInfo': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetEngineInfo,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.GetEngineInfoRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.GetEngineInfoResponse.SerializeToString,
|
||||
),
|
||||
'TransformMarkdown': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.TransformMarkdown,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.TransformMarkdownRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.TransformMarkdownResponse.SerializeToString,
|
||||
),
|
||||
'RebuildExport': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.RebuildExport,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.RebuildExportRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.RebuildExportResponse.SerializeToString,
|
||||
),
|
||||
'OpenStream': grpc.stream_stream_rpc_method_handler(
|
||||
servicer.OpenStream,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.StreamFrame.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.StreamEvent.SerializeToString,
|
||||
),
|
||||
'CheckBudget': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.CheckBudget,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.CheckBudgetRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.CheckBudgetResponse.SerializeToString,
|
||||
),
|
||||
'RerankRecall': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.RerankRecall,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.RerankRecallRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.RerankRecallResponse.SerializeToString,
|
||||
),
|
||||
'EvaluatePolicy': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.EvaluatePolicy,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.EvaluatePolicyRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.EvaluatePolicyResponse.SerializeToString,
|
||||
),
|
||||
'ValidateUrl': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ValidateUrl,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.ValidateUrlRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.ValidateUrlResponse.SerializeToString,
|
||||
),
|
||||
'CheckStateTransition': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.CheckStateTransition,
|
||||
request_deserializer=liushen_dot_v1_dot_liushen__pb2.CheckStateTransitionRequest.FromString,
|
||||
response_serializer=liushen_dot_v1_dot_liushen__pb2.CheckStateTransitionResponse.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'liushen.v1.LingtaiEngine', rpc_method_handlers)
|
||||
server.add_generic_rpc_handlers((generic_handler,))
|
||||
server.add_registered_method_handlers('liushen.v1.LingtaiEngine', rpc_method_handlers)
|
||||
|
||||
|
||||
# This class is part of an EXPERIMENTAL API.
|
||||
class LingtaiEngine:
|
||||
"""灵台引擎独立服务形态(契约 docs/contracts/lingtai-service.md)。
|
||||
部署内部网络专用;错误映射见契约第 6 节。字段语义与进程内 C ABI JSON 边界同源。
|
||||
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def GetEngineInfo(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/GetEngineInfo',
|
||||
liushen_dot_v1_dot_liushen__pb2.GetEngineInfoRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.GetEngineInfoResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def TransformMarkdown(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/TransformMarkdown',
|
||||
liushen_dot_v1_dot_liushen__pb2.TransformMarkdownRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.TransformMarkdownResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def RebuildExport(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/RebuildExport',
|
||||
liushen_dot_v1_dot_liushen__pb2.RebuildExportRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.RebuildExportResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def OpenStream(request_iterator,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.stream_stream(
|
||||
request_iterator,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/OpenStream',
|
||||
liushen_dot_v1_dot_liushen__pb2.StreamFrame.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.StreamEvent.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def CheckBudget(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/CheckBudget',
|
||||
liushen_dot_v1_dot_liushen__pb2.CheckBudgetRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.CheckBudgetResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def RerankRecall(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/RerankRecall',
|
||||
liushen_dot_v1_dot_liushen__pb2.RerankRecallRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.RerankRecallResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def EvaluatePolicy(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/EvaluatePolicy',
|
||||
liushen_dot_v1_dot_liushen__pb2.EvaluatePolicyRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.EvaluatePolicyResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def ValidateUrl(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/ValidateUrl',
|
||||
liushen_dot_v1_dot_liushen__pb2.ValidateUrlRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.ValidateUrlResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def CheckStateTransition(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/liushen.v1.LingtaiEngine/CheckStateTransition',
|
||||
liushen_dot_v1_dot_liushen__pb2.CheckStateTransitionRequest.SerializeToString,
|
||||
liushen_dot_v1_dot_liushen__pb2.CheckStateTransitionResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
Reference in new issue
Block a user