opencandle 0.4.0 → 0.5.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 (251) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +106 -14
  3. package/dist/cli.js +2 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts +19 -3
  6. package/dist/config.js +61 -2
  7. package/dist/config.js.map +1 -1
  8. package/dist/infra/browser.d.ts +1 -3
  9. package/dist/infra/browser.js +1 -1
  10. package/dist/infra/browser.js.map +1 -1
  11. package/dist/infra/rate-limiter.d.ts +4 -0
  12. package/dist/infra/rate-limiter.js +5 -1
  13. package/dist/infra/rate-limiter.js.map +1 -1
  14. package/dist/memory/manager.d.ts +9 -0
  15. package/dist/memory/manager.js +28 -11
  16. package/dist/memory/manager.js.map +1 -1
  17. package/dist/memory/storage.d.ts +3 -2
  18. package/dist/memory/storage.js.map +1 -1
  19. package/dist/memory/types.js +4 -0
  20. package/dist/memory/types.js.map +1 -1
  21. package/dist/pi/opencandle-extension.js +230 -36
  22. package/dist/pi/opencandle-extension.js.map +1 -1
  23. package/dist/pi/setup.js +10 -0
  24. package/dist/pi/setup.js.map +1 -1
  25. package/dist/prompts/context-builder.d.ts +18 -3
  26. package/dist/prompts/context-builder.js +102 -16
  27. package/dist/prompts/context-builder.js.map +1 -1
  28. package/dist/prompts/disclaimer.js +1 -1
  29. package/dist/prompts/disclaimer.js.map +1 -1
  30. package/dist/prompts/policy-cards.d.ts +13 -0
  31. package/dist/prompts/policy-cards.js +197 -0
  32. package/dist/prompts/policy-cards.js.map +1 -0
  33. package/dist/prompts/sections.js +3 -3
  34. package/dist/prompts/sections.js.map +1 -1
  35. package/dist/prompts/workflow-prompts.js +170 -18
  36. package/dist/prompts/workflow-prompts.js.map +1 -1
  37. package/dist/providers/alpha-vantage.js +23 -1
  38. package/dist/providers/alpha-vantage.js.map +1 -1
  39. package/dist/providers/sec-edgar.d.ts +8 -1
  40. package/dist/providers/sec-edgar.js +172 -5
  41. package/dist/providers/sec-edgar.js.map +1 -1
  42. package/dist/providers/yahoo-finance.d.ts +2 -0
  43. package/dist/providers/yahoo-finance.js +134 -3
  44. package/dist/providers/yahoo-finance.js.map +1 -1
  45. package/dist/routing/classify-intent.d.ts +3 -0
  46. package/dist/routing/classify-intent.js +82 -3
  47. package/dist/routing/classify-intent.js.map +1 -1
  48. package/dist/routing/defaults.js +3 -3
  49. package/dist/routing/defaults.js.map +1 -1
  50. package/dist/routing/entity-extractor.d.ts +1 -0
  51. package/dist/routing/entity-extractor.js +158 -12
  52. package/dist/routing/entity-extractor.js.map +1 -1
  53. package/dist/routing/index.d.ts +7 -1
  54. package/dist/routing/index.js +4 -0
  55. package/dist/routing/index.js.map +1 -1
  56. package/dist/routing/legacy-rule-router.d.ts +9 -0
  57. package/dist/routing/legacy-rule-router.js +12 -0
  58. package/dist/routing/legacy-rule-router.js.map +1 -0
  59. package/dist/routing/planning.d.ts +54 -0
  60. package/dist/routing/planning.js +531 -0
  61. package/dist/routing/planning.js.map +1 -0
  62. package/dist/routing/route-manifest.d.ts +35 -0
  63. package/dist/routing/route-manifest.js +221 -0
  64. package/dist/routing/route-manifest.js.map +1 -0
  65. package/dist/routing/router-prompt.js +45 -42
  66. package/dist/routing/router-prompt.js.map +1 -1
  67. package/dist/routing/router-types.d.ts +9 -0
  68. package/dist/routing/router.d.ts +1 -0
  69. package/dist/routing/router.js +456 -12
  70. package/dist/routing/router.js.map +1 -1
  71. package/dist/routing/slot-resolver.js +46 -6
  72. package/dist/routing/slot-resolver.js.map +1 -1
  73. package/dist/routing/turn-context.d.ts +44 -0
  74. package/dist/routing/turn-context.js +45 -0
  75. package/dist/routing/turn-context.js.map +1 -0
  76. package/dist/routing/types.d.ts +13 -1
  77. package/dist/runtime/answer-contracts.d.ts +82 -0
  78. package/dist/runtime/answer-contracts.js +414 -0
  79. package/dist/runtime/answer-contracts.js.map +1 -0
  80. package/dist/runtime/artifact-contracts.d.ts +14 -0
  81. package/dist/runtime/artifact-contracts.js +57 -0
  82. package/dist/runtime/artifact-contracts.js.map +1 -0
  83. package/dist/runtime/planning-evidence.d.ts +99 -0
  84. package/dist/runtime/planning-evidence.js +445 -0
  85. package/dist/runtime/planning-evidence.js.map +1 -0
  86. package/dist/runtime/session-coordinator.d.ts +20 -2
  87. package/dist/runtime/session-coordinator.js +47 -14
  88. package/dist/runtime/session-coordinator.js.map +1 -1
  89. package/dist/system-prompt.js +4 -1
  90. package/dist/system-prompt.js.map +1 -1
  91. package/dist/tools/fundamentals/company-overview.js +1 -1
  92. package/dist/tools/fundamentals/company-overview.js.map +1 -1
  93. package/dist/tools/fundamentals/comps.js +1 -1
  94. package/dist/tools/fundamentals/comps.js.map +1 -1
  95. package/dist/tools/fundamentals/dcf.js +1 -1
  96. package/dist/tools/fundamentals/dcf.js.map +1 -1
  97. package/dist/tools/fundamentals/earnings.js +1 -1
  98. package/dist/tools/fundamentals/earnings.js.map +1 -1
  99. package/dist/tools/fundamentals/financials.js +1 -1
  100. package/dist/tools/fundamentals/financials.js.map +1 -1
  101. package/dist/tools/fundamentals/sec-filings.d.ts +1 -0
  102. package/dist/tools/fundamentals/sec-filings.js +19 -2
  103. package/dist/tools/fundamentals/sec-filings.js.map +1 -1
  104. package/dist/tools/index.d.ts +1 -0
  105. package/dist/tools/index.js +3 -0
  106. package/dist/tools/index.js.map +1 -1
  107. package/dist/tools/macro/fear-greed.js +1 -1
  108. package/dist/tools/macro/fear-greed.js.map +1 -1
  109. package/dist/tools/macro/fred-data.js +29 -5
  110. package/dist/tools/macro/fred-data.js.map +1 -1
  111. package/dist/tools/market/crypto-history.js +18 -2
  112. package/dist/tools/market/crypto-history.js.map +1 -1
  113. package/dist/tools/market/crypto-price.js +1 -1
  114. package/dist/tools/market/crypto-price.js.map +1 -1
  115. package/dist/tools/market/search-ticker.js +1 -1
  116. package/dist/tools/market/search-ticker.js.map +1 -1
  117. package/dist/tools/market/stock-history.js +1 -1
  118. package/dist/tools/market/stock-history.js.map +1 -1
  119. package/dist/tools/market/stock-quote.js +1 -1
  120. package/dist/tools/market/stock-quote.js.map +1 -1
  121. package/dist/tools/options/greeks.js +0 -1
  122. package/dist/tools/options/greeks.js.map +1 -1
  123. package/dist/tools/options/option-chain.js +9 -4
  124. package/dist/tools/options/option-chain.js.map +1 -1
  125. package/dist/tools/portfolio/correlation.js +1 -1
  126. package/dist/tools/portfolio/correlation.js.map +1 -1
  127. package/dist/tools/portfolio/holdings-overlap.d.ts +8 -0
  128. package/dist/tools/portfolio/holdings-overlap.js +105 -0
  129. package/dist/tools/portfolio/holdings-overlap.js.map +1 -0
  130. package/dist/tools/portfolio/predictions.js +1 -1
  131. package/dist/tools/portfolio/predictions.js.map +1 -1
  132. package/dist/tools/portfolio/risk-analysis.js +1 -1
  133. package/dist/tools/portfolio/risk-analysis.js.map +1 -1
  134. package/dist/tools/portfolio/tracker.js +1 -1
  135. package/dist/tools/portfolio/tracker.js.map +1 -1
  136. package/dist/tools/portfolio/watchlist.js +12 -4
  137. package/dist/tools/portfolio/watchlist.js.map +1 -1
  138. package/dist/tools/sentiment/reddit-sentiment.js +1 -1
  139. package/dist/tools/sentiment/reddit-sentiment.js.map +1 -1
  140. package/dist/tools/sentiment/sentiment-summary.js +57 -2
  141. package/dist/tools/sentiment/sentiment-summary.js.map +1 -1
  142. package/dist/tools/sentiment/twitter-sentiment.js +1 -1
  143. package/dist/tools/sentiment/twitter-sentiment.js.map +1 -1
  144. package/dist/tools/sentiment/web-search.js +32 -3
  145. package/dist/tools/sentiment/web-search.js.map +1 -1
  146. package/dist/tools/sentiment/web-sentiment.js +1 -1
  147. package/dist/tools/sentiment/web-sentiment.js.map +1 -1
  148. package/dist/tools/technical/backtest.d.ts +2 -2
  149. package/dist/tools/technical/backtest.js +41 -27
  150. package/dist/tools/technical/backtest.js.map +1 -1
  151. package/dist/tools/technical/indicators.js +1 -3
  152. package/dist/tools/technical/indicators.js.map +1 -1
  153. package/dist/types/options.d.ts +10 -0
  154. package/dist/types/portfolio.d.ts +27 -0
  155. package/dist/workflows/compare-assets.js +38 -2
  156. package/dist/workflows/compare-assets.js.map +1 -1
  157. package/dist/workflows/options-screener.js +88 -7
  158. package/dist/workflows/options-screener.js.map +1 -1
  159. package/dist/workflows/portfolio-builder.js +7 -3
  160. package/dist/workflows/portfolio-builder.js.map +1 -1
  161. package/gui/server/ask-user-bridge.ts +82 -0
  162. package/gui/server/gui-session-manager.ts +5 -0
  163. package/gui/server/projector.ts +47 -5
  164. package/gui/server/prompt-observation.ts +61 -0
  165. package/gui/server/server.ts +119 -8
  166. package/gui/server/session-entry-wait.ts +81 -0
  167. package/gui/web/dist/assets/{CatalogOverlay-D1ImSJTe.js → CatalogOverlay-Bmp6Knu7.js} +1 -1
  168. package/gui/web/dist/assets/index-Bxt9QpLX.css +1 -0
  169. package/gui/web/dist/assets/index-CZ9DHZYy.js +67 -0
  170. package/gui/web/dist/index.html +2 -2
  171. package/package.json +18 -12
  172. package/src/cli.ts +2 -1
  173. package/src/config.ts +89 -5
  174. package/src/infra/browser.ts +1 -1
  175. package/src/infra/rate-limiter.ts +10 -1
  176. package/src/memory/manager.ts +43 -10
  177. package/src/memory/storage.ts +3 -2
  178. package/src/memory/types.ts +4 -0
  179. package/src/pi/opencandle-extension.ts +273 -42
  180. package/src/pi/setup.ts +10 -0
  181. package/src/prompts/context-builder.ts +128 -17
  182. package/src/prompts/disclaimer.ts +1 -1
  183. package/src/prompts/policy-cards.ts +220 -0
  184. package/src/prompts/sections.ts +3 -3
  185. package/src/prompts/workflow-prompts.ts +172 -18
  186. package/src/providers/alpha-vantage.ts +24 -1
  187. package/src/providers/sec-edgar.ts +220 -4
  188. package/src/providers/web-search.ts +1 -1
  189. package/src/providers/yahoo-finance.ts +171 -4
  190. package/src/routing/classify-intent.ts +94 -3
  191. package/src/routing/defaults.ts +3 -3
  192. package/src/routing/entity-extractor.ts +164 -13
  193. package/src/routing/index.ts +44 -0
  194. package/src/routing/legacy-rule-router.ts +13 -0
  195. package/src/routing/planning.ts +732 -0
  196. package/src/routing/route-manifest.ts +287 -0
  197. package/src/routing/router-prompt.ts +50 -46
  198. package/src/routing/router-types.ts +21 -0
  199. package/src/routing/router.ts +511 -12
  200. package/src/routing/slot-resolver.ts +44 -6
  201. package/src/routing/turn-context.ts +111 -0
  202. package/src/routing/types.ts +13 -1
  203. package/src/runtime/answer-contracts.ts +633 -0
  204. package/src/runtime/artifact-contracts.ts +76 -0
  205. package/src/runtime/planning-evidence.ts +591 -0
  206. package/src/runtime/session-coordinator.ts +78 -12
  207. package/src/system-prompt.ts +4 -1
  208. package/src/tools/fundamentals/company-overview.ts +1 -1
  209. package/src/tools/fundamentals/comps.ts +1 -1
  210. package/src/tools/fundamentals/dcf.ts +1 -1
  211. package/src/tools/fundamentals/earnings.ts +1 -1
  212. package/src/tools/fundamentals/financials.ts +1 -1
  213. package/src/tools/fundamentals/sec-filings.ts +25 -2
  214. package/src/tools/index.ts +3 -0
  215. package/src/tools/macro/fear-greed.ts +1 -1
  216. package/src/tools/macro/fred-data.ts +31 -5
  217. package/src/tools/market/crypto-history.ts +18 -2
  218. package/src/tools/market/crypto-price.ts +1 -1
  219. package/src/tools/market/search-ticker.ts +1 -1
  220. package/src/tools/market/stock-history.ts +1 -1
  221. package/src/tools/market/stock-quote.ts +1 -1
  222. package/src/tools/options/greeks.ts +0 -1
  223. package/src/tools/options/option-chain.ts +9 -4
  224. package/src/tools/portfolio/correlation.ts +1 -1
  225. package/src/tools/portfolio/holdings-overlap.ts +123 -0
  226. package/src/tools/portfolio/predictions.ts +1 -1
  227. package/src/tools/portfolio/risk-analysis.ts +1 -1
  228. package/src/tools/portfolio/tracker.ts +1 -1
  229. package/src/tools/portfolio/watchlist.ts +10 -4
  230. package/src/tools/sentiment/reddit-sentiment.ts +1 -1
  231. package/src/tools/sentiment/sentiment-summary.ts +62 -2
  232. package/src/tools/sentiment/twitter-sentiment.ts +1 -1
  233. package/src/tools/sentiment/web-search.ts +36 -3
  234. package/src/tools/sentiment/web-sentiment.ts +1 -1
  235. package/src/tools/technical/backtest.ts +50 -29
  236. package/src/tools/technical/indicators.ts +1 -3
  237. package/src/types/options.ts +17 -0
  238. package/src/types/portfolio.ts +32 -0
  239. package/src/workflows/compare-assets.ts +38 -2
  240. package/src/workflows/options-screener.ts +85 -7
  241. package/src/workflows/portfolio-builder.ts +7 -3
  242. package/dist/runtime/index.d.ts +0 -16
  243. package/dist/runtime/index.js +0 -10
  244. package/dist/runtime/index.js.map +0 -1
  245. package/dist/runtime/provider-ids.d.ts +0 -14
  246. package/dist/runtime/provider-ids.js +0 -14
  247. package/dist/runtime/provider-ids.js.map +0 -1
  248. package/gui/web/dist/assets/index-DBrWq43L.css +0 -1
  249. package/gui/web/dist/assets/index-RflHaj0y.js +0 -67
  250. package/src/runtime/index.ts +0 -55
  251. package/src/runtime/provider-ids.ts +0 -15
@@ -1,8 +1,32 @@
1
1
  import { PORTFOLIO_DEFAULTS, OPTIONS_SCREENER_DEFAULTS } from "./defaults.js";
2
2
  function mapDteHintToTarget(dteHint) {
3
- switch (dteHint) {
3
+ const normalized = dteHint?.toLowerCase().trim();
4
+ if (!normalized)
5
+ return undefined;
6
+ if (/\bleaps?\b/.test(normalized) || /\blong[\s-]*dated\b/.test(normalized)) {
7
+ return "180_plus_days";
8
+ }
9
+ if (/\b(?:1|one)\s*(?:-|to|or)\s*(?:2|two)\s*weeks?\b/.test(normalized)) {
10
+ return "7_to_14_days";
11
+ }
12
+ if (/\bevent[_\s-]?week\b/.test(normalized)) {
13
+ return "0_to_7_days";
14
+ }
15
+ const explicitDays = normalized.match(/\b(\d+)\s*(?:-|to|or)\s*(\d+)\s*(?:days?|dte)\b/);
16
+ if (explicitDays) {
17
+ return `${explicitDays[1]}_to_${explicitDays[2]}_days`;
18
+ }
19
+ if (/\b(?:week|weekly|weeks?)\b/.test(normalized)) {
20
+ return "7_to_14_days";
21
+ }
22
+ if (/\b(?:month|monthly|months?)\b/.test(normalized)) {
23
+ return "25_to_45_days";
24
+ }
25
+ switch (normalized) {
4
26
  case "week":
5
27
  return "7_to_14_days";
28
+ case "event_week":
29
+ return "0_to_7_days";
6
30
  case "month":
7
31
  return "25_to_45_days";
8
32
  case "leaps":
@@ -40,7 +64,7 @@ export function resolvePortfolioSlots(entities, preferences = {}) {
40
64
  sources.timeHorizon = horizon.source;
41
65
  if (horizon.source === "default")
42
66
  defaultsUsed.push("timeHorizon");
43
- const scope = resolve(undefined, preferences.assetScope, PORTFOLIO_DEFAULTS.assetScope);
67
+ const scope = resolve(entities.assetScope, preferences.assetScope, PORTFOLIO_DEFAULTS.assetScope);
44
68
  sources.assetScope = scope.source;
45
69
  if (scope.source === "default")
46
70
  defaultsUsed.push("assetScope");
@@ -72,16 +96,20 @@ export function resolveOptionsScreenerSlots(entities, preferences = {}) {
72
96
  const missingRequired = [];
73
97
  // Symbol: required, no default
74
98
  let symbol = "";
75
- if (entities.symbols.length > 0) {
76
- symbol = entities.symbols[0];
99
+ const requestedUnderlying = entities.heldSymbol ?? entities.symbols[0];
100
+ if (requestedUnderlying) {
101
+ symbol = requestedUnderlying;
77
102
  sources.symbol = "user";
78
103
  }
79
104
  else {
80
105
  missingRequired.push("symbol");
81
106
  sources.symbol = "default";
82
107
  }
83
- // Direction: default to bullish
84
- const dir = resolve(entities.direction, undefined, "bullish");
108
+ // Direction: default to bullish unless the user specified a protective put hedge.
109
+ const inferredDirection = entities.optionStrategy === "protective_put"
110
+ ? "bearish"
111
+ : entities.direction;
112
+ const dir = resolve(inferredDirection, undefined, "bullish");
85
113
  sources.direction = dir.source;
86
114
  if (dir.source === "default")
87
115
  defaultsUsed.push("direction");
@@ -101,6 +129,14 @@ export function resolveOptionsScreenerSlots(entities, preferences = {}) {
101
129
  sources.liquidityMinimum = liquidity.source;
102
130
  if (liquidity.source === "default")
103
131
  defaultsUsed.push("liquidityMinimum");
132
+ if (entities.optionStrategy)
133
+ sources.optionStrategy = "user";
134
+ if (entities.costBasis !== undefined)
135
+ sources.costBasis = "user";
136
+ if (entities.shareQuantity !== undefined)
137
+ sources.shareQuantity = "user";
138
+ if (entities.catalystSymbols !== undefined)
139
+ sources.catalystSymbols = "user";
104
140
  return {
105
141
  resolved: {
106
142
  symbol,
@@ -111,6 +147,10 @@ export function resolveOptionsScreenerSlots(entities, preferences = {}) {
111
147
  liquidityMinimum: liquidity.value,
112
148
  budget: entities.budget,
113
149
  maxPremium: entities.maxPremium,
150
+ optionStrategy: entities.optionStrategy,
151
+ costBasis: entities.costBasis,
152
+ shareQuantity: entities.shareQuantity,
153
+ catalystSymbols: entities.catalystSymbols,
114
154
  },
115
155
  sources,
116
156
  defaultsUsed,
@@ -1 +1 @@
1
- {"version":3,"file":"slot-resolver.js","sourceRoot":"","sources":["../../src/routing/slot-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slot-resolver.js","sourceRoot":"","sources":["../../src/routing/slot-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { MemoryCategory, MemoryEntry } from "../memory/types.js";
2
+ import type { RouterInputContext, RouterOutput, RouterRoute, RouterRouteKind, RouterSlot, ToolBundleName, RouterDiagnostic } from "./router-types.js";
3
+ import { type PlanningBuildOptions, type PlanningEnvelope } from "./planning.js";
4
+ import type { ExtractedEntities, WorkflowType } from "./types.js";
5
+ export interface MemoryQueryPlan {
6
+ routeKind: RouterRouteKind;
7
+ workflow?: Exclude<WorkflowType, "unclassified">;
8
+ categories: MemoryCategory[];
9
+ symbols: string[];
10
+ slotKeys: string[];
11
+ }
12
+ export interface MemoryProvenance {
13
+ category: MemoryCategory;
14
+ key: string;
15
+ source?: string;
16
+ recordedAt: string;
17
+ confidence?: string;
18
+ filtered?: boolean;
19
+ filterReason?: string;
20
+ }
21
+ export interface ResolvedTurnContext {
22
+ userInput: string;
23
+ priorTurns: RouterInputContext["priorTurns"];
24
+ routeKind: RouterRouteKind;
25
+ legacyRoute: RouterRoute;
26
+ workflow?: Exclude<WorkflowType, "unclassified">;
27
+ entities: ExtractedEntities;
28
+ slots: Record<string, RouterSlot>;
29
+ missingRequired: string[];
30
+ toolBundles: ToolBundleName[];
31
+ activeToolNames: string[];
32
+ memoryQueryPlan: MemoryQueryPlan;
33
+ memoryProvenance: MemoryProvenance[];
34
+ promptPlaybook: RouterRouteKind;
35
+ diagnostics: RouterDiagnostic[];
36
+ planning: PlanningEnvelope;
37
+ }
38
+ export declare function buildResolvedTurnContext(input: RouterInputContext, output: RouterOutput, options?: {
39
+ availableToolNames?: readonly string[];
40
+ memoryEntries?: readonly MemoryEntry[];
41
+ filteredMemory?: readonly MemoryProvenance[];
42
+ planning?: PlanningBuildOptions;
43
+ }): ResolvedTurnContext;
44
+ export declare function buildMemoryQueryPlan(output: RouterOutput): MemoryQueryPlan;
@@ -0,0 +1,45 @@
1
+ import { activeToolsForBundles, memoryScopesForRoute, } from "./route-manifest.js";
2
+ import { buildPlanningEnvelope, } from "./planning.js";
3
+ export function buildResolvedTurnContext(input, output, options = {}) {
4
+ const memoryQueryPlan = buildMemoryQueryPlan(output);
5
+ const memoryProvenance = [
6
+ ...(options.memoryEntries ?? []).map(memoryEntryToProvenance),
7
+ ...(options.filteredMemory ?? []),
8
+ ];
9
+ return {
10
+ userInput: input.text,
11
+ priorTurns: input.priorTurns,
12
+ routeKind: output.routeKind,
13
+ legacyRoute: output.route,
14
+ workflow: output.workflow,
15
+ entities: output.entities,
16
+ slots: output.slots,
17
+ missingRequired: output.missing_required,
18
+ toolBundles: output.tool_bundles,
19
+ activeToolNames: activeToolsForBundles(output.tool_bundles, options.availableToolNames),
20
+ memoryQueryPlan,
21
+ memoryProvenance,
22
+ promptPlaybook: output.routeKind,
23
+ diagnostics: output.diagnostics,
24
+ planning: buildPlanningEnvelope(input, output, options.planning),
25
+ };
26
+ }
27
+ export function buildMemoryQueryPlan(output) {
28
+ return {
29
+ routeKind: output.routeKind,
30
+ workflow: output.workflow,
31
+ categories: memoryScopesForRoute(output.routeKind, output.workflow),
32
+ symbols: output.entities.symbols,
33
+ slotKeys: Object.keys(output.slots),
34
+ };
35
+ }
36
+ function memoryEntryToProvenance(entry) {
37
+ return {
38
+ category: entry.category,
39
+ key: entry.key,
40
+ source: entry.source,
41
+ recordedAt: entry.recordedAt,
42
+ confidence: entry.confidence,
43
+ };
44
+ }
45
+ //# sourceMappingURL=turn-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-context.js","sourceRoot":"","sources":["../../src/routing/turn-context.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EACL,qBAAqB,GAGtB,MAAM,eAAe,CAAC;AAuCvB,MAAM,UAAU,wBAAwB,CACtC,KAAyB,EACzB,MAAoB,EACpB,UAKI,EAAE;IAEN,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG;QACvB,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;KAClC,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,eAAe,EAAE,MAAM,CAAC,gBAAgB;QACxC,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,eAAe,EAAE,qBAAqB,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC;QACvF,eAAe;QACf,gBAAgB;QAChB,cAAc,EAAE,MAAM,CAAC,SAAS;QAChC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;QACnE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;QAChC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAkB;IACjD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC"}
@@ -4,9 +4,16 @@ export interface ExtractedEntities {
4
4
  budget?: number;
5
5
  maxPremium?: number;
6
6
  timeHorizon?: string;
7
+ assetScope?: string;
7
8
  riskProfile?: string;
8
9
  direction?: "bullish" | "bearish";
9
10
  dteHint?: string;
11
+ optionStrategy?: "covered_call" | "protective_put";
12
+ heldSymbol?: string;
13
+ catalystSymbols?: string[];
14
+ costBasis?: number;
15
+ shareQuantity?: number;
16
+ compareMetrics?: string[];
10
17
  }
11
18
  export interface ClassificationResult {
12
19
  workflow: WorkflowType;
@@ -34,13 +41,18 @@ export interface OptionsScreenerSlots {
34
41
  liquidityMinimum: string;
35
42
  budget?: number;
36
43
  maxPremium?: number;
44
+ optionStrategy?: "covered_call" | "protective_put";
45
+ costBasis?: number;
46
+ shareQuantity?: number;
47
+ catalystSymbols?: string[];
37
48
  ivPreference?: string;
38
49
  }
39
50
  export interface CompareAssetsSlots {
40
51
  symbols: string[];
52
+ timeHorizon?: string;
41
53
  metrics?: string[];
42
54
  }
43
- export type SlotSource = "user" | "preference" | "default";
55
+ export type SlotSource = "user" | "preference" | "default" | "prior_context" | "memory";
44
56
  export interface SlotResolution<T> {
45
57
  resolved: T;
46
58
  sources: {
@@ -0,0 +1,82 @@
1
+ import type { AnswerContractId, CapabilityGapId, CommitmentMode, StructuredCheckId, TaskFamily } from "../routing/planning.js";
2
+ import type { PlanningEvidenceRecord, PlanningEvidenceType } from "./planning-evidence.js";
3
+ export type FinalAnswerField = "clear_commitment" | "comparison_tradeoffs" | "constructed_output" | "state_update_confirmation" | "clarifying_question" | "symbol_verification_disclosure" | "framework_or_checklist" | "freshness_disclosure" | "data_gap_disclosure" | "risk_downside" | "source_coverage";
4
+ export type FrameworkFallbackMode = "not_allowed" | "diagnostic_until_parity" | "active_after_parity";
5
+ export type ParityMigrationStatus = "legacy_active" | "observe_only" | "dual_run" | "replacement_active" | "legacy_removed";
6
+ export interface CommitmentModeContract {
7
+ mode: CommitmentMode;
8
+ requiredFinalFields: FinalAnswerField[];
9
+ requiresConcreteCommitment: boolean;
10
+ description: string;
11
+ }
12
+ export interface AnswerContractDefinition {
13
+ id: AnswerContractId;
14
+ taskFamily: TaskFamily;
15
+ commitmentMode: CommitmentMode;
16
+ implemented: boolean;
17
+ requiredEvidenceTypes: PlanningEvidenceType[];
18
+ requiredFinalFields: FinalAnswerField[];
19
+ requiresFreshness: boolean;
20
+ requiresDataGapDisclosure: boolean;
21
+ requiresRiskDownside: boolean;
22
+ requiresSourceCoverage: boolean;
23
+ requiresConcreteCommitment: boolean;
24
+ capabilityGapIds: CapabilityGapId[];
25
+ frameworkFallback: FrameworkFallbackMode;
26
+ }
27
+ export interface FinalAnswerMetadata {
28
+ commitmentMode: CommitmentMode;
29
+ finalFields: FinalAnswerField[];
30
+ freshness?: {
31
+ asOfDate?: string;
32
+ marketStatus?: string;
33
+ lastTradingDay?: string;
34
+ };
35
+ sourceCoverage?: {
36
+ sources: string[];
37
+ sampleSize?: number;
38
+ };
39
+ disclosedProviderStatuses?: string[];
40
+ disclosedCapabilityGapIds?: CapabilityGapId[];
41
+ }
42
+ export interface StructuredCheckResult {
43
+ checkId: StructuredCheckId;
44
+ passed: boolean;
45
+ observedOnly: true;
46
+ failureReason?: string;
47
+ }
48
+ export interface RetryEligibilityTrace {
49
+ eligible: boolean;
50
+ activeRetryAllowed: false;
51
+ reasons: string[];
52
+ }
53
+ export interface StructuredCheckTrace {
54
+ mode: "observe_only";
55
+ answerContractId: AnswerContractId;
56
+ results: StructuredCheckResult[];
57
+ failures: StructuredCheckResult[];
58
+ retryEligibility: RetryEligibilityTrace;
59
+ activeRetryAllowed: false;
60
+ }
61
+ export interface FrameworkFallbackEligibility {
62
+ eligible: boolean;
63
+ active: boolean;
64
+ mode: "not_applicable" | "diagnostic_only" | "active";
65
+ reason: string;
66
+ }
67
+ export interface StructuredCheckInput {
68
+ contract: AnswerContractDefinition;
69
+ evidenceRecords: PlanningEvidenceRecord[];
70
+ finalAnswerMetadata: FinalAnswerMetadata;
71
+ structuredCheckIds?: StructuredCheckId[];
72
+ answerText?: string;
73
+ }
74
+ export interface FrameworkFallbackInput {
75
+ contract: AnswerContractDefinition;
76
+ evidenceRecords: PlanningEvidenceRecord[];
77
+ parityStatus: ParityMigrationStatus;
78
+ }
79
+ export declare const COMMITMENT_MODE_CONTRACTS: Record<CommitmentMode, CommitmentModeContract>;
80
+ export declare const ANSWER_CONTRACT_REGISTRY: Record<AnswerContractId, AnswerContractDefinition>;
81
+ export declare function runStructuredChecks(input: StructuredCheckInput): StructuredCheckTrace;
82
+ export declare function evaluateFrameworkFallbackEligibility(input: FrameworkFallbackInput): FrameworkFallbackEligibility;