@armadra/agent 0.7.2 → 0.7.4
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.
- package/CHANGELOG.md +41 -0
- package/CHANGELOG.zh-CN.md +41 -0
- package/dist/agent/retry.d.ts +14 -5
- package/dist/agent/retry.js +30 -8
- package/dist/agent/session-cache-key.d.ts +8 -0
- package/dist/agent/session-cache-key.js +46 -0
- package/dist/agent/session-cache.d.ts +2 -3
- package/dist/agent/session-cache.js +19 -37
- package/dist/agent/session-classifier.d.ts +3 -2
- package/dist/agent/session-classifier.js +36 -10
- package/dist/agent/session-compaction.d.ts +30 -5
- package/dist/agent/session-compaction.js +69 -29
- package/dist/agent/session-core.d.ts +2 -0
- package/dist/agent/session-run.d.ts +12 -0
- package/dist/agent/session-run.js +29 -10
- package/dist/agent/session-subagent.d.ts +8 -1
- package/dist/agent/session-subagent.js +37 -14
- package/dist/agent/session-sync.d.ts +8 -2
- package/dist/agent/session-sync.js +7 -10
- package/dist/agent/session-tools.js +3 -2
- package/dist/agent/subagent-fork.d.ts +67 -0
- package/dist/agent/subagent-fork.js +87 -0
- package/dist/agent/subagent-registry.d.ts +2 -2
- package/dist/agent/subagent-registry.js +2 -2
- package/dist/agent/tool-availability.d.ts +8 -0
- package/dist/agent/tool-availability.js +8 -0
- package/dist/agent/tool-runner.js +13 -4
- package/dist/agent/worktree.d.ts +8 -0
- package/dist/agent/worktree.js +51 -4
- package/dist/agents/parse.js +6 -1
- package/dist/agents/task-record.js +3 -0
- package/dist/agents/types.d.ts +2 -0
- package/dist/ai/apis/anthropic-messages.js +10 -5
- package/dist/ai/apis/anthropic-request.d.ts +2 -1
- package/dist/ai/apis/anthropic-request.js +9 -3
- package/dist/ai/apis/google-generative-ai.js +4 -2
- package/dist/ai/apis/max-tokens.d.ts +42 -0
- package/dist/ai/apis/max-tokens.js +121 -0
- package/dist/ai/apis/openai-completions.js +10 -5
- package/dist/ai/apis/openai-request.js +1 -1
- package/dist/ai/apis/openai-responses-request.js +1 -1
- package/dist/ai/apis/openai-responses.js +9 -5
- package/dist/ai/apis/shared.d.ts +3 -1
- package/dist/ai/apis/shared.js +21 -3
- package/dist/ai/cache/fingerprint.d.ts +4 -1
- package/dist/ai/cache/fingerprint.js +18 -1
- package/dist/ai/cache/miss.d.ts +2 -1
- package/dist/ai/cache/miss.js +9 -3
- package/dist/ai/cache/reporting.js +5 -1
- package/dist/ai/cache/types.d.ts +10 -2
- package/dist/ai/cache/warmer.d.ts +6 -1
- package/dist/ai/cache/warmer.js +7 -0
- package/dist/ai/context.d.ts +12 -4
- package/dist/ai/context.js +43 -24
- package/dist/ai/fake/fake-provider.d.ts +8 -1
- package/dist/ai/fake/fake-provider.js +19 -7
- package/dist/ai/fake/fake-script.d.ts +2 -0
- package/dist/ai/http.d.ts +17 -9
- package/dist/ai/http.js +33 -13
- package/dist/ai/image-intern.d.ts +29 -0
- package/dist/ai/image-intern.js +58 -0
- package/dist/ai/json-body.d.ts +31 -0
- package/dist/ai/json-body.js +208 -0
- package/dist/ai/overflow.js +5 -0
- package/dist/ai/providers/catalog-data.js +13 -13
- package/dist/ai/providers/catalog.d.ts +33 -0
- package/dist/ai/providers/catalog.js +105 -6
- package/dist/ai/providers/enrich.d.ts +13 -3
- package/dist/ai/providers/enrich.js +87 -31
- package/dist/ai/sse.d.ts +3 -2
- package/dist/ai/sse.js +3 -2
- package/dist/ai/types.d.ts +9 -2
- package/dist/bundle/ama.cjs +3142 -1805
- package/dist/cli/compose-agents.js +3 -0
- package/dist/cli/compose-extensions.js +2 -0
- package/dist/cli/compose-request.d.ts +20 -0
- package/dist/cli/compose-request.js +37 -0
- package/dist/cli/compose-session.js +2 -2
- package/dist/cli/subcommands/model-meta.d.ts +2 -1
- package/dist/cli/subcommands/model-meta.js +3 -2
- package/dist/codemode/host-side.d.ts +11 -4
- package/dist/codemode/host-side.js +25 -6
- package/dist/codemode/tool.d.ts +2 -0
- package/dist/codemode/tool.js +4 -0
- package/dist/compaction/prefix-estimate.d.ts +3 -1
- package/dist/compaction/prefix-estimate.js +7 -3
- package/dist/config/json-schema.js +9 -2
- package/dist/config/key-docs.js +13 -4
- package/dist/config/schema-w5.js +9 -1
- package/dist/config/schema.d.ts +1 -1
- package/dist/config/schema.js +19 -3
- package/dist/config/settings-registry.js +6 -0
- package/dist/config/types-w5.d.ts +2 -0
- package/dist/config/types.d.ts +19 -1
- package/dist/config/types.js +4 -0
- package/dist/i18n/catalog.d.ts +15 -2
- package/dist/i18n/messages/cli.d.ts +2 -0
- package/dist/i18n/messages/cli.js +2 -0
- package/dist/i18n/messages/config-keys.d.ts +10 -0
- package/dist/i18n/messages/config-keys.js +12 -2
- package/dist/i18n/messages/config.d.ts +14 -0
- package/dist/i18n/messages/config.js +4 -0
- package/dist/i18n/messages/errors.d.ts +3 -2
- package/dist/i18n/messages/errors.js +15 -2
- package/dist/i18n/messages/report-context.d.ts +4 -0
- package/dist/i18n/messages/report-context.js +4 -0
- package/dist/i18n/messages/report.d.ts +6 -0
- package/dist/i18n/messages/report.js +2 -0
- package/dist/i18n/messages/settings.d.ts +4 -0
- package/dist/i18n/messages/settings.js +6 -2
- package/dist/i18n/messages/subcommands.d.ts +2 -2
- package/dist/i18n/messages/subcommands.js +4 -2
- package/dist/modes/acp/acp-server.js +15 -5
- package/dist/modes/acp/acp-sessions.d.ts +9 -0
- package/dist/modes/acp/acp-sessions.js +25 -0
- package/dist/modes/context-report.d.ts +2 -0
- package/dist/modes/context-report.js +25 -8
- package/dist/modes/print/json-event.d.ts +12 -1
- package/dist/modes/print/json-event.js +48 -1
- package/dist/modes/rpc/rpc-mode.d.ts +1 -0
- package/dist/modes/rpc/rpc-mode.js +9 -2
- package/dist/modes/session-report.d.ts +1 -1
- package/dist/modes/session-report.js +12 -6
- package/dist/rpc.d.ts +5 -2
- package/dist/session/line-reader.d.ts +28 -0
- package/dist/session/line-reader.js +82 -0
- package/dist/session/list.d.ts +14 -0
- package/dist/session/list.js +150 -0
- package/dist/session/manager.d.ts +7 -3
- package/dist/session/manager.js +21 -48
- package/dist/session/migrate.d.ts +2 -1
- package/dist/session/migrate.js +2 -1
- package/dist/session/projection.d.ts +16 -3
- package/dist/session/projection.js +96 -29
- package/dist/session/scan.d.ts +3 -3
- package/dist/session/scan.js +9 -18
- package/dist/session/store.d.ts +3 -0
- package/dist/session/store.js +37 -31
- package/dist/session/types.d.ts +7 -2
- package/dist/tools/bash.d.ts +1 -1
- package/dist/tools/bash.js +5 -4
- package/dist/tools/glob.d.ts +2 -2
- package/dist/tools/glob.js +2 -2
- package/dist/tools/grep.js +4 -6
- package/dist/tools/image-file.js +2 -1
- package/dist/tools/read-lines.d.ts +32 -0
- package/dist/tools/read-lines.js +147 -0
- package/dist/tools/read.d.ts +6 -2
- package/dist/tools/read.js +47 -27
- package/dist/tools/task.d.ts +9 -0
- package/dist/tools/task.js +21 -8
- package/dist/tools/truncate.d.ts +7 -0
- package/dist/tools/truncate.js +11 -0
- package/dist/tools/types.d.ts +13 -0
- package/dist/trace/build-index.js +13 -1
- package/dist/tui/ansi.d.ts +2 -0
- package/dist/tui/ansi.js +7 -3
- package/dist/tui/components/editor-buffer.js +2 -2
- package/dist/tui/components/editor.js +5 -6
- package/dist/tui/keys.js +2 -2
- package/dist/tui/stdin-buffer.js +3 -3
- package/docs/acp.md +5 -1
- package/docs/agents.md +42 -6
- package/docs/codemode.md +4 -2
- package/docs/en/acp.md +3 -2
- package/docs/en/host-api.md +1 -1
- package/docs/en/permissions.md +2 -2
- package/docs/en/providers.md +54 -20
- package/docs/en/rpc.md +23 -7
- package/docs/en/sessions.md +4 -2
- package/docs/en/tui.md +3 -3
- package/docs/permissions.md +4 -1
- package/docs/providers.md +85 -22
- package/docs/rpc.md +22 -6
- package/docs/session-format.md +3 -2
- package/docs/sessions.md +3 -1
- package/docs/tui.md +2 -2
- package/package.json +2 -2
package/docs/session-format.md
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
|
|
50
50
|
- `system`:`{ role: "system", sections, toolsAdded?, toolsRemoved?, timestamp }`。首条是全量:系统提示的命名节(固定顺序 `preamble → tools → rules → project_context → skills → memory → hooks → cwd → host → role`;`memory` 是第六波的记忆索引节,未开启记忆时不出现)与工具声明表;之后只落**补丁**——节名级替换、值为 `null` 表示删除该节,`toolsAdded` / `toolsRemoved` 增删工具。依次重放得到当前系统提示;请求时由协议层重装:首条非 system 消息之前的部分折进开头,之后的节补丁作为尾部上下文送达、不改写开头(移除工具的补丁除外,见 [providers.md](providers.md)「缓存」)。首条 system 消息在首次请求前落盘,也就是建文件的时刻。
|
|
51
51
|
- `user`:`content`、`origin?`(缺省 = 普通用户输入;`steer` / `followUp` 是运行中插话与排队,`host` 是宿主 `sendUser` 注入,`interrupt` 是打断并立即发送开的新回合(TUI `Ctrl+X`、line 模式 `/interrupt`、RPC / SDK 的 `interrupt: true`;投影与普通 user 消息相同),`direct` 是用户在子 Agent 视图里直接发给该子 Agent 的消息(第六波 W6-A,写在子会话里;投影与普通 user 消息相同),其它字符串原样记录)。
|
|
52
|
-
- `assistant`:`content`(文本 / 思考 / 工具调用块)、`api`、`provider`、`model`、`usage`、`stopReason`,以及可选的 `responseId`、`thinkingLevel`、`providerThinkingLevel`、`rawStopReason`、`errorMessage
|
|
52
|
+
- `assistant`:`content`(文本 / 思考 / 工具调用块)、`api`、`provider`、`model`、`usage`、`stopReason`,以及可选的 `responseId`、`thinkingLevel`、`providerThinkingLevel`、`rawStopReason`、`errorMessage`、`retryAfterMs`(失败响应的 `Retry-After`,毫秒;会话层退避取它与指数退避中的较大值)。工具调用块是 `{ type: "toolCall", id, name, arguments, thoughtSignature?, rawArguments? }`:`rawArguments` 是模型输出的原始参数字符串(能严格解析为 JSON 时才记),同协议回放时原样发回,没有时回落 `JSON.stringify(arguments)`。两者都是可选字段,格式版本不变,旧文件照常读取。`usage` 是 `{ input, output, cacheRead, cacheWrite, cacheWrite1h?, reasoning?, totalTokens, cost?, cacheReported? }`:`input` 不含缓存部分,`cost` 是 `{ input, output, cacheRead, cacheWrite, total }`(美元,模型无价格时缺省),`cacheReported` 表示原始响应里出现过缓存字段。
|
|
53
53
|
- `toolResult`:对应工具调用的结果(`toolCallId`、`toolName`、`content`、`isError`、`details?`)。
|
|
54
54
|
|
|
55
55
|
### `usage` 条目
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
|
|
98
98
|
- `/tree`:同一文件换叶子(落 `leaf` 行);从旧位置再发消息就形成新分支。离开的分支可以写 `branch_summary` 带进新分支。
|
|
99
99
|
- fork(`--fork <id>`、`/fork`、RPC `fork`):把根 → 指定条目的分支复制到新文件,头的 `parentSession` 指回原文件;不复制 `leaf` 行。
|
|
100
|
-
- `task` 子会话:独立文件,头带 `parentSession`,首条条目是 `custom{customType:"ama.task"}`。
|
|
100
|
+
- `task` 子会话:独立文件,头带 `parentSession`,首条条目是 `custom{customType:"ama.task"}`。fork 式子会话(`task.context: "fork"`)同样如此:父会话分支被复制到新文件,首条 `ama.task` 作为新根条目,复制的首条重挂到它下面(`data.context: "fork"`、`data.forkedFrom` = 复制到的父条目 id)。
|
|
101
101
|
|
|
102
102
|
## custom 类型
|
|
103
103
|
|
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
`data` = `TaskInfo`(`taskId, agent, runner, description, background, status, startedAt, endedAt?, turns?, usage?, costUsd?,
|
|
117
117
|
contextTokens?, contextWindow?, outputFile?, sessionRef?`;`contextTokens / contextWindow` 只有外部 Agent 报告时才有)+ `parentToolCallId`、`cwd`。同一 `taskId` 取分支上最后一条;resume 时据此重建任务注册表,
|
|
118
118
|
`status: "running"` 视为 `interrupted`(`taskId` 续聊重开 `sessionRef.sessionFile`)。没有 `status` 的是子会话自己的首条。
|
|
119
|
+
模型调用效率批次(docs/model-efficiency-plan.md)起,两处的 `data` 可带 `context?: "fork" | "fresh"`(子会话的实际上下文模式,fork 回落为 fresh 时记 `fresh`;缺省即 `fresh`),子会话首条另可带 `forkedFrom?`(fork 点的父条目 id)。都是可选字段,格式版本不变。
|
|
119
120
|
|
|
120
121
|
第五波登记的类型(docs/wave5-plan.md;括号里是开始写入的批次,之前的版本不会产生,读到未知 `customType` 一律忽略)。`custom_message` 类都是 `display: false`,经扩展点 `beforePrompts` 追加在末尾,不改缓存前缀:
|
|
121
122
|
|
package/docs/sessions.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 会话统计、检索、复用、导出与检查点
|
|
2
2
|
|
|
3
|
-
这几条命令都只读会话目录(`<数据目录>/sessions`,`--session-dir` 可改;文件格式见 [session-format.md](session-format.md)
|
|
3
|
+
这几条命令都只读会话目录(`<数据目录>/sessions`,`--session-dir` 可改;文件格式见 [session-format.md](session-format.md)):不加锁、不修复半行、不改文件,正在运行的会话也能读。会话文件按块逐行读取,不整份读进内存:`ama sessions list` 只解析每个文件的头、首条条目、改名与首条提示,其余行只看类型,几十 MB 的会话也不会让内存随文件大小上涨;`--resume` 打开会话同样逐行解析。范围缺省是**当前目录**的会话,`--all` 看全部。
|
|
4
4
|
|
|
5
5
|
## 统计:`ama stats`
|
|
6
6
|
|
|
@@ -71,6 +71,8 @@ RPC `get_session_stats` 原样输出,状态栏与 `/session` 也读它们)
|
|
|
71
71
|
| `context.autoCompactAt` | 自动摘要(档二)的阈值 = 窗口 − `compaction.reserveTokens`;自动压缩关闭、连续失败熔断或窗口缺省时**缺省** |
|
|
72
72
|
| `context.pruneAt` | 工具结果裁剪(档一)的阈值 = 0.7 ×(窗口 − `reserveTokens`);缺省条件同上 |
|
|
73
73
|
|
|
74
|
+
上表的「窗口」在设了 `compaction.contextBudget`(≥ 32768)时取 min(模型窗口, 它):档一、档二、熔断与 `context_pressure` 都按这个软窗口算,`contextWindow` 与百分比仍显示模型的真实窗口。窗口很大、单价按上下文长度计的模型适合设它——例如 1M 窗口的模型设 `128000`,长会话按 128k 的节奏压缩,每回合重读的前缀就不会涨到几十万 token;窗口本身不大或按缓存读价计费已经很便宜时不必设。
|
|
75
|
+
|
|
74
76
|
- **估算口径**:CJK 表意文字 / 假名 / 谚文每字 1 token,其余字符 / 4,图片每张 1 600;usage 取 `totalTokens`(缺则输入 + 输出 + 缓存读写,含输出)。
|
|
75
77
|
- **第一次请求前**(`prefix`):系统提示与工具表要到第一次请求时才写进会话,在此之前按「将要发送的那一份」(命名节文本 + 工具声明 JSON)估算,所以新会话一打开就不是 0。只用于统计,不写会话、不改请求体。
|
|
76
78
|
- **压缩 / 上下文编辑之后**(`estimate`):最后那条 usage 不再代表当前上下文,改为全量估算,直到下一次请求带回新的 usage;界面在数字前加 `≈`。
|
package/docs/tui.md
CHANGED
|
@@ -103,7 +103,7 @@ Accept edits | shift+tab 切换 claude-opus-5-5 medium | Ctx 3.0% 8.2k/272k a
|
|
|
103
103
|
未命中行按原因分列(`3 次,重计费 61k token ≈ $0.18(空闲超时 2 · 前缀变化 1)`);保温行在计时中显示 `streaming · 下次 2m 10s · 期望节省 $0.18 ≥ $0.05`,停止时给原因;有 task 子会话时另有「子任务」行。
|
|
104
104
|
|
|
105
105
|
- `/cache warm off|streaming|idle`:本会话内切换保温(不写配置;`idle` 在空闲时也保温,适合贵模型)。
|
|
106
|
-
- `/cache fingerprint`:最近一次真实请求的前缀指纹——system 与工具表各一个 16
|
|
106
|
+
- `/cache fingerprint`:最近一次真实请求的前缀指纹——system 与工具表各一个 16 位哈希加模型名,system 下逐节列出各节的哈希。两次之间哈希变了,就是宿主或扩展绕过补丁改了开头的系统提示 / 工具表,节哈希指出是哪一节。
|
|
107
107
|
|
|
108
108
|
取舍:状态栏显示最近一次命中率(会话累计放 `/session`);`cache.missNotices` 缺省开(门槛下很少触发);`Meter` 组件不进缺省状态栏。命中率、未命中与保温的判定规则见 [providers.md](providers.md)「缓存」。
|
|
109
109
|
|
|
@@ -243,7 +243,7 @@ line 模式(`--no-tui`)运行中输入 `/interrupt <文本>` 效果相同(
|
|
|
243
243
|
|
|
244
244
|
- **顶部**:已用 / 窗口与百分比(与 `/session` 同一口径:最后一条可用 usage + 其后消息的估算)、剩余、来源(「usage 实测 X + 估算 Y」;还没有可用 usage,或 usage 之后发生过压缩 / 上下文编辑时为「全量估算」)、自动压缩触发点(窗口 − `compaction.reserveTokens`,关闭时显示「关闭」,没有窗口时「窗口未知」)与档一裁剪的起点。
|
|
245
245
|
- **按类别**:系统提示(按节)、工具声明(按工具)、用户消息、助手文本、推理、工具调用参数(按工具)、工具结果(按工具名汇总)、附件图片(每张按 1 600 计)、摘要(压缩 / 分支)、自定义消息;每类给 token 估算、占比与条形。各类之和等于整个投影的字符估算(CJK 每字 1,其余 / 4),所以标题里的合计可能与顶部的「已用」不同——后者优先采信模型回报的 usage。
|
|
246
|
-
- **系统提示与工具声明**来自会话里存的 system 消息(首条全量、之后的补丁也计入,与估算口径一致);首次请求前分支上还没有 system
|
|
246
|
+
- **系统提示与工具声明**来自会话里存的 system 消息(首条全量、之后的补丁也计入,与估算口径一致);首次请求前分支上还没有 system 消息,这两类按首次请求将要发送的内容估算(与状态栏的启动基线同一口径),「已用」与状态栏一致,来源标为「首次请求前,只有系统提示与工具声明的估算」。
|
|
247
247
|
- **底部**只列最大的 5 个工具结果的序号(投影里第几个工具结果)、工具名与大小,**不显示正文**。
|
|
248
248
|
- 统计只读:不写会话条目、不改请求体,提示词缓存前缀不受影响。
|
|
249
249
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@armadra/agent",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"description": "A coding and coordination agent that runs standalone or embedded in Armadra",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"url": "git+https://github.com/Owlbay/armadra-agent.git"
|
|
31
31
|
},
|
|
32
32
|
"bin": {
|
|
33
|
-
"ama": "dist/
|
|
33
|
+
"ama": "dist/bundle/ama.cjs"
|
|
34
34
|
},
|
|
35
35
|
"exports": {
|
|
36
36
|
".": {
|