Loggie CLI
代理优先发现、API代理调用和事件消费。该自述文件随 @loggie-ai/cli 包;命令标志定义在 cli.ts 暴露在 loggie <command> --help.
安装和验证
需要Node 20或更新版本。
npm install -g @loggie-ai/cli
loggie init
loggie status
API密钥优先级: --api-key (别名 --key)或 --profile, LOGGIE_API_KEY,然后是活动配置文件 ~/.loggie/config.json. 更喜欢互动 init 或者选择环境变量,而不是将凭证放入shell历史记录中。 loggie logout 删除所有保存的配置文件;它不会撤销服务器端密钥或取消设置的环境变量。
默认服务器为 https://app.loggie.ai. 集 LOGGIE_SERVER_URL 以覆盖它,例如用于本地开发。看到 config.ts 用于分辨率和存储。
转换配置文件
将每个代理API密钥保存在本地名称下,然后切换后续命令使用的配置文件:
loggie init --profile work
loggie init --profile personal
loggie profiles list
loggie profiles use work
loggie status
init 在保存之前验证密钥并激活保存的配置文件。没有 --profile,它更新活动概要文件,或创建 default 如果不存在config。现有的单键配置显示为 default 并在添加另一个配置文件时保留。名称可以包含字母、数字、“。”、“_”和“-”,必须以字母或数字开头,长度不超过64个字符。
每个配置文件保存其服务器URL。使用 loggie init --profile local --server-url http://localhost:5173 对于本地配置文件; LOGGIE_SERVER_URL 还在初始化期间提供URL。新的配置文件使用默认服务器,除非被覆盖。重新初始化概要文件将保留其保存的服务器,除非被覆盖。
profiles list 返回名称、服务器url和不带键的活动选择。 profiles use 报告仍然覆盖已保存凭据或服务器的环境变量。 --api-key 和 LOGGIE_API_KEY 保留对活动配置文件的优先级; LOGGIE_SERVER_URL 覆盖其保存的服务器。 status 报告有效的认证源。 profile 的别名 profiles;使用 --pretty 读取可读的JSON。
当使用保存的进度时,事件命令通过验证概要文件 /api/setup. 一个显式的 pull --since <cursor> 读取提要而不加载保存的进度。游标和重试计数的范围是服务器和概要文件ID,包括命名游标,因此旋转API键可以保留进度。如果存在未限定作用域的游标,CLI将停止并报告其位置。在验证所选概要文件拥有这些事件之后,请通过 --replay-from <cursor> 来 listen 或者 watch (或 --since <cursor> 来 pull). 使用 --replay-from latest 从现在的位置开始。即使没有事件到达,也会保存显式的消费者简历;原始的未作用域状态保持不变。
事件HTTP读取重试速率限制响应最多两次时 Retry-After 指定最多60秒的等待时间。每次重试都保留相同的凭据和游标。
配置文件的变化在CLI进程中序列化。中断的写操作可能会留下一个锁目录;超时错误标识它,因此您可以在确认没有写入器正在运行后删除它。
对一个命令使用一个配置文件
通过 --profile <name> 作为已保存的配置文件运行一个命令,而不更改活动配置文件或写入 ~/.loggie/config.json:
loggie status --profile work
loggie --profile=personal setup
loggie discover linear --profile work
loggie call linear GET /issues --profile work
loggie linear pending --profile work
loggie events --profile work pull
loggie events listen --profile work --exec ./handle-event.sh
setup, status (别名 whoami), discover, call,每一个 linear 行动, events pull, listen, watch 在命令之前或之后接受标志,事件命令之后也接受标志 events. 允许重复使用相同名称的旗帜;不同的名字被拒绝。
选择的概要文件提供API密钥和服务器,覆盖 LOGGIE_API_KEY 和 LOGGIE_SERVER_URL. 没有保存服务器URL的配置文件使用默认服务器。未知的名称、格式错误的名称或丢失或格式错误的配置在任何请求之前失败,并且永远不会退回到另一个凭据。结合 --profile 与 --api-key 或者 --key 将被拒绝。
status 报告命令使用的本地名称为 auth.savedProfile 持久化选择为 auth.activeProfile. 当不存在配置时,这两个都被省略。顶级 profile 字段是服务器端代理配置文件。
init --profile 保存并激活指定的配置文件,并接受 --api-key. logout 和 profiles 管理所有已保存的配置文件,以便它们在更改任何内容之前拒绝标志。
events listen 和 watch 在启动时捕获选定的密钥和服务器,并将它们用于重试、轮询、重新连接和处理程序。以后的配置文件切换或键旋转不会重定向正在运行的进程;重新启动它以使用新值。处理程序将这对继承为 LOGGIE_API_KEY 和 LOGGIE_SERVER_URL,所以。 loggie 处理程序中的命令使用相同的帐户,除非它传递自己的帐户 --profile. Progress的作用域为服务器和服务器端概要ID,因此同一代理的两个本地名称共享Progress。
打电话前先发现
loggie discover
loggie discover asana --method POST --search tasks --limit 10
loggie discover asana --endpoint /tasks --method POST
loggie discover linear --endpoint / --method POST --graphql-type query --operation viewer
loggie call linear POST / -d '{"query":"query { viewer { id } }"}'
鼻涕虫取决于你的关系。将目录结果用于实际路径和操作。 loggie setup 打印代理设置有效负载; whoami 别名 status.
命令默认为JSON,而 call 保留上游响应体。使用 --pretty 用于JSON的可读性或发现性 --table 从人的角度来看。 loggie call --help 文档头、查询字符串、多部分字段和二进制上传。
loggie call 具有60秒的请求超时,包括响应体下载。使用 --timeout <seconds> 重写它,或者 --timeout 0 禁用它。超时退出1,写入JSON TIMEOUT 错误输出到标准输出,并打印一行错误到标准输出。GET和HEAD不会隐式读取stdin;本机获取不支持这些方法的请求体。
请求策略
发现Loggie Admin连接,然后提出一个策略供人工审批:
loggie discover loggie-admin --endpoint /policy-requests --method POST
loggie call loggie-admin POST /policy-requests -d '{"integrationId":"CONNECTION_UUID","prompt":"Only allow reading tasks; hide customer emails.","assignToAgent":true}'
loggie call loggie-admin POST /policy-requests -d '{"policy":{"integrationId":"CONNECTION_UUID","name":"Read access","permission":"read","endpointRuleMode":"NONE"},"assignToAgent":true}'
loggie call loggie-admin GET /requests/REQUEST_UUID
使用一个简单的语言提示 integrationId,或一个完整的 policy 由代理人起草。一个完整的策略直接在Review中打开,不需要逻辑AI调用。提示符的前缀是与Policies选项卡相同的ai辅助创建者;人类生成并编辑它的草稿。
使用发现返回的实际Admin段代码。给返回者 setupUrl 到一个工作区成员。他们审查完整的策略,并在登录时批准或拒绝它。Approval创建策略并将其分配给该连接的请求代理,替换任何现有的策略分配。集 assignToAgent 来 false 只创建可重用策略。该提案在获得批准之前不会创建任何政策,也不会更改任何分配。民意调查 pollUrl 直到 COMPLETED 返回 policyId; EXPIRED 和 CANCELLED 是终端。请求在24小时后过期。
发现模式记录端点规则、批准规则、速率限制、响应编校和请求主体限制。连接必须有一个工作区提供程序草稿,以支持可重用策略。
要更新现有策略,请添加其 policyId 要么请求形状。提供完整的所需政策;当应用评审的替代品时,省略的可选限制将被清除。
loggie call loggie-admin POST /policy-requests -d '{"policyId":"POLICY_UUID","policy":{"integrationId":"CONNECTION_UUID","name":"Read access","permission":"read","endpointRuleMode":"NONE","rateLimitPerMinute":30}}'
loggie call loggie-admin POST /policy-requests -d '{"policyId":"POLICY_UUID","integrationId":"CONNECTION_UUID","prompt":"Allow only reading tasks and hide customer email addresses."}'
引用连接必须使用与现有策略相同的提供者和API类型。人类拒绝返回CANCELLED。更新保留策略ID和所有现有分配,因此每个分配的代理/连接都会受到影响。 assignToAgent 更新默认为false;真实是被拒绝的。检查显示保存的策略、建议的更改和受影响的分配。如果策略或分配集在批准前发生更改,则提交新的请求。完成的轮询返回相同的结果 policyId.
事件
loggie events pull --limit 10
loggie events listen --help
loggie events watch --help
pull 获取一次。 listen 使用WebSocket交付; watch 投票。两种连续模式都需要 --exec 并对事件执行该命令,在stdin和in上传递JSON LOGGIE_EVENT. 仅在需要这些操作时配置处理程序。有关重放和命名游标选项,请参阅每个命令的帮助。
使用CLI
从存储库根目录:
pnpm build:cli
pnpm test:cli
node cli/dist/cli/src/bin.js --help
CLI没有自动加载 cli/.env. 要对本地开发服务器使用这些凭据:
LOGGIE_SERVER_URL=http://localhost:5173 node --env-file=cli/.env cli/dist/cli/src/bin.js status
线性药剂交付
loggie linear pending 独立于事件游标恢复队列工作。如果响应具有非空值 nextCursor,继续 loggie linear pending --cursor NEXT_CURSOR。使用 claim, context, start, heartbeat, activity, finish 交付:执行交付; inspect 和 reconcile 支持中断运行。命令默认发出JSON。看到 线性设置和恢复合同. 线性读写继续进行 loggie call 以及现有的访问策略。