mirror of
https://github.com/larksuite/cli.git
synced 2026-07-03 22:24:31 +08:00
Give each AI Agent (OpenClaw, Hermes) its own lark-cli workspace so
its Feishu calls don't overwrite the developer's local config or
collide with other Agents.
lark-cli config bind [--source openclaw|hermes] [--app-id <id>]
[--identity bot-only|user-default] [--force]
Key capabilities:
- Source auto-detected from OPENCLAW_* / HERMES_* env signals; config
written to ~/.lark-cli/<agent>/, isolated per Agent.
- Two identity presets: 'bot-only' (flag-mode default) and
'user-default'. Flag mode rejects silent bot→user escalation
without --force; TUI prompts are exempt.
- Agent-friendly stdout JSON with 'identity' + 'message' for
next-step branching.
- 'config show' and 'doctor' expose the bound 'workspace'.
- OpenClaw SecretRef resolution: plain / ${VAR} / file:+JSON Pointer
/ exec:.
27 lines
621 B
Go
27 lines
621 B
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package binding
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/larksuite/cli/internal/vfs"
|
|
)
|
|
|
|
// ReadOpenClawConfig reads and parses an openclaw.json file at the given path.
|
|
func ReadOpenClawConfig(path string) (*OpenClawRoot, error) {
|
|
data, err := vfs.ReadFile(path)
|
|
if err != nil {
|
|
return nil, err // caller (bind.go) formats user-facing message with path context
|
|
}
|
|
|
|
var root OpenClawRoot
|
|
if err := json.Unmarshal(data, &root); err != nil {
|
|
return nil, fmt.Errorf("invalid JSON in %s: %w", path, err)
|
|
}
|
|
|
|
return &root, nil
|
|
}
|