alanbox 0.1.2 → 0.1.3
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/0boxer/AGENTS.md +25 -0
- package/0boxer/src/AGENTS.md +16 -0
- package/0boxer/src/cli.js +53 -0
- package/0boxer/src/commands/AGENTS.md +15 -0
- package/{0commondflowv1 → 0boxer}/src/commands/install.js +9 -0
- package/{0commondflowv1 → 1swarmer}/AGENTS.md +11 -12
- package/{0commondflowv1 → 1swarmer}/src/AGENTS.md +6 -5
- package/{0commondflowv1 → 1swarmer}/src/args.js +1 -1
- package/{0commondflowv1 → 1swarmer}/src/cli.js +5 -21
- package/{0commondflowv1 → 1swarmer}/src/commands/AGENTS.md +7 -8
- package/{0commondflowv1 → 1swarmer}/src/commands/doctor.js +2 -2
- package/{0commondflowv1 → 1swarmer}/src/core/AGENTS.md +2 -2
- package/{0commondflowv1 → 1swarmer}/src/core/prompt-templates.js +1 -1
- package/{0commondflowv1 → 1swarmer}/src/core/storage.js +1 -1
- package/{0commondflowv1 → 1swarmer}/src/prompt/AGENTS.md +1 -1
- package/{0commondflowv1 → 1swarmer}/src/prompt/default.md +1 -1
- package/{0commondflowv1 → 1swarmer}/src/prompt/synthesizer.md +1 -1
- package/{0commondflowv1 → 1swarmer}/src/prompt/verifier.md +1 -1
- package/{0commondflowv1 → 1swarmer}/src/runner/AGENTS.md +3 -3
- package/2designer/LICENSE +21 -0
- package/2designer/README.md +39 -0
- package/2designer/dist/cdp-engine-A5WTMTVF.js +10 -0
- package/2designer/dist/cdp-engine-A5WTMTVF.js.map +1 -0
- package/2designer/dist/cdp-engine-JK2XVDHK.js +314 -0
- package/2designer/dist/cdp-engine-JK2XVDHK.js.map +1 -0
- package/2designer/dist/chunk-JVF26NXD.js +313 -0
- package/2designer/dist/chunk-JVF26NXD.js.map +1 -0
- package/2designer/dist/chunk-NLYFLQ3C.js +74 -0
- package/2designer/dist/chunk-NLYFLQ3C.js.map +1 -0
- package/2designer/dist/chunk-NQ3ASZUE.js +185 -0
- package/2designer/dist/chunk-NQ3ASZUE.js.map +1 -0
- package/2designer/dist/chunk-SKEIVBOU.js +58 -0
- package/2designer/dist/chunk-SKEIVBOU.js.map +1 -0
- package/2designer/dist/chunk-UVKSRKXR.js +71 -0
- package/2designer/dist/chunk-UVKSRKXR.js.map +1 -0
- package/2designer/dist/cli.js +498 -0
- package/2designer/dist/cli.js.map +1 -0
- package/2designer/dist/index.d.ts +129 -0
- package/2designer/dist/index.js +230 -0
- package/2designer/dist/index.js.map +1 -0
- package/2designer/dist/playwright-engine-3YKJOUNU.js +8 -0
- package/2designer/dist/playwright-engine-3YKJOUNU.js.map +1 -0
- package/2designer/dist/playwright-engine-YBRDIUHF.js +186 -0
- package/2designer/dist/playwright-engine-YBRDIUHF.js.map +1 -0
- package/2designer/dist/tint-I3FTT23O.js +60 -0
- package/2designer/dist/tint-I3FTT23O.js.map +1 -0
- package/2designer/dist/tint-RUSSUAWA.js +7 -0
- package/2designer/dist/tint-RUSSUAWA.js.map +1 -0
- package/2designer/package.json +56 -0
- package/README.md +11 -8
- package/bin/alanbox.js +11 -0
- package/bin/designer.js +10 -0
- package/bin/swarmer.js +11 -0
- package/cli.js +153 -0
- package/hooks/hooks.json +1 -1
- package/package.json +24 -11
- package/plugin/AGENTS.md +2 -2
- package/plugin/plugin.json +7 -7
- package/shared/AGENTS.md +15 -0
- package/shared/package-args.js +68 -0
- package/skills/AGENTS.md +9 -5
- package/skills/aitool/SKILL.md +36 -0
- package/skills/desginer/SKILL.md +122 -0
- package/skills/swarmer/SKILL.md +109 -0
- package/bin/multirunagent.js +0 -15
- package/skills/aibox-swam/SKILL.md +0 -77
- package/skills/sub-codex-doctor/SKILL.md +0 -27
- package/skills/sub-codex-swarm/SKILL.md +0 -56
- /package/{0commondflowv1 → 1swarmer}/res/three-lens-review.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/commands/info.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/commands/swarm/auto.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/commands/swarm/custom.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/commands/swarm/index.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/core/handoff.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/core/prompt-builder.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/core/swarm-executor.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/core/workers.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/core/workflow-planner.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/core/workflow-storage.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/prompt/reviewer.md +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/runner/codex-runner.js +0 -0
- /package/{0commondflowv1 → 1swarmer}/src/runner/config.json +0 -0
package/0boxer/AGENTS.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## 0boxer
|
|
2
|
+
|
|
3
|
+
`C:\Users\lenovo\Desktop\my-project\101my-aitool\aibox\0boxer` 是 `alanbox` 的包级资源命令层,负责 aibox 自身资源安装、初始化和更新。`1swarmer` 负责 worker/swarm 执行和 provider 诊断;不要把 `init`、`update`、`install` 这类 aibox 资源命令写回 `1swarmer`。
|
|
4
|
+
|
|
5
|
+
**Important:** `install`、`init`、`update` 会真实复制 Codex/Claude skills、hooks、mcp、scripts 和 Codex plugin manifest。修改或验证前确认目标目录,避免误写用户环境。
|
|
6
|
+
|
|
7
|
+
### Important files
|
|
8
|
+
|
|
9
|
+
- `src/cli.js` — 0boxer 命令分发器;当前只处理 `install`、`init`、`update`。
|
|
10
|
+
- `../shared/package-args.js` — 包级资源命令参数解析器;只解析安装 target 相关选项,不依赖 `1swarmer/src/args.js`。
|
|
11
|
+
- `src/commands/install.js` — 安装或更新 Codex/Claude 资源;Codex 额外维护 plugin manifest 和 marketplace entry。
|
|
12
|
+
|
|
13
|
+
### Implementation notes
|
|
14
|
+
|
|
15
|
+
- `init` 和 `update` 当前是 `install` 的别名,用来安装或刷新 bundled skills/hooks/mcp/scripts。
|
|
16
|
+
- `--target codex|claude|both` 可跳过询问;未传 target 且在交互终端运行时会询问安装到 Codex、Claude 还是两者,非交互模式必须显式传 target。
|
|
17
|
+
- `0boxer` 不复用 `1swarmer` 的参数解析;新增资源命令选项时维护 `../shared/package-args.js`,避免把 worker/swarm 参数带进包级安装命令。
|
|
18
|
+
- 重命名或合并 skill 时,同步维护 `install.js` 的废弃 skill 清理名单,避免用户目录残留重复入口。
|
|
19
|
+
- aibox 资源命令优先挂在 `0boxer/src/cli.js` 和根 `cli.js`;worker/provider 命令归 `1swarmer`。
|
|
20
|
+
|
|
21
|
+
### Verification
|
|
22
|
+
|
|
23
|
+
- 从包根目录运行:`npm test`
|
|
24
|
+
- 轻量检查包级帮助:`node bin/alanbox.js init --help`
|
|
25
|
+
- 安装命令需要真实复制资源:`node bin/alanbox.js install --target codex`、`--target claude` 或 `--target both`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## 0boxer src
|
|
2
|
+
|
|
3
|
+
`0boxer/src` 是 `alanbox` 包级资源命令源码目录。这里维护 aibox 自身的资源安装、初始化和更新;worker 执行、provider 诊断、handoff、storage、runner 配置仍归 `1swarmer/src`。
|
|
4
|
+
|
|
5
|
+
**Important:** 这里通过 `../../shared/package-args.js` 使用包级资源命令参数解析,不要依赖 `1swarmer` 的参数解析或 runner;provider 诊断命令归 `1swarmer`。
|
|
6
|
+
|
|
7
|
+
### Important files
|
|
8
|
+
|
|
9
|
+
- `cli.js` — 包级资源命令分发器;只处理 `install`、`init`、`update`。
|
|
10
|
+
- `commands/install.js` — 复制 bundled resources 到 Codex/Claude 用户目录。
|
|
11
|
+
|
|
12
|
+
### Implementation notes
|
|
13
|
+
|
|
14
|
+
- 安装命令必须显式触发;不要让 `npm install`、`npx` 或普通 require 隐式写用户目录。
|
|
15
|
+
- 不要从 `1swarmer/src/args.js` 引入 worker 参数解析;`0boxer` 只使用 `shared/package-args.js` 的包级资源命令选项集。
|
|
16
|
+
- 新增 aibox 包级资源命令时,同步更新根 `cli.js`、README、skills 和 `0boxer/AGENTS.md`。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* aibox 包级命令分发器。
|
|
3
|
+
* 负责 install/init/update 资源安装更新。
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const { parsePackageArgs } = require('../../shared/package-args');
|
|
7
|
+
const { runInstall } = require('./commands/install');
|
|
8
|
+
|
|
9
|
+
async function main(argv = process.argv.slice(2)) {
|
|
10
|
+
if (argv.includes('-h') || argv.includes('--help') || argv[0] === 'help') {
|
|
11
|
+
printUsage();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const command = argv[0] && !argv[0].startsWith('-') ? argv.shift() : '';
|
|
16
|
+
if (!command) {
|
|
17
|
+
printUsage();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const args = parsePackageArgs(argv, command);
|
|
22
|
+
const context = { args };
|
|
23
|
+
|
|
24
|
+
if (command === 'install' || command === 'init' || command === 'update') {
|
|
25
|
+
await runInstall(context);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
throw new Error(`unknown aibox command: ${command}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function printUsage() {
|
|
33
|
+
console.log(`
|
|
34
|
+
aibox package commands
|
|
35
|
+
|
|
36
|
+
Usage:
|
|
37
|
+
alanbox install --target codex|claude|both
|
|
38
|
+
alanbox init
|
|
39
|
+
alanbox update
|
|
40
|
+
|
|
41
|
+
Install options:
|
|
42
|
+
--target <target> codex | claude | both. If omitted, install asks interactively.
|
|
43
|
+
--codex Install only Codex resources
|
|
44
|
+
--claude Install only Claude resources
|
|
45
|
+
--both Install Codex and Claude resources
|
|
46
|
+
init/update Aliases of install; use them when you want an interactive target choice.
|
|
47
|
+
`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
module.exports = {
|
|
51
|
+
main,
|
|
52
|
+
printUsage,
|
|
53
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## 0boxer commands
|
|
2
|
+
|
|
3
|
+
`0boxer/src/commands` 存放 `alanbox` 包级资源命令处理器。这里的命令面向 aibox 自身资源安装和更新,不直接执行 swarm worker,也不做 provider 诊断。
|
|
4
|
+
|
|
5
|
+
**Important:** `install` 会写入用户 Codex/Claude 目录;新增验证命令时不要默认运行真实安装,除非用户明确要求或已确认目标。
|
|
6
|
+
|
|
7
|
+
### Important files
|
|
8
|
+
|
|
9
|
+
- `install.js` — 安装或更新 Codex/Claude skills、hooks、mcp、scripts;Codex 额外安装 plugin manifest 和 marketplace entry。
|
|
10
|
+
|
|
11
|
+
### Implementation notes
|
|
12
|
+
|
|
13
|
+
- `init`、`update` 通过 `0boxer/src/cli.js` 进入 `install.js`,语义是安装或刷新 aibox bundled resources。
|
|
14
|
+
- 安装 target 必须是 `codex`、`claude` 或 `both`;非交互模式必须显式传 target。
|
|
15
|
+
- 废弃 skill 名清理名单和 `skills/AGENTS.md` 要保持同步。
|
|
@@ -3,6 +3,7 @@ const path = require('path');
|
|
|
3
3
|
const readline = require('readline');
|
|
4
4
|
|
|
5
5
|
const INSTALL_TARGETS = new Set(['codex', 'claude', 'both']);
|
|
6
|
+
const DEPRECATED_SKILL_NAMES = ['aibox-swarmer', 'sub-codex-doctor', 'sub-codex-swarmer'];
|
|
6
7
|
|
|
7
8
|
async function runInstall(context = {}) {
|
|
8
9
|
const packageRoot = path.resolve(__dirname, '..', '..', '..');
|
|
@@ -51,6 +52,7 @@ function installCodex({ home, packageRoot }) {
|
|
|
51
52
|
replaceDir(packageScriptsRoot, path.join(pluginRoot, 'scripts'));
|
|
52
53
|
replaceDir(packageMcpRoot, path.join(pluginRoot, 'mcp'));
|
|
53
54
|
copyOptionalFile(path.join(packageRoot, 'README.md'), path.join(pluginRoot, 'README.md'));
|
|
55
|
+
pruneDeprecatedSkills(codexSkillsRoot);
|
|
54
56
|
installSkills(packageSkillsRoot, codexSkillsRoot);
|
|
55
57
|
installResourceDir(packageHooksRoot, path.join(codexHome, 'hooks', pluginName));
|
|
56
58
|
installResourceDir(packageMcpRoot, path.join(codexHome, 'mcp', pluginName));
|
|
@@ -83,6 +85,7 @@ function installClaude({ home, packageRoot }) {
|
|
|
83
85
|
replaceDir(packageScriptsRoot, path.join(pluginRoot, 'scripts'));
|
|
84
86
|
replaceDir(packageMcpRoot, path.join(pluginRoot, 'mcp'));
|
|
85
87
|
copyOptionalFile(path.join(packageRoot, 'README.md'), path.join(pluginRoot, 'README.md'));
|
|
88
|
+
pruneDeprecatedSkills(claudeSkillsRoot);
|
|
86
89
|
installSkills(packageSkillsRoot, claudeSkillsRoot);
|
|
87
90
|
installResourceDir(packageHooksRoot, path.join(claudeHome, 'hooks', pluginName));
|
|
88
91
|
installResourceDir(packageMcpRoot, path.join(claudeHome, 'mcp', pluginName));
|
|
@@ -196,6 +199,12 @@ function installSkills(srcRoot, dstRoot) {
|
|
|
196
199
|
}
|
|
197
200
|
}
|
|
198
201
|
|
|
202
|
+
function pruneDeprecatedSkills(dstRoot) {
|
|
203
|
+
for (const name of DEPRECATED_SKILL_NAMES) {
|
|
204
|
+
removeDir(path.join(dstRoot, name));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
199
208
|
function removeDir(target) {
|
|
200
209
|
if (!fs.existsSync(target)) return;
|
|
201
210
|
fs.rmSync(target, { recursive: true, force: true });
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
##
|
|
1
|
+
## 1swarmer
|
|
2
2
|
|
|
3
|
-
`C:\Users\lenovo\Desktop\my-project\101my-aitool\aibox\
|
|
3
|
+
`C:\Users\lenovo\Desktop\my-project\101my-aitool\aibox\1swarmer` 是 `alanbox` 的 worker flow 实现层,承接 `swarmer` / `swarm`、`doctor`、`info`、参数解析、Codex/Claude 子进程 runner、worker 编排、handoff、用户级 `.multirunagent` 存储和 prompt 构造。包根 `cli.js` 负责流程级路由,`bin/alanbox.js` 和 `bin/swarmer.js` 转发到包根 `cli.js`,再由包根转入本目录。
|
|
4
4
|
|
|
5
|
-
**Important:** `
|
|
5
|
+
**Important:** `1swarmer` 是 worker 编排和 provider 诊断稳定入口,不是包级资源安装入口。`install`、`init`、`update` 归 `0boxer`;新增 `2designer` / `3apiflower` 这类流程时挂到包根 `cli.js`,不要把非 worker flow 的参数解析塞进这里。
|
|
6
6
|
|
|
7
7
|
**Important:** `src/runner/config.json` 默认 provider 是系统 `codex` CLI;Claude CLI 只能作为可选 provider/worker 配置启用。不要把个人 Antigravity cockpit 路径、全局 npm 安装路径或私有 home 写成通用默认配置。
|
|
8
8
|
|
|
9
9
|
### Important files
|
|
10
10
|
|
|
11
|
-
- `src/cli.js` —
|
|
11
|
+
- `src/cli.js` — 1swarmer worker 命令分发器;加载配置、解析运行上下文,并路由到 `doctor`、`info`、`swarm`;`swarmer` 是 `swarm` 的兼容别名,也作为 npm 独立 bin 暴露。
|
|
12
12
|
- `src/args.js` — CLI 参数解析器;新增 flag 或命令参数时优先在这里统一处理。
|
|
13
13
|
- `src/commands/swarm/index.js` — `swarm` 命令入口与路由;`cli.js` 通过 `require('./commands/swarm')` 解析到此,`--auto` / `--resume` 委托 `swarm/auto.js`,否则走 `swarm/custom.js`。
|
|
14
14
|
- `src/commands/swarm/custom.js` — 多 worker 编排主流程;负责 worker spec 执行。
|
|
15
15
|
- `src/commands/swarm/auto.js` — auto workflow 状态机;负责 GOAP 推荐、确认门、pending/resume、执行、失败重规划。
|
|
16
|
-
- `src/commands/doctor.js` — 子 Codex 环境和账号健康检查。
|
|
17
16
|
- `src/commands/info.js` — 输出当前配置、worker 和命令信息。
|
|
18
|
-
- `src/commands/
|
|
17
|
+
- `src/commands/doctor.js` — swarm/provider 健康检查。
|
|
19
18
|
- `src/runner/codex-runner.js` — Codex 子进程执行层;负责读取配置、设置 `CODEX_HOME`、spawn `codex exec/login/doctor`。
|
|
20
19
|
- `src/runner/config.json` — 当前内置最小配置来源;默认只声明 `providers.codex`、可选 `providers.claude` 和 `timeoutMs`,不预设 worker/account,默认使用各 CLI 的原生 home 和登录态。
|
|
21
20
|
- `src/core/workers.js` — worker spec 解析、分组并行阶段解析、worker 名称归一化和依赖层构建。
|
|
@@ -29,11 +28,12 @@
|
|
|
29
28
|
|
|
30
29
|
### Implementation notes
|
|
31
30
|
|
|
32
|
-
- `
|
|
31
|
+
- `swarmer`/`swarm` 是 worker 执行的唯一业务入口;单 worker 使用一个 `--worker`,需要全并行时使用 `swarm --parallel-workers`,需要混合串行/并行时用 `--worker "[spec1,spec2]"` 表示同一阶段并行。不要恢复独立 `exec` 或 `parallel` 命令。
|
|
32
|
+
- `1swarmer/src/cli.js` 只维护 worker/common 命令;包级命令组、`designer`、未来 `3apiflower` 入口应维护在 `aibox/cli.js` 和专用 `bin/*.js`。
|
|
33
33
|
- CLI 的 `--worker` 输入和未来 workflow JSON 最终都应转换为统一 task 数组,再交给同一个执行器处理。
|
|
34
34
|
- 调整参数解析时,同步检查 `src/cli.js` 的 usage 文案、README 命令示例和相关 skills。
|
|
35
|
-
- 调整 worker/handoff/storage 协议时,同步检查根目录 `skills/
|
|
36
|
-
- `install`、`init`、`update`
|
|
35
|
+
- 调整 worker/handoff/storage 协议时,同步检查根目录 `skills/swarmer` 的说明,避免 skill 仍指导旧参数或旧输出格式。
|
|
36
|
+
- `install`、`init`、`update` 都是 aibox 包级资源命令,归 `0boxer` 维护;不要在本目录重新接回这些命令。`doctor` 是 provider 诊断命令,归本目录。
|
|
37
37
|
- `%USERPROFILE%\.multirunagent\<namespace>` 是运行结果和 handoff 的持久化位置;改写存储格式前要考虑旧 run 的读取兼容。项目内 `.sub-codex` 是旧位置,不应再作为默认输出目录。
|
|
38
38
|
- scheduler、retry、resume、workflow JSON 等能力如果新增,应先复用现有 `swarm` 执行链路,再扩展状态机;当前 `swarm --auto` 已通过 `swarm/auto.js` + `swarm-executor.js` 复用普通 swarm 执行链路。
|
|
39
39
|
- 默认不隔离 CLI home:不设置 `CODEX_HOME` / `CLAUDE_CONFIG_DIR`,让 Codex/Claude 使用原生登录态;只有显式配置 `accountsDir`、worker account 或 home 时才启用隔离。
|
|
@@ -45,7 +45,6 @@
|
|
|
45
45
|
|
|
46
46
|
- 从包根目录运行烟雾检查:`npm test`
|
|
47
47
|
- 从包根目录运行轻量验证:`npm run validate`
|
|
48
|
-
- 直接查看信息:`node bin/
|
|
49
|
-
-
|
|
50
|
-
- 检查安装参数解析:`node bin/multirunagent.js install --target codex` 或 `--target claude`(会真实复制资源,确认目标目录后再运行)
|
|
48
|
+
- 直接查看信息:`node bin/swarmer.js info`
|
|
49
|
+
- 直接检查 provider 环境:`node bin/alanbox.js doctor` 或 `node bin/swarmer.js doctor`
|
|
51
50
|
- 注意:`--dry-run` 已移除,swarm/auto 不再有离线预览,运行即调用真实 provider;确认参数与命令构造请用 `info`。
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
##
|
|
1
|
+
## 1swarmer src
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`1swarmer/src` 是 `alanbox` 的 worker flow 源码目录,负责 `swarmer` / `swarm`、`doctor`、`info`、worker 编排、runner 执行、handoff、存储和 prompt 构造。入口由包根 `cli.js` 做流程级路由后进入这里,npm 发布后暴露 `alanbox`、裸 `swarmer` 和裸 `designer`。
|
|
4
4
|
|
|
5
|
-
**Important:** 这里是
|
|
5
|
+
**Important:** 这里是 1swarmer 的稳定实现层。新增命令、flag、provider、worker 协议或存储行为时,要同步检查 `1swarmer/AGENTS.md`、README、skills 说明和 `swarmer info` / `--help` 输出;本地源码验证使用 `node bin/alanbox.js ...` 或 `node bin/swarmer.js ...`。
|
|
6
6
|
|
|
7
7
|
### Important files
|
|
8
8
|
|
|
9
|
-
- `cli.js` — CLI
|
|
9
|
+
- `cli.js` — 1swarmer worker CLI 分发器;`swarm`、`doctor`、`info` 的入口和 usage 文案在这里维护。aibox 包级 `install/init/update` 归 `0boxer`。
|
|
10
10
|
- `args.js` — 通用参数解析;新增 flag 时优先在这里统一处理。
|
|
11
11
|
- `commands/` — 具体 CLI 命令实现;`swarm` 拆分为 `commands/swarm/`(`index.js` 路由、`custom.js` 手动 worker、`auto.js` 推荐/确认/恢复流程),修改前先读 `commands/AGENTS.md`。
|
|
12
12
|
- `core/` — worker、handoff、storage、prompt 构造等核心协议;修改前先读 `core/AGENTS.md`。
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
### Implementation notes
|
|
17
17
|
|
|
18
18
|
- `swarm` 是 worker 执行的唯一业务入口;单 worker 使用一个 `--worker`,全并行多 worker 走 `swarm --parallel-workers`,混合串行/并行用 `--worker "[spec1,spec2]"` 表达同一阶段并行,不要复制出独立 `exec` 或 `parallel` 命令。
|
|
19
|
+
- 包级流程路由不在本目录维护;`install/init/update` 归 `0boxer`,`designer` 和未来其他 flow 入口应挂在 `aibox/cli.js`,避免本文件重新变成所有流程混杂的总入口。
|
|
19
20
|
- 默认使用原生 CLI 登录态;只有显式配置隔离 home 时才设置 `CODEX_HOME` 或 `CLAUDE_CONFIG_DIR`。
|
|
20
21
|
- 多 worker 输出默认写入 `%USERPROFILE%\.multirunagent\<namespace>`,不要重新写回项目内 `.sub-codex`。
|
|
21
22
|
- Windows 兼容是长期约束;路径拼接使用 Node `path`,命令文案和示例要考虑 PowerShell。
|
|
@@ -23,4 +24,4 @@
|
|
|
23
24
|
### Verification
|
|
24
25
|
|
|
25
26
|
- 从包根目录运行:`npm run validate`
|
|
26
|
-
- 直接检查配置与参数解析:`node bin/
|
|
27
|
+
- 直接检查配置与参数解析:`node bin/swarmer.js info`
|
|
@@ -7,7 +7,6 @@ const { loadConfig } = require('./runner/codex-runner');
|
|
|
7
7
|
const { parseArgs } = require('./args');
|
|
8
8
|
const { runDoctor } = require('./commands/doctor');
|
|
9
9
|
const { runInfo } = require('./commands/info');
|
|
10
|
-
const { runInstall } = require('./commands/install');
|
|
11
10
|
const { runSwarm } = require('./commands/swarm');
|
|
12
11
|
|
|
13
12
|
async function main(argv = process.argv.slice(2)) {
|
|
@@ -17,9 +16,9 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
let command = argv[0] && !argv[0].startsWith('-') ? argv.shift() : 'swarm';
|
|
20
|
-
if (command === '
|
|
19
|
+
if (command === 'swarmer') {
|
|
21
20
|
command = 'swarm';
|
|
22
|
-
console.error('[alanbox] `
|
|
21
|
+
console.error('[alanbox] `swarmer` 已按 `swarm` 兼容处理。');
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
if (command === 'help') {
|
|
@@ -46,11 +45,6 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
46
45
|
return;
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
if (command === 'install' || command === 'init' || command === 'update') {
|
|
50
|
-
await runInstall(context);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
48
|
if (command === 'swarm') {
|
|
55
49
|
await runSwarm(context);
|
|
56
50
|
return;
|
|
@@ -64,16 +58,13 @@ function printUsage() {
|
|
|
64
58
|
alanbox CLI runner
|
|
65
59
|
|
|
66
60
|
Usage:
|
|
67
|
-
node index.js info [--account 30428]
|
|
68
61
|
node index.js doctor [--account 30428]
|
|
69
|
-
node index.js
|
|
70
|
-
node index.js init
|
|
71
|
-
node index.js update
|
|
62
|
+
node index.js info [--account 30428]
|
|
72
63
|
node index.js swarm [options] --worker "codex:<role>:<prompt>" --worker "claude:<role>:<prompt>"
|
|
73
|
-
node index.js
|
|
64
|
+
node index.js swarmer [options] --worker "codex:<role>:<prompt>"
|
|
74
65
|
node index.js swarm --worker "codex:a:先做 A" --worker "[codex:c:并行 C,codex:d:并行 D]" --worker "codex:e:最后汇总"
|
|
75
66
|
node index.js swarm --auto "<goal>" -a "codex:reviewer:复核代码" -p "最好每个子文件夹一个子agent并行"
|
|
76
|
-
node index.js
|
|
67
|
+
node index.js swarmer --auto "<goal>" -a "codex:reviewer:复核代码"
|
|
77
68
|
node index.js swarm --resume <runId> --namespace <name> -y
|
|
78
69
|
|
|
79
70
|
Options:
|
|
@@ -96,13 +87,6 @@ Options:
|
|
|
96
87
|
--task <spec> Backward-compatible alias for --worker in swarm mode
|
|
97
88
|
--parallel-workers Run swarm workers in parallel instead of dependency order
|
|
98
89
|
|
|
99
|
-
Install options:
|
|
100
|
-
--target <target> codex | claude | both. If omitted, install asks interactively.
|
|
101
|
-
--codex Install only Codex resources
|
|
102
|
-
--claude Install only Claude resources
|
|
103
|
-
--both Install Codex and Claude resources
|
|
104
|
-
init/update Aliases of install; use them when you want an interactive target choice.
|
|
105
|
-
|
|
106
90
|
Auto workflow options:
|
|
107
91
|
--auto Let GOAP planner recommend workflow before execution
|
|
108
92
|
--agent, -a <spec> Repeatable auto agent spec. Example: codex:reviewer:复核 src 代码
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## commands
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`1swarmer/src/commands` 存放 `alanbox` 的 worker 和 provider 诊断命令处理器。每个文件只负责本 flow 相关命令的行为编排,底层 worker 解析、runner 执行、handoff 和 storage 应复用 `core/`、`runner/`、`prompt/`。
|
|
4
4
|
|
|
5
5
|
**Important:** 新增或修改命令参数时,必须同步检查 `src/args.js`、`src/cli.js` usage 文案、README 和相关 skills,避免 CLI 行为和说明不一致。
|
|
6
6
|
|
|
@@ -9,21 +9,20 @@
|
|
|
9
9
|
- `swarm/index.js` — `swarm` 命令入口与路由;`--auto` / `--resume` 委托 `swarm/auto.js`,否则走 `swarm/custom.js`。`cli.js` 通过 `require('./commands/swarm')` 解析到此目录。
|
|
10
10
|
- `swarm/custom.js` — 多 worker 串行/依赖层编排;解析 worker specs 后复用共享 executor。
|
|
11
11
|
- `swarm/auto.js` — `swarm --auto` 状态机;负责 GOAP workflow 推荐、确认门、pending/resume、执行和失败重规划。
|
|
12
|
-
- `doctor.js` — 环境和 provider 健康检查;用于诊断 CLI 命令、home、认证和 dry-run。
|
|
13
12
|
- `info.js` — 输出当前配置和运行信息;应避免泄露 secret 或本机敏感路径之外的无关细节。
|
|
14
|
-
- `
|
|
13
|
+
- `doctor.js` — provider 健康检查;用于诊断 CLI 命令、home、认证和运行环境。
|
|
15
14
|
|
|
16
15
|
### Implementation notes
|
|
17
16
|
|
|
18
17
|
- `swarm` 的 runDir 应来自 `core/storage.js`,默认在 `%USERPROFILE%\.multirunagent\<namespace>`;auto workflow run 使用 `%USERPROFILE%\.multirunagent\<namespace>\runs\<runId>`。
|
|
19
18
|
- `swarm --auto` 中 `-a` 表示 repeatable agent spec、`-p` 表示 plan hint;非 auto 命令仍保持旧 account/profile 语义,文档和 usage 必须同步说明。
|
|
20
|
-
- worker 执行统一通过 `
|
|
21
|
-
- `install`、`init`、`update`
|
|
22
|
-
- `
|
|
19
|
+
- worker 执行统一通过 `swarmer`/`swarm` 开启;单 worker 使用一个 `--worker`,全并行多 worker 使用 `swarm --parallel-workers`,混合串行/并行用 `--worker "[spec1,spec2]"` 表达同一阶段并行。不要恢复独立 `exec` / `parallel` 命令或复制执行链路。
|
|
20
|
+
- `install`、`init`、`update` 归 `0boxer/src/commands`;不要在本目录新增或恢复这些包级资源命令。
|
|
21
|
+
- `swarmer info` 输出解析后的 provider、command、env 和 worker 配置,是用户排查的重要依据;改动 provider、env、args 解析时要实际运行 `info` 检查(本地源码可用 `node bin/swarmer.js info`,`--dry-run` 预览已移除)。
|
|
23
22
|
|
|
24
23
|
### Verification
|
|
25
24
|
|
|
26
25
|
- 从包根目录运行:`npm run validate`
|
|
27
|
-
- 修改命令参数或 provider/env 展示后:`node bin/
|
|
26
|
+
- 修改命令参数或 provider/env 展示后:`node bin/swarmer.js info`
|
|
27
|
+
- 修改 provider 诊断后:`node bin/swarmer.js doctor`
|
|
28
28
|
- 修改 auto workflow、planner 或模板后,需实际运行一次 `swarm --auto`(已无 dry-run/JSON 离线预览)验证。
|
|
29
|
-
- 修改安装命令后额外检查:`node bin/multirunagent.js install --target codex`、`--target claude` 或 `--target both`(会真实复制资源,确认目标目录后再运行)。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## core
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`1swarmer/src/core` 存放 worker 编排协议、handoff 协议、prompt 构造和本地结果存储辅助函数,是 `swarm` 使用的核心逻辑。
|
|
4
4
|
|
|
5
5
|
**Important:** 这里的输出格式、prompt 协议和路径会被命令、skills、README 和用户历史 run 依赖。改协议或存储结构前,要考虑旧结果读取兼容,并同步更新说明文档。
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
- `swarm-executor.js` — 普通 swarm 和 auto workflow 共用的 task graph 执行器;负责 runner 调用、结果写入和 handoff 汇总,`swarm --parallel-workers` 也走这里。
|
|
11
11
|
- `workflow-planner.js` — 本地最小 GOAP planner;把自然语言目标、`-a` agent spec 和 `-p` plan hint 转成 phases/actions/dependencies。
|
|
12
12
|
- `workflow-storage.js` — auto workflow 的 AgentDB-lite 文件存储;写入 run/plan/state/steps JSON,不替代旧 swarm results/memory。
|
|
13
|
-
- `prompt-templates.js` — 从 `
|
|
13
|
+
- `prompt-templates.js` — 从 `1swarmer/src/prompt/<role>.md` 读取 auto workflow role 模板并安全 fallback。
|
|
14
14
|
- `handoff.js` — 构造 prior results context,并解析 / 生成 `HANDOFF_JSON`。
|
|
15
15
|
- `prompt-builder.js` — 构造 role、worker、platform、namespace、context、skill 和 task 的最终 prompt。
|
|
16
16
|
- `storage.js` — 写入 worker markdown 输出和 memory JSON;默认根目录是 `%USERPROFILE%\.multirunagent`。
|
|
@@ -73,7 +73,7 @@ function updateMemoryIndex(memoryDir, entry) {
|
|
|
73
73
|
function getUserStateRoot() {
|
|
74
74
|
const homeDir = process.env.USERPROFILE || process.env.HOME;
|
|
75
75
|
if (!homeDir) {
|
|
76
|
-
throw new Error('cannot resolve user home directory for
|
|
76
|
+
throw new Error('cannot resolve user home directory for alanbox state');
|
|
77
77
|
}
|
|
78
78
|
return path.join(homeDir, '.multirunagent');
|
|
79
79
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## runner
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`1swarmer/src/runner` 负责读取 provider 配置、解析 CLI 命令参数,并通过子进程启动 Codex 或 Claude。这里决定是否使用原生 CLI home,或在显式配置时启用隔离 home。
|
|
4
4
|
|
|
5
5
|
**Important:** 默认必须使用原生 Codex / Claude CLI 登录态,不设置 `CODEX_HOME` 或 `CLAUDE_CONFIG_DIR`。只有显式配置 `accountsDir`、worker account 或 home 时才启用隔离。
|
|
6
6
|
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
### Verification
|
|
21
21
|
|
|
22
|
-
- 从包根目录运行:`node bin/
|
|
23
|
-
- 检查默认 provider:`node bin/
|
|
22
|
+
- 从包根目录运行:`node bin/alanbox.js doctor` 或 `node bin/swarmer.js doctor`
|
|
23
|
+
- 检查默认 provider:`node bin/swarmer.js info`
|
|
24
24
|
- 注意:`--dry-run` 已移除,检查子 worker 命令构造请用 `info`(已无 swarm dry-run 预览)。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Zhiyu Fang
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# designer
|
|
2
|
+
|
|
3
|
+
Runtime UI measurement CLI for AI agents. The active command surface is intentionally small:
|
|
4
|
+
|
|
5
|
+
- `measure` — read element bbox, computed CSS, and optional child layout as JSON.
|
|
6
|
+
- `screenshot` — capture a full page or selected element as PNG.
|
|
7
|
+
- `overlay` — tint a design screenshot magenta and composite it over the runtime page.
|
|
8
|
+
|
|
9
|
+
The CLI is bundled through `alanbox` as both `designer` and `alanbox designer ...`.
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
designer measure --url "http://localhost:3000" --selector ".dialog"
|
|
15
|
+
designer screenshot --url "http://localhost:3000" --selector ".dialog" --output runtime.png
|
|
16
|
+
designer overlay --design design.png --url "http://localhost:3000" --selector ".dialog" --output overlay.png
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
For Axure or iframe-based designs:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
designer measure --url "http://127.0.0.1:32767/start.html" --frame "#mainFrame" --selector "#u0" --depth 0 --cdp 127.0.0.1:8000
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Structure
|
|
26
|
+
|
|
27
|
+
- `src/` — active implementation.
|
|
28
|
+
- `dist/` — built runtime shipped by `alanbox`.
|
|
29
|
+
- `res/designer-main-legacy/` — archived old commands and references, not part of the active CLI.
|
|
30
|
+
|
|
31
|
+
## Development
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pnpm install
|
|
35
|
+
pnpm build
|
|
36
|
+
pnpm test
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The active workflow is guided by `../skills/desginer/SKILL.md`; keep command options there in sync with `src/cli.ts`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|