logicstamp-context 0.8.2 → 0.8.4
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/LICENSE +21 -21
- package/LLM_CONTEXT.md +703 -703
- package/README.md +404 -459
- package/dist/cli/commands/clean.d.ts.map +1 -1
- package/dist/cli/commands/clean.js +1 -6
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/context/fileWriter.js +2 -2
- package/dist/cli/commands/context/fileWriter.js.map +1 -1
- package/dist/cli/commands/context/statsCalculator.d.ts +3 -2
- package/dist/cli/commands/context/statsCalculator.d.ts.map +1 -1
- package/dist/cli/commands/context/statsCalculator.js +45 -104
- package/dist/cli/commands/context/statsCalculator.js.map +1 -1
- package/dist/cli/commands/context/watchMode/watchMode.d.ts.map +1 -1
- package/dist/cli/commands/context/watchMode/watchMode.js +124 -39
- package/dist/cli/commands/context/watchMode/watchMode.js.map +1 -1
- package/dist/cli/commands/init.js +20 -20
- package/dist/cli/commands/security.js +3 -3
- package/dist/cli/commands/security.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +1 -6
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/handlers/initHandler.js +5 -5
- package/dist/cli/index.d.ts +6 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +100 -96
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/parser/helpText.js +570 -570
- package/dist/cli/validate-index.js +26 -26
- package/dist/core/astParser/detectors.d.ts.map +1 -1
- package/dist/core/astParser/detectors.js +3 -2
- package/dist/core/astParser/detectors.js.map +1 -1
- package/dist/core/pack/loader.js +3 -3
- package/dist/core/pack/loader.js.map +1 -1
- package/dist/utils/codeSanitizer.d.ts.map +1 -1
- package/dist/utils/codeSanitizer.js +3 -2
- package/dist/utils/codeSanitizer.js.map +1 -1
- package/dist/utils/fsx.d.ts +5 -0
- package/dist/utils/fsx.d.ts.map +1 -1
- package/dist/utils/fsx.js +9 -2
- package/dist/utils/fsx.js.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +2 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +2 -1
- package/dist/utils/gitignore.js.map +1 -1
- package/dist/utils/secretDetector.d.ts.map +1 -1
- package/dist/utils/secretDetector.js +17 -10
- package/dist/utils/secretDetector.js.map +1 -1
- package/package.json +85 -84
- package/schema/logicstamp.context.schema.json +1250 -1250
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
* Simple secret detection utilities
|
|
3
3
|
* Detects common patterns for API keys, tokens, passwords, etc.
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Maximum line length to scan.
|
|
7
|
+
* Skips very long lines to avoid slow regex processing and performance issues.
|
|
8
|
+
* Legitimate secrets are unlikely to appear on extremely long lines.
|
|
9
|
+
*/
|
|
10
|
+
const MAX_LINE_LENGTH = 1000;
|
|
5
11
|
/**
|
|
6
12
|
* Common secret patterns to detect
|
|
7
13
|
*/
|
|
@@ -9,7 +15,7 @@ const SECRET_PATTERNS = [
|
|
|
9
15
|
// API Keys
|
|
10
16
|
{
|
|
11
17
|
name: 'API Key',
|
|
12
|
-
pattern: /['"`]?
|
|
18
|
+
pattern: /['"`]?api[_-]?key['"`]?\s*[=:]\s*['"`]?([a-zA-Z0-9_\-]{20,})['"`]?/i,
|
|
13
19
|
severity: 'high',
|
|
14
20
|
},
|
|
15
21
|
// AWS Access Keys
|
|
@@ -74,13 +80,13 @@ const SECRET_PATTERNS = [
|
|
|
74
80
|
// JWT Secrets
|
|
75
81
|
{
|
|
76
82
|
name: 'JWT Secret',
|
|
77
|
-
pattern: /['"`]?
|
|
83
|
+
pattern: /['"`]?jwt[_-]?(?:secret|key)['"`]?\s*[=:]\s*['"`]?([a-zA-Z0-9_\-]{16,})['"`]?/i,
|
|
78
84
|
severity: 'high',
|
|
79
85
|
},
|
|
80
86
|
// Generic secrets
|
|
81
87
|
{
|
|
82
88
|
name: 'Secret',
|
|
83
|
-
pattern: /['"`]?(?:
|
|
89
|
+
pattern: /['"`]?secret(?:[_-]?key)?['"`]?\s*[=:]\s*['"`]?([a-zA-Z0-9_\-]{16,})['"`]?/i,
|
|
84
90
|
severity: 'medium',
|
|
85
91
|
},
|
|
86
92
|
];
|
|
@@ -92,10 +98,15 @@ export function scanFileForSecrets(filePath, content) {
|
|
|
92
98
|
const lines = content.split('\n');
|
|
93
99
|
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
94
100
|
const line = lines[lineIndex];
|
|
101
|
+
// Skip very long lines to prevent ReDoS attacks
|
|
102
|
+
if (line.length > MAX_LINE_LENGTH) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
95
105
|
for (const { name, pattern, severity } of SECRET_PATTERNS) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
106
|
+
// Reset lastIndex for safety (future-proofs if global flags are added)
|
|
107
|
+
pattern.lastIndex = 0;
|
|
108
|
+
const match = pattern.exec(line);
|
|
109
|
+
if (match) {
|
|
99
110
|
// Extract snippet (first 100 chars around match)
|
|
100
111
|
const matchStart = Math.max(0, match.index - 20);
|
|
101
112
|
const matchEnd = Math.min(line.length, match.index + match[0].length + 20);
|
|
@@ -108,10 +119,6 @@ export function scanFileForSecrets(filePath, content) {
|
|
|
108
119
|
snippet,
|
|
109
120
|
severity,
|
|
110
121
|
});
|
|
111
|
-
// Prevent infinite loops
|
|
112
|
-
if (!pattern.global) {
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
122
|
}
|
|
116
123
|
}
|
|
117
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretDetector.js","sourceRoot":"","sources":["../../src/utils/secretDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"secretDetector.js","sourceRoot":"","sources":["../../src/utils/secretDetector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,84 +1,85 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "logicstamp-context",
|
|
3
|
-
"version": "0.8.
|
|
4
|
-
"description": "The context compiler for TypeScript. Compile your codebase into deterministic architectural contracts and dependency graphs for AI coding workflows.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": "./dist/index.js"
|
|
10
|
-
},
|
|
11
|
-
"bin": {
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"test
|
|
26
|
-
"test:
|
|
27
|
-
"test:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"@
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"@
|
|
77
|
-
"@vitest/
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "logicstamp-context",
|
|
3
|
+
"version": "0.8.4",
|
|
4
|
+
"description": "The context compiler for TypeScript. Compile your codebase into deterministic architectural contracts and dependency graphs for AI coding workflows.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"logicstamp-context": "dist/cli/stamp.js",
|
|
13
|
+
"stamp": "dist/cli/stamp.js"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"schema",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"LLM_CONTEXT.md"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"prepublishOnly": "npm run build",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"test:ui": "vitest --ui",
|
|
28
|
+
"test:coverage": "vitest run --coverage"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"react",
|
|
32
|
+
"typescript",
|
|
33
|
+
"ai",
|
|
34
|
+
"llm",
|
|
35
|
+
"context",
|
|
36
|
+
"documentation",
|
|
37
|
+
"logicstamp",
|
|
38
|
+
"claude",
|
|
39
|
+
"chatgpt",
|
|
40
|
+
"codebase-analysis",
|
|
41
|
+
"ast",
|
|
42
|
+
"static-analysis",
|
|
43
|
+
"mcp",
|
|
44
|
+
"ai-context",
|
|
45
|
+
"code-context"
|
|
46
|
+
],
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/LogicStamp/logicstamp-context.git"
|
|
50
|
+
},
|
|
51
|
+
"bugs": {
|
|
52
|
+
"url": "https://github.com/LogicStamp/logicstamp-context/issues"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://github.com/LogicStamp/logicstamp-context#readme",
|
|
55
|
+
"author": "Amit Levi <logicstamp.dev@gmail.com> (https://amitlevi.dev)",
|
|
56
|
+
"contributors": [
|
|
57
|
+
"LogicStamp Contributors"
|
|
58
|
+
],
|
|
59
|
+
"license": "MIT",
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"@toon-format/toon": "^1.0.0",
|
|
65
|
+
"ajv": "^8.18.0",
|
|
66
|
+
"chokidar": "^4.0.3",
|
|
67
|
+
"css-tree": "^3.1.0",
|
|
68
|
+
"glob": "^13.0.6",
|
|
69
|
+
"ts-morph": "^27.0.2"
|
|
70
|
+
},
|
|
71
|
+
"optionalDependencies": {
|
|
72
|
+
"@anthropic-ai/tokenizer": "^0.0.4",
|
|
73
|
+
"@dqbd/tiktoken": "^1.0.17"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@types/node": "^20.19.27",
|
|
77
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
78
|
+
"@vitest/ui": "^4.0.16",
|
|
79
|
+
"typescript": "^5.3.3",
|
|
80
|
+
"vitest": "^4.0.16"
|
|
81
|
+
},
|
|
82
|
+
"engines": {
|
|
83
|
+
"node": ">=20"
|
|
84
|
+
}
|
|
85
|
+
}
|