dino-spec 15.0.0 → 16.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.
Files changed (231) hide show
  1. package/README.md +58 -1
  2. package/dist/cli/index.js +46 -0
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/dashboard.d.ts +27 -0
  5. package/dist/commands/dashboard.d.ts.map +1 -0
  6. package/dist/commands/dashboard.js +80 -0
  7. package/dist/commands/dashboard.js.map +1 -0
  8. package/dist/commands/debug.d.ts +53 -0
  9. package/dist/commands/debug.d.ts.map +1 -0
  10. package/dist/commands/debug.js +199 -0
  11. package/dist/commands/debug.js.map +1 -0
  12. package/dist/commands/profile.d.ts +37 -0
  13. package/dist/commands/profile.d.ts.map +1 -0
  14. package/dist/commands/profile.js +145 -0
  15. package/dist/commands/profile.js.map +1 -0
  16. package/dist/commands/recommendations.d.ts +27 -0
  17. package/dist/commands/recommendations.d.ts.map +1 -0
  18. package/dist/commands/recommendations.js +123 -0
  19. package/dist/commands/recommendations.js.map +1 -0
  20. package/dist/core/checkpoints/checkpoint.d.ts +1 -0
  21. package/dist/core/checkpoints/checkpoint.d.ts.map +1 -1
  22. package/dist/core/checkpoints/checkpoint.js.map +1 -1
  23. package/dist/core/checkpoints/handoff.d.ts +2 -1
  24. package/dist/core/checkpoints/handoff.d.ts.map +1 -1
  25. package/dist/core/checkpoints/handoff.js +2 -1
  26. package/dist/core/checkpoints/handoff.js.map +1 -1
  27. package/dist/core/checkpoints/session-recovery.d.ts +71 -0
  28. package/dist/core/checkpoints/session-recovery.d.ts.map +1 -0
  29. package/dist/core/checkpoints/session-recovery.js +172 -0
  30. package/dist/core/checkpoints/session-recovery.js.map +1 -0
  31. package/dist/core/config/feature-flags.d.ts +84 -0
  32. package/dist/core/config/feature-flags.d.ts.map +1 -1
  33. package/dist/core/config/feature-flags.js +18 -0
  34. package/dist/core/config/feature-flags.js.map +1 -1
  35. package/dist/core/context/__tests__/feedback-loop-engine.test.d.ts +5 -0
  36. package/dist/core/context/__tests__/feedback-loop-engine.test.d.ts.map +1 -0
  37. package/dist/core/context/__tests__/feedback-loop-engine.test.js +377 -0
  38. package/dist/core/context/__tests__/feedback-loop-engine.test.js.map +1 -0
  39. package/dist/core/context/adaptation-strategy.d.ts +125 -0
  40. package/dist/core/context/adaptation-strategy.d.ts.map +1 -0
  41. package/dist/core/context/adaptation-strategy.js +233 -0
  42. package/dist/core/context/adaptation-strategy.js.map +1 -0
  43. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  44. package/dist/core/context/auto-injection-engine.js +21 -0
  45. package/dist/core/context/auto-injection-engine.js.map +1 -1
  46. package/dist/core/context/auto-unload-engine.d.ts +20 -2
  47. package/dist/core/context/auto-unload-engine.d.ts.map +1 -1
  48. package/dist/core/context/auto-unload-engine.js +78 -5
  49. package/dist/core/context/auto-unload-engine.js.map +1 -1
  50. package/dist/core/context/budget-thresholds.d.ts +75 -1
  51. package/dist/core/context/budget-thresholds.d.ts.map +1 -1
  52. package/dist/core/context/budget-thresholds.js +163 -2
  53. package/dist/core/context/budget-thresholds.js.map +1 -1
  54. package/dist/core/context/context-health.d.ts.map +1 -1
  55. package/dist/core/context/context-health.js +24 -0
  56. package/dist/core/context/context-health.js.map +1 -1
  57. package/dist/core/context/demand-detector.d.ts +34 -1
  58. package/dist/core/context/demand-detector.d.ts.map +1 -1
  59. package/dist/core/context/demand-detector.js +162 -1
  60. package/dist/core/context/demand-detector.js.map +1 -1
  61. package/dist/core/context/demand-signal-patterns.d.ts +120 -0
  62. package/dist/core/context/demand-signal-patterns.d.ts.map +1 -0
  63. package/dist/core/context/demand-signal-patterns.js +418 -0
  64. package/dist/core/context/demand-signal-patterns.js.map +1 -0
  65. package/dist/core/context/feedback-loop-engine.d.ts +128 -0
  66. package/dist/core/context/feedback-loop-engine.d.ts.map +1 -0
  67. package/dist/core/context/feedback-loop-engine.js +352 -0
  68. package/dist/core/context/feedback-loop-engine.js.map +1 -0
  69. package/dist/core/context/index.d.ts +5 -3
  70. package/dist/core/context/index.d.ts.map +1 -1
  71. package/dist/core/context/index.js +26 -6
  72. package/dist/core/context/index.js.map +1 -1
  73. package/dist/core/context/prefetch-learner.d.ts +195 -0
  74. package/dist/core/context/prefetch-learner.d.ts.map +1 -0
  75. package/dist/core/context/prefetch-learner.js +363 -0
  76. package/dist/core/context/prefetch-learner.js.map +1 -0
  77. package/dist/core/context/semantic-signal-detector.d.ts +96 -0
  78. package/dist/core/context/semantic-signal-detector.d.ts.map +1 -0
  79. package/dist/core/context/semantic-signal-detector.js +320 -0
  80. package/dist/core/context/semantic-signal-detector.js.map +1 -0
  81. package/dist/core/context/smart-prefetch-engine.d.ts +66 -0
  82. package/dist/core/context/smart-prefetch-engine.d.ts.map +1 -0
  83. package/dist/core/context/smart-prefetch-engine.js +226 -0
  84. package/dist/core/context/smart-prefetch-engine.js.map +1 -0
  85. package/dist/core/context/token-tracker.d.ts +9 -0
  86. package/dist/core/context/token-tracker.d.ts.map +1 -1
  87. package/dist/core/context/token-tracker.js +14 -0
  88. package/dist/core/context/token-tracker.js.map +1 -1
  89. package/dist/core/context/window-boundary.d.ts +132 -0
  90. package/dist/core/context/window-boundary.d.ts.map +1 -0
  91. package/dist/core/context/window-boundary.js +268 -0
  92. package/dist/core/context/window-boundary.js.map +1 -0
  93. package/dist/core/context-repl/confidence-scorer.d.ts +92 -0
  94. package/dist/core/context-repl/confidence-scorer.d.ts.map +1 -0
  95. package/dist/core/context-repl/confidence-scorer.js +159 -0
  96. package/dist/core/context-repl/confidence-scorer.js.map +1 -0
  97. package/dist/core/context-repl/reconnaissance-engine.d.ts +160 -0
  98. package/dist/core/context-repl/reconnaissance-engine.d.ts.map +1 -0
  99. package/dist/core/context-repl/reconnaissance-engine.js +275 -0
  100. package/dist/core/context-repl/reconnaissance-engine.js.map +1 -0
  101. package/dist/core/dashboard/dashboard-formatter.d.ts +68 -0
  102. package/dist/core/dashboard/dashboard-formatter.d.ts.map +1 -0
  103. package/dist/core/dashboard/dashboard-formatter.js +250 -0
  104. package/dist/core/dashboard/dashboard-formatter.js.map +1 -0
  105. package/dist/core/dashboard/health-metrics-aggregator.d.ts +117 -0
  106. package/dist/core/dashboard/health-metrics-aggregator.d.ts.map +1 -0
  107. package/dist/core/dashboard/health-metrics-aggregator.js +255 -0
  108. package/dist/core/dashboard/health-metrics-aggregator.js.map +1 -0
  109. package/dist/core/debug/context-decision-logger.d.ts +189 -0
  110. package/dist/core/debug/context-decision-logger.d.ts.map +1 -0
  111. package/dist/core/debug/context-decision-logger.js +397 -0
  112. package/dist/core/debug/context-decision-logger.js.map +1 -0
  113. package/dist/core/debug/debug-config.d.ts +100 -0
  114. package/dist/core/debug/debug-config.d.ts.map +1 -0
  115. package/dist/core/debug/debug-config.js +193 -0
  116. package/dist/core/debug/debug-config.js.map +1 -0
  117. package/dist/core/debug/debug-logger.d.ts +85 -0
  118. package/dist/core/debug/debug-logger.d.ts.map +1 -0
  119. package/dist/core/debug/debug-logger.js +287 -0
  120. package/dist/core/debug/debug-logger.js.map +1 -0
  121. package/dist/core/debug/index.d.ts +10 -0
  122. package/dist/core/debug/index.d.ts.map +1 -0
  123. package/dist/core/debug/index.js +13 -0
  124. package/dist/core/debug/index.js.map +1 -0
  125. package/dist/core/embeddings/content-indexer.d.ts +169 -0
  126. package/dist/core/embeddings/content-indexer.d.ts.map +1 -0
  127. package/dist/core/embeddings/content-indexer.js +317 -0
  128. package/dist/core/embeddings/content-indexer.js.map +1 -0
  129. package/dist/core/embeddings/index.d.ts +2 -0
  130. package/dist/core/embeddings/index.d.ts.map +1 -1
  131. package/dist/core/embeddings/index.js +4 -0
  132. package/dist/core/embeddings/index.js.map +1 -1
  133. package/dist/core/embeddings/semantic-cache.d.ts +162 -0
  134. package/dist/core/embeddings/semantic-cache.d.ts.map +1 -0
  135. package/dist/core/embeddings/semantic-cache.js +317 -0
  136. package/dist/core/embeddings/semantic-cache.js.map +1 -0
  137. package/dist/core/generator/session-md.d.ts +31 -1
  138. package/dist/core/generator/session-md.d.ts.map +1 -1
  139. package/dist/core/generator/session-md.js +63 -1
  140. package/dist/core/generator/session-md.js.map +1 -1
  141. package/dist/core/memory/retrieval.d.ts +7 -1
  142. package/dist/core/memory/retrieval.d.ts.map +1 -1
  143. package/dist/core/memory/retrieval.js +7 -1
  144. package/dist/core/memory/retrieval.js.map +1 -1
  145. package/dist/core/metrics/__tests__/metrics-collector.test.d.ts +5 -0
  146. package/dist/core/metrics/__tests__/metrics-collector.test.d.ts.map +1 -0
  147. package/dist/core/metrics/__tests__/metrics-collector.test.js +354 -0
  148. package/dist/core/metrics/__tests__/metrics-collector.test.js.map +1 -0
  149. package/dist/core/metrics/index.d.ts +9 -0
  150. package/dist/core/metrics/index.d.ts.map +1 -0
  151. package/dist/core/metrics/index.js +29 -0
  152. package/dist/core/metrics/index.js.map +1 -0
  153. package/dist/core/metrics/metrics-collector.d.ts +153 -0
  154. package/dist/core/metrics/metrics-collector.d.ts.map +1 -0
  155. package/dist/core/metrics/metrics-collector.js +446 -0
  156. package/dist/core/metrics/metrics-collector.js.map +1 -0
  157. package/dist/core/metrics/metrics-schema.d.ts +189 -0
  158. package/dist/core/metrics/metrics-schema.d.ts.map +1 -0
  159. package/dist/core/metrics/metrics-schema.js +180 -0
  160. package/dist/core/metrics/metrics-schema.js.map +1 -0
  161. package/dist/core/profiling/index.d.ts +8 -0
  162. package/dist/core/profiling/index.d.ts.map +1 -0
  163. package/dist/core/profiling/index.js +8 -0
  164. package/dist/core/profiling/index.js.map +1 -0
  165. package/dist/core/profiling/operation-profiler.d.ts +118 -0
  166. package/dist/core/profiling/operation-profiler.d.ts.map +1 -0
  167. package/dist/core/profiling/operation-profiler.js +266 -0
  168. package/dist/core/profiling/operation-profiler.js.map +1 -0
  169. package/dist/core/profiling/perf-report-generator.d.ts +46 -0
  170. package/dist/core/profiling/perf-report-generator.d.ts.map +1 -0
  171. package/dist/core/profiling/perf-report-generator.js +235 -0
  172. package/dist/core/profiling/perf-report-generator.js.map +1 -0
  173. package/dist/core/recommendations/heuristics.d.ts +120 -0
  174. package/dist/core/recommendations/heuristics.d.ts.map +1 -0
  175. package/dist/core/recommendations/heuristics.js +771 -0
  176. package/dist/core/recommendations/heuristics.js.map +1 -0
  177. package/dist/core/recommendations/priority-scorer.d.ts +75 -0
  178. package/dist/core/recommendations/priority-scorer.d.ts.map +1 -0
  179. package/dist/core/recommendations/priority-scorer.js +148 -0
  180. package/dist/core/recommendations/priority-scorer.js.map +1 -0
  181. package/dist/core/recommendations/recommendation-engine.d.ts +60 -0
  182. package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -0
  183. package/dist/core/recommendations/recommendation-engine.js +271 -0
  184. package/dist/core/recommendations/recommendation-engine.js.map +1 -0
  185. package/dist/hooks/pre-compact.d.ts +9 -1
  186. package/dist/hooks/pre-compact.d.ts.map +1 -1
  187. package/dist/hooks/pre-compact.js +93 -1
  188. package/dist/hooks/pre-compact.js.map +1 -1
  189. package/dist/hooks/session-start.d.ts +5 -1
  190. package/dist/hooks/session-start.d.ts.map +1 -1
  191. package/dist/hooks/session-start.js +190 -1
  192. package/dist/hooks/session-start.js.map +1 -1
  193. package/dist/mcp/focus-tag-learner.d.ts +132 -0
  194. package/dist/mcp/focus-tag-learner.d.ts.map +1 -0
  195. package/dist/mcp/focus-tag-learner.js +269 -0
  196. package/dist/mcp/focus-tag-learner.js.map +1 -0
  197. package/dist/mcp/proximity-tags.d.ts +93 -0
  198. package/dist/mcp/proximity-tags.d.ts.map +1 -0
  199. package/dist/mcp/proximity-tags.js +248 -0
  200. package/dist/mcp/proximity-tags.js.map +1 -0
  201. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  202. package/dist/mcp/tool-tiers.js +2 -0
  203. package/dist/mcp/tool-tiers.js.map +1 -1
  204. package/dist/mcp/tools/index.d.ts +5 -2
  205. package/dist/mcp/tools/index.d.ts.map +1 -1
  206. package/dist/mcp/tools/index.js +19 -2
  207. package/dist/mcp/tools/index.js.map +1 -1
  208. package/dist/mcp/tools/memory.d.ts +7 -2
  209. package/dist/mcp/tools/memory.d.ts.map +1 -1
  210. package/dist/mcp/tools/memory.js +40 -9
  211. package/dist/mcp/tools/memory.js.map +1 -1
  212. package/dist/mcp/tools/prefetch.d.ts.map +1 -1
  213. package/dist/mcp/tools/prefetch.js +21 -0
  214. package/dist/mcp/tools/prefetch.js.map +1 -1
  215. package/dist/mcp/tools/recommendations.d.ts +30 -0
  216. package/dist/mcp/tools/recommendations.d.ts.map +1 -0
  217. package/dist/mcp/tools/recommendations.js +134 -0
  218. package/dist/mcp/tools/recommendations.js.map +1 -0
  219. package/dist/mcp/tools/tool-clearing.d.ts +35 -0
  220. package/dist/mcp/tools/tool-clearing.d.ts.map +1 -0
  221. package/dist/mcp/tools/tool-clearing.js +253 -0
  222. package/dist/mcp/tools/tool-clearing.js.map +1 -0
  223. package/dist/statusline/budget-tracker.d.ts +94 -0
  224. package/dist/statusline/budget-tracker.d.ts.map +1 -0
  225. package/dist/statusline/budget-tracker.js +240 -0
  226. package/dist/statusline/budget-tracker.js.map +1 -0
  227. package/dist/statusline/index.d.ts +1 -0
  228. package/dist/statusline/index.d.ts.map +1 -1
  229. package/dist/statusline/index.js +2 -0
  230. package/dist/statusline/index.js.map +1 -1
  231. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Demand Signal Patterns - v16.1.0
3
+ *
4
+ * Sophisticated pattern library for demand signal detection.
5
+ * Provides semantic keyword clustering and multi-line pattern matching.
6
+ *
7
+ * Features:
8
+ * - SYNONYM_MAP for semantic keyword clustering (8 roots, 48+ synonyms)
9
+ * - Multi-line context patterns (3-line window)
10
+ * - Conditional logic patterns
11
+ * - Temporal reference patterns
12
+ * - Scope patterns for module targeting
13
+ */
14
+ /**
15
+ * Maps root keywords to their synonyms for semantic matching.
16
+ * 8 root categories with 48+ total synonyms.
17
+ */
18
+ export declare const SYNONYM_MAP: Record<string, string[]>;
19
+ /**
20
+ * Reverse map: synonym -> root keyword
21
+ */
22
+ export declare const REVERSE_SYNONYM_MAP: Map<string, string>;
23
+ /**
24
+ * Get the root keyword for a given word (or itself if not a synonym)
25
+ */
26
+ export declare function getRootKeyword(word: string): string;
27
+ /**
28
+ * Check if two words are semantically related
29
+ */
30
+ export declare function areSemanticallySimilar(word1: string, word2: string): boolean;
31
+ /**
32
+ * Get all synonyms for a word (including the root)
33
+ */
34
+ export declare function getAllSynonyms(word: string): string[];
35
+ /**
36
+ * Types of advanced patterns detected
37
+ */
38
+ export type AdvancedPatternType = 'multi-line' | 'conditional' | 'temporal' | 'scope' | 'causal' | 'comparison';
39
+ /**
40
+ * Result of pattern detection
41
+ */
42
+ export interface PatternMatch {
43
+ type: AdvancedPatternType;
44
+ matched: string;
45
+ lines: number[];
46
+ confidence: number;
47
+ keywords: string[];
48
+ context?: {
49
+ subject?: string;
50
+ action?: string;
51
+ target?: string;
52
+ };
53
+ }
54
+ /**
55
+ * Maximum span for multi-line patterns
56
+ */
57
+ export declare const MAX_LINE_SPAN = 3;
58
+ /**
59
+ * Split text into lines for multi-line analysis
60
+ */
61
+ export declare function splitIntoLines(text: string): string[];
62
+ /**
63
+ * Create sliding windows of lines
64
+ */
65
+ export declare function slidingLineWindows(lines: string[], windowSize?: number): Generator<{
66
+ window: string[];
67
+ startLine: number;
68
+ }>;
69
+ /**
70
+ * Detect multi-line patterns in text
71
+ */
72
+ export declare function detectMultiLinePatterns(text: string): PatternMatch[];
73
+ /**
74
+ * Detect conditional logic patterns
75
+ */
76
+ export declare function detectConditionalPatterns(text: string): PatternMatch[];
77
+ /**
78
+ * Detect temporal reference patterns
79
+ */
80
+ export declare function detectTemporalPatterns(text: string): PatternMatch[];
81
+ /**
82
+ * Detect scope/module targeting patterns
83
+ */
84
+ export declare function detectScopePatterns(text: string): PatternMatch[];
85
+ /**
86
+ * Options for pattern detection
87
+ */
88
+ export interface PatternDetectionOptions {
89
+ /** Enable multi-line detection */
90
+ multiLine?: boolean;
91
+ /** Enable conditional patterns */
92
+ conditional?: boolean;
93
+ /** Enable temporal patterns */
94
+ temporal?: boolean;
95
+ /** Enable scope patterns */
96
+ scope?: boolean;
97
+ /** Minimum confidence threshold */
98
+ minConfidence?: number;
99
+ }
100
+ /**
101
+ * Detect all pattern types in text
102
+ */
103
+ export declare function detectAllPatterns(text: string, options?: PatternDetectionOptions): PatternMatch[];
104
+ /**
105
+ * Keyword type for weighted scoring
106
+ */
107
+ export type KeywordType = 'action' | 'entity' | 'context';
108
+ /**
109
+ * Keyword type weights for confidence scoring
110
+ */
111
+ export declare const KEYWORD_TYPE_WEIGHTS: Record<KeywordType, number>;
112
+ /**
113
+ * Classify a keyword by type
114
+ */
115
+ export declare function classifyKeyword(keyword: string): KeywordType;
116
+ /**
117
+ * Calculate weighted confidence score based on keyword types
118
+ */
119
+ export declare function calculateWeightedConfidence(keywords: string[]): number;
120
+ //# sourceMappingURL=demand-signal-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demand-signal-patterns.d.ts","sourceRoot":"","sources":["../../../src/core/context/demand-signal-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAShD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,CAAC;AAUlE;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrD;AAMD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,aAAa,GACb,UAAU,GACV,OAAO,GACP,QAAQ,GACR,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAMD;;GAEG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD;AAED;;GAEG;AACH,wBAAiB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,GAAE,MAAsB,GACjC,SAAS,CAAC;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBpD;AAyDD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CA4BpE;AAiBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAqBtE;AAkBD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAqBnE;AAiBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAoBhE;AAoDD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,uBAA4B,GACpC,YAAY,EAAE,CAqChB;AAMD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAI5D,CAAC;AAoBF;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAM5D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CA6BtE"}
@@ -0,0 +1,418 @@
1
+ /**
2
+ * Demand Signal Patterns - v16.1.0
3
+ *
4
+ * Sophisticated pattern library for demand signal detection.
5
+ * Provides semantic keyword clustering and multi-line pattern matching.
6
+ *
7
+ * Features:
8
+ * - SYNONYM_MAP for semantic keyword clustering (8 roots, 48+ synonyms)
9
+ * - Multi-line context patterns (3-line window)
10
+ * - Conditional logic patterns
11
+ * - Temporal reference patterns
12
+ * - Scope patterns for module targeting
13
+ */
14
+ // =============================================================================
15
+ // Synonym Map for Semantic Clustering
16
+ // =============================================================================
17
+ /**
18
+ * Maps root keywords to their synonyms for semantic matching.
19
+ * 8 root categories with 48+ total synonyms.
20
+ */
21
+ export const SYNONYM_MAP = {
22
+ fix: ['repair', 'address', 'resolve', 'correct', 'patch', 'remedy'],
23
+ add: ['create', 'implement', 'introduce', 'include', 'insert'],
24
+ remove: ['delete', 'eliminate', 'drop', 'exclude', 'strip'],
25
+ change: ['modify', 'update', 'alter', 'adjust', 'revise'],
26
+ find: ['search', 'locate', 'discover', 'identify', 'detect'],
27
+ show: ['display', 'render', 'present', 'reveal', 'expose'],
28
+ check: ['verify', 'validate', 'confirm', 'test', 'examine'],
29
+ error: ['failure', 'exception', 'bug', 'issue', 'problem'],
30
+ };
31
+ /**
32
+ * Reverse map: synonym -> root keyword
33
+ */
34
+ export const REVERSE_SYNONYM_MAP = new Map();
35
+ // Build reverse map at module load
36
+ for (const [root, synonyms] of Object.entries(SYNONYM_MAP)) {
37
+ REVERSE_SYNONYM_MAP.set(root, root);
38
+ for (const synonym of synonyms) {
39
+ REVERSE_SYNONYM_MAP.set(synonym, root);
40
+ }
41
+ }
42
+ /**
43
+ * Get the root keyword for a given word (or itself if not a synonym)
44
+ */
45
+ export function getRootKeyword(word) {
46
+ const lower = word.toLowerCase();
47
+ return REVERSE_SYNONYM_MAP.get(lower) || lower;
48
+ }
49
+ /**
50
+ * Check if two words are semantically related
51
+ */
52
+ export function areSemanticallySimilar(word1, word2) {
53
+ const root1 = getRootKeyword(word1);
54
+ const root2 = getRootKeyword(word2);
55
+ return root1 === root2;
56
+ }
57
+ /**
58
+ * Get all synonyms for a word (including the root)
59
+ */
60
+ export function getAllSynonyms(word) {
61
+ const root = getRootKeyword(word);
62
+ const synonyms = SYNONYM_MAP[root];
63
+ if (synonyms) {
64
+ return [root, ...synonyms];
65
+ }
66
+ return [word.toLowerCase()];
67
+ }
68
+ // =============================================================================
69
+ // Multi-Line Pattern Detection
70
+ // =============================================================================
71
+ /**
72
+ * Maximum span for multi-line patterns
73
+ */
74
+ export const MAX_LINE_SPAN = 3;
75
+ /**
76
+ * Split text into lines for multi-line analysis
77
+ */
78
+ export function splitIntoLines(text) {
79
+ return text.split(/\r?\n/);
80
+ }
81
+ /**
82
+ * Create sliding windows of lines
83
+ */
84
+ export function* slidingLineWindows(lines, windowSize = MAX_LINE_SPAN) {
85
+ for (let i = 0; i <= lines.length - windowSize; i++) {
86
+ // Check for blank line reset (paragraph boundary)
87
+ const window = [];
88
+ let hitBlank = false;
89
+ for (let j = 0; j < windowSize && i + j < lines.length; j++) {
90
+ const line = lines[i + j];
91
+ if (line.trim() === '') {
92
+ hitBlank = true;
93
+ break;
94
+ }
95
+ window.push(line);
96
+ }
97
+ if (!hitBlank && window.length > 0) {
98
+ yield { window, startLine: i };
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * Multi-line patterns for context spanning multiple lines
104
+ */
105
+ const MULTI_LINE_PATTERNS = [
106
+ // "I tried X but got Y error"
107
+ {
108
+ pattern: /i\s+(?:tried|attempted)\s+(.+?)\s+but\s+(?:got|received|saw)\s+(.+?)(?:\s+error)?/i,
109
+ type: 'causal',
110
+ extractContext: (match) => ({
111
+ action: match[1]?.trim(),
112
+ subject: match[2]?.trim(),
113
+ }),
114
+ },
115
+ // "When X, then Y happens"
116
+ {
117
+ pattern: /when\s+(.+?),?\s+(?:then\s+)?(.+?)(?:happens|occurs|appears)/i,
118
+ type: 'conditional',
119
+ extractContext: (match) => ({
120
+ subject: match[1]?.trim(),
121
+ action: match[2]?.trim(),
122
+ }),
123
+ },
124
+ // "X works but Y doesn't"
125
+ {
126
+ pattern: /(.+?)\s+works?\s+(?:but|however)\s+(.+?)\s+(?:doesn't|does not|won't)/i,
127
+ type: 'comparison',
128
+ extractContext: (match) => ({
129
+ subject: match[1]?.trim(),
130
+ target: match[2]?.trim(),
131
+ }),
132
+ },
133
+ // "After X, need to Y"
134
+ {
135
+ pattern: /after\s+(.+?),?\s+(?:i\s+)?(?:need|want|have)\s+to\s+(.+)/i,
136
+ type: 'temporal',
137
+ extractContext: (match) => ({
138
+ subject: match[1]?.trim(),
139
+ action: match[2]?.trim(),
140
+ }),
141
+ },
142
+ // "Before we decided to X"
143
+ {
144
+ pattern: /before\s+(?:we\s+)?(?:decided|chose|went with)\s+(?:to\s+)?(.+)/i,
145
+ type: 'temporal',
146
+ extractContext: (match) => ({
147
+ action: 'decide',
148
+ subject: match[1]?.trim(),
149
+ }),
150
+ },
151
+ ];
152
+ /**
153
+ * Detect multi-line patterns in text
154
+ */
155
+ export function detectMultiLinePatterns(text) {
156
+ const lines = splitIntoLines(text);
157
+ const matches = [];
158
+ for (const { window, startLine } of slidingLineWindows(lines)) {
159
+ const windowText = window.join(' ');
160
+ for (const { pattern, type, extractContext } of MULTI_LINE_PATTERNS) {
161
+ const match = windowText.match(pattern);
162
+ if (match) {
163
+ const lineNumbers = Array.from({ length: window.length }, (_, i) => startLine + i);
164
+ matches.push({
165
+ type,
166
+ matched: match[0],
167
+ lines: lineNumbers,
168
+ confidence: calculatePatternConfidence(match[0], window.length),
169
+ keywords: extractKeywordsFromMatch(match),
170
+ context: extractContext(match),
171
+ });
172
+ }
173
+ }
174
+ }
175
+ return matches;
176
+ }
177
+ // =============================================================================
178
+ // Conditional Logic Patterns
179
+ // =============================================================================
180
+ /**
181
+ * Conditional patterns: if/then, when/then
182
+ */
183
+ const CONDITIONAL_PATTERNS = [
184
+ /if\s+(.+?)\s+then\s+(.+)/i,
185
+ /when\s+(.+?)\s*,\s*(.+)/i,
186
+ /(?:unless|except\s+when)\s+(.+?)\s*,?\s*(.+)/i,
187
+ /(.+?)\s+only\s+(?:if|when)\s+(.+)/i,
188
+ /(?:in\s+case|in\s+the\s+event)\s+(?:of\s+)?(.+?)\s*,?\s*(.+)/i,
189
+ ];
190
+ /**
191
+ * Detect conditional logic patterns
192
+ */
193
+ export function detectConditionalPatterns(text) {
194
+ const matches = [];
195
+ for (const pattern of CONDITIONAL_PATTERNS) {
196
+ const match = text.match(pattern);
197
+ if (match) {
198
+ matches.push({
199
+ type: 'conditional',
200
+ matched: match[0],
201
+ lines: [0], // Single-line match
202
+ confidence: 0.7,
203
+ keywords: extractKeywordsFromMatch(match),
204
+ context: {
205
+ subject: match[1]?.trim(),
206
+ action: match[2]?.trim(),
207
+ },
208
+ });
209
+ }
210
+ }
211
+ return matches;
212
+ }
213
+ // =============================================================================
214
+ // Temporal Reference Patterns
215
+ // =============================================================================
216
+ /**
217
+ * Temporal patterns: before/after, previously, earlier
218
+ */
219
+ const TEMPORAL_PATTERNS = [
220
+ /(?:before|prior\s+to)\s+(.+?)\s*,?\s*(?:we|i)?\s*(.+)/i,
221
+ /(?:after|following)\s+(.+?)\s*,?\s*(?:we|i)?\s*(.+)/i,
222
+ /(?:previously|earlier|before)\s*,?\s*(?:we|i)?\s+(.+)/i,
223
+ /(?:used\s+to|was\s+previously)\s+(.+)/i,
224
+ /(?:since|ever\s+since)\s+(.+?)\s*,?\s*(.+)/i,
225
+ /(?:originally|initially)\s*,?\s*(?:we|i)?\s+(.+)/i,
226
+ ];
227
+ /**
228
+ * Detect temporal reference patterns
229
+ */
230
+ export function detectTemporalPatterns(text) {
231
+ const matches = [];
232
+ for (const pattern of TEMPORAL_PATTERNS) {
233
+ const match = text.match(pattern);
234
+ if (match) {
235
+ matches.push({
236
+ type: 'temporal',
237
+ matched: match[0],
238
+ lines: [0],
239
+ confidence: 0.65,
240
+ keywords: extractKeywordsFromMatch(match),
241
+ context: {
242
+ subject: match[1]?.trim(),
243
+ action: match[2]?.trim(),
244
+ },
245
+ });
246
+ }
247
+ }
248
+ return matches;
249
+ }
250
+ // =============================================================================
251
+ // Scope Patterns
252
+ // =============================================================================
253
+ /**
254
+ * Scope patterns: in the X module, for the Y component
255
+ */
256
+ const SCOPE_PATTERNS = [
257
+ /in\s+(?:the\s+)?(\w+)\s+(?:module|component|service|class|file)/i,
258
+ /(?:for|within)\s+(?:the\s+)?(\w+)\s+(?:module|component|service|class|file)/i,
259
+ /(?:the\s+)?(\w+)\s+(?:module|component|service)\s+(?:needs|requires|should)/i,
260
+ /(?:related\s+to|concerning)\s+(?:the\s+)?(\w+)\s+(?:module|component|service|functionality)/i,
261
+ /(?:in|under)\s+(?:the\s+)?(?:src\/)?(\w+(?:\/\w+)*)\s+(?:directory|folder|path)/i,
262
+ ];
263
+ /**
264
+ * Detect scope/module targeting patterns
265
+ */
266
+ export function detectScopePatterns(text) {
267
+ const matches = [];
268
+ for (const pattern of SCOPE_PATTERNS) {
269
+ const match = text.match(pattern);
270
+ if (match) {
271
+ matches.push({
272
+ type: 'scope',
273
+ matched: match[0],
274
+ lines: [0],
275
+ confidence: 0.75,
276
+ keywords: [match[1]?.toLowerCase()].filter(Boolean),
277
+ context: {
278
+ target: match[1]?.trim(),
279
+ },
280
+ });
281
+ }
282
+ }
283
+ return matches;
284
+ }
285
+ // =============================================================================
286
+ // Helper Functions
287
+ // =============================================================================
288
+ /**
289
+ * Calculate confidence score based on match quality
290
+ */
291
+ function calculatePatternConfidence(matched, lineSpan) {
292
+ // Base confidence
293
+ let confidence = 0.5;
294
+ // Longer matches are more specific
295
+ if (matched.length > 30)
296
+ confidence += 0.15;
297
+ else if (matched.length > 15)
298
+ confidence += 0.1;
299
+ // Multi-line patterns are more contextual
300
+ if (lineSpan > 1)
301
+ confidence += 0.1;
302
+ if (lineSpan > 2)
303
+ confidence += 0.05;
304
+ return Math.min(0.95, confidence);
305
+ }
306
+ /**
307
+ * Extract keywords from regex match groups
308
+ */
309
+ function extractKeywordsFromMatch(match) {
310
+ const keywords = [];
311
+ for (let i = 1; i < match.length; i++) {
312
+ if (match[i]) {
313
+ // Split on non-word characters and filter
314
+ const words = match[i]
315
+ .toLowerCase()
316
+ .split(/\W+/)
317
+ .filter((w) => w.length > 2);
318
+ keywords.push(...words);
319
+ }
320
+ }
321
+ // Map to root keywords where possible
322
+ return [...new Set(keywords.map(getRootKeyword))];
323
+ }
324
+ /**
325
+ * Detect all pattern types in text
326
+ */
327
+ export function detectAllPatterns(text, options = {}) {
328
+ const { multiLine = true, conditional = true, temporal = true, scope = true, minConfidence = 0.5, } = options;
329
+ const allMatches = [];
330
+ if (multiLine) {
331
+ allMatches.push(...detectMultiLinePatterns(text));
332
+ }
333
+ if (conditional) {
334
+ allMatches.push(...detectConditionalPatterns(text));
335
+ }
336
+ if (temporal) {
337
+ allMatches.push(...detectTemporalPatterns(text));
338
+ }
339
+ if (scope) {
340
+ allMatches.push(...detectScopePatterns(text));
341
+ }
342
+ // Filter by confidence and dedupe by matched text
343
+ const seen = new Set();
344
+ return allMatches
345
+ .filter((m) => m.confidence >= minConfidence)
346
+ .filter((m) => {
347
+ if (seen.has(m.matched))
348
+ return false;
349
+ seen.add(m.matched);
350
+ return true;
351
+ })
352
+ .sort((a, b) => b.confidence - a.confidence);
353
+ }
354
+ /**
355
+ * Keyword type weights for confidence scoring
356
+ */
357
+ export const KEYWORD_TYPE_WEIGHTS = {
358
+ action: 0.3,
359
+ entity: 0.4,
360
+ context: 0.3,
361
+ };
362
+ /**
363
+ * Action verbs (map to 'action' type)
364
+ */
365
+ const ACTION_KEYWORDS = new Set([
366
+ ...Object.keys(SYNONYM_MAP),
367
+ ...Object.values(SYNONYM_MAP).flat(),
368
+ 'build', 'run', 'deploy', 'configure', 'setup',
369
+ ]);
370
+ /**
371
+ * Entity keywords (map to 'entity' type)
372
+ */
373
+ const ENTITY_KEYWORDS = new Set([
374
+ 'module', 'component', 'service', 'class', 'function',
375
+ 'file', 'directory', 'folder', 'api', 'database',
376
+ 'cache', 'config', 'test', 'auth', 'user',
377
+ ]);
378
+ /**
379
+ * Classify a keyword by type
380
+ */
381
+ export function classifyKeyword(keyword) {
382
+ const lower = keyword.toLowerCase();
383
+ if (ACTION_KEYWORDS.has(lower))
384
+ return 'action';
385
+ if (ENTITY_KEYWORDS.has(lower))
386
+ return 'entity';
387
+ return 'context';
388
+ }
389
+ /**
390
+ * Calculate weighted confidence score based on keyword types
391
+ */
392
+ export function calculateWeightedConfidence(keywords) {
393
+ if (keywords.length === 0)
394
+ return 0;
395
+ let totalWeight = 0;
396
+ const typeCounts = {
397
+ action: 0,
398
+ entity: 0,
399
+ context: 0,
400
+ };
401
+ for (const keyword of keywords) {
402
+ const type = classifyKeyword(keyword);
403
+ typeCounts[type]++;
404
+ }
405
+ // Calculate weighted score
406
+ for (const [type, count] of Object.entries(typeCounts)) {
407
+ const weight = KEYWORD_TYPE_WEIGHTS[type];
408
+ const normalizedCount = Math.min(count / keywords.length, 1);
409
+ totalWeight += weight * normalizedCount;
410
+ }
411
+ // Bonus for having all three types
412
+ const hasAll = typeCounts.action > 0 && typeCounts.entity > 0 && typeCounts.context > 0;
413
+ if (hasAll) {
414
+ totalWeight += 0.1;
415
+ }
416
+ return Math.min(1, totalWeight);
417
+ }
418
+ //# sourceMappingURL=demand-signal-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demand-signal-patterns.js","sourceRoot":"","sources":["../../../src/core/context/demand-signal-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Feedback Loop Engine - v16.0.0
3
+ *
4
+ * Analyzes metrics and suggests dynamic threshold adjustments.
5
+ * Part of the Auto Context Engineering system.
6
+ *
7
+ * Features:
8
+ * - 7-day rolling metrics window analysis
9
+ * - Trend detection (improving, plateau, degrading)
10
+ * - Suggested threshold deltas with bounds
11
+ * - Hysteresis to prevent oscillation
12
+ * - Feature-flag gated adjustments
13
+ * - Persistent adjustment history
14
+ */
15
+ import { type MetricsSummary } from '../metrics/index.js';
16
+ import { type AdaptationStrategyType, type TrendPattern, type TrendData, type ThresholdAdjustment } from './adaptation-strategy.js';
17
+ import { type ThresholdConfig } from './budget-thresholds.js';
18
+ /**
19
+ * Feedback loop analysis result
20
+ */
21
+ export interface FeedbackLoopResult {
22
+ /** Whether analysis was executed */
23
+ executed: boolean;
24
+ /** Reason if not executed */
25
+ reason?: string;
26
+ /** Detected trend pattern */
27
+ pattern?: TrendPattern;
28
+ /** Trend data used for analysis */
29
+ trendData?: TrendData;
30
+ /** Suggested adjustments */
31
+ adjustments: ThresholdAdjustment[];
32
+ /** Strategy used */
33
+ strategy: AdaptationStrategyType;
34
+ /** Analysis timestamp */
35
+ timestamp: string;
36
+ /** Number of data points analyzed */
37
+ dataPointsAnalyzed: number;
38
+ }
39
+ /**
40
+ * Feedback loop state (persisted)
41
+ */
42
+ export interface FeedbackLoopState {
43
+ /** Schema version */
44
+ version: string;
45
+ /** Last analysis timestamp */
46
+ lastAnalysis: string;
47
+ /** Applied adjustments history */
48
+ adjustmentHistory: AppliedAdjustment[];
49
+ /** Current strategy */
50
+ strategy: AdaptationStrategyType;
51
+ /** Current dynamic thresholds (if enabled) */
52
+ dynamicThresholds?: {
53
+ warning: number;
54
+ high: number;
55
+ critical: number;
56
+ };
57
+ }
58
+ /**
59
+ * Record of an applied adjustment
60
+ */
61
+ export interface AppliedAdjustment {
62
+ /** When adjustment was applied */
63
+ timestamp: string;
64
+ /** The adjustment that was applied */
65
+ adjustment: ThresholdAdjustment;
66
+ /** Pattern at time of adjustment */
67
+ pattern: TrendPattern;
68
+ /** Success rate after adjustment (measured later) */
69
+ resultSuccessRate?: number;
70
+ }
71
+ /** Feedback loop state file */
72
+ export declare const FEEDBACK_LOOP_FILE = "feedback-loop.json";
73
+ /** Current schema version */
74
+ export declare const FEEDBACK_LOOP_VERSION = "1.0.0";
75
+ /** Rolling window in days for analysis */
76
+ export declare const ROLLING_WINDOW_DAYS = 7;
77
+ /** Feature flag for dynamic thresholds */
78
+ export declare const DYNAMIC_THRESHOLDS_FLAG = "dynamicThresholds";
79
+ /** Maximum adjustment history to keep */
80
+ export declare const MAX_ADJUSTMENT_HISTORY = 50;
81
+ /**
82
+ * Get feedback loop state file path
83
+ */
84
+ export declare function getFeedbackLoopPath(projectDir: string): string;
85
+ /**
86
+ * Load feedback loop state
87
+ */
88
+ export declare function loadFeedbackLoopState(projectDir: string): Promise<FeedbackLoopState>;
89
+ /**
90
+ * Save feedback loop state
91
+ */
92
+ export declare function saveFeedbackLoopState(projectDir: string, state: FeedbackLoopState): Promise<void>;
93
+ /**
94
+ * Create initial feedback loop state
95
+ */
96
+ export declare function createInitialState(): FeedbackLoopState;
97
+ /**
98
+ * Calculate trend data from metrics summary
99
+ */
100
+ export declare function calculateTrendData(recentSummary: MetricsSummary, olderSummary?: MetricsSummary): TrendData;
101
+ /**
102
+ * Execute feedback loop analysis
103
+ */
104
+ export declare function executeFeedbackLoop(projectDir: string, options?: {
105
+ strategy?: AdaptationStrategyType;
106
+ forceAnalysis?: boolean;
107
+ }): Promise<FeedbackLoopResult>;
108
+ /**
109
+ * Apply suggested adjustments
110
+ */
111
+ export declare function applyAdjustments(projectDir: string, result: FeedbackLoopResult): Promise<boolean>;
112
+ /**
113
+ * Get current dynamic thresholds (if enabled)
114
+ */
115
+ export declare function getDynamicThresholds(projectDir: string): Promise<ThresholdConfig | null>;
116
+ /**
117
+ * Check if dynamic thresholds feature is enabled
118
+ */
119
+ export declare function isDynamicThresholdsEnabled(projectDir: string): Promise<boolean>;
120
+ /**
121
+ * Format feedback loop result for display
122
+ */
123
+ export declare function formatFeedbackLoopResult(result: FeedbackLoopResult): string;
124
+ /**
125
+ * Format adjustment history
126
+ */
127
+ export declare function formatAdjustmentHistory(history: AppliedAdjustment[]): string;
128
+ //# sourceMappingURL=feedback-loop-engine.d.ts.map