agent-conveyor 0.1.25 → 0.1.26
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/README.md
CHANGED
|
@@ -122,7 +122,10 @@ PATH="$tmp_prefix/bin:$PATH" conveyor --help
|
|
|
122
122
|
PATH="$tmp_prefix/bin:$PATH" workerctl --help
|
|
123
123
|
```
|
|
124
124
|
|
|
125
|
-
`conveyor doctor` reports local dependency health (tmux, codex, etc.)
|
|
125
|
+
`conveyor doctor --json` reports local dependency health (tmux, codex, etc.),
|
|
126
|
+
package/bin resolution, Codex home, installed operator plugin version, installed
|
|
127
|
+
operator skills, and an `operator_ready` summary for Codex app manager/worker
|
|
128
|
+
setup.
|
|
126
129
|
`conveyor db-doctor` initializes and checks the SQLite control-plane
|
|
127
130
|
database.
|
|
128
131
|
On Node versions where `node:sqlite` is still marked experimental, SQLite
|
|
@@ -151,6 +154,13 @@ static landing page. From the repo, `npm run docs:landing` serves it at
|
|
|
151
154
|
`http://127.0.0.1:8765/`.
|
|
152
155
|
The GitHub Pages version lives at
|
|
153
156
|
[`neonwatty.github.io/agent-conveyor`](https://neonwatty.github.io/agent-conveyor/).
|
|
157
|
+
Pages deploys from the protected `landing-page` branch through the
|
|
158
|
+
`Pages` GitHub Actions workflow; propose public landing-page edits against
|
|
159
|
+
that branch rather than relying on ordinary `main` package PRs to publish the
|
|
160
|
+
site.
|
|
161
|
+
Pull requests into `landing-page` run the `Landing Page PR` workflow, which
|
|
162
|
+
checks linting, unused exports/files, tests, build output, the landing-page
|
|
163
|
+
screenshot gate, and a diff-scoped max-lines guard for changed text files.
|
|
154
164
|
Use `node scripts/check-landing-page.mjs` for a docs-only desktop/mobile
|
|
155
165
|
screenshot gate; this does not run the full package release smoke.
|
|
156
166
|
|
|
@@ -163,7 +173,7 @@ and inspect the plugin:
|
|
|
163
173
|
```bash
|
|
164
174
|
npm install -g agent-conveyor
|
|
165
175
|
conveyor install-plugin
|
|
166
|
-
conveyor
|
|
176
|
+
conveyor doctor --json
|
|
167
177
|
```
|
|
168
178
|
|
|
169
179
|
The per-project default ledger for operator sessions is
|
|
@@ -1130,7 +1130,7 @@ function parseRuntimeArgs(args, env) {
|
|
|
1130
1130
|
index += 1;
|
|
1131
1131
|
}
|
|
1132
1132
|
else if (arg === "--codex-home") {
|
|
1133
|
-
if (command !== "install-skills" && command !== "install-plugin" && command !== "plugin-status" && command !== "plugin-path") {
|
|
1133
|
+
if (command !== "install-skills" && command !== "install-plugin" && command !== "plugin-status" && command !== "plugin-path" && command !== "doctor") {
|
|
1134
1134
|
return { command, enabled, error: "Unsupported TypeScript runtime option: --codex-home", explicit, flags, task };
|
|
1135
1135
|
}
|
|
1136
1136
|
const value = valueAfter(queue, index, arg);
|
|
@@ -11952,9 +11952,20 @@ function runDoctorCommand(parsed, options) {
|
|
|
11952
11952
|
const root = stateRoot({ cwd: targetCwd, env: options.env });
|
|
11953
11953
|
const tmuxPath = commandPath("tmux", options);
|
|
11954
11954
|
const codexPath = options.codexCommandResolver?.("codex") ?? commandPath("codex", options);
|
|
11955
|
+
const conveyorPath = commandPath("conveyor", options);
|
|
11956
|
+
const workerctlPath = commandPath("workerctl", options);
|
|
11957
|
+
const packageRoot = packageRootFromRuntimeModule();
|
|
11958
|
+
const packageVersion = packageVersionFromRoot(packageRoot);
|
|
11959
|
+
const plugin = agentConveyorPluginStatus(parsed, options);
|
|
11960
|
+
const pluginSkillsInstalled = plugin.skills.every((skill) => skill.installed);
|
|
11955
11961
|
const checks = [
|
|
11956
11962
|
{ name: "tmux", ok: Boolean(tmuxPath), path: tmuxPath },
|
|
11957
11963
|
{ name: "codex", ok: Boolean(codexPath), path: codexPath },
|
|
11964
|
+
{ name: "conveyor_on_path", ok: Boolean(conveyorPath), path: conveyorPath },
|
|
11965
|
+
{ name: "workerctl_on_path", ok: Boolean(workerctlPath), path: workerctlPath },
|
|
11966
|
+
{ name: "plugin_installed", ok: plugin.installed, installed_version: plugin.installed_version },
|
|
11967
|
+
{ name: "plugin_version_matches", ok: plugin.version_matches, package_version: packageVersion, plugin_version: plugin.plugin_version },
|
|
11968
|
+
{ name: "plugin_skills_installed", ok: pluginSkillsInstalled, missing: plugin.skills.filter((skill) => !skill.installed).map((skill) => skill.name) },
|
|
11958
11969
|
];
|
|
11959
11970
|
if (tmuxPath) {
|
|
11960
11971
|
const proc = runProcess(["tmux", "-V"], options);
|
|
@@ -11966,8 +11977,44 @@ function runDoctorCommand(parsed, options) {
|
|
|
11966
11977
|
}
|
|
11967
11978
|
checks.push({ name: "target_cwd_exists", ok: pathIsDirectory(targetCwd), path: targetCwd });
|
|
11968
11979
|
checks.push({ name: "state_root_exists", ok: existsSync(root), path: root });
|
|
11969
|
-
const
|
|
11970
|
-
|
|
11980
|
+
const commandReady = Boolean(conveyorPath) && Boolean(workerctlPath) && Boolean(codexPath) && Boolean(tmuxPath);
|
|
11981
|
+
const operatorReady = commandReady && plugin.installed && plugin.version_matches && pluginSkillsInstalled;
|
|
11982
|
+
const ok = checks.every((check) => check.name === "state_root_exists"
|
|
11983
|
+
|| check.name === "conveyor_on_path"
|
|
11984
|
+
|| check.name === "workerctl_on_path"
|
|
11985
|
+
|| check.name === "plugin_installed"
|
|
11986
|
+
|| check.name === "plugin_version_matches"
|
|
11987
|
+
|| check.name === "plugin_skills_installed"
|
|
11988
|
+
|| check.ok === true);
|
|
11989
|
+
return {
|
|
11990
|
+
...jsonResult({
|
|
11991
|
+
checks,
|
|
11992
|
+
codex_home: plugin.paths.codex_home,
|
|
11993
|
+
commands: {
|
|
11994
|
+
codex: { ok: Boolean(codexPath), path: codexPath },
|
|
11995
|
+
conveyor: { ok: Boolean(conveyorPath), path: conveyorPath },
|
|
11996
|
+
tmux: { ok: Boolean(tmuxPath), path: tmuxPath },
|
|
11997
|
+
workerctl: { ok: Boolean(workerctlPath), path: workerctlPath },
|
|
11998
|
+
},
|
|
11999
|
+
ok,
|
|
12000
|
+
operator_ready: operatorReady,
|
|
12001
|
+
package: {
|
|
12002
|
+
name: "agent-conveyor",
|
|
12003
|
+
root: packageRoot,
|
|
12004
|
+
version: packageVersion,
|
|
12005
|
+
},
|
|
12006
|
+
platform: process.platform,
|
|
12007
|
+
plugin,
|
|
12008
|
+
project_root: packageRoot,
|
|
12009
|
+
runtime: {
|
|
12010
|
+
node: process.version,
|
|
12011
|
+
state_root: root,
|
|
12012
|
+
target_cwd: targetCwd,
|
|
12013
|
+
},
|
|
12014
|
+
workers: doctorWorkerSummaries(root),
|
|
12015
|
+
}),
|
|
12016
|
+
exitCode: ok ? 0 : 1,
|
|
12017
|
+
};
|
|
11971
12018
|
}
|
|
11972
12019
|
function runDoctorSelfCommand(parsed, options) {
|
|
11973
12020
|
if (parsed.task !== null) {
|