Its own binary for Windows, macOS and Linux, carrying no server code. It reads the files there, cuts them, has the gateway embed them with the person's key and sends text and vectors for what changed only: a SQLite ledger on the machine remembers each document's file, size, time, digest and what happened, so a rerun reads nothing unchanged, a file skipped stays skipped until --retry, and --delete removes only what this machine sent under the paths given. --dry-run says what would leave the machine. Commands: login, collections, sync, status, history, formats. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
25 lines
703 B
Go
25 lines
703 B
Go
package main
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// The client goes onto employees' laptops: none of the server, agent, store
|
|
// or setup code may come with it, and it must build where llmgw does not.
|
|
func TestTheClientCarriesNoServerCode(t *testing.T) {
|
|
out, err := exec.Command("go", "list", "-deps", ".").Output()
|
|
if err != nil {
|
|
t.Skipf("go list: %v", err)
|
|
}
|
|
for _, dep := range strings.Fields(string(out)) {
|
|
for _, banned := range []string{"/internal/store", "/internal/router", "/internal/agent", "/internal/control",
|
|
"/internal/cli", "/internal/guard", "github.com/jackc/pgx"} {
|
|
if strings.Contains(dep, banned) {
|
|
t.Errorf("llmgw-kb depends on %s", dep)
|
|
}
|
|
}
|
|
}
|
|
}
|