Files
OpenCode 68a9071cf1 feat: reconcile local master with origin (exa/hot-platform hunters, leaks ledger, latest results)
Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
2026-08-07 12:53:47 +08:00

1 line
13 KiB
JSON

{"repo": "chromatischer/tether", "files": {"internal/config/config_test.go": {"eb0482cbcf56e178283bef309f773e100807b78f": {"t": 1785745650.681618, "n": 3852, "h": "7f0139cfc5ffd19f", "c": "package config\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"golang.org/x/crypto/bcrypt\"\n)\n\nfunc writeTempConfig(t *testing.T, dir string, yaml string) string {\n\tt.Helper()\n\tp := filepath.Join(dir, \"tether.yaml\")\n\tif err := os.WriteFile(p, []byte(yaml), 0o600); err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn p\n}\n\nfunc TestLoad_DefaultsAndRequiredFields(t *testing.T) {\n\tdir := t.TempDir()\n\th, err := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\n\")\n\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.LogLevel == \"\" {\n\t\tt.Fatalf(\"expected log_level default to be set\")\n\t}\n\tif cfg.DB.Path == \"\" {\n\t\tt.Fatalf(\"expected db.path default\")\n\t}\n\tif cfg.SSH.ListenAddr != \":2222\" {\n\t\tt.Fatalf(\"expected ssh.listen_addr default :2222, got %q\", cfg.SSH.ListenAddr)\n\t}\n\tif cfg.SSH.HostKeyPath == \"\" {\n\t\tt.Fatalf(\"expected ssh.host_key_path default\")\n\t}\n\tif cfg.SSH.AuthorizedKeysPath == \"\" {\n\t\tt.Fatalf(\"expected ssh.authorized_keys_path default\")\n\t}\n\tif cfg.OpenRouter.BaseURL == \"\" || cfg.OpenRouter.Model == \"\" {\n\t\tt.Fatalf(\"expected openrouter defaults\")\n\t}\n\tif cfg.LLMProvider() != \"openrouter\" {\n\t\tt.Fatalf(\"expected openrouter provider default, got %q\", cfg.LLMProvider())\n\t}\n\tif cfg.Secrets.TTLHours != 24 {\n\t\tt.Fatalf(\"expected secrets.ttl_hours default 24, got %d\", cfg.Secrets.TTLHours)\n\t}\n\tif cfg.Signal.SignalCLIPath != \"signal-cli\" {\n\t\tt.Fatalf(\"expected signal.signal_cli_path default signal-cli, got %q\", cfg.Signal.SignalCLIPath)\n\t}\n\tif cfg.Signal.HTTPAddr != \"127.0.0.1:17800\" {\n\t\tt.Fatalf(\"expected signal.http_addr default 127.0.0.1:17800, got %q\", cfg.Signal.HTTPAddr)\n\t}\n}\n\nfunc TestLoad_RequiresPortalPasswordHash(t *testing.T) {\n\tdir := t.TempDir()\n\tp := writeTempConfig(t, dir, \"log_level: info\\n\")\n\t_, err := Load(p)\n\tif err == nil {\n\t\tt.Fatalf(\"expected error\")\n\t}\n}\n\nfunc TestLoad_EnvFallbacks(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tt.Setenv(\"OPENROUTER_API_KEY\", \"k-openrouter\")\n\tt.Setenv(\"DEEPSEEK_API_KEY\", \"k-deepseek\")\n\tt.Setenv(\"TETHER_MASTER_KEY\", \"k-master\")\n\tt.Setenv(\"TETHER_SIGNAL_NUMBER\", \"+123\")\n\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nopenrouter: {}\\nsecrets: {}\\nsignal: {}\\n\")\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.OpenRouter.APIKey != \"k-openrouter\" {\n\t\tt.Fatalf(\"expected OPENROUTER_API_KEY fallback\")\n\t}\n\tif cfg.DeepSeek.APIKey != \"k-deepseek\" {\n\t\tt.Fatalf(\"expected DEEPSEEK_API_KEY fallback\")\n\t}\n\tif cfg.Secrets.MasterKey != \"k-master\" {\n\t\tt.Fatalf(\"expected TETHER_MASTER_KEY fallback\")\n\t}\n\tif cfg.Signal.AccountNumber != \"+123\" {\n\t\tt.Fatalf(\"expected TETHER_SIGNAL_NUMBER fallback\")\n\t}\n}\n\nfunc TestLoad_DeepSeekProvider(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tt.Setenv(\"DEEPSEEK_API_KEY\", \"k-deepseek\")\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nllm:\\n provider: deepseek\\ndeepseek:\\n model: deepseek-reasoner\\n\")\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.LLMProvider() != \"deepseek\" {\n\t\tt.Fatalf(\"expected deepseek provider, got %q\", cfg.LLMProvider())\n\t}\n\tif cfg.LLMAPIKey() != \"k-deepseek\" || cfg.LLMModel() != \"deepseek-reasoner\" || cfg.LLMBaseURL() != \"https://api.deepseek.com\" {\n\t\tt.Fatalf(\"unexpected deepseek llm settings\")\n\t}\n}\n\nfunc TestLoad_RejectsUnknownLLMProvider(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nllm:\\n provider: nope\\n\")\n\tif _, err := Load(p); err == nil {\n\t\tt.Fatalf(\"expected provider validation error\")\n\t}\n}\n"}, "4a87802efcdc2db046394033793edd4e78e355e0": {"t": 1785755386.821308, "n": 3852, "h": "7f0139cfc5ffd19f", "c": "package config\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"golang.org/x/crypto/bcrypt\"\n)\n\nfunc writeTempConfig(t *testing.T, dir string, yaml string) string {\n\tt.Helper()\n\tp := filepath.Join(dir, \"tether.yaml\")\n\tif err := os.WriteFile(p, []byte(yaml), 0o600); err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn p\n}\n\nfunc TestLoad_DefaultsAndRequiredFields(t *testing.T) {\n\tdir := t.TempDir()\n\th, err := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\n\")\n\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.LogLevel == \"\" {\n\t\tt.Fatalf(\"expected log_level default to be set\")\n\t}\n\tif cfg.DB.Path == \"\" {\n\t\tt.Fatalf(\"expected db.path default\")\n\t}\n\tif cfg.SSH.ListenAddr != \":2222\" {\n\t\tt.Fatalf(\"expected ssh.listen_addr default :2222, got %q\", cfg.SSH.ListenAddr)\n\t}\n\tif cfg.SSH.HostKeyPath == \"\" {\n\t\tt.Fatalf(\"expected ssh.host_key_path default\")\n\t}\n\tif cfg.SSH.AuthorizedKeysPath == \"\" {\n\t\tt.Fatalf(\"expected ssh.authorized_keys_path default\")\n\t}\n\tif cfg.OpenRouter.BaseURL == \"\" || cfg.OpenRouter.Model == \"\" {\n\t\tt.Fatalf(\"expected openrouter defaults\")\n\t}\n\tif cfg.LLMProvider() != \"openrouter\" {\n\t\tt.Fatalf(\"expected openrouter provider default, got %q\", cfg.LLMProvider())\n\t}\n\tif cfg.Secrets.TTLHours != 24 {\n\t\tt.Fatalf(\"expected secrets.ttl_hours default 24, got %d\", cfg.Secrets.TTLHours)\n\t}\n\tif cfg.Signal.SignalCLIPath != \"signal-cli\" {\n\t\tt.Fatalf(\"expected signal.signal_cli_path default signal-cli, got %q\", cfg.Signal.SignalCLIPath)\n\t}\n\tif cfg.Signal.HTTPAddr != \"127.0.0.1:17800\" {\n\t\tt.Fatalf(\"expected signal.http_addr default 127.0.0.1:17800, got %q\", cfg.Signal.HTTPAddr)\n\t}\n}\n\nfunc TestLoad_RequiresPortalPasswordHash(t *testing.T) {\n\tdir := t.TempDir()\n\tp := writeTempConfig(t, dir, \"log_level: info\\n\")\n\t_, err := Load(p)\n\tif err == nil {\n\t\tt.Fatalf(\"expected error\")\n\t}\n}\n\nfunc TestLoad_EnvFallbacks(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tt.Setenv(\"OPENROUTER_API_KEY\", \"k-openrouter\")\n\tt.Setenv(\"DEEPSEEK_API_KEY\", \"k-deepseek\")\n\tt.Setenv(\"TETHER_MASTER_KEY\", \"k-master\")\n\tt.Setenv(\"TETHER_SIGNAL_NUMBER\", \"+123\")\n\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nopenrouter: {}\\nsecrets: {}\\nsignal: {}\\n\")\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.OpenRouter.APIKey != \"k-openrouter\" {\n\t\tt.Fatalf(\"expected OPENROUTER_API_KEY fallback\")\n\t}\n\tif cfg.DeepSeek.APIKey != \"k-deepseek\" {\n\t\tt.Fatalf(\"expected DEEPSEEK_API_KEY fallback\")\n\t}\n\tif cfg.Secrets.MasterKey != \"k-master\" {\n\t\tt.Fatalf(\"expected TETHER_MASTER_KEY fallback\")\n\t}\n\tif cfg.Signal.AccountNumber != \"+123\" {\n\t\tt.Fatalf(\"expected TETHER_SIGNAL_NUMBER fallback\")\n\t}\n}\n\nfunc TestLoad_DeepSeekProvider(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tt.Setenv(\"DEEPSEEK_API_KEY\", \"k-deepseek\")\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nllm:\\n provider: deepseek\\ndeepseek:\\n model: deepseek-reasoner\\n\")\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.LLMProvider() != \"deepseek\" {\n\t\tt.Fatalf(\"expected deepseek provider, got %q\", cfg.LLMProvider())\n\t}\n\tif cfg.LLMAPIKey() != \"k-deepseek\" || cfg.LLMModel() != \"deepseek-reasoner\" || cfg.LLMBaseURL() != \"https://api.deepseek.com\" {\n\t\tt.Fatalf(\"unexpected deepseek llm settings\")\n\t}\n}\n\nfunc TestLoad_RejectsUnknownLLMProvider(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nllm:\\n provider: nope\\n\")\n\tif _, err := Load(p); err == nil {\n\t\tt.Fatalf(\"expected provider validation error\")\n\t}\n}\n"}, "0c46f8d80d12777712c124a3121d6db3c2d48009": {"t": 1785755388.0682938, "n": 2562, "h": "405665303dc732bb", "c": "package config\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"golang.org/x/crypto/bcrypt\"\n)\n\nfunc writeTempConfig(t *testing.T, dir string, yaml string) string {\n\tt.Helper()\n\tp := filepath.Join(dir, \"tether.yaml\")\n\tif err := os.WriteFile(p, []byte(yaml), 0o600); err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn p\n}\n\nfunc TestLoad_DefaultsAndRequiredFields(t *testing.T) {\n\tdir := t.TempDir()\n\th, err := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\n\")\n\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.LogLevel == \"\" {\n\t\tt.Fatalf(\"expected log_level default to be set\")\n\t}\n\tif cfg.DB.Path == \"\" {\n\t\tt.Fatalf(\"expected db.path default\")\n\t}\n\tif cfg.SSH.ListenAddr != \":2222\" {\n\t\tt.Fatalf(\"expected ssh.listen_addr default :2222, got %q\", cfg.SSH.ListenAddr)\n\t}\n\tif cfg.SSH.HostKeyPath == \"\" {\n\t\tt.Fatalf(\"expected ssh.host_key_path default\")\n\t}\n\tif cfg.SSH.AuthorizedKeysPath == \"\" {\n\t\tt.Fatalf(\"expected ssh.authorized_keys_path default\")\n\t}\n\tif cfg.OpenRouter.BaseURL == \"\" || cfg.OpenRouter.Model == \"\" {\n\t\tt.Fatalf(\"expected openrouter defaults\")\n\t}\n\tif cfg.Secrets.TTLHours != 24 {\n\t\tt.Fatalf(\"expected secrets.ttl_hours default 24, got %d\", cfg.Secrets.TTLHours)\n\t}\n\tif cfg.Signal.SignalCLIPath != \"signal-cli\" {\n\t\tt.Fatalf(\"expected signal.signal_cli_path default signal-cli, got %q\", cfg.Signal.SignalCLIPath)\n\t}\n\tif cfg.Signal.HTTPAddr != \"127.0.0.1:17800\" {\n\t\tt.Fatalf(\"expected signal.http_addr default 127.0.0.1:17800, got %q\", cfg.Signal.HTTPAddr)\n\t}\n}\n\nfunc TestLoad_RequiresPortalPasswordHash(t *testing.T) {\n\tdir := t.TempDir()\n\tp := writeTempConfig(t, dir, \"log_level: info\\n\")\n\t_, err := Load(p)\n\tif err == nil {\n\t\tt.Fatalf(\"expected error\")\n\t}\n}\n\nfunc TestLoad_EnvFallbacks(t *testing.T) {\n\tdir := t.TempDir()\n\th, _ := bcrypt.GenerateFromPassword([]byte(\"pw\"), bcrypt.MinCost)\n\n\tt.Setenv(\"OPENROUTER_API_KEY\", \"k-openrouter\")\n\tt.Setenv(\"TETHER_MASTER_KEY\", \"k-master\")\n\tt.Setenv(\"TETHER_SIGNAL_NUMBER\", \"+123\")\n\n\tp := writeTempConfig(t, dir, \"ssh:\\n portal_password_hash: \\\"\"+string(h)+\"\\\"\\nopenrouter: {}\\nsecrets: {}\\nsignal: {}\\n\")\n\tcfg, err := Load(p)\n\tif err != nil {\n\t\tt.Fatalf(\"Load: %v\", err)\n\t}\n\tif cfg.OpenRouter.APIKey != \"k-openrouter\" {\n\t\tt.Fatalf(\"expected OPENROUTER_API_KEY fallback\")\n\t}\n\tif cfg.Secrets.MasterKey != \"k-master\" {\n\t\tt.Fatalf(\"expected TETHER_MASTER_KEY fallback\")\n\t}\n\tif cfg.Signal.AccountNumber != \"+123\" {\n\t\tt.Fatalf(\"expected TETHER_SIGNAL_NUMBER fallback\")\n\t}\n}\n"}}, "internal/config/llm.go": {"eb0482cbcf56e178283bef309f773e100807b78f": {"t": 1786068293.6527312, "n": 937, "h": "a885f654141d25c5", "c": "package config\n\nimport \"strings\"\n\nfunc (c *Config) LLMProvider() string {\n\tif c == nil {\n\t\treturn \"openrouter\"\n\t}\n\tp := strings.ToLower(strings.TrimSpace(c.LLM.Provider))\n\tif p == \"\" {\n\t\treturn \"openrouter\"\n\t}\n\treturn p\n}\n\nfunc (c *Config) LLMAPIKey() string {\n\tif c == nil {\n\t\treturn \"\"\n\t}\n\tswitch c.LLMProvider() {\n\tcase \"deepseek\":\n\t\treturn c.DeepSeek.APIKey\n\tdefault:\n\t\treturn c.OpenRouter.APIKey\n\t}\n}\n\nfunc (c *Config) LLMBaseURL() string {\n\tif c == nil {\n\t\treturn \"\"\n\t}\n\tswitch c.LLMProvider() {\n\tcase \"deepseek\":\n\t\treturn c.DeepSeek.BaseURL\n\tdefault:\n\t\treturn c.OpenRouter.BaseURL\n\t}\n}\n\nfunc (c *Config) LLMModel() string {\n\tif c == nil {\n\t\treturn \"\"\n\t}\n\tswitch c.LLMProvider() {\n\tcase \"deepseek\":\n\t\treturn c.DeepSeek.Model\n\tdefault:\n\t\treturn c.OpenRouter.Model\n\t}\n}\n\nfunc (c *Config) LLMAPIKeyEnvName() string {\n\tswitch c.LLMProvider() {\n\tcase \"deepseek\":\n\t\treturn \"DEEPSEEK_API_KEY\"\n\tdefault:\n\t\treturn \"OPENROUTER_API_KEY\"\n\t}\n}\n"}}}}