logicstamp-context 0.1.0 → 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 (176) hide show
  1. package/LICENSE +21 -21
  2. package/LLM_CONTEXT.md +4 -3
  3. package/README.md +140 -21
  4. package/dist/cli/commands/compare.d.ts.map +1 -1
  5. package/dist/cli/commands/compare.js +17 -8
  6. package/dist/cli/commands/compare.js.map +1 -1
  7. package/dist/cli/commands/context/bundleFormatter.d.ts +20 -0
  8. package/dist/cli/commands/context/bundleFormatter.d.ts.map +1 -0
  9. package/dist/cli/commands/context/bundleFormatter.js +55 -0
  10. package/dist/cli/commands/context/bundleFormatter.js.map +1 -0
  11. package/dist/cli/commands/context/configManager.d.ts +23 -0
  12. package/dist/cli/commands/context/configManager.d.ts.map +1 -0
  13. package/dist/cli/commands/context/configManager.js +69 -0
  14. package/dist/cli/commands/context/configManager.js.map +1 -0
  15. package/dist/cli/commands/context/contractBuilder.d.ts +18 -0
  16. package/dist/cli/commands/context/contractBuilder.d.ts.map +1 -0
  17. package/dist/cli/commands/context/contractBuilder.js +72 -0
  18. package/dist/cli/commands/context/contractBuilder.js.map +1 -0
  19. package/dist/cli/commands/context/fileWriter.d.ts +38 -0
  20. package/dist/cli/commands/context/fileWriter.d.ts.map +1 -0
  21. package/dist/cli/commands/context/fileWriter.js +165 -0
  22. package/dist/cli/commands/context/fileWriter.js.map +1 -0
  23. package/dist/cli/commands/context/statsCalculator.d.ts +44 -0
  24. package/dist/cli/commands/context/statsCalculator.d.ts.map +1 -0
  25. package/dist/cli/commands/context/statsCalculator.js +150 -0
  26. package/dist/cli/commands/context/statsCalculator.js.map +1 -0
  27. package/dist/cli/commands/context/tokenEstimator.d.ts +76 -0
  28. package/dist/cli/commands/context/tokenEstimator.d.ts.map +1 -0
  29. package/dist/cli/commands/context/tokenEstimator.js +258 -0
  30. package/dist/cli/commands/context/tokenEstimator.js.map +1 -0
  31. package/dist/cli/commands/context.d.ts +2 -0
  32. package/dist/cli/commands/context.d.ts.map +1 -1
  33. package/dist/cli/commands/context.js +75 -405
  34. package/dist/cli/commands/context.js.map +1 -1
  35. package/dist/cli/commands/init.d.ts.map +1 -1
  36. package/dist/cli/commands/init.js +113 -24
  37. package/dist/cli/commands/init.js.map +1 -1
  38. package/dist/cli/commands/style.d.ts +11 -0
  39. package/dist/cli/commands/style.d.ts.map +1 -0
  40. package/dist/cli/commands/style.js +15 -0
  41. package/dist/cli/commands/style.js.map +1 -0
  42. package/dist/cli/handlers/cleanHandler.d.ts +5 -0
  43. package/dist/cli/handlers/cleanHandler.d.ts.map +1 -0
  44. package/dist/cli/handlers/cleanHandler.js +28 -0
  45. package/dist/cli/handlers/cleanHandler.js.map +1 -0
  46. package/dist/cli/handlers/compareHandler.d.ts +5 -0
  47. package/dist/cli/handlers/compareHandler.d.ts.map +1 -0
  48. package/dist/cli/handlers/compareHandler.js +332 -0
  49. package/dist/cli/handlers/compareHandler.js.map +1 -0
  50. package/dist/cli/handlers/contextHandler.d.ts +5 -0
  51. package/dist/cli/handlers/contextHandler.d.ts.map +1 -0
  52. package/dist/cli/handlers/contextHandler.js +24 -0
  53. package/dist/cli/handlers/contextHandler.js.map +1 -0
  54. package/dist/cli/handlers/initHandler.d.ts +6 -0
  55. package/dist/cli/handlers/initHandler.d.ts.map +1 -0
  56. package/dist/cli/handlers/initHandler.js +30 -0
  57. package/dist/cli/handlers/initHandler.js.map +1 -0
  58. package/dist/cli/handlers/styleHandler.d.ts +5 -0
  59. package/dist/cli/handlers/styleHandler.d.ts.map +1 -0
  60. package/dist/cli/handlers/styleHandler.js +30 -0
  61. package/dist/cli/handlers/styleHandler.js.map +1 -0
  62. package/dist/cli/handlers/validateHandler.d.ts +5 -0
  63. package/dist/cli/handlers/validateHandler.d.ts.map +1 -0
  64. package/dist/cli/handlers/validateHandler.js +23 -0
  65. package/dist/cli/handlers/validateHandler.js.map +1 -0
  66. package/dist/cli/index.js +5 -0
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli/parser/argumentParser.d.ts +44 -0
  69. package/dist/cli/parser/argumentParser.d.ts.map +1 -0
  70. package/dist/cli/parser/argumentParser.js +194 -0
  71. package/dist/cli/parser/argumentParser.js.map +1 -0
  72. package/dist/cli/parser/helpText.d.ts +11 -0
  73. package/dist/cli/parser/helpText.d.ts.map +1 -0
  74. package/dist/cli/parser/helpText.js +373 -0
  75. package/dist/cli/parser/helpText.js.map +1 -0
  76. package/dist/cli/stamp.js +14 -897
  77. package/dist/cli/stamp.js.map +1 -1
  78. package/dist/core/astParser/detectors.d.ts +24 -0
  79. package/dist/core/astParser/detectors.d.ts.map +1 -0
  80. package/dist/core/astParser/detectors.js +102 -0
  81. package/dist/core/astParser/detectors.js.map +1 -0
  82. package/dist/core/astParser/extractors/componentExtractor.d.ts +13 -0
  83. package/dist/core/astParser/extractors/componentExtractor.d.ts.map +1 -0
  84. package/dist/core/astParser/extractors/componentExtractor.js +41 -0
  85. package/dist/core/astParser/extractors/componentExtractor.js.map +1 -0
  86. package/dist/core/astParser/extractors/eventExtractor.d.ts +14 -0
  87. package/dist/core/astParser/extractors/eventExtractor.d.ts.map +1 -0
  88. package/dist/core/astParser/extractors/eventExtractor.js +49 -0
  89. package/dist/core/astParser/extractors/eventExtractor.js.map +1 -0
  90. package/dist/core/astParser/extractors/propExtractor.d.ts +14 -0
  91. package/dist/core/astParser/extractors/propExtractor.d.ts.map +1 -0
  92. package/dist/core/astParser/extractors/propExtractor.js +73 -0
  93. package/dist/core/astParser/extractors/propExtractor.js.map +1 -0
  94. package/dist/core/astParser/extractors/stateExtractor.d.ts +13 -0
  95. package/dist/core/astParser/extractors/stateExtractor.d.ts.map +1 -0
  96. package/dist/core/astParser/extractors/stateExtractor.js +66 -0
  97. package/dist/core/astParser/extractors/stateExtractor.js.map +1 -0
  98. package/dist/core/astParser.d.ts.map +1 -1
  99. package/dist/core/astParser.js +5 -307
  100. package/dist/core/astParser.js.map +1 -1
  101. package/dist/core/contractBuilder.d.ts +1 -0
  102. package/dist/core/contractBuilder.d.ts.map +1 -1
  103. package/dist/core/contractBuilder.js +1 -0
  104. package/dist/core/contractBuilder.js.map +1 -1
  105. package/dist/core/pack/builder.d.ts +35 -0
  106. package/dist/core/pack/builder.d.ts.map +1 -0
  107. package/dist/core/pack/builder.js +76 -0
  108. package/dist/core/pack/builder.js.map +1 -0
  109. package/dist/core/pack/collector.d.ts +20 -0
  110. package/dist/core/pack/collector.d.ts.map +1 -0
  111. package/dist/core/pack/collector.js +71 -0
  112. package/dist/core/pack/collector.js.map +1 -0
  113. package/dist/core/pack/loader.d.ts +23 -0
  114. package/dist/core/pack/loader.d.ts.map +1 -0
  115. package/dist/core/pack/loader.js +66 -0
  116. package/dist/core/pack/loader.js.map +1 -0
  117. package/dist/core/pack/resolver.d.ts +21 -0
  118. package/dist/core/pack/resolver.d.ts.map +1 -0
  119. package/dist/core/pack/resolver.js +79 -0
  120. package/dist/core/pack/resolver.js.map +1 -0
  121. package/dist/core/pack.d.ts +17 -27
  122. package/dist/core/pack.d.ts.map +1 -1
  123. package/dist/core/pack.js +18 -225
  124. package/dist/core/pack.js.map +1 -1
  125. package/dist/core/styleExtractor/index.d.ts +11 -0
  126. package/dist/core/styleExtractor/index.d.ts.map +1 -0
  127. package/dist/core/styleExtractor/index.js +11 -0
  128. package/dist/core/styleExtractor/index.js.map +1 -0
  129. package/dist/core/styleExtractor/layout.d.ts +14 -0
  130. package/dist/core/styleExtractor/layout.d.ts.map +1 -0
  131. package/dist/core/styleExtractor/layout.js +86 -0
  132. package/dist/core/styleExtractor/layout.js.map +1 -0
  133. package/dist/core/styleExtractor/motion.d.ts +20 -0
  134. package/dist/core/styleExtractor/motion.d.ts.map +1 -0
  135. package/dist/core/styleExtractor/motion.js +74 -0
  136. package/dist/core/styleExtractor/motion.js.map +1 -0
  137. package/dist/core/styleExtractor/scss.d.ts +30 -0
  138. package/dist/core/styleExtractor/scss.d.ts.map +1 -0
  139. package/dist/core/styleExtractor/scss.js +80 -0
  140. package/dist/core/styleExtractor/scss.js.map +1 -0
  141. package/dist/core/styleExtractor/styleExtractor.d.ts +11 -0
  142. package/dist/core/styleExtractor/styleExtractor.d.ts.map +1 -0
  143. package/dist/core/styleExtractor/styleExtractor.js +115 -0
  144. package/dist/core/styleExtractor/styleExtractor.js.map +1 -0
  145. package/dist/core/styleExtractor/styled.d.ts +13 -0
  146. package/dist/core/styleExtractor/styled.d.ts.map +1 -0
  147. package/dist/core/styleExtractor/styled.js +31 -0
  148. package/dist/core/styleExtractor/styled.js.map +1 -0
  149. package/dist/core/styleExtractor/tailwind.d.ts +16 -0
  150. package/dist/core/styleExtractor/tailwind.d.ts.map +1 -0
  151. package/dist/core/styleExtractor/tailwind.js +85 -0
  152. package/dist/core/styleExtractor/tailwind.js.map +1 -0
  153. package/dist/core/styleExtractor.d.ts +8 -0
  154. package/dist/core/styleExtractor.d.ts.map +1 -0
  155. package/dist/core/styleExtractor.js +8 -0
  156. package/dist/core/styleExtractor.js.map +1 -0
  157. package/dist/index.d.ts +4 -2
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js.map +1 -1
  160. package/dist/types/UIFContract.d.ts +71 -0
  161. package/dist/types/UIFContract.d.ts.map +1 -1
  162. package/dist/types/UIFContract.js.map +1 -1
  163. package/dist/utils/gitignore.d.ts +6 -5
  164. package/dist/utils/gitignore.d.ts.map +1 -1
  165. package/dist/utils/gitignore.js +11 -50
  166. package/dist/utils/gitignore.js.map +1 -1
  167. package/dist/utils/llmContext.d.ts +4 -6
  168. package/dist/utils/llmContext.d.ts.map +1 -1
  169. package/dist/utils/llmContext.js +8 -59
  170. package/dist/utils/llmContext.js.map +1 -1
  171. package/dist/utils/tokens.d.ts +18 -10
  172. package/dist/utils/tokens.d.ts.map +1 -1
  173. package/dist/utils/tokens.js +112 -10
  174. package/dist/utils/tokens.js.map +1 -1
  175. package/package.json +3 -1
  176. package/schema/logicstamp.context.schema.json +288 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Token Estimator - Calculates token counts and mode comparisons
3
+ */
4
+ import type { ProjectManifest } from '../../../core/manifest.js';
5
+ export interface TokenEstimates {
6
+ currentGPT4: number;
7
+ currentClaude: number;
8
+ sourceTokensGPT4: number;
9
+ sourceTokensClaude: number;
10
+ modeEstimates: {
11
+ none: {
12
+ gpt4: number;
13
+ claude: number;
14
+ };
15
+ header: {
16
+ gpt4: number;
17
+ claude: number;
18
+ };
19
+ full: {
20
+ gpt4: number;
21
+ claude: number;
22
+ };
23
+ };
24
+ savingsGPT4: string;
25
+ savingsClaude: string;
26
+ }
27
+ export interface ModeComparisonResult {
28
+ headerNoStyleGPT4: number;
29
+ headerNoStyleClaude: number;
30
+ headerWithStyleGPT4: number;
31
+ headerWithStyleClaude: number;
32
+ sourceTokensGPT4: number;
33
+ sourceTokensClaude: number;
34
+ modeEstimates: {
35
+ none: {
36
+ gpt4: number;
37
+ claude: number;
38
+ };
39
+ header: {
40
+ gpt4: number;
41
+ claude: number;
42
+ };
43
+ headerStyle: {
44
+ gpt4: number;
45
+ claude: number;
46
+ };
47
+ full: {
48
+ gpt4: number;
49
+ claude: number;
50
+ };
51
+ };
52
+ }
53
+ /**
54
+ * Calculate token estimates for current output
55
+ */
56
+ export declare function calculateTokenEstimates(output: string, totalSourceSize: number, currentGPT4: number, currentClaude: number): Promise<TokenEstimates>;
57
+ /**
58
+ * Generate mode comparison by rebuilding contracts with/without style
59
+ */
60
+ export declare function generateModeComparison(files: string[], manifest: ProjectManifest, projectRoot: string, currentGPT4: number, currentClaude: number, totalSourceSize: number, options: {
61
+ includeCode: 'none' | 'header' | 'full';
62
+ includeStyle?: boolean;
63
+ depth: number;
64
+ maxNodes: number;
65
+ format: 'json' | 'pretty' | 'ndjson';
66
+ hashLock: boolean;
67
+ strict: boolean;
68
+ allowMissing: boolean;
69
+ predictBehavior: boolean;
70
+ quiet?: boolean;
71
+ }): Promise<ModeComparisonResult>;
72
+ /**
73
+ * Display mode comparison table
74
+ */
75
+ export declare function displayModeComparison(comparison: ModeComparisonResult, elapsed: number): Promise<void>;
76
+ //# sourceMappingURL=tokenEstimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenEstimator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/context/tokenEstimator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAUjE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE;QACb,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACxC,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE;QACb,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,WAAW,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACxC,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CAyCzB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,oBAAoB,CAAC,CA6K/B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAwDf"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Token Estimator - Calculates token counts and mode comparisons
3
+ */
4
+ import { estimateGPT4Tokens, estimateClaudeTokens, formatTokenCount, getTokenizerStatus } from '../../../utils/tokens.js';
5
+ import { pack } from '../../../core/pack.js';
6
+ import { buildContract } from '../../../core/contractBuilder.js';
7
+ import { extractFromFile } from '../../../core/astParser.js';
8
+ import { extractStyleMetadata } from '../../../core/styleExtractor.js';
9
+ import { readFileWithText } from '../../../utils/fsx.js';
10
+ import { Project } from 'ts-morph';
11
+ import { formatBundles } from './bundleFormatter.js';
12
+ /**
13
+ * Calculate token estimates for current output
14
+ */
15
+ export async function calculateTokenEstimates(output, totalSourceSize, currentGPT4, currentClaude) {
16
+ // Estimate tokens for all three modes
17
+ const sourceTokensGPT4 = Math.ceil(totalSourceSize / 4);
18
+ const sourceTokensClaude = Math.ceil(totalSourceSize / 4.5);
19
+ // Estimate based on typical ratios observed in practice:
20
+ // - none mode: ~60% of header mode (contracts only, no code snippets)
21
+ // - header mode: baseline (contracts + JSDoc headers)
22
+ // - full mode: header mode + all source code
23
+ const modeEstimates = {
24
+ none: {
25
+ gpt4: Math.ceil(currentGPT4 * 0.6),
26
+ claude: Math.ceil(currentClaude * 0.6),
27
+ },
28
+ header: {
29
+ gpt4: currentGPT4,
30
+ claude: currentClaude,
31
+ },
32
+ full: {
33
+ gpt4: currentGPT4 + sourceTokensGPT4,
34
+ claude: currentClaude + sourceTokensClaude,
35
+ },
36
+ };
37
+ // Calculate savings percentage for current mode vs full
38
+ const savingsGPT4 = modeEstimates.full.gpt4 > 0
39
+ ? ((modeEstimates.full.gpt4 - currentGPT4) / modeEstimates.full.gpt4 * 100).toFixed(0)
40
+ : '0';
41
+ const savingsClaude = modeEstimates.full.claude > 0
42
+ ? ((modeEstimates.full.claude - currentClaude) / modeEstimates.full.claude * 100).toFixed(0)
43
+ : '0';
44
+ return {
45
+ currentGPT4,
46
+ currentClaude,
47
+ sourceTokensGPT4,
48
+ sourceTokensClaude,
49
+ modeEstimates,
50
+ savingsGPT4,
51
+ savingsClaude,
52
+ };
53
+ }
54
+ /**
55
+ * Generate mode comparison by rebuilding contracts with/without style
56
+ */
57
+ export async function generateModeComparison(files, manifest, projectRoot, currentGPT4, currentClaude, totalSourceSize, options) {
58
+ const hasStyle = options.includeStyle === true;
59
+ const isHeaderMode = options.includeCode === 'header';
60
+ // Calculate actual source size tokens
61
+ const actualSourceTokensGPT4 = Math.ceil(totalSourceSize / 4);
62
+ const actualSourceTokensClaude = Math.ceil(totalSourceSize / 4.5);
63
+ // Calculate header and header+style for comparison
64
+ let headerNoStyleGPT4;
65
+ let headerNoStyleClaude;
66
+ let headerWithStyleGPT4;
67
+ let headerWithStyleClaude;
68
+ if (isHeaderMode && hasStyle) {
69
+ // Current is header+style - regenerate contracts without style to get accurate count
70
+ headerWithStyleGPT4 = currentGPT4;
71
+ headerWithStyleClaude = currentClaude;
72
+ // Rebuild contracts without style metadata to get accurate header token count
73
+ if (!options.quiet) {
74
+ console.log(' Generating without style metadata for accurate comparison...');
75
+ }
76
+ const noStyleContracts = [];
77
+ for (const file of files) {
78
+ try {
79
+ const ast = await extractFromFile(file);
80
+ const { text } = await readFileWithText(file);
81
+ const result = buildContract(file, ast, {
82
+ preset: 'none',
83
+ sourceText: text,
84
+ enablePredictions: options.predictBehavior,
85
+ styleMetadata: undefined, // Explicitly no style
86
+ });
87
+ if (result.contract) {
88
+ noStyleContracts.push(result.contract);
89
+ }
90
+ }
91
+ catch (error) {
92
+ // Skip files that can't be analyzed
93
+ }
94
+ }
95
+ // Generate bundles with no-style contracts
96
+ const noStyleContractsMap = new Map(noStyleContracts.map(c => [c.entryId, c]));
97
+ const noStyleBundles = await Promise.all(manifest.graph.roots.map(rootId => pack(rootId, manifest, {
98
+ depth: options.depth,
99
+ includeCode: options.includeCode,
100
+ maxNodes: options.maxNodes,
101
+ contractsMap: noStyleContractsMap,
102
+ format: options.format,
103
+ hashLock: options.hashLock || false,
104
+ strict: options.strict || false,
105
+ allowMissing: options.allowMissing !== false,
106
+ }, projectRoot)));
107
+ // Format no-style bundles to get token count
108
+ const noStyleOutput = formatBundles(noStyleBundles, options.format);
109
+ headerNoStyleGPT4 = await estimateGPT4Tokens(noStyleOutput);
110
+ headerNoStyleClaude = await estimateClaudeTokens(noStyleOutput);
111
+ }
112
+ else if (isHeaderMode && !hasStyle) {
113
+ // Current is header without style - regenerate contracts with style to get accurate count
114
+ headerNoStyleGPT4 = currentGPT4;
115
+ headerNoStyleClaude = currentClaude;
116
+ // Rebuild contracts with style metadata to get accurate header+style token count
117
+ if (!options.quiet) {
118
+ console.log(' Generating with style metadata for accurate comparison...');
119
+ }
120
+ const styleProject = new Project({
121
+ skipAddingFilesFromTsConfig: true,
122
+ compilerOptions: {
123
+ jsx: 1,
124
+ target: 99,
125
+ },
126
+ });
127
+ const styleContracts = [];
128
+ for (const file of files) {
129
+ try {
130
+ const ast = await extractFromFile(file);
131
+ const { text } = await readFileWithText(file);
132
+ let styleMetadata;
133
+ try {
134
+ const sourceFile = styleProject.addSourceFileAtPath(file);
135
+ styleMetadata = await extractStyleMetadata(sourceFile, file);
136
+ }
137
+ catch (styleError) {
138
+ // Style extraction is optional
139
+ }
140
+ const result = buildContract(file, ast, {
141
+ preset: 'none',
142
+ sourceText: text,
143
+ enablePredictions: options.predictBehavior,
144
+ styleMetadata,
145
+ });
146
+ if (result.contract) {
147
+ styleContracts.push(result.contract);
148
+ }
149
+ }
150
+ catch (error) {
151
+ // Skip files that can't be analyzed
152
+ }
153
+ }
154
+ // Generate bundles with style-enabled contracts
155
+ const styleContractsMap = new Map(styleContracts.map(c => [c.entryId, c]));
156
+ const styleBundles = await Promise.all(manifest.graph.roots.map(rootId => pack(rootId, manifest, {
157
+ depth: options.depth,
158
+ includeCode: options.includeCode,
159
+ maxNodes: options.maxNodes,
160
+ contractsMap: styleContractsMap,
161
+ format: options.format,
162
+ hashLock: options.hashLock || false,
163
+ strict: options.strict || false,
164
+ allowMissing: options.allowMissing !== false,
165
+ }, projectRoot)));
166
+ // Format style bundles to get token count
167
+ const styleOutput = formatBundles(styleBundles, options.format);
168
+ headerWithStyleGPT4 = await estimateGPT4Tokens(styleOutput);
169
+ headerWithStyleClaude = await estimateClaudeTokens(styleOutput);
170
+ }
171
+ else {
172
+ // Estimate for non-header modes
173
+ headerNoStyleGPT4 = Math.ceil(currentGPT4 * 0.75);
174
+ headerNoStyleClaude = Math.ceil(currentClaude * 0.75);
175
+ headerWithStyleGPT4 = Math.ceil(currentGPT4 * 0.85);
176
+ headerWithStyleClaude = Math.ceil(currentClaude * 0.85);
177
+ }
178
+ // Calculate mode estimates
179
+ const modeEstimates = {
180
+ none: {
181
+ gpt4: Math.ceil(headerNoStyleGPT4 * 0.6),
182
+ claude: Math.ceil(headerNoStyleClaude * 0.6),
183
+ },
184
+ header: {
185
+ gpt4: headerNoStyleGPT4,
186
+ claude: headerNoStyleClaude,
187
+ },
188
+ headerStyle: {
189
+ gpt4: headerWithStyleGPT4,
190
+ claude: headerWithStyleClaude,
191
+ },
192
+ full: {
193
+ gpt4: headerNoStyleGPT4 + actualSourceTokensGPT4,
194
+ claude: headerNoStyleClaude + actualSourceTokensClaude,
195
+ },
196
+ };
197
+ return {
198
+ headerNoStyleGPT4,
199
+ headerNoStyleClaude,
200
+ headerWithStyleGPT4,
201
+ headerWithStyleClaude,
202
+ sourceTokensGPT4: actualSourceTokensGPT4,
203
+ sourceTokensClaude: actualSourceTokensClaude,
204
+ modeEstimates,
205
+ };
206
+ }
207
+ /**
208
+ * Display mode comparison table
209
+ */
210
+ export async function displayModeComparison(comparison, elapsed) {
211
+ const { headerNoStyleGPT4, headerNoStyleClaude, headerWithStyleGPT4, headerWithStyleClaude, sourceTokensGPT4, sourceTokensClaude, modeEstimates } = comparison;
212
+ // Calculate savings percentages vs raw source
213
+ const headerSavingsGPT4 = sourceTokensGPT4 > 0
214
+ ? ((sourceTokensGPT4 - headerNoStyleGPT4) / sourceTokensGPT4 * 100).toFixed(0)
215
+ : '0';
216
+ const headerStyleSavingsGPT4 = sourceTokensGPT4 > 0
217
+ ? ((sourceTokensGPT4 - headerWithStyleGPT4) / sourceTokensGPT4 * 100).toFixed(0)
218
+ : '0';
219
+ // Check tokenizer status
220
+ const tokenizerStatus = await getTokenizerStatus();
221
+ const gpt4Method = tokenizerStatus.gpt4 ? 'tiktoken' : 'approximation';
222
+ const claudeMethod = tokenizerStatus.claude ? 'tokenizer' : 'approximation';
223
+ console.log('\nšŸ“Š Mode Comparison\n');
224
+ console.log(` Token estimation: GPT-4o (${gpt4Method}) | Claude (${claudeMethod})`);
225
+ if (!tokenizerStatus.gpt4 || !tokenizerStatus.claude) {
226
+ const missing = [];
227
+ if (!tokenizerStatus.gpt4) {
228
+ missing.push('@dqbd/tiktoken (GPT-4)');
229
+ }
230
+ if (!tokenizerStatus.claude) {
231
+ missing.push('@anthropic-ai/tokenizer (Claude)');
232
+ }
233
+ console.log(` šŸ’” Tip: Install ${missing.join(' and/or ')} for accurate token counts`);
234
+ }
235
+ console.log('\n Comparison:');
236
+ console.log(' Mode | Tokens GPT-4o | Tokens Claude | Savings vs Raw Source');
237
+ console.log(' -------------|---------------|---------------|------------------------');
238
+ console.log(` Raw source | ${formatTokenCount(sourceTokensGPT4).padStart(13)} | ${formatTokenCount(sourceTokensClaude).padStart(13)} | 0%`);
239
+ console.log(` Header | ${formatTokenCount(headerNoStyleGPT4).padStart(13)} | ${formatTokenCount(headerNoStyleClaude).padStart(13)} | ${headerSavingsGPT4}%`);
240
+ console.log(` Header+style | ${formatTokenCount(headerWithStyleGPT4).padStart(13)} | ${formatTokenCount(headerWithStyleClaude).padStart(13)} | ${headerStyleSavingsGPT4}%`);
241
+ console.log('\n Mode breakdown:');
242
+ console.log(' Mode | Tokens GPT-4o | Tokens Claude | Savings vs Full Context');
243
+ console.log(' -------------|---------------|---------------|--------------------------');
244
+ const modes = [
245
+ { name: 'none', gpt4: modeEstimates.none.gpt4, claude: modeEstimates.none.claude },
246
+ { name: 'header', gpt4: headerNoStyleGPT4, claude: headerNoStyleClaude },
247
+ { name: 'header+style', gpt4: headerWithStyleGPT4, claude: headerWithStyleClaude },
248
+ { name: 'full', gpt4: modeEstimates.full.gpt4, claude: modeEstimates.full.claude },
249
+ ];
250
+ modes.forEach(mode => {
251
+ const savings = modeEstimates.full.gpt4 > 0
252
+ ? ((modeEstimates.full.gpt4 - mode.gpt4) / modeEstimates.full.gpt4 * 100).toFixed(0)
253
+ : '0';
254
+ console.log(` ${mode.name.padEnd(13)} | ${formatTokenCount(mode.gpt4).padStart(13)} | ${formatTokenCount(mode.claude).padStart(13)} | ${savings}%`);
255
+ });
256
+ console.log(`\nā± Completed in ${elapsed}ms`);
257
+ }
258
+ //# sourceMappingURL=tokenEstimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../../../src/cli/commands/context/tokenEstimator.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface ContextOptions {
19
19
  compareModes: boolean;
20
20
  skipGitignore?: boolean;
21
21
  quiet?: boolean;
22
+ suppressSuccessIndicator?: boolean;
23
+ includeStyle?: boolean;
22
24
  }
23
25
  export declare function contextCommand(options: ContextOptions): Promise<void>;
24
26
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuEH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqjB3E"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmS3E"}