logicstamp-context 0.1.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/LICENSE +21 -0
- package/LLM_CONTEXT.md +260 -0
- package/README.md +949 -0
- package/dist/cli/commands/clean.d.ts +15 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +142 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/compare.d.ts +88 -0
- package/dist/cli/commands/compare.d.ts.map +1 -0
- package/dist/cli/commands/compare.js +519 -0
- package/dist/cli/commands/compare.js.map +1 -0
- package/dist/cli/commands/context.d.ts +24 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +576 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/init.d.ts +14 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +71 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +52 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +368 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +223 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/stamp.d.ts +7 -0
- package/dist/cli/stamp.d.ts.map +1 -0
- package/dist/cli/stamp.js +961 -0
- package/dist/cli/stamp.js.map +1 -0
- package/dist/cli/validate-index.d.ts +7 -0
- package/dist/cli/validate-index.d.ts.map +1 -0
- package/dist/cli/validate-index.js +55 -0
- package/dist/cli/validate-index.js.map +1 -0
- package/dist/core/astParser.d.ts +47 -0
- package/dist/core/astParser.d.ts.map +1 -0
- package/dist/core/astParser.js +417 -0
- package/dist/core/astParser.js.map +1 -0
- package/dist/core/contractBuilder.d.ts +48 -0
- package/dist/core/contractBuilder.d.ts.map +1 -0
- package/dist/core/contractBuilder.js +120 -0
- package/dist/core/contractBuilder.js.map +1 -0
- package/dist/core/manifest.d.ts +75 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +173 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/pack.d.ts +190 -0
- package/dist/core/pack.d.ts.map +1 -0
- package/dist/core/pack.js +438 -0
- package/dist/core/pack.js.map +1 -0
- package/dist/core/signature.d.ts +47 -0
- package/dist/core/signature.d.ts.map +1 -0
- package/dist/core/signature.js +208 -0
- package/dist/core/signature.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/types/UIFContract.d.ts +112 -0
- package/dist/types/UIFContract.d.ts.map +1 -0
- package/dist/types/UIFContract.js +36 -0
- package/dist/types/UIFContract.js.map +1 -0
- package/dist/utils/config.d.ts +34 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +62 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/fsx.d.ts +85 -0
- package/dist/utils/fsx.d.ts.map +1 -0
- package/dist/utils/fsx.js +181 -0
- package/dist/utils/fsx.js.map +1 -0
- package/dist/utils/gitignore.d.ts +62 -0
- package/dist/utils/gitignore.d.ts.map +1 -0
- package/dist/utils/gitignore.js +183 -0
- package/dist/utils/gitignore.js.map +1 -0
- package/dist/utils/hash.d.ts +73 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +159 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/llmContext.d.ts +34 -0
- package/dist/utils/llmContext.d.ts.map +1 -0
- package/dist/utils/llmContext.js +136 -0
- package/dist/utils/llmContext.js.map +1 -0
- package/dist/utils/tokens.d.ts +23 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +29 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +69 -0
- package/schema/logicstamp.context.schema.json +430 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clean command - Removes all generated context artifacts
|
|
3
|
+
* Deletes context_main.json, all folder context.json files, and optionally .logicstamp/ cache
|
|
4
|
+
*/
|
|
5
|
+
export interface CleanOptions {
|
|
6
|
+
projectRoot?: string;
|
|
7
|
+
all?: boolean;
|
|
8
|
+
yes?: boolean;
|
|
9
|
+
quiet?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Clean command - removes all generated context artifacts
|
|
13
|
+
*/
|
|
14
|
+
export declare function cleanCommand(options: CleanOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=clean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiDD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFvE"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clean command - Removes all generated context artifacts
|
|
3
|
+
* Deletes context_main.json, all folder context.json files, and optionally .logicstamp/ cache
|
|
4
|
+
*/
|
|
5
|
+
import { glob } from 'glob';
|
|
6
|
+
import { unlink, rm, stat } from 'node:fs/promises';
|
|
7
|
+
import { resolve, join, relative } from 'node:path';
|
|
8
|
+
import { fileExists } from '../../utils/fsx.js';
|
|
9
|
+
/**
|
|
10
|
+
* Normalize path for display (convert backslashes to forward slashes)
|
|
11
|
+
*/
|
|
12
|
+
function displayPath(path) {
|
|
13
|
+
return path.replace(/\\/g, '/');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Find all context.json files in the project
|
|
17
|
+
*/
|
|
18
|
+
async function findContextFiles(projectRoot) {
|
|
19
|
+
const contextFiles = await glob('**/context.json', {
|
|
20
|
+
cwd: projectRoot,
|
|
21
|
+
absolute: true,
|
|
22
|
+
ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.next/**'],
|
|
23
|
+
});
|
|
24
|
+
return contextFiles.sort();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Find context_main.json in the project root
|
|
28
|
+
*/
|
|
29
|
+
async function findMainContextFile(projectRoot) {
|
|
30
|
+
const mainContextPath = join(projectRoot, 'context_main.json');
|
|
31
|
+
if (await fileExists(mainContextPath)) {
|
|
32
|
+
return mainContextPath;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Find .logicstamp directory
|
|
38
|
+
*/
|
|
39
|
+
async function findLogicStampDir(projectRoot) {
|
|
40
|
+
const logicStampPath = join(projectRoot, '.logicstamp');
|
|
41
|
+
try {
|
|
42
|
+
const stats = await stat(logicStampPath);
|
|
43
|
+
if (stats.isDirectory()) {
|
|
44
|
+
return logicStampPath;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Directory doesn't exist
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Clean command - removes all generated context artifacts
|
|
54
|
+
*/
|
|
55
|
+
export async function cleanCommand(options) {
|
|
56
|
+
const projectRoot = resolve(options.projectRoot || '.');
|
|
57
|
+
// Find all files to remove
|
|
58
|
+
const contextFiles = await findContextFiles(projectRoot);
|
|
59
|
+
const mainContextFile = await findMainContextFile(projectRoot);
|
|
60
|
+
const logicStampDir = await findLogicStampDir(projectRoot);
|
|
61
|
+
// Collect all files to remove
|
|
62
|
+
const filesToRemove = [];
|
|
63
|
+
if (mainContextFile) {
|
|
64
|
+
filesToRemove.push(mainContextFile);
|
|
65
|
+
}
|
|
66
|
+
filesToRemove.push(...contextFiles);
|
|
67
|
+
// If no files found, exit early
|
|
68
|
+
if (filesToRemove.length === 0 && !logicStampDir) {
|
|
69
|
+
if (options.quiet) {
|
|
70
|
+
process.stdout.write('✓\n');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log('✅ No context artifacts found to clean');
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Display what will be removed
|
|
78
|
+
if (!options.quiet) {
|
|
79
|
+
console.log('\n🧹 This will remove:');
|
|
80
|
+
if (mainContextFile) {
|
|
81
|
+
const relPath = relative(projectRoot, mainContextFile);
|
|
82
|
+
console.log(` - ${displayPath(relPath === 'context_main.json' ? 'context_main.json' : relPath)}`);
|
|
83
|
+
}
|
|
84
|
+
for (const file of contextFiles) {
|
|
85
|
+
const relPath = relative(projectRoot, file);
|
|
86
|
+
console.log(` - ${displayPath(relPath)}`);
|
|
87
|
+
}
|
|
88
|
+
if (logicStampDir) {
|
|
89
|
+
const relPath = relative(projectRoot, logicStampDir);
|
|
90
|
+
console.log(` - ${displayPath(relPath)}/`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// If --all and --yes flags are provided, proceed with deletion
|
|
94
|
+
if (options.all && options.yes) {
|
|
95
|
+
if (!options.quiet) {
|
|
96
|
+
console.log('\n🗑️ Removing files...\n');
|
|
97
|
+
}
|
|
98
|
+
// Delete all context.json files
|
|
99
|
+
for (const file of filesToRemove) {
|
|
100
|
+
try {
|
|
101
|
+
await unlink(file);
|
|
102
|
+
if (!options.quiet) {
|
|
103
|
+
const relPath = relative(projectRoot, file);
|
|
104
|
+
console.log(` ✓ Removed ${displayPath(relPath)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
// Always show errors
|
|
109
|
+
const relPath = relative(projectRoot, file);
|
|
110
|
+
console.error(` ✗ Failed to remove ${displayPath(relPath)}: ${error.message}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Delete .logicstamp directory if it exists
|
|
114
|
+
if (logicStampDir) {
|
|
115
|
+
try {
|
|
116
|
+
await rm(logicStampDir, { recursive: true, force: true });
|
|
117
|
+
if (!options.quiet) {
|
|
118
|
+
const relPath = relative(projectRoot, logicStampDir);
|
|
119
|
+
console.log(` ✓ Removed ${displayPath(relPath)}/`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
// Always show errors
|
|
124
|
+
const relPath = relative(projectRoot, logicStampDir);
|
|
125
|
+
console.error(` ✗ Failed to remove ${displayPath(relPath)}/: ${error.message}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (options.quiet) {
|
|
129
|
+
process.stdout.write('✓\n');
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log(`\n✅ Cleaned ${filesToRemove.length} file(s)${logicStampDir ? ' and 1 directory' : ''}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Dry run mode - just show what would be removed
|
|
137
|
+
if (!options.quiet) {
|
|
138
|
+
console.log('\n💡 Run with --all --yes to confirm and delete these files.');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compare command - Diffs two context.json files
|
|
3
|
+
* Detects added/removed components and changed signatures
|
|
4
|
+
*/
|
|
5
|
+
export interface CompareResult {
|
|
6
|
+
status: 'PASS' | 'DRIFT';
|
|
7
|
+
added: string[];
|
|
8
|
+
removed: string[];
|
|
9
|
+
changed: Array<{
|
|
10
|
+
id: string;
|
|
11
|
+
deltas: Array<{
|
|
12
|
+
type: 'hash' | 'imports' | 'hooks' | 'exports' | 'functions' | 'components' | 'props' | 'emits';
|
|
13
|
+
old: any;
|
|
14
|
+
new: any;
|
|
15
|
+
}>;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Result for a single folder's context file comparison
|
|
20
|
+
*/
|
|
21
|
+
export interface FolderCompareResult {
|
|
22
|
+
folderPath: string;
|
|
23
|
+
contextFile: string;
|
|
24
|
+
status: 'PASS' | 'DRIFT' | 'ADDED' | 'ORPHANED';
|
|
25
|
+
componentResult?: CompareResult;
|
|
26
|
+
tokenDelta?: {
|
|
27
|
+
gpt4: number;
|
|
28
|
+
claude: number;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result for multi-file comparison (compares all context files)
|
|
33
|
+
*/
|
|
34
|
+
export interface MultiFileCompareResult {
|
|
35
|
+
status: 'PASS' | 'DRIFT';
|
|
36
|
+
folders: FolderCompareResult[];
|
|
37
|
+
summary: {
|
|
38
|
+
totalFolders: number;
|
|
39
|
+
addedFolders: number;
|
|
40
|
+
orphanedFolders: number;
|
|
41
|
+
driftFolders: number;
|
|
42
|
+
passFolders: number;
|
|
43
|
+
totalComponentsAdded: number;
|
|
44
|
+
totalComponentsRemoved: number;
|
|
45
|
+
totalComponentsChanged: number;
|
|
46
|
+
};
|
|
47
|
+
orphanedFiles?: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface CompareOptions {
|
|
50
|
+
oldFile: string;
|
|
51
|
+
newFile: string;
|
|
52
|
+
stats?: boolean;
|
|
53
|
+
approve?: boolean;
|
|
54
|
+
quiet?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface MultiFileCompareOptions {
|
|
57
|
+
oldIndexFile: string;
|
|
58
|
+
newIndexFile: string;
|
|
59
|
+
stats?: boolean;
|
|
60
|
+
approve?: boolean;
|
|
61
|
+
autoCleanOrphaned?: boolean;
|
|
62
|
+
quiet?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Main compare command
|
|
66
|
+
* Returns the comparison result instead of exiting, allowing caller to handle approval logic
|
|
67
|
+
*/
|
|
68
|
+
export declare function compareCommand(options: CompareOptions): Promise<CompareResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Multi-file comparison - compares all context files using context_main.json indices
|
|
71
|
+
* This is the comprehensive comparison that handles:
|
|
72
|
+
* 1. context_main.json as root index
|
|
73
|
+
* 2. All folder context.json files
|
|
74
|
+
* 3. ADDED FILE detection (new folders)
|
|
75
|
+
* 4. ORPHANED FILE detection (deleted folders)
|
|
76
|
+
* 5. DRIFT detection (changed files)
|
|
77
|
+
* 6. PASS detection (unchanged files)
|
|
78
|
+
*/
|
|
79
|
+
export declare function multiFileCompare(options: MultiFileCompareOptions): Promise<MultiFileCompareResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Format and display multi-file comparison results
|
|
82
|
+
*/
|
|
83
|
+
export declare function displayMultiFileCompareResult(result: MultiFileCompareResult, stats: boolean, quiet?: boolean): void;
|
|
84
|
+
/**
|
|
85
|
+
* Clean up orphaned files
|
|
86
|
+
*/
|
|
87
|
+
export declare function cleanOrphanedFiles(orphanedFiles: string[], baseDir: string, quiet?: boolean): Promise<number>;
|
|
88
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;YAChG,GAAG,EAAE,GAAG,CAAC;YACT,GAAG,EAAE,GAAG,CAAC;SACV,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IAChD,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA+GD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAqGpF;AAqFD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAyGxG;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAqInH;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBnH"}
|