opencandle 0.11.1 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -24
- package/dist/analysts/contracts.js +0 -1
- package/dist/analysts/orchestrator.js +0 -1
- package/dist/cli-main.js +13 -7
- package/dist/cli-options.d.ts +4 -0
- package/dist/cli-options.js +33 -0
- package/dist/cli.js +8 -3
- package/dist/config.js +0 -1
- package/dist/doctor/cli-command.js +2 -1
- package/dist/doctor/render.js +0 -1
- package/dist/doctor/report.js +40 -11
- package/dist/gui/server/ask-user-bridge.d.ts +19 -0
- package/dist/gui/server/ask-user-bridge.js +55 -0
- package/dist/gui/server/automation-heartbeat.d.ts +25 -0
- package/dist/gui/server/automation-heartbeat.js +61 -0
- package/dist/gui/server/background-quotes.d.ts +39 -0
- package/dist/gui/server/background-quotes.js +71 -0
- package/dist/gui/server/chat-event-adapter.d.ts +16 -0
- package/dist/gui/server/chat-event-adapter.js +263 -0
- package/dist/gui/server/gui-session-manager.d.ts +2 -0
- package/dist/gui/server/gui-session-manager.js +4 -0
- package/dist/gui/server/http-routes.d.ts +69 -0
- package/dist/gui/server/http-routes.js +1008 -0
- package/dist/gui/server/invoke-tool.d.ts +47 -0
- package/dist/gui/server/invoke-tool.js +373 -0
- package/dist/gui/server/live-chat-event-adapter.d.ts +19 -0
- package/dist/gui/server/live-chat-event-adapter.js +206 -0
- package/dist/gui/server/local-session-coordinator.d.ts +26 -0
- package/dist/gui/server/local-session-coordinator.js +53 -0
- package/dist/gui/server/market-state-api.d.ts +138 -0
- package/dist/gui/server/market-state-api.js +355 -0
- package/dist/gui/server/model-setup.d.ts +64 -0
- package/dist/gui/server/model-setup.js +150 -0
- package/dist/gui/server/private-api-access.d.ts +6 -0
- package/dist/gui/server/private-api-access.js +53 -0
- package/dist/gui/server/projector.d.ts +49 -0
- package/dist/gui/server/projector.js +296 -0
- package/dist/gui/server/prompt-observation.d.ts +8 -0
- package/dist/gui/server/prompt-observation.js +43 -0
- package/dist/gui/server/quote-snapshot-store.d.ts +14 -0
- package/dist/gui/server/quote-snapshot-store.js +49 -0
- package/dist/gui/server/server.d.ts +1 -0
- package/dist/gui/server/server.js +259 -0
- package/dist/gui/server/session-actions.d.ts +60 -0
- package/dist/gui/server/session-actions.js +218 -0
- package/dist/gui/server/session-entry-wait.d.ts +27 -0
- package/dist/gui/server/session-entry-wait.js +129 -0
- package/dist/gui/server/session-list.d.ts +2 -0
- package/dist/gui/server/session-list.js +11 -0
- package/dist/gui/server/shutdown.d.ts +10 -0
- package/dist/gui/server/shutdown.js +29 -0
- package/dist/gui/server/tool-invoke-ack.d.ts +17 -0
- package/dist/gui/server/tool-invoke-ack.js +26 -0
- package/dist/gui/server/tool-metadata.d.ts +93 -0
- package/dist/gui/server/tool-metadata.js +148 -0
- package/dist/gui/server/websocket.d.ts +9 -0
- package/dist/gui/server/websocket.js +124 -0
- package/dist/gui/server/writer-lock.d.ts +1 -0
- package/dist/gui/server/writer-lock.js +1 -0
- package/dist/gui/server/ws-hub.d.ts +50 -0
- package/dist/gui/server/ws-hub.js +284 -0
- package/dist/gui/shared/chat-events.d.ts +174 -0
- package/dist/gui/shared/chat-events.js +13 -0
- package/dist/gui/shared/event-reducer.d.ts +3 -0
- package/dist/gui/shared/event-reducer.js +187 -0
- package/dist/index.js +0 -1
- package/dist/infra/cache.js +0 -1
- package/dist/infra/freshness.js +0 -1
- package/dist/infra/http-client.js +1 -2
- package/dist/infra/index.js +0 -1
- package/dist/infra/market-calendar.js +0 -1
- package/dist/infra/native-dependencies.js +0 -1
- package/dist/infra/node-version.js +0 -1
- package/dist/infra/open-url.js +0 -1
- package/dist/infra/opencandle-paths.js +0 -1
- package/dist/infra/rate-limiter.js +0 -1
- package/dist/market-state/alert-conditions.js +0 -1
- package/dist/market-state/alert-runner.d.ts +1 -0
- package/dist/market-state/alert-runner.js +5 -4
- package/dist/market-state/daily-report.js +0 -1
- package/dist/market-state/local-automation-service.js +0 -1
- package/dist/market-state/notification-delivery.js +0 -1
- package/dist/market-state/resolve-for-mutation.js +0 -1
- package/dist/market-state/resolve.js +0 -1
- package/dist/market-state/service.d.ts +26 -21
- package/dist/market-state/service.js +175 -36
- package/dist/market-state/summaries.js +1 -13
- package/dist/memory/index.js +0 -1
- package/dist/memory/manager.js +0 -1
- package/dist/memory/preference-extractor.js +0 -1
- package/dist/memory/retrieval.js +0 -1
- package/dist/memory/sqlite.js +60 -11
- package/dist/memory/storage.js +0 -1
- package/dist/memory/tool-defaults.js +0 -1
- package/dist/memory/types.js +0 -1
- package/dist/monitor.js +0 -1
- package/dist/onboarding/connect.js +0 -1
- package/dist/onboarding/credential-interceptor.js +0 -1
- package/dist/onboarding/degradation-accumulator.js +0 -1
- package/dist/onboarding/prompt-user.d.ts +1 -1
- package/dist/onboarding/prompt-user.js +0 -1
- package/dist/onboarding/provider-status.js +0 -1
- package/dist/onboarding/providers.js +0 -1
- package/dist/onboarding/state.js +0 -1
- package/dist/onboarding/tool-helpers.js +0 -1
- package/dist/onboarding/tool-tags.js +0 -1
- package/dist/onboarding/validate-model-key.d.ts +17 -0
- package/dist/onboarding/validate-model-key.js +54 -0
- package/dist/onboarding/validation.js +0 -1
- package/dist/pi/opencandle-extension.js +2 -2
- package/dist/pi/session-action-dedupe.js +0 -1
- package/dist/pi/session-storage.js +0 -1
- package/dist/pi/session-writer-lock.js +0 -1
- package/dist/pi/session.js +0 -1
- package/dist/pi/setup.d.ts +2 -0
- package/dist/pi/setup.js +10 -3
- package/dist/pi/tool-adapter.js +0 -1
- package/dist/pi/tui-session-coordinator.js +0 -1
- package/dist/prompts/context-builder.js +1 -2
- package/dist/prompts/disclaimer.js +0 -1
- package/dist/prompts/policy-cards.js +0 -1
- package/dist/prompts/sections.js +0 -1
- package/dist/prompts/symbol-preflight.js +0 -1
- package/dist/prompts/workflow-prompts.js +0 -1
- package/dist/providers/alpha-vantage.js +2 -3
- package/dist/providers/coingecko.js +0 -1
- package/dist/providers/errors.js +0 -1
- package/dist/providers/exa-search.js +11 -10
- package/dist/providers/external-tool-command.js +0 -1
- package/dist/providers/external-tool-error.js +0 -1
- package/dist/providers/fear-greed.js +0 -1
- package/dist/providers/finnhub.js +0 -1
- package/dist/providers/fred.js +0 -1
- package/dist/providers/index.js +0 -1
- package/dist/providers/polymarket.js +0 -1
- package/dist/providers/provider-credential-error.js +0 -1
- package/dist/providers/reddit-cli.js +0 -1
- package/dist/providers/reddit.js +0 -1
- package/dist/providers/sec-edgar.js +0 -1
- package/dist/providers/tradingview.js +1 -2
- package/dist/providers/twitter-cli.js +0 -1
- package/dist/providers/twitter.js +0 -1
- package/dist/providers/web-search.js +15 -12
- package/dist/providers/with-fallback.js +0 -1
- package/dist/providers/wrap-provider.js +0 -1
- package/dist/providers/yahoo-finance.js +67 -4
- package/dist/routing/classify-intent.js +0 -1
- package/dist/routing/defaults.js +0 -1
- package/dist/routing/entity-extractor.js +2 -3
- package/dist/routing/fund-symbols.js +0 -1
- package/dist/routing/horizon.js +0 -1
- package/dist/routing/index.js +0 -1
- package/dist/routing/legacy-rule-router.js +0 -1
- package/dist/routing/planning.js +0 -1
- package/dist/routing/route-manifest.js +0 -1
- package/dist/routing/router-llm-client.d.ts +2 -2
- package/dist/routing/router-llm-client.js +0 -1
- package/dist/routing/router-prompt.js +0 -1
- package/dist/routing/router-types.js +0 -1
- package/dist/routing/router.js +1 -2
- package/dist/routing/slot-resolver.js +0 -1
- package/dist/routing/symbol-disambiguator.js +0 -1
- package/dist/routing/turn-context.js +0 -1
- package/dist/routing/types.js +0 -1
- package/dist/runtime/answer-contracts.js +0 -1
- package/dist/runtime/artifact-contracts.js +0 -1
- package/dist/runtime/evidence.js +0 -1
- package/dist/runtime/numeric-claims.js +0 -1
- package/dist/runtime/planning-evidence.js +0 -1
- package/dist/runtime/prompt-step.js +0 -1
- package/dist/runtime/provider-tracker.js +0 -1
- package/dist/runtime/run-context.js +0 -1
- package/dist/runtime/session-coordinator.js +0 -1
- package/dist/runtime/session-title.js +0 -1
- package/dist/runtime/tool-defaults-wrapper.js +0 -1
- package/dist/runtime/validation.js +0 -1
- package/dist/runtime/workflow-events.js +0 -1
- package/dist/runtime/workflow-runner.d.ts +1 -0
- package/dist/runtime/workflow-runner.js +8 -3
- package/dist/runtime/workflow-types.js +0 -1
- package/dist/sentiment/adapters/finnhub.js +0 -1
- package/dist/sentiment/adapters/reddit.js +0 -1
- package/dist/sentiment/adapters/twitter.js +0 -1
- package/dist/sentiment/adapters/web.js +0 -1
- package/dist/sentiment/index.js +4 -2
- package/dist/sentiment/insights.js +0 -1
- package/dist/sentiment/keywords.js +0 -1
- package/dist/sentiment/pipeline.js +0 -1
- package/dist/sentiment/scorer.js +0 -1
- package/dist/sentiment/store.js +0 -1
- package/dist/sentiment/trends.js +0 -1
- package/dist/sentiment/types.js +0 -1
- package/dist/system-prompt.js +0 -1
- package/dist/tool-kit.js +0 -1
- package/dist/tools/fundamentals/company-overview.d.ts +1 -1
- package/dist/tools/fundamentals/company-overview.js +2 -1
- package/dist/tools/fundamentals/comps.js +6 -4
- package/dist/tools/fundamentals/dcf.js +0 -1
- package/dist/tools/fundamentals/earnings.d.ts +1 -1
- package/dist/tools/fundamentals/earnings.js +2 -1
- package/dist/tools/fundamentals/financials.js +2 -1
- package/dist/tools/fundamentals/sec-filings.js +0 -1
- package/dist/tools/index.d.ts +116 -2
- package/dist/tools/index.js +0 -1
- package/dist/tools/interaction/ask-user.js +11 -1
- package/dist/tools/macro/event-probabilities.js +0 -1
- package/dist/tools/macro/fear-greed.d.ts +1 -1
- package/dist/tools/macro/fear-greed.js +0 -1
- package/dist/tools/macro/fred-data.d.ts +1 -1
- package/dist/tools/macro/fred-data.js +2 -1
- package/dist/tools/market/crypto-history.js +0 -1
- package/dist/tools/market/crypto-price.d.ts +2 -2
- package/dist/tools/market/crypto-price.js +0 -1
- package/dist/tools/market/screen-stocks.js +0 -1
- package/dist/tools/market/search-ticker.js +1 -2
- package/dist/tools/market/stock-history.js +0 -1
- package/dist/tools/market/stock-quote.d.ts +2 -2
- package/dist/tools/market/stock-quote.js +0 -1
- package/dist/tools/options/greeks.js +0 -1
- package/dist/tools/options/option-chain.d.ts +2 -2
- package/dist/tools/options/option-chain.js +0 -1
- package/dist/tools/portfolio/alerts.d.ts +2 -1
- package/dist/tools/portfolio/alerts.js +228 -2
- package/dist/tools/portfolio/correlation.js +23 -5
- package/dist/tools/portfolio/daily-report.js +0 -1
- package/dist/tools/portfolio/holdings-overlap.js +0 -1
- package/dist/tools/portfolio/notifications.js +0 -1
- package/dist/tools/portfolio/risk-analysis.d.ts +1 -1
- package/dist/tools/portfolio/risk-analysis.js +0 -1
- package/dist/tools/portfolio/tracker.d.ts +3 -1
- package/dist/tools/portfolio/tracker.js +57 -10
- package/dist/tools/portfolio/watchlist.d.ts +3 -6
- package/dist/tools/portfolio/watchlist.js +101 -110
- package/dist/tools/sentiment/insight-format.js +0 -1
- package/dist/tools/sentiment/query-match.js +0 -1
- package/dist/tools/sentiment/reddit-sentiment.js +0 -1
- package/dist/tools/sentiment/sentiment-summary.js +8 -4
- package/dist/tools/sentiment/sentiment-trend.d.ts +5 -1
- package/dist/tools/sentiment/sentiment-trend.js +6 -2
- package/dist/tools/sentiment/twitter-sentiment.js +0 -1
- package/dist/tools/sentiment/untrusted-text.js +0 -1
- package/dist/tools/sentiment/web-search.d.ts +1 -1
- package/dist/tools/sentiment/web-search.js +0 -1
- package/dist/tools/sentiment/web-sentiment.js +0 -1
- package/dist/tools/technical/backtest.js +0 -1
- package/dist/tools/technical/indicators.js +0 -1
- package/dist/types/fundamentals.js +0 -1
- package/dist/types/index.js +0 -1
- package/dist/types/macro.js +0 -1
- package/dist/types/market.d.ts +6 -0
- package/dist/types/market.js +0 -1
- package/dist/types/options.js +0 -1
- package/dist/types/portfolio.js +0 -1
- package/dist/types/prediction-markets.js +0 -1
- package/dist/types/sentiment.js +0 -1
- package/dist/workflows/compare-assets.js +0 -1
- package/dist/workflows/index.js +0 -1
- package/dist/workflows/options-screener.js +0 -1
- package/dist/workflows/portfolio-builder.js +0 -1
- package/gui/web/dist/assets/CatalogOverlay-CAc7e3Pf.js +1 -0
- package/gui/web/dist/assets/index-BOEKd9wT.css +2 -0
- package/gui/web/dist/assets/index-C-H05cQ2.js +65 -0
- package/gui/web/dist/index.html +2 -2
- package/package.json +11 -12
- package/dist/analysts/contracts.js.map +0 -1
- package/dist/analysts/orchestrator.js.map +0 -1
- package/dist/cli-main.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/doctor/cli-command.js.map +0 -1
- package/dist/doctor/render.js.map +0 -1
- package/dist/doctor/report.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/infra/cache.js.map +0 -1
- package/dist/infra/freshness.js.map +0 -1
- package/dist/infra/http-client.js.map +0 -1
- package/dist/infra/index.js.map +0 -1
- package/dist/infra/market-calendar.js.map +0 -1
- package/dist/infra/native-dependencies.js.map +0 -1
- package/dist/infra/node-version.js.map +0 -1
- package/dist/infra/open-url.js.map +0 -1
- package/dist/infra/opencandle-paths.js.map +0 -1
- package/dist/infra/rate-limiter.js.map +0 -1
- package/dist/market-state/alert-conditions.js.map +0 -1
- package/dist/market-state/alert-runner.js.map +0 -1
- package/dist/market-state/daily-report.js.map +0 -1
- package/dist/market-state/local-automation-service.js.map +0 -1
- package/dist/market-state/notification-delivery.js.map +0 -1
- package/dist/market-state/resolve-for-mutation.js.map +0 -1
- package/dist/market-state/resolve.js.map +0 -1
- package/dist/market-state/service.js.map +0 -1
- package/dist/market-state/summaries.js.map +0 -1
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/manager.js.map +0 -1
- package/dist/memory/preference-extractor.js.map +0 -1
- package/dist/memory/retrieval.js.map +0 -1
- package/dist/memory/sqlite.js.map +0 -1
- package/dist/memory/storage.js.map +0 -1
- package/dist/memory/tool-defaults.js.map +0 -1
- package/dist/memory/types.js.map +0 -1
- package/dist/monitor.js.map +0 -1
- package/dist/onboarding/connect.js.map +0 -1
- package/dist/onboarding/credential-interceptor.js.map +0 -1
- package/dist/onboarding/degradation-accumulator.js.map +0 -1
- package/dist/onboarding/prompt-user.js.map +0 -1
- package/dist/onboarding/provider-status.js.map +0 -1
- package/dist/onboarding/providers.js.map +0 -1
- package/dist/onboarding/state.js.map +0 -1
- package/dist/onboarding/tool-helpers.js.map +0 -1
- package/dist/onboarding/tool-tags.js.map +0 -1
- package/dist/onboarding/validation.js.map +0 -1
- package/dist/pi/opencandle-extension.js.map +0 -1
- package/dist/pi/session-action-dedupe.js.map +0 -1
- package/dist/pi/session-storage.js.map +0 -1
- package/dist/pi/session-writer-lock.js.map +0 -1
- package/dist/pi/session.js.map +0 -1
- package/dist/pi/setup.js.map +0 -1
- package/dist/pi/tool-adapter.js.map +0 -1
- package/dist/pi/tui-session-coordinator.js.map +0 -1
- package/dist/prompts/context-builder.js.map +0 -1
- package/dist/prompts/disclaimer.js.map +0 -1
- package/dist/prompts/policy-cards.js.map +0 -1
- package/dist/prompts/sections.js.map +0 -1
- package/dist/prompts/symbol-preflight.js.map +0 -1
- package/dist/prompts/workflow-prompts.js.map +0 -1
- package/dist/providers/alpha-vantage.js.map +0 -1
- package/dist/providers/coingecko.js.map +0 -1
- package/dist/providers/errors.js.map +0 -1
- package/dist/providers/exa-search.js.map +0 -1
- package/dist/providers/external-tool-command.js.map +0 -1
- package/dist/providers/external-tool-error.js.map +0 -1
- package/dist/providers/fear-greed.js.map +0 -1
- package/dist/providers/finnhub.js.map +0 -1
- package/dist/providers/fred.js.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/polymarket.js.map +0 -1
- package/dist/providers/provider-credential-error.js.map +0 -1
- package/dist/providers/reddit-cli.js.map +0 -1
- package/dist/providers/reddit.js.map +0 -1
- package/dist/providers/sec-edgar.js.map +0 -1
- package/dist/providers/tradingview.js.map +0 -1
- package/dist/providers/twitter-cli.js.map +0 -1
- package/dist/providers/twitter.js.map +0 -1
- package/dist/providers/web-search.js.map +0 -1
- package/dist/providers/with-fallback.js.map +0 -1
- package/dist/providers/wrap-provider.js.map +0 -1
- package/dist/providers/yahoo-finance.js.map +0 -1
- package/dist/routing/classify-intent.js.map +0 -1
- package/dist/routing/defaults.js.map +0 -1
- package/dist/routing/entity-extractor.js.map +0 -1
- package/dist/routing/fund-symbols.js.map +0 -1
- package/dist/routing/horizon.js.map +0 -1
- package/dist/routing/index.js.map +0 -1
- package/dist/routing/legacy-rule-router.js.map +0 -1
- package/dist/routing/planning.js.map +0 -1
- package/dist/routing/route-manifest.js.map +0 -1
- package/dist/routing/router-llm-client.js.map +0 -1
- package/dist/routing/router-prompt.js.map +0 -1
- package/dist/routing/router-types.js.map +0 -1
- package/dist/routing/router.js.map +0 -1
- package/dist/routing/slot-resolver.js.map +0 -1
- package/dist/routing/symbol-disambiguator.js.map +0 -1
- package/dist/routing/turn-context.js.map +0 -1
- package/dist/routing/types.js.map +0 -1
- package/dist/runtime/answer-contracts.js.map +0 -1
- package/dist/runtime/artifact-contracts.js.map +0 -1
- package/dist/runtime/evidence.js.map +0 -1
- package/dist/runtime/numeric-claims.js.map +0 -1
- package/dist/runtime/planning-evidence.js.map +0 -1
- package/dist/runtime/prompt-step.js.map +0 -1
- package/dist/runtime/provider-tracker.js.map +0 -1
- package/dist/runtime/run-context.js.map +0 -1
- package/dist/runtime/session-coordinator.js.map +0 -1
- package/dist/runtime/session-title.js.map +0 -1
- package/dist/runtime/tool-defaults-wrapper.js.map +0 -1
- package/dist/runtime/validation.js.map +0 -1
- package/dist/runtime/workflow-events.js.map +0 -1
- package/dist/runtime/workflow-runner.js.map +0 -1
- package/dist/runtime/workflow-types.js.map +0 -1
- package/dist/sentiment/adapters/finnhub.js.map +0 -1
- package/dist/sentiment/adapters/reddit.js.map +0 -1
- package/dist/sentiment/adapters/twitter.js.map +0 -1
- package/dist/sentiment/adapters/web.js.map +0 -1
- package/dist/sentiment/index.js.map +0 -1
- package/dist/sentiment/insights.js.map +0 -1
- package/dist/sentiment/keywords.js.map +0 -1
- package/dist/sentiment/pipeline.js.map +0 -1
- package/dist/sentiment/scorer.js.map +0 -1
- package/dist/sentiment/store.js.map +0 -1
- package/dist/sentiment/trends.js.map +0 -1
- package/dist/sentiment/types.js.map +0 -1
- package/dist/system-prompt.js.map +0 -1
- package/dist/tool-kit.js.map +0 -1
- package/dist/tools/fundamentals/company-overview.js.map +0 -1
- package/dist/tools/fundamentals/comps.js.map +0 -1
- package/dist/tools/fundamentals/dcf.js.map +0 -1
- package/dist/tools/fundamentals/earnings.js.map +0 -1
- package/dist/tools/fundamentals/financials.js.map +0 -1
- package/dist/tools/fundamentals/sec-filings.js.map +0 -1
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/interaction/ask-user.js.map +0 -1
- package/dist/tools/macro/event-probabilities.js.map +0 -1
- package/dist/tools/macro/fear-greed.js.map +0 -1
- package/dist/tools/macro/fred-data.js.map +0 -1
- package/dist/tools/market/crypto-history.js.map +0 -1
- package/dist/tools/market/crypto-price.js.map +0 -1
- package/dist/tools/market/screen-stocks.js.map +0 -1
- package/dist/tools/market/search-ticker.js.map +0 -1
- package/dist/tools/market/stock-history.js.map +0 -1
- package/dist/tools/market/stock-quote.js.map +0 -1
- package/dist/tools/options/greeks.js.map +0 -1
- package/dist/tools/options/option-chain.js.map +0 -1
- package/dist/tools/portfolio/alerts.js.map +0 -1
- package/dist/tools/portfolio/correlation.js.map +0 -1
- package/dist/tools/portfolio/daily-report.js.map +0 -1
- package/dist/tools/portfolio/holdings-overlap.js.map +0 -1
- package/dist/tools/portfolio/notifications.js.map +0 -1
- package/dist/tools/portfolio/risk-analysis.js.map +0 -1
- package/dist/tools/portfolio/tracker.js.map +0 -1
- package/dist/tools/portfolio/watchlist.js.map +0 -1
- package/dist/tools/sentiment/insight-format.js.map +0 -1
- package/dist/tools/sentiment/query-match.js.map +0 -1
- package/dist/tools/sentiment/reddit-sentiment.js.map +0 -1
- package/dist/tools/sentiment/sentiment-summary.js.map +0 -1
- package/dist/tools/sentiment/sentiment-trend.js.map +0 -1
- package/dist/tools/sentiment/twitter-sentiment.js.map +0 -1
- package/dist/tools/sentiment/untrusted-text.js.map +0 -1
- package/dist/tools/sentiment/web-search.js.map +0 -1
- package/dist/tools/sentiment/web-sentiment.js.map +0 -1
- package/dist/tools/technical/backtest.js.map +0 -1
- package/dist/tools/technical/indicators.js.map +0 -1
- package/dist/types/fundamentals.js.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/macro.js.map +0 -1
- package/dist/types/market.js.map +0 -1
- package/dist/types/options.js.map +0 -1
- package/dist/types/portfolio.js.map +0 -1
- package/dist/types/prediction-markets.js.map +0 -1
- package/dist/types/sentiment.js.map +0 -1
- package/dist/workflows/compare-assets.js.map +0 -1
- package/dist/workflows/index.js.map +0 -1
- package/dist/workflows/options-screener.js.map +0 -1
- package/dist/workflows/portfolio-builder.js.map +0 -1
- package/gui/server/ask-user-bridge.ts +0 -89
- package/gui/server/automation-heartbeat.ts +0 -97
- package/gui/server/background-quotes.ts +0 -127
- package/gui/server/chat-event-adapter.ts +0 -294
- package/gui/server/gui-session-manager.ts +0 -5
- package/gui/server/http-routes.ts +0 -1201
- package/gui/server/invoke-tool.ts +0 -490
- package/gui/server/live-chat-event-adapter.ts +0 -243
- package/gui/server/local-session-coordinator.ts +0 -97
- package/gui/server/market-state-api.ts +0 -331
- package/gui/server/model-setup.ts +0 -254
- package/gui/server/package.json +0 -5
- package/gui/server/private-api-access.ts +0 -62
- package/gui/server/projector.ts +0 -392
- package/gui/server/prompt-observation.ts +0 -58
- package/gui/server/quote-snapshot-store.ts +0 -50
- package/gui/server/server.ts +0 -289
- package/gui/server/session-actions.ts +0 -323
- package/gui/server/session-entry-wait.ts +0 -179
- package/gui/server/shutdown.ts +0 -47
- package/gui/server/tool-invoke-ack.ts +0 -49
- package/gui/server/tool-metadata.ts +0 -167
- package/gui/server/websocket.ts +0 -138
- package/gui/server/writer-lock.ts +0 -1
- package/gui/server/ws-hub.ts +0 -403
- package/gui/shared/chat-events.ts +0 -165
- package/gui/shared/event-reducer.ts +0 -220
- package/gui/web/dist/assets/CatalogOverlay-DZ1niyQm.js +0 -1
- package/gui/web/dist/assets/index-D4F9AJnn.css +0 -2
- package/gui/web/dist/assets/index-DtqMMBTr.js +0 -65
- package/src/analysts/contracts.ts +0 -176
- package/src/analysts/orchestrator.ts +0 -244
- package/src/cli-main.ts +0 -510
- package/src/cli.ts +0 -17
- package/src/config.ts +0 -272
- package/src/doctor/cli-command.ts +0 -83
- package/src/doctor/render.ts +0 -37
- package/src/doctor/report.ts +0 -638
- package/src/index.ts +0 -5
- package/src/infra/cache.ts +0 -127
- package/src/infra/freshness.ts +0 -165
- package/src/infra/http-client.ts +0 -134
- package/src/infra/index.ts +0 -14
- package/src/infra/market-calendar.ts +0 -193
- package/src/infra/native-dependencies.ts +0 -84
- package/src/infra/node-version.ts +0 -23
- package/src/infra/open-url.ts +0 -28
- package/src/infra/opencandle-paths.ts +0 -53
- package/src/infra/rate-limiter.ts +0 -77
- package/src/market-state/alert-conditions.ts +0 -82
- package/src/market-state/alert-runner.ts +0 -863
- package/src/market-state/daily-report.ts +0 -237
- package/src/market-state/local-automation-service.ts +0 -162
- package/src/market-state/notification-delivery.ts +0 -158
- package/src/market-state/resolve-for-mutation.ts +0 -24
- package/src/market-state/resolve.ts +0 -112
- package/src/market-state/service.ts +0 -2208
- package/src/market-state/summaries.ts +0 -75
- package/src/memory/index.ts +0 -10
- package/src/memory/manager.ts +0 -190
- package/src/memory/preference-extractor.ts +0 -106
- package/src/memory/retrieval.ts +0 -71
- package/src/memory/sqlite.ts +0 -577
- package/src/memory/storage.ts +0 -195
- package/src/memory/tool-defaults.ts +0 -108
- package/src/memory/types.ts +0 -71
- package/src/monitor.ts +0 -123
- package/src/onboarding/connect.ts +0 -177
- package/src/onboarding/credential-interceptor.ts +0 -122
- package/src/onboarding/degradation-accumulator.ts +0 -77
- package/src/onboarding/prompt-user.ts +0 -85
- package/src/onboarding/provider-status.ts +0 -382
- package/src/onboarding/providers.ts +0 -442
- package/src/onboarding/state.ts +0 -216
- package/src/onboarding/tool-helpers.ts +0 -104
- package/src/onboarding/tool-tags.ts +0 -244
- package/src/onboarding/validation.ts +0 -152
- package/src/pi/opencandle-extension.ts +0 -1294
- package/src/pi/session-action-dedupe.ts +0 -155
- package/src/pi/session-storage.ts +0 -5
- package/src/pi/session-writer-lock.ts +0 -426
- package/src/pi/session.ts +0 -84
- package/src/pi/setup.ts +0 -399
- package/src/pi/tool-adapter.ts +0 -49
- package/src/pi/tui-session-coordinator.ts +0 -351
- package/src/prompts/context-builder.ts +0 -326
- package/src/prompts/disclaimer.ts +0 -9
- package/src/prompts/policy-cards.ts +0 -228
- package/src/prompts/sections.ts +0 -46
- package/src/prompts/symbol-preflight.ts +0 -80
- package/src/prompts/workflow-prompts.ts +0 -504
- package/src/providers/alpha-vantage.ts +0 -340
- package/src/providers/coingecko.ts +0 -95
- package/src/providers/errors.ts +0 -9
- package/src/providers/exa-search.ts +0 -375
- package/src/providers/external-tool-command.ts +0 -164
- package/src/providers/external-tool-error.ts +0 -20
- package/src/providers/fear-greed.ts +0 -45
- package/src/providers/finnhub.ts +0 -125
- package/src/providers/fred.ts +0 -83
- package/src/providers/index.ts +0 -17
- package/src/providers/polymarket.ts +0 -214
- package/src/providers/provider-credential-error.ts +0 -23
- package/src/providers/reddit-cli.ts +0 -286
- package/src/providers/reddit.ts +0 -106
- package/src/providers/sec-edgar.ts +0 -326
- package/src/providers/tradingview.ts +0 -399
- package/src/providers/twitter-cli.ts +0 -202
- package/src/providers/twitter.ts +0 -102
- package/src/providers/web-search.ts +0 -303
- package/src/providers/with-fallback.ts +0 -42
- package/src/providers/wrap-provider.ts +0 -105
- package/src/providers/yahoo-finance.ts +0 -984
- package/src/routing/classify-intent.ts +0 -380
- package/src/routing/defaults.ts +0 -29
- package/src/routing/entity-extractor.ts +0 -557
- package/src/routing/fund-symbols.ts +0 -58
- package/src/routing/horizon.ts +0 -7
- package/src/routing/index.ts +0 -70
- package/src/routing/legacy-rule-router.ts +0 -13
- package/src/routing/planning.ts +0 -829
- package/src/routing/route-manifest.ts +0 -308
- package/src/routing/router-llm-client.ts +0 -64
- package/src/routing/router-prompt.ts +0 -159
- package/src/routing/router-types.ts +0 -84
- package/src/routing/router.ts +0 -1332
- package/src/routing/slot-resolver.ts +0 -213
- package/src/routing/symbol-disambiguator.ts +0 -72
- package/src/routing/turn-context.ts +0 -108
- package/src/routing/types.ts +0 -77
- package/src/runtime/answer-contracts.ts +0 -693
- package/src/runtime/artifact-contracts.ts +0 -77
- package/src/runtime/evidence.ts +0 -78
- package/src/runtime/numeric-claims.ts +0 -108
- package/src/runtime/planning-evidence.ts +0 -597
- package/src/runtime/prompt-step.ts +0 -185
- package/src/runtime/provider-tracker.ts +0 -40
- package/src/runtime/run-context.ts +0 -32
- package/src/runtime/session-coordinator.ts +0 -1037
- package/src/runtime/session-title.ts +0 -60
- package/src/runtime/tool-defaults-wrapper.ts +0 -43
- package/src/runtime/validation.ts +0 -211
- package/src/runtime/workflow-events.ts +0 -77
- package/src/runtime/workflow-runner.ts +0 -182
- package/src/runtime/workflow-types.ts +0 -105
- package/src/sentiment/adapters/finnhub.ts +0 -49
- package/src/sentiment/adapters/reddit.ts +0 -65
- package/src/sentiment/adapters/twitter.ts +0 -36
- package/src/sentiment/adapters/web.ts +0 -44
- package/src/sentiment/index.ts +0 -49
- package/src/sentiment/insights.ts +0 -269
- package/src/sentiment/keywords.ts +0 -31
- package/src/sentiment/pipeline.ts +0 -91
- package/src/sentiment/scorer.ts +0 -89
- package/src/sentiment/store.ts +0 -260
- package/src/sentiment/trends.ts +0 -96
- package/src/sentiment/types.ts +0 -112
- package/src/system-prompt.ts +0 -115
- package/src/tool-kit.ts +0 -69
- package/src/tools/AGENTS.md +0 -36
- package/src/tools/fundamentals/company-overview.ts +0 -64
- package/src/tools/fundamentals/comps.ts +0 -180
- package/src/tools/fundamentals/dcf.ts +0 -447
- package/src/tools/fundamentals/earnings.ts +0 -57
- package/src/tools/fundamentals/financials.ts +0 -63
- package/src/tools/fundamentals/sec-filings.ts +0 -105
- package/src/tools/index.ts +0 -104
- package/src/tools/interaction/ask-user.ts +0 -93
- package/src/tools/macro/event-probabilities.ts +0 -141
- package/src/tools/macro/fear-greed.ts +0 -41
- package/src/tools/macro/fred-data.ts +0 -92
- package/src/tools/market/crypto-history.ts +0 -72
- package/src/tools/market/crypto-price.ts +0 -65
- package/src/tools/market/screen-stocks.ts +0 -290
- package/src/tools/market/search-ticker.ts +0 -254
- package/src/tools/market/stock-history.ts +0 -104
- package/src/tools/market/stock-quote.ts +0 -73
- package/src/tools/options/greeks.ts +0 -81
- package/src/tools/options/option-chain.ts +0 -134
- package/src/tools/portfolio/alerts.ts +0 -457
- package/src/tools/portfolio/correlation.ts +0 -189
- package/src/tools/portfolio/daily-report.ts +0 -107
- package/src/tools/portfolio/holdings-overlap.ts +0 -139
- package/src/tools/portfolio/notifications.ts +0 -45
- package/src/tools/portfolio/risk-analysis.ts +0 -173
- package/src/tools/portfolio/tracker.ts +0 -308
- package/src/tools/portfolio/watchlist.ts +0 -288
- package/src/tools/sentiment/insight-format.ts +0 -50
- package/src/tools/sentiment/query-match.ts +0 -117
- package/src/tools/sentiment/reddit-sentiment.ts +0 -403
- package/src/tools/sentiment/sentiment-summary.ts +0 -383
- package/src/tools/sentiment/sentiment-trend.ts +0 -75
- package/src/tools/sentiment/twitter-sentiment.ts +0 -287
- package/src/tools/sentiment/untrusted-text.ts +0 -21
- package/src/tools/sentiment/web-search.ts +0 -186
- package/src/tools/sentiment/web-sentiment.ts +0 -96
- package/src/tools/technical/backtest.ts +0 -336
- package/src/tools/technical/indicators.ts +0 -281
- package/src/types/fundamentals.ts +0 -47
- package/src/types/index.ts +0 -26
- package/src/types/macro.ts +0 -27
- package/src/types/market.ts +0 -46
- package/src/types/options.ts +0 -53
- package/src/types/portfolio.ts +0 -83
- package/src/types/prediction-markets.ts +0 -13
- package/src/types/sentiment.ts +0 -129
- package/src/workflows/compare-assets.ts +0 -89
- package/src/workflows/index.ts +0 -3
- package/src/workflows/options-screener.ts +0 -125
- package/src/workflows/portfolio-builder.ts +0 -63
package/dist/memory/sqlite.js
CHANGED
|
@@ -2,7 +2,7 @@ import { mkdirSync } from "node:fs";
|
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
3
|
import Database from "better-sqlite3";
|
|
4
4
|
import { ensureOpenCandleHomeDir, getStateDbPath } from "../infra/opencandle-paths.js";
|
|
5
|
-
const CURRENT_SCHEMA_VERSION =
|
|
5
|
+
const CURRENT_SCHEMA_VERSION = 9;
|
|
6
6
|
const CURRENT_SCHEMA = `
|
|
7
7
|
CREATE TABLE IF NOT EXISTS schema_version (
|
|
8
8
|
version INTEGER NOT NULL
|
|
@@ -105,7 +105,8 @@ const CURRENT_SCHEMA = `
|
|
|
105
105
|
name TEXT NOT NULL,
|
|
106
106
|
is_default INTEGER NOT NULL DEFAULT 0,
|
|
107
107
|
created_at TEXT NOT NULL,
|
|
108
|
-
updated_at TEXT NOT NULL
|
|
108
|
+
updated_at TEXT NOT NULL,
|
|
109
|
+
UNIQUE(name)
|
|
109
110
|
);
|
|
110
111
|
|
|
111
112
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_watchlists_one_default
|
|
@@ -116,12 +117,6 @@ const CURRENT_SCHEMA = `
|
|
|
116
117
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
117
118
|
watchlist_id INTEGER NOT NULL,
|
|
118
119
|
instrument_id INTEGER NOT NULL,
|
|
119
|
-
thesis TEXT,
|
|
120
|
-
notes TEXT,
|
|
121
|
-
tags_json TEXT,
|
|
122
|
-
target_price REAL,
|
|
123
|
-
stop_price REAL,
|
|
124
|
-
price_currency TEXT,
|
|
125
120
|
source TEXT,
|
|
126
121
|
source_row_id TEXT,
|
|
127
122
|
source_metadata_json TEXT,
|
|
@@ -355,19 +350,26 @@ function ensureCurrentSchema(db) {
|
|
|
355
350
|
db.exec(CURRENT_SCHEMA);
|
|
356
351
|
return;
|
|
357
352
|
}
|
|
353
|
+
if (currentVersion === 8) {
|
|
354
|
+
migrateV8ToV9(db);
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
358
357
|
if (currentVersion === 7) {
|
|
359
358
|
migrateV7ToV8(db);
|
|
359
|
+
migrateV8ToV9(db);
|
|
360
360
|
return;
|
|
361
361
|
}
|
|
362
362
|
if (currentVersion === 6) {
|
|
363
363
|
migrateV6ToV7(db);
|
|
364
364
|
migrateV7ToV8(db);
|
|
365
|
+
migrateV8ToV9(db);
|
|
365
366
|
return;
|
|
366
367
|
}
|
|
367
368
|
if (currentVersion === 5) {
|
|
368
369
|
migrateV5ToV6(db);
|
|
369
370
|
migrateV6ToV7(db);
|
|
370
371
|
migrateV7ToV8(db);
|
|
372
|
+
migrateV8ToV9(db);
|
|
371
373
|
return;
|
|
372
374
|
}
|
|
373
375
|
if (currentVersion === 4) {
|
|
@@ -375,6 +377,7 @@ function ensureCurrentSchema(db) {
|
|
|
375
377
|
migrateV5ToV6(db);
|
|
376
378
|
migrateV6ToV7(db);
|
|
377
379
|
migrateV7ToV8(db);
|
|
380
|
+
migrateV8ToV9(db);
|
|
378
381
|
return;
|
|
379
382
|
}
|
|
380
383
|
if (currentVersion === 3) {
|
|
@@ -383,10 +386,12 @@ function ensureCurrentSchema(db) {
|
|
|
383
386
|
migrateV5ToV6(db);
|
|
384
387
|
migrateV6ToV7(db);
|
|
385
388
|
migrateV7ToV8(db);
|
|
389
|
+
migrateV8ToV9(db);
|
|
386
390
|
return;
|
|
387
391
|
}
|
|
388
|
-
// Additive v2 → v3 → ...
|
|
389
|
-
// prediction_records
|
|
392
|
+
// Additive v2 → v3 → ... migration without dropping data (v8 drops
|
|
393
|
+
// prediction_records and v9 drops watchlist item annotation columns as
|
|
394
|
+
// explicit feature removals).
|
|
390
395
|
if (currentVersion === 2) {
|
|
391
396
|
migrateV2ToV3(db);
|
|
392
397
|
migrateV3ToV4(db);
|
|
@@ -394,6 +399,7 @@ function ensureCurrentSchema(db) {
|
|
|
394
399
|
migrateV5ToV6(db);
|
|
395
400
|
migrateV6ToV7(db);
|
|
396
401
|
migrateV7ToV8(db);
|
|
402
|
+
migrateV8ToV9(db);
|
|
397
403
|
return;
|
|
398
404
|
}
|
|
399
405
|
// Any other mismatch (null first-run, or a foreign schema): reset.
|
|
@@ -456,6 +462,50 @@ function migrateV7ToV8(db) {
|
|
|
456
462
|
// Predictions feature removal: dropping prediction_records is the explicit,
|
|
457
463
|
// documented destructive step for this table; all other rows are preserved.
|
|
458
464
|
db.exec("DROP TABLE IF EXISTS prediction_records");
|
|
465
|
+
db.exec(CURRENT_SCHEMA);
|
|
466
|
+
db.prepare("DELETE FROM schema_version").run();
|
|
467
|
+
db.prepare("INSERT INTO schema_version (version) VALUES (?)").run(8);
|
|
468
|
+
}
|
|
469
|
+
function migrateV8ToV9(db) {
|
|
470
|
+
db.exec(`
|
|
471
|
+
CREATE TABLE IF NOT EXISTS watchlists_v9 (
|
|
472
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
473
|
+
name TEXT NOT NULL,
|
|
474
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
475
|
+
created_at TEXT NOT NULL,
|
|
476
|
+
updated_at TEXT NOT NULL,
|
|
477
|
+
UNIQUE(name)
|
|
478
|
+
);
|
|
479
|
+
|
|
480
|
+
INSERT OR IGNORE INTO watchlists_v9 (id, name, is_default, created_at, updated_at)
|
|
481
|
+
SELECT id, name, is_default, created_at, updated_at FROM watchlists;
|
|
482
|
+
|
|
483
|
+
DROP TABLE IF EXISTS watchlist_items_v9;
|
|
484
|
+
CREATE TABLE watchlist_items_v9 (
|
|
485
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
486
|
+
watchlist_id INTEGER NOT NULL,
|
|
487
|
+
instrument_id INTEGER NOT NULL,
|
|
488
|
+
source TEXT,
|
|
489
|
+
source_row_id TEXT,
|
|
490
|
+
source_metadata_json TEXT,
|
|
491
|
+
created_at TEXT NOT NULL,
|
|
492
|
+
updated_at TEXT NOT NULL,
|
|
493
|
+
UNIQUE(watchlist_id, instrument_id),
|
|
494
|
+
FOREIGN KEY (watchlist_id) REFERENCES watchlists_v9(id) ON DELETE CASCADE,
|
|
495
|
+
FOREIGN KEY (instrument_id) REFERENCES instruments(id) ON DELETE RESTRICT
|
|
496
|
+
);
|
|
497
|
+
|
|
498
|
+
INSERT OR IGNORE INTO watchlist_items_v9 (
|
|
499
|
+
id, watchlist_id, instrument_id, source, source_row_id, source_metadata_json, created_at, updated_at
|
|
500
|
+
)
|
|
501
|
+
SELECT id, watchlist_id, instrument_id, source, source_row_id, source_metadata_json, created_at, updated_at
|
|
502
|
+
FROM watchlist_items;
|
|
503
|
+
|
|
504
|
+
DROP TABLE watchlist_items;
|
|
505
|
+
DROP TABLE watchlists;
|
|
506
|
+
ALTER TABLE watchlists_v9 RENAME TO watchlists;
|
|
507
|
+
ALTER TABLE watchlist_items_v9 RENAME TO watchlist_items;
|
|
508
|
+
`);
|
|
459
509
|
db.exec(CURRENT_SCHEMA);
|
|
460
510
|
db.prepare("DELETE FROM schema_version").run();
|
|
461
511
|
db.prepare("INSERT INTO schema_version (version) VALUES (?)").run(CURRENT_SCHEMA_VERSION);
|
|
@@ -524,4 +574,3 @@ export function getSchemaVersion(db) {
|
|
|
524
574
|
const row = db.prepare("SELECT version FROM schema_version LIMIT 1").get();
|
|
525
575
|
return row?.version ?? 0;
|
|
526
576
|
}
|
|
527
|
-
//# sourceMappingURL=sqlite.js.map
|
package/dist/memory/storage.js
CHANGED
package/dist/memory/types.js
CHANGED
package/dist/monitor.js
CHANGED
|
@@ -20,4 +20,4 @@ export interface PromptResult {
|
|
|
20
20
|
*
|
|
21
21
|
* When neither a handler nor a UI is available, returns `{answer: null, cancelled: true}`.
|
|
22
22
|
*/
|
|
23
|
-
export declare function promptUser(ctx: ExtensionContext, opts: PromptOptions, handler?: AskUserHandler): Promise<PromptResult>;
|
|
23
|
+
export declare function promptUser(ctx: ExtensionContext | undefined, opts: PromptOptions, handler?: AskUserHandler): Promise<PromptResult>;
|
package/dist/onboarding/state.js
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type ModelKeyProviderId = "google" | "openai" | "anthropic";
|
|
2
|
+
export type ModelKeyValidationResult = {
|
|
3
|
+
status: "valid";
|
|
4
|
+
providerLabel: string;
|
|
5
|
+
} | {
|
|
6
|
+
status: "invalid";
|
|
7
|
+
providerLabel: string;
|
|
8
|
+
} | {
|
|
9
|
+
status: "transient";
|
|
10
|
+
providerLabel: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Checks whether an API key is accepted by a model provider without saving it.
|
|
15
|
+
* Transient failures deliberately permit saving so offline setup remains usable.
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateModelKey(providerId: ModelKeyProviderId, key: string): Promise<ModelKeyValidationResult>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const VALIDATION_TIMEOUT_MS = 5_000;
|
|
2
|
+
const MODEL_KEY_PROBES = {
|
|
3
|
+
google: {
|
|
4
|
+
label: "Google Gemini",
|
|
5
|
+
url: "https://generativelanguage.googleapis.com/v1beta/models",
|
|
6
|
+
headers: (key) => ({ "x-goog-api-key": key }),
|
|
7
|
+
},
|
|
8
|
+
openai: {
|
|
9
|
+
label: "OpenAI",
|
|
10
|
+
url: "https://api.openai.com/v1/models",
|
|
11
|
+
headers: (key) => ({ Authorization: `Bearer ${key}` }),
|
|
12
|
+
},
|
|
13
|
+
anthropic: {
|
|
14
|
+
label: "Anthropic",
|
|
15
|
+
url: "https://api.anthropic.com/v1/models",
|
|
16
|
+
headers: (key) => ({ "x-api-key": key, "anthropic-version": "2023-06-01" }),
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Checks whether an API key is accepted by a model provider without saving it.
|
|
21
|
+
* Transient failures deliberately permit saving so offline setup remains usable.
|
|
22
|
+
*/
|
|
23
|
+
export async function validateModelKey(providerId, key) {
|
|
24
|
+
const probe = MODEL_KEY_PROBES[providerId];
|
|
25
|
+
try {
|
|
26
|
+
const response = await fetch(probe.url, {
|
|
27
|
+
method: "GET",
|
|
28
|
+
headers: probe.headers(key),
|
|
29
|
+
signal: AbortSignal.timeout(VALIDATION_TIMEOUT_MS),
|
|
30
|
+
});
|
|
31
|
+
if (response.status === 401 || response.status === 403) {
|
|
32
|
+
return { status: "invalid", providerLabel: probe.label };
|
|
33
|
+
}
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
// Google reports bad keys as 400 INVALID_ARGUMENT / API_KEY_INVALID
|
|
36
|
+
// rather than 401.
|
|
37
|
+
if (response.status === 400) {
|
|
38
|
+
const body = await response.text().catch(() => "");
|
|
39
|
+
if (/API_KEY_INVALID|API key not valid/i.test(body)) {
|
|
40
|
+
return { status: "invalid", providerLabel: probe.label };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return { status: "transient", providerLabel: probe.label, reason: `HTTP ${response.status}` };
|
|
44
|
+
}
|
|
45
|
+
return { status: "valid", providerLabel: probe.label };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
status: "transient",
|
|
50
|
+
providerLabel: probe.label,
|
|
51
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -690,6 +690,8 @@ export default function openCandleExtension(pi, options) {
|
|
|
690
690
|
}
|
|
691
691
|
async function dispatchRouterWorkflow(output, ctx, originalText) {
|
|
692
692
|
const workflow = output.workflow;
|
|
693
|
+
if (!workflow)
|
|
694
|
+
return false;
|
|
693
695
|
const storage = coordinator.getStorage();
|
|
694
696
|
const workflowPrefs = storage?.getWorkflowPreferences("global") ?? {};
|
|
695
697
|
const entities = mergeRouterSlotsIntoEntities(output);
|
|
@@ -988,7 +990,6 @@ export default function openCandleExtension(pi, options) {
|
|
|
988
990
|
const model = ctx.model;
|
|
989
991
|
if (!model)
|
|
990
992
|
return null;
|
|
991
|
-
// biome-ignore lint/suspicious/noExplicitAny: Pi typings keep Model generic
|
|
992
993
|
return createPiAiRouterClient(model);
|
|
993
994
|
}
|
|
994
995
|
// System prompt assembly — delegate to coordinator. When a fallback context
|
|
@@ -1065,4 +1066,3 @@ function isPlaceholderSessionName(name, candidates) {
|
|
|
1065
1066
|
}
|
|
1066
1067
|
return false;
|
|
1067
1068
|
}
|
|
1068
|
-
//# sourceMappingURL=opencandle-extension.js.map
|
package/dist/pi/session.js
CHANGED
package/dist/pi/setup.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
type SetupMode = "startup" | "manual";
|
|
3
3
|
type SetupRequirement = "ready" | "select_model" | "connect_auth";
|
|
4
|
+
type ApiKeyProviderId = "google" | "openai" | "anthropic";
|
|
4
5
|
type SetupResult = "ready" | "shutdown" | "cancelled";
|
|
5
6
|
export declare function getLlmSetupRequirement(ctx: Pick<ExtensionContext, "model" | "modelRegistry">): SetupRequirement;
|
|
7
|
+
export declare function runApiKeySetup(ctx: ExtensionContext, provider: ApiKeyProviderId): Promise<boolean>;
|
|
6
8
|
export declare function runOpenCandleSetup(api: ExtensionAPI, ctx: ExtensionContext, options?: {
|
|
7
9
|
mode: SetupMode;
|
|
8
10
|
}): Promise<SetupResult>;
|
package/dist/pi/setup.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LoginDialogComponent, } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import { validateModelKey } from "../onboarding/validate-model-key.js";
|
|
2
3
|
/**
|
|
3
4
|
* Registry of "fast default" models for each LLM auth provider. After a fresh
|
|
4
5
|
* sign-in we try to activate the default without opening a picker, falling back
|
|
@@ -174,7 +175,7 @@ async function runLoginDialog(ctx, providerId) {
|
|
|
174
175
|
}
|
|
175
176
|
return false;
|
|
176
177
|
}
|
|
177
|
-
async function runApiKeySetup(ctx, provider) {
|
|
178
|
+
export async function runApiKeySetup(ctx, provider) {
|
|
178
179
|
const label = API_KEY_PROVIDER_LABELS[provider];
|
|
179
180
|
ctx.ui.notify(`OpenCandle stores your ${label} API key locally. After saving it, OpenCandle will select a fast default model when one is available.`, "info");
|
|
180
181
|
const key = await ctx.ui.input(`Paste your ${label} API key`, "API key");
|
|
@@ -183,9 +184,16 @@ async function runApiKeySetup(ctx, provider) {
|
|
|
183
184
|
ctx.ui.notify("No API key entered.", "warning");
|
|
184
185
|
return false;
|
|
185
186
|
}
|
|
187
|
+
const validation = await validateModelKey(provider, trimmed);
|
|
188
|
+
if (validation.status === "invalid") {
|
|
189
|
+
ctx.ui.notify(`Key was rejected by ${validation.providerLabel}. Paste a different key.`, "error");
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
186
192
|
ctx.modelRegistry.authStorage.set(provider, { type: "api_key", key: trimmed });
|
|
187
193
|
ctx.modelRegistry.refresh();
|
|
188
|
-
ctx.ui.notify(
|
|
194
|
+
ctx.ui.notify(validation.status === "transient"
|
|
195
|
+
? `Saved — couldn't verify (network issue). ${label} API key saved to OpenCandle.`
|
|
196
|
+
: `${label} API key saved to OpenCandle.`, "info");
|
|
189
197
|
return true;
|
|
190
198
|
}
|
|
191
199
|
/**
|
|
@@ -316,4 +324,3 @@ export async function runOpenCandleSetup(api, ctx, options = { mode: "startup" }
|
|
|
316
324
|
}
|
|
317
325
|
return "ready";
|
|
318
326
|
}
|
|
319
|
-
//# sourceMappingURL=setup.js.map
|
package/dist/pi/tool-adapter.js
CHANGED
|
@@ -33,7 +33,7 @@ export class PromptContextBuilder {
|
|
|
33
33
|
let truncationMarkers = 0;
|
|
34
34
|
for (const name of SECTION_ORDER) {
|
|
35
35
|
const section = this.sections.get(name);
|
|
36
|
-
if (!section
|
|
36
|
+
if (!section?.content)
|
|
37
37
|
continue;
|
|
38
38
|
const truncated = truncateTobudget(section.content, section.characterBudget);
|
|
39
39
|
const wasTruncated = truncated.includes("[...truncated]");
|
|
@@ -258,4 +258,3 @@ Every committal response MUST carry four elements:
|
|
|
258
258
|
|
|
259
259
|
## Assumption Disclosure
|
|
260
260
|
Structured workflow prompts may include a pre-rendered "Assumptions" block with correct source attribution (user-specified, saved preference, or default). Start with that block only when the workflow instructions explicitly say to. Fallback prompts include "Assumptions Context" only for internal routing context; do not reproduce that context unless the user explicitly asks for assumptions. Do NOT independently relabel any value's source anywhere in your response. When an assumptions block is shown, it is the single authoritative provenance representation.`;
|
|
261
|
-
//# sourceMappingURL=context-builder.js.map
|
|
@@ -6,4 +6,3 @@
|
|
|
6
6
|
export const DISCLAIMER_TEXT = "OpenCandle is a research and analysis tool, not financial advice or a fiduciary financial advisor. " +
|
|
7
7
|
"Views, targets, and allocations are informational analyst output — not personalized recommendations. " +
|
|
8
8
|
"Verify independently before acting.";
|
|
9
|
-
//# sourceMappingURL=disclaimer.js.map
|
package/dist/prompts/sections.js
CHANGED
|
@@ -442,4 +442,3 @@ ${tableInstruction}
|
|
|
442
442
|
${actionPlanResponse}
|
|
443
443
|
- Note any caveats (different sectors, concentration, market cap disparity, unavailable fundamentals, unavailable forward-looking estimates, etc.).${horizonResponse}`;
|
|
444
444
|
}
|
|
445
|
-
//# sourceMappingURL=workflow-prompts.js.map
|
|
@@ -182,7 +182,7 @@ export async function getGlobalQuote(symbol, apiKey) {
|
|
|
182
182
|
const data = await httpGet(url);
|
|
183
183
|
throwIfApiMessage(data);
|
|
184
184
|
const gq = data["Global Quote"];
|
|
185
|
-
if (!gq
|
|
185
|
+
if (!gq?.["05. price"]) {
|
|
186
186
|
throw new Error(`Alpha Vantage: No quote data for ${symbol}`);
|
|
187
187
|
}
|
|
188
188
|
const price = parseFloat(gq["05. price"]) || 0;
|
|
@@ -291,6 +291,5 @@ function parseNullableNum(s) {
|
|
|
291
291
|
if (!s || s === "None" || s === "-")
|
|
292
292
|
return null;
|
|
293
293
|
const n = parseFloat(s);
|
|
294
|
-
return isNaN(n) ? null : n;
|
|
294
|
+
return Number.isNaN(n) ? null : n;
|
|
295
295
|
}
|
|
296
|
-
//# sourceMappingURL=alpha-vantage.js.map
|
package/dist/providers/errors.js
CHANGED
|
@@ -90,14 +90,16 @@ function parseMcpResultBlocks(text) {
|
|
|
90
90
|
return results;
|
|
91
91
|
}
|
|
92
92
|
function mapApiResults(results) {
|
|
93
|
-
return results
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
93
|
+
return results.flatMap((r) => {
|
|
94
|
+
if (!r.url)
|
|
95
|
+
return [];
|
|
96
|
+
return {
|
|
97
|
+
title: r.title ?? "",
|
|
98
|
+
url: r.url,
|
|
99
|
+
published: r.publishedDate ?? null,
|
|
100
|
+
snippet: (r.highlights?.join(" ") || r.text || "").slice(0, SNIPPET_MAX_CHARS),
|
|
101
|
+
};
|
|
102
|
+
});
|
|
101
103
|
}
|
|
102
104
|
// ---------------------------------------------------------------------------
|
|
103
105
|
// Freshness post-filter
|
|
@@ -108,7 +110,7 @@ function filterByFreshness(results, freshness) {
|
|
|
108
110
|
if (!r.published)
|
|
109
111
|
return true; // benefit of the doubt
|
|
110
112
|
const pubTime = new Date(r.published).getTime();
|
|
111
|
-
return !isNaN(pubTime) && pubTime >= cutoff;
|
|
113
|
+
return !Number.isNaN(pubTime) && pubTime >= cutoff;
|
|
112
114
|
});
|
|
113
115
|
}
|
|
114
116
|
// ---------------------------------------------------------------------------
|
|
@@ -281,4 +283,3 @@ export async function exaSearch(query, opts) {
|
|
|
281
283
|
}
|
|
282
284
|
// Exported for testing
|
|
283
285
|
export { enrichQueryForMcp, extractJsonRpcPayload, filterByFreshness, mapApiResults, parseMcpResultBlocks, };
|
|
284
|
-
//# sourceMappingURL=exa-search.js.map
|
package/dist/providers/fred.js
CHANGED
package/dist/providers/index.js
CHANGED
|
@@ -7,4 +7,3 @@ export { searchFilings } from "./sec-edgar.js";
|
|
|
7
7
|
export { getQuotes, screenStocks } from "./tradingview.js";
|
|
8
8
|
export { braveSearch, ddgSearch, normalizeFinancialQuery, searchWeb } from "./web-search.js";
|
|
9
9
|
export { clearCrumbCache, computeTimeToExpiry, getHistory, getOptionsChain, getQuote, getYahooCrumb, } from "./yahoo-finance.js";
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/dist/providers/reddit.js
CHANGED
|
@@ -252,7 +252,7 @@ export function canUseTradingViewQuote(symbol) {
|
|
|
252
252
|
(isTradingViewQualified(normalized) || !shouldSkipTradingView(normalized)));
|
|
253
253
|
}
|
|
254
254
|
function symbolFromTvSymbol(tvSymbol) {
|
|
255
|
-
return tvSymbol.includes(":") ? tvSymbol.split(":").at(-1) : tvSymbol;
|
|
255
|
+
return tvSymbol.includes(":") ? (tvSymbol.split(":").at(-1) ?? tvSymbol) : tvSymbol;
|
|
256
256
|
}
|
|
257
257
|
function stringValue(value) {
|
|
258
258
|
return typeof value === "string" ? value : undefined;
|
|
@@ -272,4 +272,3 @@ function sortObjectKeys(value) {
|
|
|
272
272
|
.sort(([a], [b]) => a.localeCompare(b))
|
|
273
273
|
.map(([key, nested]) => [key, sortObjectKeys(nested)]));
|
|
274
274
|
}
|
|
275
|
-
//# sourceMappingURL=tradingview.js.map
|