@xdarkicex/openclaw-memory-libravdb 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/docs/README.md +14 -0
- package/docs/architecture-decisions/README.md +6 -0
- package/docs/architecture-decisions/adr-001-onnx-over-ollama.md +21 -0
- package/docs/architecture-decisions/adr-002-libravdb-over-lancedb.md +19 -0
- package/docs/architecture-decisions/adr-003-convex-gating-over-threshold.md +27 -0
- package/docs/architecture-decisions/adr-004-sidecar-over-native-ts.md +21 -0
- package/docs/architecture.md +188 -0
- package/docs/contributing.md +76 -0
- package/docs/dependencies.md +38 -0
- package/docs/embedding-profiles.md +42 -0
- package/docs/gating.md +329 -0
- package/docs/implementation.md +381 -0
- package/docs/installation.md +272 -0
- package/docs/mathematics.md +695 -0
- package/docs/models.md +63 -0
- package/docs/problem.md +64 -0
- package/docs/security.md +86 -0
- package/openclaw.plugin.json +84 -0
- package/package.json +41 -0
- package/scripts/build-sidecar.sh +30 -0
- package/scripts/postinstall.js +169 -0
- package/scripts/setup.sh +20 -0
- package/scripts/setup.ts +505 -0
- package/scripts/sidecar-release.d.ts +4 -0
- package/scripts/sidecar-release.js +17 -0
- package/sidecar/cmd/inspect_onnx/main.go +105 -0
- package/sidecar/compact/gate.go +273 -0
- package/sidecar/compact/gate_test.go +85 -0
- package/sidecar/compact/summarize.go +345 -0
- package/sidecar/compact/summarize_test.go +319 -0
- package/sidecar/compact/tokens.go +11 -0
- package/sidecar/config/config.go +119 -0
- package/sidecar/config/config_test.go +75 -0
- package/sidecar/embed/engine.go +696 -0
- package/sidecar/embed/engine_test.go +349 -0
- package/sidecar/embed/matryoshka.go +93 -0
- package/sidecar/embed/matryoshka_test.go +150 -0
- package/sidecar/embed/onnx_local.go +319 -0
- package/sidecar/embed/onnx_local_test.go +159 -0
- package/sidecar/embed/profile_contract_test.go +71 -0
- package/sidecar/embed/profile_eval_test.go +923 -0
- package/sidecar/embed/profiles.go +39 -0
- package/sidecar/go.mod +21 -0
- package/sidecar/go.sum +30 -0
- package/sidecar/health/check.go +33 -0
- package/sidecar/health/check_test.go +55 -0
- package/sidecar/main.go +151 -0
- package/sidecar/model/encoder.go +222 -0
- package/sidecar/model/registry.go +262 -0
- package/sidecar/model/registry_test.go +102 -0
- package/sidecar/model/seq2seq.go +133 -0
- package/sidecar/server/rpc.go +343 -0
- package/sidecar/server/rpc_test.go +350 -0
- package/sidecar/server/transport.go +160 -0
- package/sidecar/store/libravdb.go +676 -0
- package/sidecar/store/libravdb_test.go +472 -0
- package/sidecar/summarize/engine.go +360 -0
- package/sidecar/summarize/engine_test.go +148 -0
- package/sidecar/summarize/onnx_local.go +494 -0
- package/sidecar/summarize/onnx_local_test.go +48 -0
- package/sidecar/summarize/profiles.go +52 -0
- package/sidecar/summarize/tokenizer.go +13 -0
- package/sidecar/summarize/tokenizer_hf.go +76 -0
- package/sidecar/summarize/util.go +13 -0
- package/src/cli.ts +205 -0
- package/src/context-engine.ts +195 -0
- package/src/index.ts +27 -0
- package/src/memory-provider.ts +24 -0
- package/src/openclaw-plugin-sdk.d.ts +53 -0
- package/src/plugin-runtime.ts +67 -0
- package/src/recall-cache.ts +34 -0
- package/src/recall-utils.ts +22 -0
- package/src/rpc.ts +84 -0
- package/src/scoring.ts +58 -0
- package/src/sidecar.ts +506 -0
- package/src/tokens.ts +36 -0
- package/src/types.ts +146 -0
- package/tsconfig.json +20 -0
- package/tsconfig.tests.json +12 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
package server
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"bufio"
|
|
5
|
+
"context"
|
|
6
|
+
"encoding/json"
|
|
7
|
+
"errors"
|
|
8
|
+
"fmt"
|
|
9
|
+
"io"
|
|
10
|
+
"net"
|
|
11
|
+
"os"
|
|
12
|
+
"path/filepath"
|
|
13
|
+
"runtime"
|
|
14
|
+
"strings"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
var ErrServerClosed = errors.New("sidecar server closed")
|
|
18
|
+
|
|
19
|
+
type request struct {
|
|
20
|
+
JSONRPC string `json:"jsonrpc"`
|
|
21
|
+
ID any `json:"id"`
|
|
22
|
+
Method string `json:"method"`
|
|
23
|
+
Params json.RawMessage `json:"params"`
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type response struct {
|
|
27
|
+
JSONRPC string `json:"jsonrpc"`
|
|
28
|
+
ID any `json:"id,omitempty"`
|
|
29
|
+
Result any `json:"result,omitempty"`
|
|
30
|
+
Error *responseError `json:"error,omitempty"`
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type responseError struct {
|
|
34
|
+
Message string `json:"message"`
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
func Listen() (net.Listener, string, func(), error) {
|
|
38
|
+
if runtime.GOOS == "windows" {
|
|
39
|
+
listener, err := net.Listen("tcp", "127.0.0.1:0")
|
|
40
|
+
if err != nil {
|
|
41
|
+
return nil, "", nil, err
|
|
42
|
+
}
|
|
43
|
+
return listener, "tcp:" + listener.Addr().String(), func() {
|
|
44
|
+
_ = listener.Close()
|
|
45
|
+
}, nil
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
dir, err := os.MkdirTemp("", "libravdb-sidecar-*")
|
|
49
|
+
if err != nil {
|
|
50
|
+
return nil, "", nil, err
|
|
51
|
+
}
|
|
52
|
+
path := filepath.Join(dir, "rpc.sock")
|
|
53
|
+
listener, err := net.Listen("unix", path)
|
|
54
|
+
if err != nil {
|
|
55
|
+
_ = os.RemoveAll(dir)
|
|
56
|
+
return nil, "", nil, err
|
|
57
|
+
}
|
|
58
|
+
return listener, path, func() {
|
|
59
|
+
_ = listener.Close()
|
|
60
|
+
_ = os.Remove(path)
|
|
61
|
+
_ = os.RemoveAll(dir)
|
|
62
|
+
}, nil
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
func Serve(ctx context.Context, listener net.Listener, srv *Server) error {
|
|
66
|
+
if listener == nil {
|
|
67
|
+
return errors.New("listener is required")
|
|
68
|
+
}
|
|
69
|
+
if srv == nil {
|
|
70
|
+
return errors.New("server is required")
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
go func() {
|
|
74
|
+
<-ctx.Done()
|
|
75
|
+
_ = listener.Close()
|
|
76
|
+
}()
|
|
77
|
+
|
|
78
|
+
for {
|
|
79
|
+
conn, err := listener.Accept()
|
|
80
|
+
if err != nil {
|
|
81
|
+
if ctx.Err() != nil || errors.Is(err, net.ErrClosed) {
|
|
82
|
+
return ErrServerClosed
|
|
83
|
+
}
|
|
84
|
+
return err
|
|
85
|
+
}
|
|
86
|
+
go serveConn(ctx, conn, srv)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
func serveConn(ctx context.Context, conn net.Conn, srv *Server) {
|
|
91
|
+
defer conn.Close()
|
|
92
|
+
|
|
93
|
+
reader := bufio.NewReader(conn)
|
|
94
|
+
for {
|
|
95
|
+
select {
|
|
96
|
+
case <-ctx.Done():
|
|
97
|
+
return
|
|
98
|
+
default:
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
line, err := reader.ReadString('\n')
|
|
102
|
+
if err != nil {
|
|
103
|
+
if errors.Is(err, io.EOF) {
|
|
104
|
+
return
|
|
105
|
+
}
|
|
106
|
+
return
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
line = strings.TrimSpace(line)
|
|
110
|
+
if line == "" {
|
|
111
|
+
continue
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
var req request
|
|
115
|
+
if err := json.Unmarshal([]byte(line), &req); err != nil {
|
|
116
|
+
_ = writeResponse(conn, response{
|
|
117
|
+
JSONRPC: "2.0",
|
|
118
|
+
Error: &responseError{Message: fmt.Sprintf("invalid request: %v", err)},
|
|
119
|
+
})
|
|
120
|
+
continue
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
var params any
|
|
124
|
+
if len(req.Params) > 0 {
|
|
125
|
+
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
|
126
|
+
_ = writeResponse(conn, response{
|
|
127
|
+
JSONRPC: "2.0",
|
|
128
|
+
ID: req.ID,
|
|
129
|
+
Error: &responseError{Message: fmt.Sprintf("invalid params: %v", err)},
|
|
130
|
+
})
|
|
131
|
+
continue
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
result, err := srv.Call(ctx, req.Method, params)
|
|
136
|
+
if err != nil {
|
|
137
|
+
_ = writeResponse(conn, response{
|
|
138
|
+
JSONRPC: "2.0",
|
|
139
|
+
ID: req.ID,
|
|
140
|
+
Error: &responseError{Message: err.Error()},
|
|
141
|
+
})
|
|
142
|
+
continue
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
_ = writeResponse(conn, response{
|
|
146
|
+
JSONRPC: "2.0",
|
|
147
|
+
ID: req.ID,
|
|
148
|
+
Result: result,
|
|
149
|
+
})
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
func writeResponse(w io.Writer, resp response) error {
|
|
154
|
+
data, err := json.Marshal(resp)
|
|
155
|
+
if err != nil {
|
|
156
|
+
return err
|
|
157
|
+
}
|
|
158
|
+
_, err = io.WriteString(w, string(data)+"\n")
|
|
159
|
+
return err
|
|
160
|
+
}
|