pm4ai 0.0.6
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.
Potentially problematic release.
This version of pm4ai might be problematic. Click here for more details.
- package/dist/audit.d.ts +20 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +254 -0
- package/dist/audit.js.map +1 -0
- package/dist/check-cache.d.ts +21 -0
- package/dist/check-cache.d.ts.map +1 -0
- package/dist/check-cache.js +89 -0
- package/dist/check-cache.js.map +1 -0
- package/dist/check-worker.d.ts +2 -0
- package/dist/check-worker.d.ts.map +1 -0
- package/dist/check-worker.js +42 -0
- package/dist/check-worker.js.map +1 -0
- package/dist/checks.d.ts +11 -0
- package/dist/checks.d.ts.map +1 -0
- package/dist/checks.js +176 -0
- package/dist/checks.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +44 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants.d.ts +22 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +22 -0
- package/dist/constants.js.map +1 -0
- package/dist/discover.d.ts +19 -0
- package/dist/discover.d.ts.map +1 -0
- package/dist/discover.js +132 -0
- package/dist/discover.js.map +1 -0
- package/dist/fix.d.ts +5 -0
- package/dist/fix.d.ts.map +1 -0
- package/dist/fix.js +182 -0
- package/dist/fix.js.map +1 -0
- package/dist/format.d.ts +9 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +93 -0
- package/dist/format.js.map +1 -0
- package/dist/guide.d.ts +2 -0
- package/dist/guide.d.ts.map +1 -0
- package/dist/guide.js +50 -0
- package/dist/guide.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/infer.d.ts +4 -0
- package/dist/infer.d.ts.map +1 -0
- package/dist/infer.js +56 -0
- package/dist/infer.js.map +1 -0
- package/dist/init.d.ts +3 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +75 -0
- package/dist/init.js.map +1 -0
- package/dist/log.d.ts +12 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +26 -0
- package/dist/log.js.map +1 -0
- package/dist/preflight.d.ts +3 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +29 -0
- package/dist/preflight.js.map +1 -0
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +67 -0
- package/dist/setup.js.map +1 -0
- package/dist/status.d.ts +4 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +66 -0
- package/dist/status.js.map +1 -0
- package/dist/sync.d.ts +9 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +301 -0
- package/dist/sync.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +15 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +83 -0
- package/dist/utils.js.map +1 -0
- package/package.json +42 -0
package/dist/utils.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noEmptyBlockStatements: intentional catch-swallow */
|
|
2
|
+
/* oxlint-disable no-empty */
|
|
3
|
+
/* eslint-disable no-empty */
|
|
4
|
+
import { $, file } from 'bun';
|
|
5
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
const readJson = async (path) => {
|
|
8
|
+
const f = file(path);
|
|
9
|
+
if (!(await f.exists()))
|
|
10
|
+
return;
|
|
11
|
+
try {
|
|
12
|
+
return (await f.json());
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
};
|
|
16
|
+
const isPkg = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
17
|
+
const readPkg = async (path) => {
|
|
18
|
+
const raw = await readJson(path);
|
|
19
|
+
return isPkg(raw) ? raw : undefined;
|
|
20
|
+
};
|
|
21
|
+
const projectName = (path) => path.split('/').pop() ?? '';
|
|
22
|
+
const getBunVersion = async () => {
|
|
23
|
+
const r = await $ `bun --version`.quiet().nothrow();
|
|
24
|
+
return r.stdout.toString().trim();
|
|
25
|
+
};
|
|
26
|
+
const ghRepoRe = /github\.com[/:](?<repo>[^/]+\/[^/.]+)/u;
|
|
27
|
+
const getGhRepo = async (projectPath) => {
|
|
28
|
+
const result = await $ `git remote get-url origin`.cwd(projectPath).quiet().nothrow();
|
|
29
|
+
return ghRepoRe.exec(result.stdout.toString().trim())?.groups?.repo;
|
|
30
|
+
};
|
|
31
|
+
const collectWorkspacePackages = async (projectPath) => {
|
|
32
|
+
const rootPkgPath = join(projectPath, 'package.json');
|
|
33
|
+
const rootPkg = await readPkg(rootPkgPath);
|
|
34
|
+
if (!rootPkg)
|
|
35
|
+
return [];
|
|
36
|
+
const results = [{ path: rootPkgPath, pkg: rootPkg }];
|
|
37
|
+
const wsPkgPaths = (rootPkg.workspaces ?? []).flatMap(ws => {
|
|
38
|
+
const wsDir = join(projectPath, ws.replace('/*', ''));
|
|
39
|
+
if (!existsSync(wsDir))
|
|
40
|
+
return [];
|
|
41
|
+
return readdirSync(wsDir, { withFileTypes: true })
|
|
42
|
+
.filter(e => e.isDirectory())
|
|
43
|
+
.map(e => join(wsDir, e.name, 'package.json'));
|
|
44
|
+
});
|
|
45
|
+
const wsPkgs = await Promise.all(wsPkgPaths.map(async (p) => {
|
|
46
|
+
const pkg = await readPkg(p);
|
|
47
|
+
return pkg ? { path: p, pkg } : undefined;
|
|
48
|
+
}));
|
|
49
|
+
for (const wp of wsPkgs)
|
|
50
|
+
if (wp)
|
|
51
|
+
results.push(wp);
|
|
52
|
+
return results;
|
|
53
|
+
};
|
|
54
|
+
let verbose = false;
|
|
55
|
+
const setVerbose = (v) => {
|
|
56
|
+
verbose = v;
|
|
57
|
+
};
|
|
58
|
+
const debug = (...args) => {
|
|
59
|
+
if (verbose)
|
|
60
|
+
console.error('[pm4ai]', ...args); // eslint-disable-line no-console
|
|
61
|
+
};
|
|
62
|
+
const findGitRoot = () => {
|
|
63
|
+
let dir = process.cwd();
|
|
64
|
+
while (dir !== '/') {
|
|
65
|
+
if (existsSync(join(dir, '.git')))
|
|
66
|
+
return dir;
|
|
67
|
+
dir = dirname(dir);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const isInsideProject = async () => {
|
|
71
|
+
const root = findGitRoot();
|
|
72
|
+
if (!root)
|
|
73
|
+
return;
|
|
74
|
+
const allPkgs = await collectWorkspacePackages(root);
|
|
75
|
+
const hasLintmax = allPkgs.some(({ pkg }) => {
|
|
76
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
77
|
+
return 'lintmax' in deps;
|
|
78
|
+
});
|
|
79
|
+
if (hasLintmax)
|
|
80
|
+
return root;
|
|
81
|
+
};
|
|
82
|
+
export { collectWorkspacePackages, debug, getBunVersion, getGhRepo, isInsideProject, projectName, readJson, readPkg, setVerbose };
|
|
83
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pm4ai",
|
|
3
|
+
"version": "0.0.6",
|
|
4
|
+
"description": "Agent-first anti-slop project management for TypeScript monorepos",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"bun",
|
|
7
|
+
"lintmax",
|
|
8
|
+
"monorepo",
|
|
9
|
+
"project-manager",
|
|
10
|
+
"sync",
|
|
11
|
+
"typescript"
|
|
12
|
+
],
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "https://github.com/1qh/pm4ai"
|
|
16
|
+
},
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"author": "1qh",
|
|
19
|
+
"type": "module",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": "./dist/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./guide": {
|
|
26
|
+
"types": "./dist/guide.d.ts",
|
|
27
|
+
"import": "./dist/guide.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"bin": {
|
|
31
|
+
"pm4ai": "dist/cli.js"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "rm -rf dist .cache && tsc -p tsconfig.build.json && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.js','utf8');fs.writeFileSync('dist/cli.js','#!/usr/bin/env bun\\n'+c);\" && chmod +x dist/cli.js",
|
|
38
|
+
"cleanup-old-versions": "bun script/cleanup-old-versions.ts",
|
|
39
|
+
"postpublish": "bun run cleanup-old-versions",
|
|
40
|
+
"test": "bun test"
|
|
41
|
+
}
|
|
42
|
+
}
|