@keyou007/agent-bot 0.1.16 → 0.1.17-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +4 -2
  3. package/README.zh.md +4 -2
  4. package/config.example.yaml +8 -0
  5. package/dist/cli/help.js +4 -4
  6. package/dist/cli/taskTarget.js +7 -0
  7. package/dist/cli/taskTarget.js.map +1 -1
  8. package/dist/cli.js +12 -12
  9. package/dist/cli.js.map +1 -1
  10. package/dist/codex/CodexRuntime.js +40 -12
  11. package/dist/codex/CodexRuntime.js.map +1 -1
  12. package/dist/config/AgentExecutionDefaultsStore.js +71 -0
  13. package/dist/config/AgentExecutionDefaultsStore.js.map +1 -0
  14. package/dist/config/loadConfig.js +8 -0
  15. package/dist/config/loadConfig.js.map +1 -1
  16. package/dist/config/schema.js +7 -0
  17. package/dist/config/schema.js.map +1 -1
  18. package/dist/feishu/CardRenderer.js +29 -27
  19. package/dist/feishu/CardRenderer.js.map +1 -1
  20. package/dist/index.js +17 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/proxy/ProxySessionController.js +255 -30
  23. package/dist/proxy/ProxySessionController.js.map +1 -1
  24. package/dist/state/StateStore.js +62 -9
  25. package/dist/state/StateStore.js.map +1 -1
  26. package/dist/supervision/restartNotificationTarget.js +9 -0
  27. package/dist/supervision/restartNotificationTarget.js.map +1 -0
  28. package/docs/technical-reference.md +7 -3
  29. package/docs/technical-reference.zh.md +7 -3
  30. package/npm-shrinkwrap.json +2 -2
  31. package/package.json +1 -1
  32. package/skills/agent-bot/SKILL.md +3 -1
  33. package/src/cli/help.ts +4 -4
  34. package/src/cli/taskTarget.ts +11 -0
  35. package/src/cli.ts +16 -20
  36. package/src/codex/CodexRuntime.ts +38 -10
  37. package/src/config/AgentExecutionDefaultsStore.ts +71 -0
  38. package/src/config/loadConfig.ts +8 -0
  39. package/src/config/schema.ts +13 -1
  40. package/src/feishu/CardRenderer.ts +30 -22
  41. package/src/index.ts +17 -2
  42. package/src/proxy/ProxySessionController.ts +330 -40
  43. package/src/runtime/types.ts +8 -0
  44. package/src/state/StateStore.ts +100 -9
  45. package/src/supervision/restartNotificationTarget.ts +12 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ The project follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.17-alpha.0] - 2026-08-28
10
+
11
+ - Keep startup-card time formatting fast and deterministic on Windows Node.js 22 runners.
12
+ - Compact the Turns card into a Git-graph-style list, place subdued timestamps directly after Prompts, hide displayed Turn IDs, and reserve connector-only rows for real branch transitions.
13
+ - Return safe-restart status cards to the source task when invoked by an Agent, use the configured user's private chat for ordinary terminal requests, and preserve explicit `--task` overrides.
14
+ - Save Provider, model, reasoning effort, and permission defaults independently for each Agent whenever task settings change, and apply the selected Agent's saved defaults to new tasks without inherited settings.
15
+ - Preserve every completed source Turn in Fork and ForkGroup task history, and hydrate missing ancestry once when opening Turns for forks created by earlier Alpha builds.
16
+
9
17
  ## [0.1.16] - 2026-08-26
10
18
 
11
19
  - Promote 0.1.16-alpha.4 to the stable release channel.
package/README.md CHANGED
@@ -105,7 +105,7 @@ Safely restart the service:
105
105
  agentbot server restart
106
106
  ```
107
107
 
108
- It waits for currently running Agent tasks to finish before restarting, allowing every task to complete normally. When triggered from a Feishu topic, both restart status and the post-restart startup card return to that topic.
108
+ It waits for currently running Agent tasks to finish before restarting, allowing every task to complete normally. When an Agent invokes the CLI, the status card returns to its source task; from an ordinary terminal it goes to the configured user's private chat. Add `--task <task>` to override either destination. When triggered from a Feishu topic, both restart status and the post-restart startup card return to that topic.
109
109
 
110
110
  To start Agent Bot automatically at user login:
111
111
 
@@ -214,7 +214,7 @@ agentbot task dismiss [task] --yes
214
214
 
215
215
  Inside an Agent started by Agent Bot, `[task]` defaults to the current task; use `--task <task>` to target another task explicitly. A regular terminal must supply a task. `task current` shows the automatically detected task details. A task reference can be a number from `task list`, a task ID, or an unambiguous task-ID prefix. Every Feishu task, fork, queue, Agent, Provider, model, thinking, permission, Goal, historical Turn, Reset, group mute, group dismissal, directory, file, shell, and restart operation has a CLI counterpart. Run `agentbot --help` for the complete list and options.
216
216
 
217
- `task newgroup` creates a Feishu group and a new task. By default, it inherits the source task's Agent and execution settings. `--agent <standard-name>` selects another configured Agent; the source project shape is still inherited, while Provider, model, reasoning effort, and permission mode use the target Agent's own Runtime defaults. `--dir` overrides the project directory and supports `~`; `--nodir` forces a Projectless App Server task. Project and Projectless group names can be customized separately through `feishu.groupNameFormat`. `task forkgroup` forks from the source task's latest available completed turn without interrupting an active turn. Both commands require the Server to be running, invite the authorizing user saved in the Profile, leave the source conversation on its current task, and support `--json`.
217
+ `task newgroup` creates a Feishu group and a new task. By default, it inherits the source task's Agent and execution settings. `--agent <standard-name>` selects another configured Agent; the source project shape is still inherited, while Provider, model, reasoning effort, and permission mode use the target Agent's saved defaults. `--dir` overrides the project directory and supports `~`; `--nodir` forces a Projectless App Server task. Project and Projectless group names can be customized separately through `feishu.groupNameFormat`. `task forkgroup` forks from the source task's latest available completed turn without interrupting an active turn. Both commands require the Server to be running, invite the authorizing user saved in the Profile, leave the source conversation on its current task, and support `--json`.
218
218
 
219
219
  ## Feishu Commands
220
220
 
@@ -278,6 +278,8 @@ Agent Bot keeps user-owned files outside the repository:
278
278
 
279
279
  Set `AGENT_BOT_HOME` to use another user-data directory. See [config.example.yaml](config.example.yaml) for configuration examples.
280
280
 
281
+ Provider, model, reasoning effort, and permission choices apply to the current task and are also saved under that Agent's `defaults`. Future tasks that have no same-Agent settings to inherit start with those saved defaults; each configured Agent keeps its own values.
282
+
281
283
  `feishu.groupNameFormat` defines separate name templates for new Project and Projectless groups, with variables for the operating system, Agent, project, task name, and date. See the [technical reference](docs/technical-reference.md#configuration-model) for the complete format.
282
284
 
283
285
  Agent processes inherit ordinary parent-process variables and their explicit `agents.<name>.env` settings. Before starting an Agent, Agent Bot removes inherited `FEISHU_*` credentials and internal `AGENT_BOT_*` state, then provides only namespaced, non-secret Profile and Lark identity context. `FEISHU_APP_SECRET` is never forwarded to an Agent process.
package/README.zh.md CHANGED
@@ -105,7 +105,7 @@ agentbot server stop
105
105
  agentbot server restart
106
106
  ```
107
107
 
108
- 它会等待当前运行中的 Agent 任务完成后自动重启,确保所有任务都能正常执行。在飞书话题中触发时,重启状态和重启后的启动卡都会返回原话题。
108
+ 它会等待当前运行中的 Agent 任务完成后自动重启,确保所有任务都能正常执行。Agent 调用 CLI 时,状态卡返回其来源任务;普通终端调用时,状态卡发送到配置用户的私聊。传入 `--task <任务>` 可覆盖这两种默认目标。在飞书话题中触发时,重启状态和重启后的启动卡都会返回原话题。
109
109
 
110
110
  如需在用户登录后自动启动 Agent Bot:
111
111
 
@@ -214,7 +214,7 @@ agentbot task dismiss [任务] --yes
214
214
 
215
215
  在 Agent Bot 启动的 Agent 中,省略 `[任务]` 会自动使用当前任务;需要操作其他任务时可传入 `--task <任务>`。普通终端仍必须指定任务。`task current` 用于查看自动识别出的任务详情。任务引用可以是 `task list` 中的序号、任务 ID 或唯一的任务 ID 前缀。飞书中的任务、分支、排队、Agent、Provider、模型、思考强度、权限、Goal、历史 Turn、Reset、群静音、解散群、目录、文件、Shell 和重启能力都有对应的 CLI 命令;运行 `agentbot --help` 查看完整列表和参数。
216
216
 
217
- `task newgroup` 会创建飞书群和新任务。默认继承源任务的 Agent 和运行设置;`--agent <标准名>` 可选择另一个已配置的 Agent,此时仍继承源任务的项目形态,但 Provider、模型、思考强度和权限模式使用目标 Agent 自己的 Runtime 默认值。`--dir` 可覆盖项目目录并支持 `~`,`--nodir` 会强制创建 Projectless App Server 任务。Project 与 Projectless 群名可在 `feishu.groupNameFormat` 中分别自定义。`task forkgroup` 从源任务最新可用的已完成 turn 创建分支,不会中断正在执行的 turn。两个命令都要求 Server 正在运行,邀请 Profile 中保存的授权用户,不会切换源会话的当前任务,并支持 `--json`。
217
+ `task newgroup` 会创建飞书群和新任务。默认继承源任务的 Agent 和运行设置;`--agent <标准名>` 可选择另一个已配置的 Agent,此时仍继承源任务的项目形态,但 Provider、模型、思考强度和权限模式使用目标 Agent 已保存的默认值。`--dir` 可覆盖项目目录并支持 `~`,`--nodir` 会强制创建 Projectless App Server 任务。Project 与 Projectless 群名可在 `feishu.groupNameFormat` 中分别自定义。`task forkgroup` 从源任务最新可用的已完成 turn 创建分支,不会中断正在执行的 turn。两个命令都要求 Server 正在运行,邀请 Profile 中保存的授权用户,不会切换源会话的当前任务,并支持 `--json`。
218
218
 
219
219
  ## 飞书命令
220
220
 
@@ -278,6 +278,8 @@ Agent Bot 将用户相关文件保存在仓库之外:
278
278
 
279
279
  可通过 `AGENT_BOT_HOME` 修改用户数据目录。配置示例见 [config.example.yaml](config.example.yaml)。
280
280
 
281
+ Provider、模型、思考强度和权限设置会作用于当前任务,同时保存到对应 Agent 的 `defaults` 中。以后创建没有同 Agent 设置可继承的新任务时,会使用这些默认值;每个已配置 Agent 分别保存自己的设置。
282
+
281
283
  `feishu.groupNameFormat` 可分别设置 Project 与 Projectless 新群的名称模板,支持系统、Agent、项目、任务名和日期变量。完整格式说明见[技术参考](docs/technical-reference.zh.md#配置模型)。
282
284
 
283
285
  Agent 进程会继承普通父进程变量及其显式配置的 `agents.<name>.env`。启动 Agent 前,Agent Bot 会移除继承的 `FEISHU_*` 凭据和内部 `AGENT_BOT_*` 状态,再仅提供带命名空间的非敏感 Profile 与 Lark 身份上下文;`FEISHU_APP_SECRET` 永远不会传入 Agent 进程。
@@ -30,6 +30,12 @@ agents:
30
30
  - "--listen"
31
31
  - "stdio://"
32
32
  env: {}
33
+ # Updated automatically by the Provider, Model, Thinking, and Permission settings.
34
+ defaults:
35
+ # modelProvider: "openai"
36
+ # model: "gpt-5"
37
+ # reasoningEffort: "high"
38
+ permissionMode: "auto"
33
39
 
34
40
  traex:
35
41
  kind: "app-server"
@@ -40,6 +46,8 @@ agents:
40
46
  - "--listen"
41
47
  - "stdio://"
42
48
  env: {}
49
+ defaults:
50
+ permissionMode: "auto"
43
51
 
44
52
  defaults:
45
53
  agent: "codex"
package/dist/cli/help.js CHANGED
@@ -15,7 +15,7 @@ export function renderCliHelp(version, language = cliLanguage) {
15
15
  server start 在后台启动 Agent Bot
16
16
  server status 显示服务、飞书 App ID、Agent 进程和安全重启状态
17
17
  server autostart <操作> 管理当前 Profile 的系统自启动
18
- server restart [--task <任务>] 安排安全重启并将状态发回指定任务会话
18
+ server restart [--task <任务>] 安排安全重启;Agent 内通知来源任务,终端内通知私聊
19
19
  server stop 停止 Agent Bot
20
20
  skills status 显示内置 Skill 状态
21
21
  skills install 安装内置 Skill
@@ -70,7 +70,7 @@ export function renderCliHelp(version, language = cliLanguage) {
70
70
  --allow-downgrade 明确允许安装较旧版本
71
71
 
72
72
  重启选项:
73
- --task <任务> 将安全重启状态发回任务所在会话
73
+ --task <任务> 覆盖自动识别的来源任务或默认私聊
74
74
  --reason <原因> 设置重启原因
75
75
  --immediate 立即重启,可能中断任务
76
76
 
@@ -106,7 +106,7 @@ Common commands:
106
106
  server start Start Agent Bot in the background
107
107
  server status Show the server, Lark App ID, Agent processes, and safe-restart status
108
108
  server autostart <action> Manage OS autostart for the selected Profile
109
- server restart [--task <task>] Schedule a safe restart and return status to the task's conversation
109
+ server restart [--task <task>] Restart safely; notify the source task or private chat
110
110
  server stop Stop Agent Bot
111
111
  skills status Show the built-in Skill status
112
112
  skills install Install the built-in Skill
@@ -161,7 +161,7 @@ Update options:
161
161
  --allow-downgrade Explicitly allow an older version
162
162
 
163
163
  Restart options:
164
- --task <task> Return safe-restart status to the task's conversation
164
+ --task <task> Override the inferred source task or default private chat
165
165
  --reason <reason> Set the restart reason
166
166
  --immediate Restart immediately and possibly interrupt tasks
167
167
 
@@ -44,6 +44,13 @@ export function resolveCurrentTaskFromEnvironment(sessions, env = process.env, l
44
44
  throw new Error(cliText(`No AgentBot task matches the current App Server Thread ID (${resolution.threadIds.join(", ")}). Check that the correct Profile is selected.`, `没有 AgentBot 任务匹配当前 App Server Thread ID(${resolution.threadIds.join(",")})。请检查是否选择了正确的 Profile。`, language));
45
45
  throw new Error(cliText("The current task is ambiguous because multiple injected Thread IDs match AgentBot tasks. Pass --task <task> with an explicit AgentBot task ID.", "当前任务存在歧义:多个注入的 Thread ID 匹配到了 AgentBot 任务。请通过 --task <任务> 传入明确的 AgentBot 任务 ID。", language));
46
46
  }
47
+ export function resolveRestartNotificationTask(sessions, explicitReference, env = process.env, language = cliLanguage) {
48
+ if (explicitReference)
49
+ return resolveTask(sessions, explicitReference, language);
50
+ if (env.AGENT_BOT === "1")
51
+ return resolveCurrentTaskFromEnvironment(sessions, env, language);
52
+ return undefined;
53
+ }
47
54
  export function resolveTask(sessions, reference, language = cliLanguage) {
48
55
  if (/^\d+$/.test(reference)) {
49
56
  const index = Number(reference) - 1;
@@ -1 +1 @@
1
- {"version":3,"file":"taskTarget.js","sourceRoot":"","sources":["../../src/cli/taskTarget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taskTarget.js","sourceRoot":"","sources":["../../src/cli/taskTarget.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -25,7 +25,7 @@ import { printVerificationLink } from "./cli/VerificationOutput.js";
25
25
  import { startInitializedServer, startServer, } from "./cli/ServerStarter.js";
26
26
  import { taskChatRoute } from "./cli/taskChatRoute.js";
27
27
  import { currentAppServerThreadIds, formatTaskList, taskStateLabel, } from "./cli/taskListOutput.js";
28
- import { resolveCurrentTaskFromEnvironment, resolveTask, resolveTaskCommandTarget, } from "./cli/taskTarget.js";
28
+ import { resolveCurrentTaskFromEnvironment, resolveRestartNotificationTask, resolveTask, resolveTaskCommandTarget, } from "./cli/taskTarget.js";
29
29
  import { isThreadContextKey } from "./feishu/contextKey.js";
30
30
  import { refreshedSystemEnvironment } from "./supervision/systemEnvironment.js";
31
31
  import { parseTaskForkGroupOptions, parseTaskNewOptions, parseTaskNewGroupOptions, } from "./cli/taskGroupOptions.js";
@@ -835,22 +835,22 @@ function resolveRestartNotificationSessionId(sqlitePath, args) {
835
835
  const store = new StateStore(sqlitePath);
836
836
  try {
837
837
  const sessions = store.listAllSessions();
838
+ let explicitReference;
838
839
  if (args.includes("--task")) {
839
840
  const reference = optionValue(args, "--task")?.trim();
840
841
  if (!reference || reference.startsWith("--"))
841
842
  throw new Error(cliText("server restart --task requires a task number or task ID.", "server restart --task 需要任务序号或任务 ID。"));
842
- const session = resolveTask(sessions, reference);
843
- if (isThreadContextKey(session.contextKey)
844
- && !store.findLatestMessageIdForSession(session.localSessionId, session.contextKey)
845
- && !store.findLatestMessageIdForContext(session.contextKey)) {
846
- throw new Error(cliText("The task topic has no message anchor for restart notifications. Send /restart in that topic instead.", "该任务话题没有可用于重启通知的消息锚点,请直接在该话题中发送 /restart。"));
847
- }
848
- return session.localSessionId;
843
+ explicitReference = reference;
844
+ }
845
+ const session = resolveRestartNotificationTask(sessions, explicitReference);
846
+ if (!session)
847
+ return undefined;
848
+ if (isThreadContextKey(session.contextKey)
849
+ && !store.findLatestMessageIdForSession(session.localSessionId, session.contextKey)
850
+ && !store.findLatestMessageIdForContext(session.contextKey)) {
851
+ throw new Error(cliText("The task topic has no message anchor for restart notifications. Send /restart in that topic instead.", "该任务话题没有可用于重启通知的消息锚点,请直接在该话题中发送 /restart。"));
849
852
  }
850
- const runningContexts = new Set(sessions.filter((session) => session.status === "running").map((session) => session.contextKey));
851
- if (runningContexts.size > 1)
852
- throw new Error(cliText("Multiple conversations are running. Pass --task <task> so restart notifications return to the requester.", "当前有多个会话正在运行。请传入 --task <任务>,确保重启通知返回发起会话。"));
853
- return undefined;
853
+ return session.localSessionId;
854
854
  }
855
855
  finally {
856
856
  store.close();