@dotobokuri/fleet-cli 1.0.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.
- package/README.md +7 -0
- package/bin/fleet +3 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +47368 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -0
- package/postinstall.mjs +37 -0
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dotobokuri/fleet-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Fleet CLI — a multi-LLM orchestration kit that operates Claude Code and Codex CLI through a single unified interface.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/sbluemin/fleet-harness.git",
|
|
8
|
+
"directory": "runtime/fleet-cli"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/sbluemin/fleet-harness#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/sbluemin/fleet-harness/issues"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"bin": {
|
|
16
|
+
"fleet": "./bin/fleet"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"bin",
|
|
21
|
+
"postinstall.mjs",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"postinstall": "node postinstall.mjs"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@clack/prompts": "1.4.0",
|
|
29
|
+
"@dotobokuri/fleet-wiki-ui": "1.0.0",
|
|
30
|
+
"node-pty": "^1.0.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^24.10.0",
|
|
34
|
+
"tsup": "^8.5.0",
|
|
35
|
+
"tsx": "^4.20.3",
|
|
36
|
+
"typescript": "^6.0.2",
|
|
37
|
+
"vitest": "^4.0.13"
|
|
38
|
+
}
|
|
39
|
+
}
|
package/postinstall.mjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { chmodSync, existsSync, readdirSync, statSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
const PKG_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)));
|
|
6
|
+
const NODE_MODULES_DIR = path.join(PKG_ROOT, "node_modules");
|
|
7
|
+
|
|
8
|
+
if (process.platform === "darwin" && existsSync(NODE_MODULES_DIR)) {
|
|
9
|
+
for (const filePath of findSpawnHelpers(NODE_MODULES_DIR)) {
|
|
10
|
+
const mode = statSync(filePath).mode;
|
|
11
|
+
chmodSync(filePath, mode | 0o755);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function findSpawnHelpers(dir) {
|
|
16
|
+
const matches = [];
|
|
17
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
18
|
+
for (const entry of entries) {
|
|
19
|
+
const entryPath = path.join(dir, entry.name);
|
|
20
|
+
if (entry.isDirectory()) {
|
|
21
|
+
matches.push(...findSpawnHelpers(entryPath));
|
|
22
|
+
} else if (entry.isFile() && isNodePtySpawnHelper(entryPath)) {
|
|
23
|
+
matches.push(entryPath);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return matches;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function isNodePtySpawnHelper(filePath) {
|
|
30
|
+
const segments = filePath.split(path.sep);
|
|
31
|
+
return (
|
|
32
|
+
segments.at(-1) === "spawn-helper" &&
|
|
33
|
+
segments.at(-3) === "prebuilds" &&
|
|
34
|
+
segments.at(-2)?.startsWith("darwin-") === true &&
|
|
35
|
+
segments.includes("node-pty")
|
|
36
|
+
);
|
|
37
|
+
}
|