harnessbrew 0.5.2 → 0.6.1

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 (82) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +157 -80
  3. package/README.zh-CN.md +373 -0
  4. package/dist/cli.d.ts +17 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +184 -26
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/adapter-plugins.d.ts +12 -0
  9. package/dist/core/adapter-plugins.d.ts.map +1 -0
  10. package/dist/core/adapter-plugins.js +151 -0
  11. package/dist/core/adapter-plugins.js.map +1 -0
  12. package/dist/core/bundle.d.ts +33 -5
  13. package/dist/core/bundle.d.ts.map +1 -1
  14. package/dist/core/bundle.js +329 -60
  15. package/dist/core/bundle.js.map +1 -1
  16. package/dist/core/doctor.d.ts +2 -2
  17. package/dist/core/doctor.d.ts.map +1 -1
  18. package/dist/core/doctor.js +2 -0
  19. package/dist/core/doctor.js.map +1 -1
  20. package/dist/core/git.d.ts +1 -0
  21. package/dist/core/git.d.ts.map +1 -1
  22. package/dist/core/git.js +17 -0
  23. package/dist/core/git.js.map +1 -1
  24. package/dist/core/installations.d.ts +1 -0
  25. package/dist/core/installations.d.ts.map +1 -1
  26. package/dist/core/installations.js +135 -14
  27. package/dist/core/installations.js.map +1 -1
  28. package/dist/core/journal.d.ts +26 -0
  29. package/dist/core/journal.d.ts.map +1 -0
  30. package/dist/core/journal.js +363 -0
  31. package/dist/core/journal.js.map +1 -0
  32. package/dist/core/locks.d.ts +10 -0
  33. package/dist/core/locks.d.ts.map +1 -0
  34. package/dist/core/locks.js +90 -0
  35. package/dist/core/locks.js.map +1 -0
  36. package/dist/core/paths.d.ts +1 -0
  37. package/dist/core/paths.d.ts.map +1 -1
  38. package/dist/core/paths.js +3 -0
  39. package/dist/core/paths.js.map +1 -1
  40. package/dist/core/state.d.ts +2 -0
  41. package/dist/core/state.d.ts.map +1 -1
  42. package/dist/core/state.js +21 -2
  43. package/dist/core/state.js.map +1 -1
  44. package/dist/core/taps.d.ts +7 -1
  45. package/dist/core/taps.d.ts.map +1 -1
  46. package/dist/core/taps.js +74 -16
  47. package/dist/core/taps.js.map +1 -1
  48. package/dist/core/targets/claude-code.d.ts.map +1 -1
  49. package/dist/core/targets/claude-code.js +11 -1
  50. package/dist/core/targets/claude-code.js.map +1 -1
  51. package/dist/core/targets/codex.d.ts.map +1 -1
  52. package/dist/core/targets/codex.js +11 -1
  53. package/dist/core/targets/codex.js.map +1 -1
  54. package/dist/core/targets/planner.d.ts +2 -3
  55. package/dist/core/targets/planner.d.ts.map +1 -1
  56. package/dist/core/targets/planner.js +43 -3
  57. package/dist/core/targets/planner.js.map +1 -1
  58. package/dist/core/targets/registry.d.ts +7 -3
  59. package/dist/core/targets/registry.d.ts.map +1 -1
  60. package/dist/core/targets/registry.js +55 -0
  61. package/dist/core/targets/registry.js.map +1 -1
  62. package/dist/core/targets/transaction.d.ts.map +1 -1
  63. package/dist/core/targets/transaction.js +46 -10
  64. package/dist/core/targets/transaction.js.map +1 -1
  65. package/dist/core/targets/types.d.ts +8 -4
  66. package/dist/core/targets/types.d.ts.map +1 -1
  67. package/dist/core/targets/types.js +1 -1
  68. package/dist/core/targets/types.js.map +1 -1
  69. package/dist/core/targets.d.ts +6 -7
  70. package/dist/core/targets.d.ts.map +1 -1
  71. package/dist/core/targets.js +33 -22
  72. package/dist/core/targets.js.map +1 -1
  73. package/dist/core/upgrades.d.ts.map +1 -1
  74. package/dist/core/upgrades.js +10 -1
  75. package/dist/core/upgrades.js.map +1 -1
  76. package/dist/index.d.ts +13 -5
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +6 -2
  79. package/dist/index.js.map +1 -1
  80. package/dist/version.d.ts +1 -1
  81. package/dist/version.js +1 -1
  82. package/package.json +2 -2
@@ -0,0 +1,373 @@
1
+ # HarnessBrew
2
+
3
+ [English](README.md) | 简体中文
4
+
5
+ [![CI](https://github.com/anzihenry/HarnessBrew/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/anzihenry/HarnessBrew/actions/workflows/ci.yml)
6
+ [![npm version](https://img.shields.io/npm/v/harnessbrew.svg?logo=npm)](https://www.npmjs.com/package/harnessbrew)
7
+ [![Node.js](https://img.shields.io/node/v/harnessbrew.svg?logo=nodedotjs)](https://www.npmjs.com/package/harnessbrew)
8
+ [![License](https://img.shields.io/github/license/anzihenry/HarnessBrew.svg)](https://github.com/anzihenry/HarnessBrew/blob/main/LICENSE)
9
+
10
+ HarnessBrew 是面向 AI Agent 资产的 Git 包管理器。它的定位类似 Homebrew:通过 Git Tap 发现资产,通过 Formula 描述资产,通过 Cellar 与 Receipt 安装、升级和安全卸载资产。
11
+
12
+ HarnessBrew 不托管资产。个人、团队和第三方资产都保存在各自的 Git 仓库中,并使用完全相同的安装机制。
13
+
14
+ ## 主要能力
15
+
16
+ - 注册、更新和移除 Git Tap
17
+ - 校验并搜索 skill、agent、workflow、instruction、prompt、MCP 和 adapter Formula
18
+ - 解析依赖、循环、缺失项与冲突
19
+ - 按 Git commit 将不可变内容安装到 Cellar
20
+ - 链接到 OpenAI Codex 和 Claude Code
21
+ - 以原生格式投递 Skill、Agent、Workflow、Prompt、Instruction 和 MCP
22
+ - 支持 user/project scope,以及同一 Target 的多实例
23
+ - 通过 Receipt 跟踪文件、配置键、受管区块所有权和 SHA-256 摘要
24
+ - 使用 `doctor` 诊断并通过 `relink` 修复 Target 漂移
25
+ - 检测可用升级,并在升级后保留 Agent target 链接
26
+ - 使用 `Harnessfile` 和 lockfile 在不同设备上复现环境
27
+ - 从 npm 安装并通过 GitHub Release 发布
28
+
29
+ ## 安装
30
+
31
+ 要求:Node.js 22 或更高版本,系统中可用 Git。
32
+
33
+ ```bash
34
+ npm install --global harnessbrew
35
+ harnessbrew --version
36
+ ```
37
+
38
+ 也可以直接使用:
39
+
40
+ ```bash
41
+ npx harnessbrew help
42
+ ```
43
+
44
+ HarnessBrew 默认将受管状态保存到 `~/.harnessbrew`。测试或隔离环境可以设置 `HARNESSBREW_HOME`。
45
+
46
+ ## 快速开始
47
+
48
+ 注册自己的资产 Tap:
49
+
50
+ ```bash
51
+ harnessbrew tap add xiejinheng/agents git@github.com:xiejinheng/agent-assets.git --trust
52
+ ```
53
+
54
+ 搜索并查看 Formula:
55
+
56
+ ```bash
57
+ harnessbrew search review
58
+ harnessbrew search --kind skill --target openai-codex
59
+ harnessbrew info xiejinheng/agents/code-review
60
+ ```
61
+
62
+ 安装到 Cellar,并链接到 Codex:
63
+
64
+ ```bash
65
+ harnessbrew install xiejinheng/agents/code-review \
66
+ --target openai-codex
67
+ ```
68
+
69
+ 如果只希望保存到 Cellar,不写入 Agent 配置目录,可以省略 `--target`。
70
+
71
+ 更新和升级:
72
+
73
+ ```bash
74
+ harnessbrew update [--allow-rewind]
75
+ harnessbrew outdated
76
+ harnessbrew upgrade code-review
77
+ ```
78
+
79
+ 安全卸载:
80
+
81
+ ```bash
82
+ harnessbrew uninstall code-review
83
+ ```
84
+
85
+ 若受管文件或链接已被修改,HarnessBrew 会停止卸载。确认需要删除时可以显式传入 `--force`。
86
+
87
+ ## Homebrew 概念对应
88
+
89
+ | Homebrew | HarnessBrew |
90
+ | --- | --- |
91
+ | `brew` | `harnessbrew` |
92
+ | Tap | Git 资产源仓库 |
93
+ | Formula / Cask | Agent 资产 Formula |
94
+ | Cellar | 按 Git commit 隔离的本地安装区 |
95
+ | Link | 到 Codex、Claude Code 等 target 的链接 |
96
+ | `Brewfile` | `Harnessfile` |
97
+ | Receipt | 安装来源、文件摘要与所有权记录 |
98
+
99
+ ## 创建 Tap
100
+
101
+ Tap 是普通 Git 仓库。推荐按资产集合建立 Tap,不需要为每个 skill 单独建立仓库。
102
+
103
+ ```text
104
+ my-agent-tap/
105
+ ├── tap.json
106
+ ├── skills/
107
+ │ └── code-review/
108
+ │ ├── formula.json
109
+ │ └── SKILL.md
110
+ ├── workflows/
111
+ ├── agents/
112
+ ├── instructions/
113
+ ├── prompts/
114
+ ├── mcp/
115
+ └── adapters/
116
+ ```
117
+
118
+ 最小 `tap.json`:
119
+
120
+ ```json
121
+ {
122
+ "schemaVersion": 1
123
+ }
124
+ ```
125
+
126
+ Formula 的目录名称必须与 `name` 一致,目录类型必须与 `kind` 一致:
127
+
128
+ ```json
129
+ {
130
+ "schemaVersion": 1,
131
+ "name": "code-review",
132
+ "kind": "skill",
133
+ "description": "Review code changes with a consistent rubric.",
134
+ "entry": "SKILL.md",
135
+ "targets": ["openai-codex", "claude-code"],
136
+ "dependencies": [
137
+ "xiejinheng/agents/repository-guardrails"
138
+ ],
139
+ "conflicts": [],
140
+ "tags": ["review", "quality"]
141
+ }
142
+ ```
143
+
144
+ 完整坐标为 `<owner>/<tap>/<formula>`。依赖和冲突必须使用完整坐标,以避免跨 Tap 名称歧义。
145
+
146
+ Git commit 是安装版本的唯一事实来源;Formula 不维护 `.snapshots` 或重复的 `history`。
147
+
148
+ MCP Formula 的入口是统一 JSON。stdio 配置使用 `command`、可选 `args` 和只包含环境变量名称的 `envVars`;HTTP 配置使用 `transport: "http"`、`url`、可选 `bearerTokenEnvVar` 与 `headersFromEnv`。HarnessBrew 不接受入口中的明文 `env` 密钥值。
149
+
150
+ `adapter` Formula 是可由 Git/Cellar 管理的扩展资产,但不会作为代码自动执行。Target Adapter 运行时使用单独的可信模块机制:先审查并安装 npm 包,
151
+ 再通过 `harnessbrew adapter add <module>` 显式授权。这样 Tap 仍保持声明式、不执行任意代码,而第三方 Target 可以接入版本化 Adapter SDK。
152
+
153
+ ## Target
154
+
155
+ 当前内置:
156
+
157
+ - `openai-codex`
158
+ - `claude-code`
159
+
160
+ 可以在安装时指定 target:
161
+
162
+ ```bash
163
+ harnessbrew install code-review --target openai-codex
164
+ ```
165
+
166
+ Codex Skill 默认安装到 `~/.agents/skills`,其他 Codex 配置使用 `~/.codex`;Claude Code 使用 `~/.claude`。Skill 以完整目录软链安装,因此 `scripts/`、`references/` 和 `assets/` 等相对资源会与 `SKILL.md` 一起生效。Workflow 和 Prompt 会被投影为带标准 frontmatter 的 Target Skill。Agent 则以统一 Markdown 作为源码:投递到 Codex 时确定性渲染为 `.codex/agents/<name>.toml`,投递到 Claude Code 时渲染为 `.claude/agents/<name>.md`。Instruction 在 Codex 的 `AGENTS.md` 中使用带所有权标记的受管区块,在 Claude Code 中链接为 `.claude/rules/<name>.md`;MCP 分别按 TOML 区块或 JSON 键合并。卸载这些共享配置不会覆盖用户内容。需要隔离安装时可使用:
167
+
168
+ ```bash
169
+ harnessbrew install code-review \
170
+ --target openai-codex \
171
+ --target-root /path/to/sandbox/.codex
172
+ ```
173
+
174
+ Target 支持用户级与项目级 scope;`--project` 会隐式选择 project scope。同一 Formula 可以同时存在于两个 scope,Receipt 会按实际目标路径分别记录操作:
175
+
176
+ ```bash
177
+ harnessbrew link code-review --target openai-codex --scope user
178
+ harnessbrew link code-review --target openai-codex --scope project --project /path/to/repo
179
+ harnessbrew unlink code-review --target openai-codex --scope project --project /path/to/repo
180
+ ```
181
+
182
+ 项目级 Codex 资产使用项目中的 `.agents/skills`、`.codex/agents`、根 `AGENTS.md` 和 `.codex/config.toml`;Claude Code 使用 `.claude/skills`、`.claude/agents`、`.claude/rules` 和根 `.mcp.json`。当同一 Target 有多个实例时,unlink 必须指定 scope。
183
+
184
+ `harnessbrew doctor [formula]` 会校验 Cellar 文件摘要和每条 Target operation,区分目标缺失与被修改;`harnessbrew relink <formula>` 会在 Cellar 完整的前提下,按 Receipt 记录的 scope/root 强制重建 HarnessBrew 拥有的目标。可用 `--target`、`--scope` 和 `--project` 只修复一个实例。
185
+
186
+ 也可以单独管理链接:
187
+
188
+ ```bash
189
+ harnessbrew link code-review --target openai-codex
190
+ harnessbrew unlink code-review --target openai-codex
191
+ ```
192
+
193
+ ## Harnessfile
194
+
195
+ `Harnessfile` 适合提交到个人 dotfiles 或项目仓库:
196
+
197
+ ```yaml
198
+ schemaVersion: 2
199
+ taps:
200
+ - name: xiejinheng/agents
201
+ git: git@github.com:xiejinheng/agent-assets.git
202
+ ref: main
203
+ trust: true
204
+
205
+ assets:
206
+ - formula: xiejinheng/agents/code-review
207
+ targets:
208
+ - target: openai-codex
209
+ scope: user
210
+ - target: claude-code
211
+ scope: project
212
+ project: .
213
+ ```
214
+
215
+ v2 的 Target placement 可以声明 `user` 或 `project` scope,并可使用相对于 `Harnessfile` 的 `project` 和 `root` 路径。
216
+ schema v1 的 `targets: [openai-codex]` 仍然兼容,并按 user scope 解释。
217
+
218
+ 安装并生成 `Harnessfile.lock`:
219
+
220
+ ```bash
221
+ harnessbrew bundle install
222
+ ```
223
+
224
+ v2 lockfile 会记录 Manifest 摘要、HarnessBrew Adapter 版本、每个 Tap 的准确 commit、Formula 内容摘要、依赖闭包和完整 Target placement,
225
+ 应与 `Harnessfile` 一起提交到 Git。
226
+
227
+ 在其他设备运行同一命令时,HarnessBrew 会检出 lockfile 固定的 commit,而不是未经确认地使用 Tap 最新版本。
228
+ 修改 v2 Harnessfile 后需要显式更新 lockfile:
229
+
230
+ ```bash
231
+ harnessbrew bundle install --update-lock
232
+ ```
233
+
234
+ 清理清单之外的受管资产:
235
+
236
+ ```bash
237
+ harnessbrew bundle cleanup
238
+ ```
239
+
240
+ 使用其他文件路径:
241
+
242
+ ```bash
243
+ harnessbrew bundle install --file ./config/Harnessfile
244
+ ```
245
+
246
+ ## CLI
247
+
248
+ ```text
249
+ harnessbrew tap add <owner/name> <git-url> [--ref <ref>] [--trust]
250
+ harnessbrew tap list
251
+ harnessbrew tap update [owner/name] [--allow-rewind]
252
+ harnessbrew tap trust <owner/name>
253
+ harnessbrew tap untrust <owner/name>
254
+ harnessbrew tap remove <owner/name>
255
+ harnessbrew untap <owner/name>
256
+ harnessbrew search [query] [--kind <kind>] [--target <target>]
257
+ harnessbrew info <formula>
258
+ harnessbrew install <formula> [--target <target>] [--scope <user|project>] [--project <path>] [--target-root <path>]
259
+ harnessbrew list
260
+ harnessbrew link <formula> --target <target> [--scope <user|project>] [--project <path>] [--target-root <path>]
261
+ harnessbrew unlink <formula> --target <target> [--scope <user|project>] [--project <path>] [--force]
262
+ harnessbrew doctor [formula]
263
+ harnessbrew relink <formula> [--target <target>] [--scope <user|project>] [--project <path>]
264
+ harnessbrew update
265
+ harnessbrew outdated
266
+ harnessbrew upgrade [formula]
267
+ harnessbrew uninstall <formula> [--force]
268
+ harnessbrew bundle install [--file <path>] [--update-lock]
269
+ harnessbrew bundle cleanup [--file <path>]
270
+ ```
271
+
272
+ 所有命令都可追加 `--json`,stdout 将只包含一个 schema v1 JSON envelope:`result` 是命令级结构化结果,`output` 保留人类文本,
273
+ 失败时包含 `error.code`、`error.message`、`diagnostics` 和非零 `exitCode`。
274
+
275
+ 变更命令可追加 `--dry-run`。HarnessBrew 会在同一 Home 写锁下完整执行校验和安装事务,收集每个路径的 before/after 类型与摘要,
276
+ 随后回滚 Cellar、Receipt、Tap checkout 和 Agent Target;与 `--json` 组合时,预览位于 `changes` 数组。dry-run 可能执行 Git fetch/clone 等只读网络操作。
277
+
278
+ ```bash
279
+ harnessbrew install code-review --target openai-codex --dry-run --json
280
+ ```
281
+
282
+ ## 本地目录
283
+
284
+ ```text
285
+ ~/.harnessbrew/
286
+ ├── taps/ # HarnessBrew 管理的 Git 工作树
287
+ ├── cellar/ # 按 Formula 与 commit 隔离的不可变内容
288
+ ├── receipts/ # 安装、依赖、target 链接和摘要
289
+ └── state.json # Tap 注册状态
290
+ ```
291
+
292
+ Tap 工作树和 Cellar 内容都由 HarnessBrew 管理,不应直接编辑。个人资产应在原始 Tap 仓库中修改、提交和推送,再通过 `update`/`upgrade` 安装。
293
+
294
+ ## 安全边界
295
+
296
+ - Formula 是声明式 JSON;HarnessBrew 不执行 Tap 中的任意脚本。
297
+ - 新注册的 Tap 默认不受信任:可以搜索和安装到 Cellar,但必须通过 `tap trust`、`tap add --trust` 或 Harnessfile v2 的 `trust: true` 才能链接或渲染到 Agent Target。旧状态记录按兼容策略视为已信任。
298
+ - Tap 更新默认只接受 Git fast-forward;仓库历史被重写时必须人工检查后使用 `--allow-rewind`。候选 commit 校验失败会恢复原 checkout 和状态。
299
+ - Formula 入口不能逃逸所属目录。
300
+ - 安装前会检查依赖、冲突和 target 兼容性。
301
+ - HarnessBrew 不覆盖未由 Receipt 管理的目标文件。
302
+ - 卸载前会检查 Cellar 文件摘要和符号链接目标。
303
+ - 私有 Tap 凭据由系统 Git/SSH credential 机制管理。
304
+
305
+ ## 开发
306
+
307
+ 项目使用 TypeScript 7.0,并启用严格类型检查。
308
+
309
+ ```bash
310
+ npm ci
311
+ npm run build
312
+ npm test
313
+ npm run check
314
+ ```
315
+
316
+ `npm run check` 会执行 TypeScript 编译、全部 Node.js 测试、安装包冒烟测试和 `npm pack --dry-run`。
317
+
318
+ ## Target Adapter SDK
319
+
320
+ Node.js/TypeScript 宿主可以通过公开 API 注册第三方 Agent Target。Adapter API v1 只接收 Receipt 与 Target Context,并返回一条声明式安装计划;
321
+ 实际写入、冲突检测、Receipt、doctor、relink、upgrade、dry-run 和回滚仍由 HarnessBrew transaction layer 负责。
322
+
323
+ ```ts
324
+ import { registerTargetAdapter, type TargetAdapter } from "harnessbrew";
325
+
326
+ const adapter: TargetAdapter = {
327
+ apiVersion: 1,
328
+ name: "cursor",
329
+ version: "1.0.0",
330
+ capabilities: {
331
+ skill: "symlink-directory",
332
+ agent: "symlink-file",
333
+ workflow: "symlink-file",
334
+ instruction: "symlink-file",
335
+ prompt: "symlink-file",
336
+ mcp: "unsupported",
337
+ adapter: "unsupported"
338
+ },
339
+ plan(receipt, context = {}) {
340
+ // Return one absolute destination and a source inside receipt.cellarPath.
341
+ return { target: "cursor", coordinate: receipt.coordinate, operations: [/* ... */] };
342
+ }
343
+ };
344
+
345
+ const unregister = registerTargetAdapter(adapter);
346
+ ```
347
+
348
+ SDK 会校验 API 版本、名称、版本、完整能力矩阵、计划身份、绝对目标路径和 Cellar source 边界。v1 的第三方 Adapter 计划只允许
349
+ `symlink-file`、`symlink-directory` 和 `unsupported`,不提供直接写文件或生成共享配置的操作。注册是显式、进程内操作;HarnessBrew 不会从 Tap
350
+ 自动执行 Adapter Formula。第三方 Adapter 本身是具有宿主进程权限的可信代码,只应加载经过审查的 npm 包。
351
+
352
+ 独立 CLI 可以持久化管理可信 Adapter 模块。模块需已通过 npm 安装并可被 `harnessbrew` 解析,也可以使用绝对路径或 `file://` URL;它必须默认导出
353
+ 一个 Adapter,或提供名为 `adapter` 的导出:
354
+
355
+ ```bash
356
+ harnessbrew adapter add @harnessbrew/adapter-cursor
357
+ harnessbrew adapter list
358
+ harnessbrew install review --target cursor
359
+ harnessbrew adapter remove cursor
360
+ ```
361
+
362
+ `adapter add` 是一次显式的代码执行授权。HarnessBrew 将模块标识及审核时的 name、version、API version 写入
363
+ `~/.harnessbrew/adapters.json`;后续只在 install/link/unlink/relink/upgrade/bundle 需要 Target 时加载,并在每次加载时核对身份。
364
+ 如果包升级改变身份,命令会关闭失败,要求先 remove、审查后再 add。`adapter list/remove` 本身不执行插件,HarnessBrew 也不会自动运行 `npm install`。
365
+ CLI 加载的 Target 同样进入 Harnessfile v2 lock 的 Adapter 签名。
366
+
367
+ ## 架构
368
+
369
+ 完整设计见 [docs/architecture.zh-CN.md](docs/architecture.zh-CN.md)。
370
+
371
+ ## License
372
+
373
+ MIT
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type TransactionChange } from "./core/journal.js";
1
2
  export interface CliIO {
2
3
  stdout: (message: string) => void;
3
4
  stderr: (message: string) => void;
@@ -5,5 +6,21 @@ export interface CliIO {
5
6
  export interface CliOptions {
6
7
  home?: string;
7
8
  }
9
+ export interface CliJsonError {
10
+ code: "COMMAND_FAILED" | "HARNESSBREW_ERROR";
11
+ message: string;
12
+ }
13
+ export interface CliJsonEnvelope {
14
+ schemaVersion: 1;
15
+ ok: boolean;
16
+ command: string;
17
+ exitCode: number;
18
+ dryRun: boolean;
19
+ result: unknown;
20
+ output: string[];
21
+ diagnostics: string[];
22
+ error?: CliJsonError;
23
+ changes?: TransactionChange[];
24
+ }
8
25
  export declare function runCli(args: readonly string[], io?: CliIO, options?: CliOptions): Promise<number>;
9
26
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4SD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAAiB,EACrB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAyBA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA4XD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAAiB,EACrB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CA6FjB"}