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.
Files changed (51) hide show
  1. package/LICENSE +21 -21
  2. package/LLM_CONTEXT.md +703 -703
  3. package/README.md +404 -459
  4. package/dist/cli/commands/clean.d.ts.map +1 -1
  5. package/dist/cli/commands/clean.js +1 -6
  6. package/dist/cli/commands/clean.js.map +1 -1
  7. package/dist/cli/commands/context/fileWriter.js +2 -2
  8. package/dist/cli/commands/context/fileWriter.js.map +1 -1
  9. package/dist/cli/commands/context/statsCalculator.d.ts +3 -2
  10. package/dist/cli/commands/context/statsCalculator.d.ts.map +1 -1
  11. package/dist/cli/commands/context/statsCalculator.js +45 -104
  12. package/dist/cli/commands/context/statsCalculator.js.map +1 -1
  13. package/dist/cli/commands/context/watchMode/watchMode.d.ts.map +1 -1
  14. package/dist/cli/commands/context/watchMode/watchMode.js +124 -39
  15. package/dist/cli/commands/context/watchMode/watchMode.js.map +1 -1
  16. package/dist/cli/commands/init.js +20 -20
  17. package/dist/cli/commands/security.js +3 -3
  18. package/dist/cli/commands/security.js.map +1 -1
  19. package/dist/cli/commands/validate.d.ts.map +1 -1
  20. package/dist/cli/commands/validate.js +1 -6
  21. package/dist/cli/commands/validate.js.map +1 -1
  22. package/dist/cli/handlers/initHandler.js +5 -5
  23. package/dist/cli/index.d.ts +6 -2
  24. package/dist/cli/index.d.ts.map +1 -1
  25. package/dist/cli/index.js +100 -96
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/parser/helpText.js +570 -570
  28. package/dist/cli/validate-index.js +26 -26
  29. package/dist/core/astParser/detectors.d.ts.map +1 -1
  30. package/dist/core/astParser/detectors.js +3 -2
  31. package/dist/core/astParser/detectors.js.map +1 -1
  32. package/dist/core/pack/loader.js +3 -3
  33. package/dist/core/pack/loader.js.map +1 -1
  34. package/dist/utils/codeSanitizer.d.ts.map +1 -1
  35. package/dist/utils/codeSanitizer.js +3 -2
  36. package/dist/utils/codeSanitizer.js.map +1 -1
  37. package/dist/utils/fsx.d.ts +5 -0
  38. package/dist/utils/fsx.d.ts.map +1 -1
  39. package/dist/utils/fsx.js +9 -2
  40. package/dist/utils/fsx.js.map +1 -1
  41. package/dist/utils/git.d.ts.map +1 -1
  42. package/dist/utils/git.js +2 -1
  43. package/dist/utils/git.js.map +1 -1
  44. package/dist/utils/gitignore.d.ts.map +1 -1
  45. package/dist/utils/gitignore.js +2 -1
  46. package/dist/utils/gitignore.js.map +1 -1
  47. package/dist/utils/secretDetector.d.ts.map +1 -1
  48. package/dist/utils/secretDetector.js +17 -10
  49. package/dist/utils/secretDetector.js.map +1 -1
  50. package/package.json +85 -84
  51. package/schema/logicstamp.context.schema.json +1250 -1250
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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;AA4ED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FvE"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,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;AAqED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FvE"}
@@ -7,13 +7,8 @@ import { glob } from 'glob';
7
7
  import { unlink, rm, stat } from 'node:fs/promises';
8
8
  import { resolve, join, relative } from 'node:path';
9
9
  import { fileExists, normalizeEntryId } from '../../utils/fsx.js';
10
+ import { displayPath } from './context/index.js';
10
11
  const GLOB_IGNORE = ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.next/**'];
11
- /**
12
- * Normalize path for display (convert backslashes to forward slashes)
13
- */
14
- function displayPath(path) {
15
- return path.replace(/\\/g, '/');
16
- }
17
12
  /**
18
13
  * Find all context.json files in the project
19
14
  * Returns relative paths from projectRoot
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { writeFile, mkdir } from 'node:fs/promises';
5
5
  import { dirname, join, resolve, relative, basename } from 'node:path';
6
6
  import { cwd } from 'node:process';
7
7
  import { createRequire } from 'module';
8
- import { getFolderPath, normalizeEntryId } from '../../../utils/fsx.js';
8
+ import { getFolderPath, normalizeEntryId, toForwardSlashes } from '../../../utils/fsx.js';
9
9
  import { estimateGPT4Tokens } from '../../../utils/tokens.js';
10
10
  import { formatBundlesForFolder } from './bundleFormatter.js';
11
11
  import { debugError } from '../../../utils/debug.js';
@@ -24,7 +24,7 @@ catch (error) {
24
24
  * Normalize path for display (convert backslashes to forward slashes)
25
25
  */
26
26
  export function displayPath(path) {
27
- return path.replace(/\\/g, '/');
27
+ return toForwardSlashes(path);
28
28
  }
29
29
  /**
30
30
  * Display project root path in a normalized, user-friendly format
@@ -1 +1 @@
1
- {"version":3,"file":"fileWriter.js","sourceRoot":"","sources":["../../../../src/cli/commands/context/fileWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileWriter.js","sourceRoot":"","sources":["../../../../src/cli/commands/context/fileWriter.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,9 @@ export declare function calculateStats(bundles: LogicStampBundle[]): BundleStats
19
19
  */
20
20
  export declare function generateStatsOutput(contracts: UIFContract[], manifest: ProjectManifest, bundles: LogicStampBundle[], stats: BundleStats, tokenEstimates: TokenEstimates, elapsed: number): object;
21
21
  /**
22
- * Generate summary output for console
23
- * Uses accurate token counting (recompiles contracts) like --compare-modes
22
+ * Generate summary output for console.
23
+ * Shows accurate token counts for the current mode only.
24
+ * For detailed mode comparisons, use `stamp context --compare-modes`.
24
25
  */
25
26
  export declare function generateSummary(contracts: UIFContract[], manifest: ProjectManifest, bundles: LogicStampBundle[], stats: BundleStats, tokenEstimates: TokenEstimates, options: {
26
27
  includeCode: 'none' | 'header' | 'full';
@@ -1 +1 @@
1
- {"version":3,"file":"statsCalculator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/context/statsCalculator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAUvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,GACd,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC9C,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CAkIf"}
1
+ {"version":3,"file":"statsCalculator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/context/statsCalculator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAUvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,GACd,MAAM,CAoBR;AAeD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC9C,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA4Df"}
@@ -40,10 +40,25 @@ export function generateStatsOutput(contracts, manifest, bundles, stats, tokenEs
40
40
  };
41
41
  }
42
42
  /**
43
- * Generate summary output for console
44
- * Uses accurate token counting (recompiles contracts) like --compare-modes
43
+ * Determines the display label for the current mode combination
44
+ */
45
+ function getModeLabel(includeCode, hasStyle) {
46
+ if (includeCode === 'header') {
47
+ return hasStyle ? 'header+style' : 'header';
48
+ }
49
+ if (includeCode === 'full') {
50
+ return hasStyle ? 'full+style' : 'full';
51
+ }
52
+ return includeCode;
53
+ }
54
+ /**
55
+ * Generate summary output for console.
56
+ * Shows accurate token counts for the current mode only.
57
+ * For detailed mode comparisons, use `stamp context --compare-modes`.
45
58
  */
46
59
  export async function generateSummary(contracts, manifest, bundles, stats, tokenEstimates, options) {
60
+ const modeLabel = getModeLabel(options.includeCode, options.includeStyle === true);
61
+ // Print component summary
47
62
  console.log('\n📊 Summary:');
48
63
  console.log(` Total components: ${contracts.length}`);
49
64
  console.log(` Root components: ${manifest.graph.roots.length}`);
@@ -52,120 +67,46 @@ export async function generateSummary(contracts, manifest, bundles, stats, token
52
67
  console.log(` Total nodes in context: ${stats.totalNodes}`);
53
68
  console.log(` Total edges: ${stats.totalEdges}`);
54
69
  console.log(` Missing dependencies: ${stats.totalMissing}`);
55
- // Determine mode label
56
- const hasStyle = options.includeStyle === true;
57
- const isHeaderMode = options.includeCode === 'header';
58
- let modeLabel;
59
- if (isHeaderMode && hasStyle) {
60
- modeLabel = 'header+style';
61
- }
62
- else if (isHeaderMode && !hasStyle) {
63
- modeLabel = 'header';
64
- }
65
- else {
66
- modeLabel = options.includeCode === 'full' ? 'full+style' : options.includeCode;
67
- }
68
- // Calculate header token estimates (use estimates for performance, accurate recompilation only in --compare-modes)
69
- let headerNoStyleGPT4;
70
- let headerNoStyleClaude;
71
- let headerWithStyleGPT4;
72
- let headerWithStyleClaude;
73
- // Improve raw source estimation: if we're in header mode, use header tokens to estimate raw source
74
- // Header mode is approximately 30% of raw source tokens, so raw ≈ header / 0.30
75
- let estimatedRawSourceGPT4 = tokenEstimates.sourceTokensGPT4;
76
- let estimatedRawSourceClaude = tokenEstimates.sourceTokensClaude;
77
- if (isHeaderMode && !hasStyle) {
78
- // We're in header mode, so we can estimate raw source more accurately
79
- // Header is ~30% of raw source, so raw source ≈ header / 0.30
80
- estimatedRawSourceGPT4 = Math.ceil(options.currentGPT4 / 0.30);
81
- estimatedRawSourceClaude = Math.ceil(options.currentClaude / 0.30);
82
- }
83
- else if (isHeaderMode && hasStyle) {
84
- // We're in header+style mode, estimate header without style first
85
- // Style adds ~105% overhead (170k vs 83k), so header ≈ header+style / 2.05
86
- const estimatedHeaderGPT4 = Math.ceil(options.currentGPT4 / 2.05);
87
- const estimatedHeaderClaude = Math.ceil(options.currentClaude / 2.05);
88
- // Then estimate raw source from header
89
- estimatedRawSourceGPT4 = Math.ceil(estimatedHeaderGPT4 / 0.30);
90
- estimatedRawSourceClaude = Math.ceil(estimatedHeaderClaude / 0.30);
91
- }
92
- if (isHeaderMode && hasStyle) {
93
- // Current output IS header+style, estimate header without style
94
- headerNoStyleGPT4 = Math.ceil(options.currentGPT4 / 2.05); // Style typically doubles the size
95
- headerNoStyleClaude = Math.ceil(options.currentClaude / 2.05);
96
- headerWithStyleGPT4 = options.currentGPT4;
97
- headerWithStyleClaude = options.currentClaude;
98
- }
99
- else if (isHeaderMode && !hasStyle) {
100
- // Current output IS header without style, estimate header+style
101
- headerNoStyleGPT4 = options.currentGPT4;
102
- headerNoStyleClaude = options.currentClaude;
103
- headerWithStyleGPT4 = Math.ceil(options.currentGPT4 * 2.05); // Style adds ~105%
104
- headerWithStyleClaude = Math.ceil(options.currentClaude * 2.05);
105
- }
106
- else {
107
- // For non-header modes, use estimates
108
- headerNoStyleGPT4 = Math.ceil(options.currentGPT4 * 0.75);
109
- headerNoStyleClaude = Math.ceil(options.currentClaude * 0.75);
110
- headerWithStyleGPT4 = Math.ceil(options.currentGPT4 * 0.85);
111
- headerWithStyleClaude = Math.ceil(options.currentClaude * 0.85);
112
- }
113
- // Calculate savings percentages vs raw source (use improved estimation)
114
- // Clamp to valid range [0, 100] to handle edge cases where estimates may be off
115
- const calculateSavings = (raw, current) => {
116
- if (raw <= 0 || current < 0)
117
- return '0';
118
- const savings = ((raw - current) / raw) * 100;
119
- return Math.max(0, Math.min(100, savings)).toFixed(0);
120
- };
121
- const headerSavingsGPT4 = calculateSavings(estimatedRawSourceGPT4, headerNoStyleGPT4);
122
- const headerStyleSavingsGPT4 = calculateSavings(estimatedRawSourceGPT4, headerWithStyleGPT4);
123
- // Check tokenizer status and display it
70
+ // Print token counts for current mode
124
71
  const tokenizerStatus = await getTokenizerStatus();
125
72
  const gpt4Method = tokenizerStatus.gpt4 ? 'tiktoken' : 'approximation';
126
73
  const claudeMethod = tokenizerStatus.claude ? 'tokenizer' : 'approximation';
127
- console.log(`\n📏 Token Estimates (${modeLabel} mode):`);
128
- console.log(` Token estimation: GPT-4o (${gpt4Method}) | Claude (${claudeMethod})`);
74
+ // Calculate savings vs raw source
75
+ const rawGPT4 = tokenEstimates.sourceTokensGPT4;
76
+ const rawClaude = tokenEstimates.sourceTokensClaude;
77
+ const savingsGPT4 = rawGPT4 > 0
78
+ ? Math.round(((rawGPT4 - tokenEstimates.currentGPT4) / rawGPT4) * 100)
79
+ : 0;
80
+ const savingsClaude = rawClaude > 0
81
+ ? Math.round(((rawClaude - tokenEstimates.currentClaude) / rawClaude) * 100)
82
+ : 0;
83
+ console.log(`\n📏 Token Count (${modeLabel} mode):`);
84
+ console.log(` Raw source: ${formatTokenCount(rawGPT4)} GPT-4o / ${formatTokenCount(rawClaude)} Claude`);
85
+ console.log(` ${modeLabel.padEnd(12)} ${formatTokenCount(tokenEstimates.currentGPT4)} GPT-4o / ${formatTokenCount(tokenEstimates.currentClaude)} Claude`);
86
+ console.log(` Savings: ~${savingsGPT4}% GPT-4o / ~${savingsClaude}% Claude`);
87
+ console.log(` Method: GPT-4o (${gpt4Method}) | Claude (${claudeMethod})`);
88
+ // Show tip for missing tokenizers
129
89
  if (!tokenizerStatus.gpt4 || !tokenizerStatus.claude) {
130
90
  const missing = [];
131
- if (!tokenizerStatus.gpt4) {
132
- missing.push('@dqbd/tiktoken (GPT-4)');
133
- }
134
- if (!tokenizerStatus.claude) {
135
- missing.push('@anthropic-ai/tokenizer (Claude)');
136
- }
137
- console.log(` 💡 Tip: Tokenizers are included as optional dependencies. If installation failed, manually install ${missing.join(' and/or ')} for accurate token counts`);
91
+ if (!tokenizerStatus.gpt4)
92
+ missing.push('@dqbd/tiktoken');
93
+ if (!tokenizerStatus.claude)
94
+ missing.push('@anthropic-ai/tokenizer');
95
+ console.log(` 💡 Install ${missing.join(' and ')} for accurate counts`);
138
96
  }
139
- console.log(` ⚠️ Current mode = tokenizer-based.`);
140
- console.log(` Other modes / raw source = heuristic.`);
141
- console.log(` For precise per-mode breakdown, use "stamp context --compare-modes".`);
142
- console.log(` GPT-4o-mini: ${formatTokenCount(tokenEstimates.currentGPT4)} tokens`);
143
- console.log(` Claude: ${formatTokenCount(tokenEstimates.currentClaude)} tokens`);
144
- console.log(`\n Comparison:`);
145
- console.log(` Mode | Tokens GPT-4o | Tokens Claude | Savings vs Raw Source`);
146
- console.log(` -------------|---------------|---------------|------------------------`);
147
- console.log(` Raw source | ${formatTokenCount(estimatedRawSourceGPT4).padStart(13)} | ${formatTokenCount(estimatedRawSourceClaude).padStart(13)} | 0%`);
148
- console.log(` Header | ${formatTokenCount(headerNoStyleGPT4).padStart(13)} | ${formatTokenCount(headerNoStyleClaude).padStart(13)} | ${headerSavingsGPT4}%`);
149
- console.log(` Header+style | ${formatTokenCount(headerWithStyleGPT4).padStart(13)} | ${formatTokenCount(headerWithStyleClaude).padStart(13)} | ${headerStyleSavingsGPT4}%`);
150
- console.log(`\n Full context (code+style): ~${formatTokenCount(tokenEstimates.modeEstimates.full.gpt4)} GPT-4o-mini / ~${formatTokenCount(tokenEstimates.modeEstimates.full.claude)} Claude`);
151
- console.log(`\n📊 Current Mode Comparison:`);
152
- console.log(` ⚠️ Current mode = tokenizer-based.`);
153
- console.log(` Other modes / raw source = heuristic.`);
154
- console.log(` For precise per-mode breakdown, use "stamp context --compare-modes".`);
155
- console.log(` none: ~${formatTokenCount(tokenEstimates.modeEstimates.none.gpt4)} tokens`);
156
- // Show current mode with honest labeling - reflects actual mode (header or header+style)
157
- const currentModeLabel = modeLabel;
158
- console.log(` ${currentModeLabel.padEnd(13)} ~${formatTokenCount(tokenEstimates.currentGPT4)} tokens`);
159
- console.log(` full: ~${formatTokenCount(tokenEstimates.modeEstimates.full.gpt4)} tokens`);
97
+ // Point to --compare-modes for detailed breakdown
98
+ console.log(`\n For detailed mode comparison, run: stamp context --compare-modes`);
99
+ // Print missing dependencies if any
160
100
  if (stats.totalMissing > 0) {
161
101
  console.log('\n⚠️ Missing dependencies (external/third-party):');
162
102
  const allMissing = new Set();
163
103
  bundles.forEach(b => {
164
104
  b.meta.missing.forEach(dep => allMissing.add(dep.name));
165
105
  });
166
- Array.from(allMissing).slice(0, 10).forEach(name => console.log(` - ${name}`));
167
- if (allMissing.size > 10) {
168
- console.log(` ... and ${allMissing.size - 10} more`);
106
+ const MAX_DISPLAY = 10;
107
+ Array.from(allMissing).slice(0, MAX_DISPLAY).forEach(name => console.log(` - ${name}`));
108
+ if (allMissing.size > MAX_DISPLAY) {
109
+ console.log(` ... and ${allMissing.size - MAX_DISPLAY} more`);
169
110
  }
170
111
  }
171
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"statsCalculator.js","sourceRoot":"","sources":["../../../../src/cli/commands/context/statsCalculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statsCalculator.js","sourceRoot":"","sources":["../../../../src/cli/commands/context/statsCalculator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watchMode.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/context/watchMode/watchMode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AASpB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAkBvE;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAE,UAAU,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+lBxI"}
1
+ {"version":3,"file":"watchMode.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/context/watchMode/watchMode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AASpB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsBvE;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAE,UAAU,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAirBxI"}
@@ -4,7 +4,7 @@
4
4
  import { resolve, dirname, join, relative } from 'node:path';
5
5
  import { readFile } from 'node:fs/promises';
6
6
  import chokidar from 'chokidar';
7
- import { globFiles } from '../../../../utils/fsx.js';
7
+ import { globFiles, toForwardSlashes } from '../../../../utils/fsx.js';
8
8
  import { readStampignore, filterIgnoredFiles } from '../../../../utils/stampignore.js';
9
9
  import { buildDependencyGraph } from '../../../../core/manifest.js';
10
10
  import { normalizeEntryId } from '../../../../utils/fsx.js';
@@ -15,6 +15,9 @@ import { getChanges, showChanges } from './watchDiff.js';
15
15
  import { initializeWatchCache, incrementalRebuild, } from './index.js';
16
16
  import { buildContractsFromFiles, writeContextFiles, writeMainIndex, groupBundlesByFolder, displayProjectRoot, } from '../index.js';
17
17
  import { contextCommand } from '../../context.js';
18
+ function formatErrorMessage(error) {
19
+ return error instanceof Error ? error.message : String(error);
20
+ }
18
21
  /**
19
22
  * Display session status block
20
23
  */
@@ -68,10 +71,10 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
68
71
  let debounceTimer = null;
69
72
  let regenerationPromise = null; // Promise-based lock to prevent race conditions
70
73
  let changedFiles = new Set();
71
- let baselineBundles = null; // Initial state - never changes (like git HEAD)
74
+ /** Snapshot for `getChanges` / strict-watch: set on first load; reset when watch cache is recovered after an error (new stable tree). */
75
+ let baselineBundles = null;
72
76
  let previousBundles = null; // Last state - for incremental tracking
73
77
  let watchCache = initialCache;
74
- let isFirstRun = false; // Set to false since cache is already initialized
75
78
  // Strict watch mode state
76
79
  let strictWatchStatus = options.strictWatch ? {
77
80
  active: true,
@@ -88,30 +91,92 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
88
91
  const DEBOUNCE_DELAY = 500;
89
92
  // Helper to load all bundles from context files
90
93
  const loadAllBundles = async (outputDir) => {
94
+ const mainIndexPath = join(outputDir, 'context_main.json');
95
+ let mainIndexContent;
91
96
  try {
92
- const mainIndexPath = join(outputDir, 'context_main.json');
93
- const mainIndexContent = await readFile(mainIndexPath, 'utf8');
94
- const mainIndex = JSON.parse(mainIndexContent);
95
- const allBundles = [];
96
- if (mainIndex.folders) {
97
- for (const folder of mainIndex.folders) {
98
- if (folder.contextFile) {
99
- const contextPath = join(outputDir, folder.contextFile);
100
- try {
101
- const contextContent = await readFile(contextPath, 'utf8');
102
- const bundles = JSON.parse(contextContent);
103
- allBundles.push(...bundles);
104
- }
105
- catch {
106
- // Skip if file doesn't exist or can't be read
97
+ mainIndexContent = await readFile(mainIndexPath, 'utf8');
98
+ }
99
+ catch (error) {
100
+ const code = error?.code;
101
+ if (code === 'ENOENT') {
102
+ return [];
103
+ }
104
+ if (!options.quiet) {
105
+ console.warn(` ⚠️ Watch: could not read context index (${mainIndexPath}): ${formatErrorMessage(error)}`);
106
+ }
107
+ return [];
108
+ }
109
+ let mainIndex;
110
+ try {
111
+ mainIndex = JSON.parse(mainIndexContent);
112
+ }
113
+ catch (error) {
114
+ if (!options.quiet) {
115
+ console.warn(` ⚠️ Watch: context index is not valid JSON (${mainIndexPath}): ${formatErrorMessage(error)}`);
116
+ }
117
+ return [];
118
+ }
119
+ const allBundles = [];
120
+ if (mainIndex.folders) {
121
+ for (const folder of mainIndex.folders) {
122
+ if (folder.contextFile) {
123
+ const contextPath = join(outputDir, folder.contextFile);
124
+ try {
125
+ const contextContent = await readFile(contextPath, 'utf8');
126
+ const bundles = JSON.parse(contextContent);
127
+ allBundles.push(...bundles);
128
+ }
129
+ catch (error) {
130
+ if (!options.quiet) {
131
+ console.warn(` ⚠️ Watch: could not load folder context ${contextPath}: ${formatErrorMessage(error)}`);
107
132
  }
108
133
  }
109
134
  }
110
135
  }
111
- return allBundles;
112
136
  }
113
- catch {
114
- return [];
137
+ return allBundles;
138
+ };
139
+ /** After incremental failure, run a full rebuild and re-init cache so watch mode can recover. */
140
+ const attemptWatchCacheRecovery = async () => {
141
+ try {
142
+ const outPathResolved = resolve(options.out);
143
+ const outputDirResolved = outPathResolved.endsWith('.json') ? dirname(outPathResolved) : outPathResolved;
144
+ const regenerateOptions = {
145
+ ...options,
146
+ watch: false,
147
+ strictMissing: false,
148
+ quiet: true,
149
+ suppressSuccessIndicator: true,
150
+ };
151
+ await contextCommand(regenerateOptions);
152
+ const newBundles = await loadAllBundles(outputDirResolved);
153
+ if (newBundles.length === 0) {
154
+ if (!options.quiet) {
155
+ console.warn(' ⚠️ Full rebuild after error produced no bundles; incremental watch stays disabled.');
156
+ }
157
+ return null;
158
+ }
159
+ const files = await globFiles(projectRoot);
160
+ const stampignore = await readStampignore(projectRoot);
161
+ const filteredFiles = stampignore ? filterIgnoredFiles(files, stampignore.ignore, projectRoot) : files;
162
+ const { contracts } = await buildContractsFromFiles(filteredFiles, projectRoot, {
163
+ includeStyle: options.includeStyle,
164
+ styleMode: options.styleMode,
165
+ predictBehavior: options.predictBehavior,
166
+ quiet: true,
167
+ });
168
+ const manifest = buildDependencyGraph(contracts);
169
+ const cache = await initializeWatchCache(filteredFiles, contracts, manifest, newBundles, projectRoot);
170
+ if (cache == null) {
171
+ return null;
172
+ }
173
+ return { cache, bundles: newBundles };
174
+ }
175
+ catch (error) {
176
+ if (!options.quiet) {
177
+ console.warn(` ⚠️ Watch: full rebuild recovery failed: ${formatErrorMessage(error)}`);
178
+ }
179
+ return null;
115
180
  }
116
181
  };
117
182
  const regenerate = async () => {
@@ -134,8 +199,8 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
134
199
  // Determine output directory
135
200
  const outPath = resolve(options.out);
136
201
  const outputDir = outPath.endsWith('.json') ? dirname(outPath) : outPath;
137
- // Load baseline bundles for state-based comparison (like git diff)
138
- // Baseline is set once and never changes - represents the starting state
202
+ // Load baseline bundles for state-based comparison (like git diff).
203
+ // Set on first successful load; also updated after error recovery (full rebuild) so diffs stay meaningful.
139
204
  if (!baselineBundles) {
140
205
  baselineBundles = await loadAllBundles(outputDir);
141
206
  previousBundles = baselineBundles;
@@ -365,24 +430,42 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
365
430
  }
366
431
  catch (error) {
367
432
  const durationMs = Date.now() - startTime;
368
- const errorMessage = error.message;
433
+ const errorMessage = formatErrorMessage(error);
369
434
  if (!options.quiet) {
370
435
  console.error(` ❌ Error: ${errorMessage}\n`);
371
436
  }
372
- // Log error to watch logs (only if --log-file flag is set)
373
437
  if (options.logFile) {
374
- const logEntry = {
375
- timestamp: new Date().toISOString(),
376
- changedFiles: changedFileList,
377
- fileCount: changedFileList.length,
378
- durationMs,
379
- error: errorMessage,
380
- };
381
- await appendWatchLog(projectRoot, logEntry);
438
+ try {
439
+ const logEntry = {
440
+ timestamp: new Date().toISOString(),
441
+ changedFiles: changedFileList,
442
+ fileCount: changedFileList.length,
443
+ durationMs,
444
+ error: errorMessage,
445
+ };
446
+ await appendWatchLog(projectRoot, logEntry);
447
+ }
448
+ catch (logError) {
449
+ if (!options.quiet) {
450
+ console.warn(` ⚠️ Watch: could not append watch log: ${formatErrorMessage(logError)}`);
451
+ }
452
+ }
453
+ }
454
+ const recovery = await attemptWatchCacheRecovery();
455
+ if (recovery != null) {
456
+ watchCache = recovery.cache;
457
+ baselineBundles = recovery.bundles;
458
+ previousBundles = recovery.bundles;
459
+ if (!options.quiet) {
460
+ console.log(` ✅ Watch cache restored after full rebuild.\n`);
461
+ }
462
+ }
463
+ else {
464
+ watchCache = null;
465
+ if (!options.quiet) {
466
+ console.warn(' ⚠️ Each file change will run a full context rebuild until a rebuild succeeds.\n');
467
+ }
382
468
  }
383
- // Fall back to full rebuild on error
384
- watchCache = null;
385
- isFirstRun = true;
386
469
  }
387
470
  };
388
471
  // Execute and track the regeneration promise
@@ -396,7 +479,9 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
396
479
  clearTimeout(debounceTimer);
397
480
  }
398
481
  debounceTimer = setTimeout(() => {
399
- regenerate();
482
+ void regenerate().catch((err) => {
483
+ console.error(` ❌ Watch: unexpected regenerate failure: ${formatErrorMessage(err)}\n`);
484
+ });
400
485
  }, DEBOUNCE_DELAY);
401
486
  };
402
487
  try {
@@ -427,7 +512,7 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
427
512
  /context_main\.json$/,
428
513
  /context_compare_modes\.json$/,
429
514
  // Ignore output directory if different from project root
430
- ...(outputDir !== projectRoot ? [new RegExp('^' + relative(projectRoot, normalizedOutputDir).replace(/\\/g, '/'))] : []),
515
+ ...(outputDir !== projectRoot ? [new RegExp('^' + toForwardSlashes(relative(projectRoot, normalizedOutputDir)))] : []),
431
516
  // Ignore common build/dependency directories
432
517
  /node_modules/,
433
518
  /dist/,
@@ -446,7 +531,7 @@ export async function startWatchMode(options, projectRoot, initialCache = null)
446
531
  // Helper to check if a file should trigger regeneration
447
532
  const shouldTrigger = (filePath) => {
448
533
  // Normalize path separators
449
- const normalizedPath = filePath.replace(/\\/g, '/');
534
+ const normalizedPath = toForwardSlashes(filePath);
450
535
  // Debug logging (can be enabled with LOGICSTAMP_DEBUG=1)
451
536
  if (process.env.LOGICSTAMP_DEBUG === '1' && !options.quiet) {
452
537
  console.log(`[DEBUG] Watch event for: ${normalizedPath}`);