Skip to content

Commit b2fda6e

Browse files
committed
merge: resolve dev conflicts for cookie authentication
2 parents e6fed59 + 8455429 commit b2fda6e

39 files changed

Lines changed: 2050 additions & 2949 deletions

‎LICENSE‎

Lines changed: 675 additions & 0 deletions
Large diffs are not rendered by default.

‎cmd/kael/main.go‎

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func main() {
6060

6161
func run(settings config.Config, logger *zap.Logger) error {
6262
tlsVerify := !settings.IgnoreVerifyCerts
63-
componentClient, err := component.Connect(component.Options{CoreURL: settings.CoreHost, TLSVerify: tlsVerify, Timeout: settings.HTTPRequestTimeout, Name: settings.Name, BootstrapToken: settings.BootstrapToken, AccessKeyFile: settings.AccessKeyFilePath})
63+
componentClient, err := component.Connect(component.Options{CoreURL: settings.CoreHost, TLSVerify: tlsVerify, Timeout: settings.HTTPRequestTimeout, Name: settings.Name, BootstrapToken: settings.BootstrapToken, AccessKeyFile: settings.AccessKeyFilePath, Logger: logger})
6464
if err != nil {
6565
return err
6666
}
@@ -69,15 +69,8 @@ func run(settings config.Config, logger *zap.Logger) error {
6969
return err
7070
}
7171
defer engine.Close()
72-
var runtimeStore ports.Store
73-
switch settings.RuntimeStore {
74-
case "core":
75-
runtimeStore, err = store.NewCore(componentClient, settings.RuntimeDataFolderPath)
76-
case "jsonl":
77-
runtimeStore, err = store.NewJSONL(settings.RuntimeDataFolderPath)
78-
default:
79-
return fmt.Errorf("unsupported runtime store %q", settings.RuntimeStore)
80-
}
72+
retention := store.RetentionOptions{KeepDays: settings.TerminalAIKeepDays, MaxBytes: settings.TerminalAIMaxBytes, MinFreeBytes: settings.TerminalAIMinFreeBytes}
73+
runtimeStore, err := store.NewCore(componentClient, settings.RuntimeDataFolderPath, retention)
8174
if err != nil {
8275
return err
8376
}
@@ -91,7 +84,7 @@ func run(settings config.Config, logger *zap.Logger) error {
9184
return err
9285
}
9386
}
94-
runtimeService, err := service.New(service.Options{Store: runtimeStore, Engine: engine, Bus: bus, Logger: logger, InstanceID: settings.Name, Workers: 4, ToolResultTimeout: settings.ToolResultTimeout, ArtifactDir: settings.ArtifactFolderPath, Capability: capability, StorageKind: settings.RuntimeStore, StorageDurable: true})
87+
runtimeService, err := service.New(service.Options{Store: runtimeStore, Engine: engine, Bus: bus, Logger: logger, InstanceID: settings.Name, Workers: 4, ToolResultTimeout: settings.ToolResultTimeout, ArtifactDir: settings.ArtifactFolderPath, Capability: capability, StorageKind: "core", StorageDurable: true})
9588
if err != nil {
9689
return err
9790
}
@@ -114,7 +107,7 @@ func run(settings config.Config, logger *zap.Logger) error {
114107
heartbeatContext, cancelHeartbeat := context.WithCancel(context.Background())
115108
defer cancelHeartbeat()
116109
go componentClient.RunHeartbeat(heartbeatContext, logger)
117-
logger.Info("kael started", zap.String("address", httpServer.Addr), zap.String("version", Version), zap.String("component", settings.Name), zap.String("model", engine.Info().Model), zap.String("storage", settings.RuntimeStore))
110+
logger.Info("kael started", zap.String("address", httpServer.Addr), zap.String("version", Version), zap.String("component", settings.Name), zap.String("model", engine.Info().Model), zap.String("storage", "core"), zap.String("terminal_storage", "jsonl"))
118111
signals, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
119112
defer stop()
120113
var serveErr error

‎config_example.yml‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,18 @@ BOOTSTRAP_TOKEN: <PleaseChangeMe>
2121
# 同时写入 stdout 和 data/logs/kael.log;文件达到 50 MB 时轮转,保留 7 份、7 天。
2222
# LOG_LEVEL: INFO
2323

24-
# Runtime 状态默认通过组件签名写回 JumpServer Core。
25-
# 仅本地开发或 Core 尚未提供 runtime-store API 时预先选择 jsonl;两种 Store 不双写,
26-
# 禁止在 Core 故障时自动切到 jsonl,否则会形成缺少现有历史的第二个写权威。
27-
# RUNTIME_STORE: core
24+
# 普通会话的问答历史通过组件签名写回 JumpServer Core。
25+
# Terminal AI 固定写入 data/terminal/,保留本地可读事件 JSONL,不上传 Core。
26+
# 按最后一次消息/会话更新时间保留,活跃 Run 和有效 Panel 不清理。
27+
# 启动及每小时清理过期会话;容量达到 90% 或磁盘余量不足时,
28+
# 每分钟最多淘汰 100 个最旧的非活跃会话,目标降至 80%。
29+
# 容量统计包含 data/terminal/ 下的 store/、events/ 及快照临时文件。
30+
# 附件原始文件和普通服务日志不属于该配额。
31+
# 新请求额外预留最多 64 MiB 给在途执行;空间不足返回 storage_capacity_exceeded。
32+
# 清理既有超额数据时允许有界的临时快照开销,实际磁盘必须容纳完整快照。
33+
# TERMINAL_AI_KEEP_DAYS: 7
34+
# TERMINAL_AI_MAX_BYTES: 1073741824
35+
# TERMINAL_AI_MIN_FREE_BYTES: 1073741824
2836

2937
# 标准浏览器部署由 Lina 所在站点把 /kael/ 同源反向代理到 Kael。若网关终止 HTTPS,
3038
# 优先在这里精确填写 Lina 的外部 origin,避免 Kael 所见内部 HTTP 导致 Origin 拒绝。

0 commit comments

Comments
 (0)