@sebasgc0399/agents-md 0.2.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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -0
  3. package/dist/cli.d.ts +6 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +128 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/detect/command-detector.d.ts +6 -0
  8. package/dist/detect/command-detector.d.ts.map +1 -0
  9. package/dist/detect/command-detector.js +62 -0
  10. package/dist/detect/command-detector.js.map +1 -0
  11. package/dist/detect/folder-detector.d.ts +6 -0
  12. package/dist/detect/folder-detector.d.ts.map +1 -0
  13. package/dist/detect/folder-detector.js +69 -0
  14. package/dist/detect/folder-detector.js.map +1 -0
  15. package/dist/detect/framework-detector.d.ts +10 -0
  16. package/dist/detect/framework-detector.d.ts.map +1 -0
  17. package/dist/detect/framework-detector.js +121 -0
  18. package/dist/detect/framework-detector.js.map +1 -0
  19. package/dist/detect/index.d.ts +11 -0
  20. package/dist/detect/index.d.ts.map +1 -0
  21. package/dist/detect/index.js +70 -0
  22. package/dist/detect/index.js.map +1 -0
  23. package/dist/detect/package-detector.d.ts +6 -0
  24. package/dist/detect/package-detector.d.ts.map +1 -0
  25. package/dist/detect/package-detector.js +34 -0
  26. package/dist/detect/package-detector.js.map +1 -0
  27. package/dist/detect/runtime-detector.d.ts +6 -0
  28. package/dist/detect/runtime-detector.d.ts.map +1 -0
  29. package/dist/detect/runtime-detector.js +35 -0
  30. package/dist/detect/runtime-detector.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +15 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/render/data-builder.d.ts +9 -0
  36. package/dist/render/data-builder.d.ts.map +1 -0
  37. package/dist/render/data-builder.js +138 -0
  38. package/dist/render/data-builder.js.map +1 -0
  39. package/dist/render/index.d.ts +12 -0
  40. package/dist/render/index.d.ts.map +1 -0
  41. package/dist/render/index.js +29 -0
  42. package/dist/render/index.js.map +1 -0
  43. package/dist/render/mustache-renderer.d.ts +13 -0
  44. package/dist/render/mustache-renderer.d.ts.map +1 -0
  45. package/dist/render/mustache-renderer.js +51 -0
  46. package/dist/render/mustache-renderer.js.map +1 -0
  47. package/dist/render/validators.d.ts +9 -0
  48. package/dist/render/validators.d.ts.map +1 -0
  49. package/dist/render/validators.js +107 -0
  50. package/dist/render/validators.js.map +1 -0
  51. package/dist/templates/base.mustache +296 -0
  52. package/dist/templates/firebase.mustache +236 -0
  53. package/dist/templates/monorepo.mustache +253 -0
  54. package/dist/templates/react.mustache +231 -0
  55. package/dist/types.d.ts +112 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +5 -0
  58. package/dist/types.js.map +1 -0
  59. package/dist/utils/fs-utils.d.ts +20 -0
  60. package/dist/utils/fs-utils.d.ts.map +1 -0
  61. package/dist/utils/fs-utils.js +121 -0
  62. package/dist/utils/fs-utils.js.map +1 -0
  63. package/dist/utils/logger.d.ts +14 -0
  64. package/dist/utils/logger.d.ts.map +1 -0
  65. package/dist/utils/logger.js +32 -0
  66. package/dist/utils/logger.js.map +1 -0
  67. package/dist/utils/token-counter.d.ts +18 -0
  68. package/dist/utils/token-counter.d.ts.map +1 -0
  69. package/dist/utils/token-counter.js +45 -0
  70. package/dist/utils/token-counter.js.map +1 -0
  71. package/package.json +75 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Safe file system utilities
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ /**
7
+ * Safely read package.json with size limit (1MB max)
8
+ */
9
+ export async function readPackageJson(rootPath) {
10
+ const packagePath = path.join(rootPath, 'package.json');
11
+ // Check if file exists
12
+ if (!fs.existsSync(packagePath)) {
13
+ throw new Error('No package.json found');
14
+ }
15
+ // Check file size (max 1MB for safety)
16
+ const stats = fs.statSync(packagePath);
17
+ const MAX_SIZE = 1024 * 1024; // 1MB
18
+ if (stats.size > MAX_SIZE) {
19
+ throw new Error('package.json is too large (>1MB). This may indicate a corrupted file.');
20
+ }
21
+ // Read and parse
22
+ const content = fs.readFileSync(packagePath, 'utf-8');
23
+ try {
24
+ return JSON.parse(content);
25
+ }
26
+ catch (error) {
27
+ throw new Error('Invalid JSON in package.json');
28
+ }
29
+ }
30
+ /**
31
+ * Check if a directory exists
32
+ */
33
+ export function directoryExists(dirPath) {
34
+ try {
35
+ return fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /**
42
+ * Check if a file exists
43
+ */
44
+ export function fileExists(filePath) {
45
+ try {
46
+ return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ /**
53
+ * Check if path is within project (prevent path traversal)
54
+ */
55
+ export function isPathSafe(basePath, targetPath) {
56
+ const baseReal = resolveRealPath(path.resolve(basePath));
57
+ if (!baseReal) {
58
+ return false;
59
+ }
60
+ const targetAbsolute = path.isAbsolute(targetPath)
61
+ ? path.resolve(targetPath)
62
+ : path.resolve(baseReal, targetPath);
63
+ // Outside base directory (including sibling prefix tricks like project -> project2)
64
+ if (!isPathInside(baseReal, targetAbsolute)) {
65
+ return false;
66
+ }
67
+ // Best-effort symlink guard: only block symlinks that resolve outside project root.
68
+ const relativeToBase = path.relative(baseReal, targetAbsolute);
69
+ if (hasExternalSymlinkInExistingSegments(baseReal, relativeToBase)) {
70
+ return false;
71
+ }
72
+ return true;
73
+ }
74
+ function resolveRealPath(value) {
75
+ try {
76
+ return fs.realpathSync(value);
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ function normalizePathForComparison(value) {
83
+ const normalized = path.normalize(value);
84
+ return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
85
+ }
86
+ function isPathInside(basePath, targetPath) {
87
+ const resolvedBase = normalizePathForComparison(path.resolve(basePath));
88
+ const resolvedTarget = normalizePathForComparison(path.resolve(targetPath));
89
+ const relative = path.relative(resolvedBase, resolvedTarget);
90
+ const escapes = relative === '..' ||
91
+ relative.startsWith(`..${path.sep}`) ||
92
+ path.isAbsolute(relative);
93
+ return !escapes;
94
+ }
95
+ function hasExternalSymlinkInExistingSegments(basePath, relativePath) {
96
+ if (!relativePath) {
97
+ return false;
98
+ }
99
+ const segments = relativePath.split(path.sep).filter(Boolean);
100
+ let current = basePath;
101
+ for (const segment of segments) {
102
+ current = path.join(current, segment);
103
+ if (!fs.existsSync(current)) {
104
+ break;
105
+ }
106
+ try {
107
+ if (fs.lstatSync(current).isSymbolicLink()) {
108
+ const symlinkReal = resolveRealPath(current);
109
+ if (!symlinkReal || !isPathInside(basePath, symlinkReal)) {
110
+ return true;
111
+ }
112
+ }
113
+ }
114
+ catch {
115
+ // Fail closed if metadata cannot be read.
116
+ return true;
117
+ }
118
+ }
119
+ return false;
120
+ }
121
+ //# sourceMappingURL=fs-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../../src/utils/fs-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI logging utilities for consistent output
3
+ */
4
+ export declare class Logger {
5
+ private isVerbose;
6
+ constructor(isVerbose?: boolean);
7
+ success(message: string): void;
8
+ error(message: string): void;
9
+ warning(message: string): void;
10
+ info(message: string): void;
11
+ verbose(message: string): void;
12
+ debug(label: string, data: unknown): void;
13
+ }
14
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,MAAM;IACL,OAAO,CAAC,SAAS;gBAAT,SAAS,GAAE,OAAe;IAE9C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM9B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAK1C"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * CLI logging utilities for consistent output
3
+ */
4
+ export class Logger {
5
+ isVerbose;
6
+ constructor(isVerbose = false) {
7
+ this.isVerbose = isVerbose;
8
+ }
9
+ success(message) {
10
+ console.log(`✓ ${message}`);
11
+ }
12
+ error(message) {
13
+ console.error(`✗ Error: ${message}`);
14
+ }
15
+ warning(message) {
16
+ console.warn(`⚠ ${message}`);
17
+ }
18
+ info(message) {
19
+ console.log(message);
20
+ }
21
+ verbose(message) {
22
+ if (this.isVerbose) {
23
+ console.log(`→ ${message}`);
24
+ }
25
+ }
26
+ debug(label, data) {
27
+ if (this.isVerbose) {
28
+ console.log(`[DEBUG] ${label}:`, data);
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,MAAM;IACG;IAApB,YAAoB,YAAqB,KAAK;QAA1B,cAAS,GAAT,SAAS,CAAiB;IAAG,CAAC;IAElD,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,IAAa;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Token estimation utilities
3
+ * Uses character count heuristic: ~4 chars/token for text, ~3 chars/token for code
4
+ */
5
+ /**
6
+ * Estimate token count for given content
7
+ * This is approximate but sufficient for validation
8
+ */
9
+ export declare function estimateTokens(content: string): number;
10
+ /**
11
+ * Validate token count is within budget
12
+ */
13
+ export declare function validateTokenCount(content: string): {
14
+ tokens: number;
15
+ withinBudget: boolean;
16
+ warning?: string;
17
+ };
18
+ //# sourceMappingURL=token-counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.d.ts","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAetD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAsBA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Token estimation utilities
3
+ * Uses character count heuristic: ~4 chars/token for text, ~3 chars/token for code
4
+ */
5
+ /**
6
+ * Estimate token count for given content
7
+ * This is approximate but sufficient for validation
8
+ */
9
+ export function estimateTokens(content) {
10
+ // Extract code blocks (more token-dense)
11
+ const codeBlockRegex = /```[\s\S]*?```/g;
12
+ const codeBlocks = content.match(codeBlockRegex) || [];
13
+ const codeChars = codeBlocks.join('').length;
14
+ // Text without code blocks
15
+ const textContent = content.replace(codeBlockRegex, '');
16
+ const textChars = textContent.length;
17
+ // Estimate: 3 chars/token for code, 4 chars/token for text
18
+ const codeTokens = Math.ceil(codeChars / 3);
19
+ const textTokens = Math.ceil(textChars / 4);
20
+ return codeTokens + textTokens;
21
+ }
22
+ /**
23
+ * Validate token count is within budget
24
+ */
25
+ export function validateTokenCount(content) {
26
+ const tokens = estimateTokens(content);
27
+ const MIN_TOKENS = 800;
28
+ const MAX_TOKENS = 1500;
29
+ if (tokens < MIN_TOKENS) {
30
+ return {
31
+ tokens,
32
+ withinBudget: false,
33
+ warning: `Output is quite short (${tokens} tokens). Consider adding more details.`,
34
+ };
35
+ }
36
+ if (tokens > MAX_TOKENS) {
37
+ return {
38
+ tokens,
39
+ withinBudget: false,
40
+ warning: `Output is too long (${tokens} tokens). AI agents may not process it efficiently.`,
41
+ };
42
+ }
43
+ return { tokens, withinBudget: true };
44
+ }
45
+ //# sourceMappingURL=token-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,yCAAyC;IACzC,MAAM,cAAc,GAAG,iBAAiB,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAE7C,2BAA2B;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;IAErC,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAE5C,OAAO,UAAU,GAAG,UAAU,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAKhD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC;IAExB,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;QACxB,OAAO;YACL,MAAM;YACN,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,0BAA0B,MAAM,yCAAyC;SACnF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;QACxB,OAAO;YACL,MAAM;YACN,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,uBAAuB,MAAM,qDAAqD;SAC5F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@sebasgc0399/agents-md",
3
+ "version": "0.2.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/sebasgc0399/agents-md.git"
7
+ },
8
+ "bugs": {
9
+ "url": "https://github.com/sebasgc0399/agents-md/issues"
10
+ },
11
+ "homepage": "https://github.com/sebasgc0399/agents-md#readme",
12
+ "description": "Generate AGENTS.md files for AI coding agents",
13
+ "type": "module",
14
+ "bin": {
15
+ "agents-md": "dist/cli.js"
16
+ },
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "import": "./dist/index.js",
22
+ "types": "./dist/index.d.ts"
23
+ }
24
+ },
25
+ "scripts": {
26
+ "build": "tsc && npm run copy-templates",
27
+ "benchmark:lite": "node scripts/benchmark/lite.mjs",
28
+ "benchmark:p1": "node scripts/benchmark/p1.mjs",
29
+ "benchmark:p1:update": "node scripts/benchmark/p1.mjs --update-baseline",
30
+ "benchmark:p2": "node scripts/benchmark/p2.mjs",
31
+ "copy-templates": "node -e \"require('fs').cpSync('src/templates', 'dist/templates', {recursive: true})\"",
32
+ "dev": "tsc --watch",
33
+ "start": "node dist/cli.js",
34
+ "test": "npm run build && vitest run",
35
+ "test:coverage": "npm run build && vitest run --coverage",
36
+ "test:watch": "vitest",
37
+ "lint": "tsc --noEmit",
38
+ "prepublishOnly": "npm run build && npm test",
39
+ "release": "release-it"
40
+ },
41
+ "keywords": [
42
+ "agents",
43
+ "ai",
44
+ "llm",
45
+ "documentation",
46
+ "readme",
47
+ "claude",
48
+ "copilot",
49
+ "windsurf"
50
+ ],
51
+ "author": "sebasgc0399",
52
+ "license": "MIT",
53
+ "files": [
54
+ "dist",
55
+ "LICENSE",
56
+ "README.md"
57
+ ],
58
+ "dependencies": {
59
+ "commander": "^11.1.0",
60
+ "mustache": "^4.2.0"
61
+ },
62
+ "devDependencies": {
63
+ "@release-it/conventional-changelog": "^10.0.5",
64
+ "@types/mustache": "^4.2.5",
65
+ "@types/node": "^20.10.0",
66
+ "@vitest/coverage-v8": "^1.1.0",
67
+ "release-it": "^19.2.4",
68
+ "tsx": "^4.21.0",
69
+ "typescript": "^5.3.3",
70
+ "vitest": "^1.1.0"
71
+ },
72
+ "engines": {
73
+ "node": ">=18.0.0"
74
+ }
75
+ }