opencandle 0.2.0 → 0.4.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 +110 -87
- package/assets/logo.svg +187 -0
- package/dist/analysts/orchestrator.js +1 -2
- package/dist/analysts/orchestrator.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +38 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +34 -5
- package/dist/config.js +29 -8
- package/dist/config.js.map +1 -1
- package/dist/infra/browser.d.ts +10 -0
- package/dist/infra/browser.js +1 -0
- package/dist/infra/browser.js.map +1 -1
- package/dist/infra/cache.d.ts +4 -0
- package/dist/infra/cache.js +4 -0
- package/dist/infra/cache.js.map +1 -1
- package/dist/infra/native-dependencies.d.ts +1 -0
- package/dist/infra/native-dependencies.js +10 -0
- package/dist/infra/native-dependencies.js.map +1 -0
- package/dist/infra/node-version.d.ts +2 -0
- package/dist/infra/node-version.js +23 -0
- package/dist/infra/node-version.js.map +1 -0
- package/dist/infra/rate-limiter.js +6 -0
- package/dist/infra/rate-limiter.js.map +1 -1
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/sqlite.js +42 -4
- package/dist/memory/sqlite.js.map +1 -1
- package/dist/memory/storage.d.ts +6 -0
- package/dist/memory/storage.js +3 -3
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/tool-defaults.d.ts +8 -0
- package/dist/memory/tool-defaults.js +59 -0
- package/dist/memory/tool-defaults.js.map +1 -0
- package/dist/onboarding/connect.d.ts +35 -0
- package/dist/onboarding/connect.js +118 -0
- package/dist/onboarding/connect.js.map +1 -0
- package/dist/onboarding/credential-interceptor.d.ts +44 -0
- package/dist/onboarding/credential-interceptor.js +72 -0
- package/dist/onboarding/credential-interceptor.js.map +1 -0
- package/dist/onboarding/degradation-accumulator.d.ts +21 -0
- package/dist/onboarding/degradation-accumulator.js +55 -0
- package/dist/onboarding/degradation-accumulator.js.map +1 -0
- package/dist/onboarding/prompt-user.d.ts +23 -0
- package/dist/onboarding/prompt-user.js +61 -0
- package/dist/onboarding/prompt-user.js.map +1 -0
- package/dist/onboarding/providers.d.ts +116 -0
- package/dist/onboarding/providers.js +239 -0
- package/dist/onboarding/providers.js.map +1 -0
- package/dist/onboarding/state.d.ts +31 -2
- package/dist/onboarding/state.js +141 -13
- package/dist/onboarding/state.js.map +1 -1
- package/dist/onboarding/tool-helpers.d.ts +34 -0
- package/dist/onboarding/tool-helpers.js +80 -0
- package/dist/onboarding/tool-helpers.js.map +1 -0
- package/dist/onboarding/tool-tags.d.ts +37 -0
- package/dist/onboarding/tool-tags.js +149 -0
- package/dist/onboarding/tool-tags.js.map +1 -0
- package/dist/onboarding/validation.d.ts +19 -0
- package/dist/onboarding/validation.js +117 -0
- package/dist/onboarding/validation.js.map +1 -0
- package/dist/pi/opencandle-extension.d.ts +7 -1
- package/dist/pi/opencandle-extension.js +488 -13
- package/dist/pi/opencandle-extension.js.map +1 -1
- package/dist/pi/session-storage.d.ts +2 -0
- package/dist/pi/session-storage.js +5 -0
- package/dist/pi/session-storage.js.map +1 -0
- package/dist/pi/session.d.ts +4 -1
- package/dist/pi/session.js +25 -3
- package/dist/pi/session.js.map +1 -1
- package/dist/pi/setup.d.ts +1 -2
- package/dist/pi/setup.js +67 -120
- package/dist/pi/setup.js.map +1 -1
- package/dist/pi/tool-adapter.d.ts +2 -2
- package/dist/pi/tool-adapter.js +14 -1
- package/dist/pi/tool-adapter.js.map +1 -1
- package/dist/prompts/context-builder.d.ts +22 -0
- package/dist/prompts/context-builder.js +47 -11
- package/dist/prompts/context-builder.js.map +1 -1
- package/dist/prompts/disclaimer.d.ts +6 -0
- package/dist/prompts/disclaimer.js +9 -0
- package/dist/prompts/disclaimer.js.map +1 -0
- package/dist/prompts/workflow-prompts.d.ts +8 -0
- package/dist/prompts/workflow-prompts.js +39 -5
- package/dist/prompts/workflow-prompts.js.map +1 -1
- package/dist/providers/alpha-vantage.js +20 -1
- package/dist/providers/alpha-vantage.js.map +1 -1
- package/dist/providers/exa-search.d.ts +39 -0
- package/dist/providers/exa-search.js +276 -0
- package/dist/providers/exa-search.js.map +1 -0
- package/dist/providers/finnhub.d.ts +17 -0
- package/dist/providers/finnhub.js +94 -0
- package/dist/providers/finnhub.js.map +1 -0
- package/dist/providers/fred.js +13 -1
- package/dist/providers/fred.js.map +1 -1
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/provider-credential-error.d.ts +8 -0
- package/dist/providers/provider-credential-error.js +22 -0
- package/dist/providers/provider-credential-error.js.map +1 -0
- package/dist/providers/reddit.d.ts +8 -0
- package/dist/providers/reddit.js +36 -9
- package/dist/providers/reddit.js.map +1 -1
- package/dist/providers/twitter.js +2 -8
- package/dist/providers/twitter.js.map +1 -1
- package/dist/providers/web-search.d.ts +17 -0
- package/dist/providers/web-search.js +224 -0
- package/dist/providers/web-search.js.map +1 -0
- package/dist/providers/wrap-provider.d.ts +7 -0
- package/dist/providers/wrap-provider.js +15 -0
- package/dist/providers/wrap-provider.js.map +1 -1
- package/dist/providers/yahoo-finance.js +70 -33
- package/dist/providers/yahoo-finance.js.map +1 -1
- package/dist/routing/classify-intent.js +22 -0
- package/dist/routing/classify-intent.js.map +1 -1
- package/dist/routing/defaults.js +1 -1
- package/dist/routing/defaults.js.map +1 -1
- package/dist/routing/index.d.ts +4 -0
- package/dist/routing/index.js +3 -0
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/router-llm-client.d.ts +11 -0
- package/dist/routing/router-llm-client.js +42 -0
- package/dist/routing/router-llm-client.js.map +1 -0
- package/dist/routing/router-prompt.d.ts +2 -0
- package/dist/routing/router-prompt.js +138 -0
- package/dist/routing/router-prompt.js.map +1 -0
- package/dist/routing/router-types.d.ts +62 -0
- package/dist/routing/router-types.js +2 -0
- package/dist/routing/router-types.js.map +1 -0
- package/dist/routing/router.d.ts +10 -0
- package/dist/routing/router.js +194 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/runtime/session-coordinator.d.ts +63 -4
- package/dist/runtime/session-coordinator.js +155 -4
- package/dist/runtime/session-coordinator.js.map +1 -1
- package/dist/runtime/tool-defaults-wrapper.d.ts +3 -0
- package/dist/runtime/tool-defaults-wrapper.js +25 -0
- package/dist/runtime/tool-defaults-wrapper.js.map +1 -0
- package/dist/sentiment/adapters/finnhub.d.ts +7 -0
- package/dist/sentiment/adapters/finnhub.js +39 -0
- package/dist/sentiment/adapters/finnhub.js.map +1 -0
- package/dist/sentiment/adapters/reddit.d.ts +11 -0
- package/dist/sentiment/adapters/reddit.js +54 -0
- package/dist/sentiment/adapters/reddit.js.map +1 -0
- package/dist/sentiment/adapters/twitter.d.ts +9 -0
- package/dist/sentiment/adapters/twitter.js +32 -0
- package/dist/sentiment/adapters/twitter.js.map +1 -0
- package/dist/sentiment/adapters/web.d.ts +9 -0
- package/dist/sentiment/adapters/web.js +40 -0
- package/dist/sentiment/adapters/web.js.map +1 -0
- package/dist/sentiment/index.d.ts +16 -0
- package/dist/sentiment/index.js +44 -0
- package/dist/sentiment/index.js.map +1 -0
- package/dist/sentiment/keywords.d.ts +2 -0
- package/dist/sentiment/keywords.js +9 -0
- package/dist/sentiment/keywords.js.map +1 -0
- package/dist/sentiment/pipeline.d.ts +9 -0
- package/dist/sentiment/pipeline.js +57 -0
- package/dist/sentiment/pipeline.js.map +1 -0
- package/dist/sentiment/scorer.d.ts +9 -0
- package/dist/sentiment/scorer.js +64 -0
- package/dist/sentiment/scorer.js.map +1 -0
- package/dist/sentiment/store.d.ts +24 -0
- package/dist/sentiment/store.js +182 -0
- package/dist/sentiment/store.js.map +1 -0
- package/dist/sentiment/trends.d.ts +13 -0
- package/dist/sentiment/trends.js +73 -0
- package/dist/sentiment/trends.js.map +1 -0
- package/dist/sentiment/types.d.ts +66 -0
- package/dist/sentiment/types.js +54 -0
- package/dist/sentiment/types.js.map +1 -0
- package/dist/system-prompt.js +29 -13
- package/dist/system-prompt.js.map +1 -1
- package/dist/tool-kit.d.ts +4 -4
- package/dist/tools/fundamentals/company-overview.d.ts +4 -2
- package/dist/tools/fundamentals/company-overview.js +27 -27
- package/dist/tools/fundamentals/company-overview.js.map +1 -1
- package/dist/tools/fundamentals/comps.d.ts +1 -1
- package/dist/tools/fundamentals/comps.js +45 -45
- package/dist/tools/fundamentals/comps.js.map +1 -1
- package/dist/tools/fundamentals/dcf.d.ts +1 -1
- package/dist/tools/fundamentals/dcf.js +82 -82
- package/dist/tools/fundamentals/dcf.js.map +1 -1
- package/dist/tools/fundamentals/earnings.d.ts +4 -2
- package/dist/tools/fundamentals/earnings.js +25 -25
- package/dist/tools/fundamentals/earnings.js.map +1 -1
- package/dist/tools/fundamentals/financials.d.ts +4 -2
- package/dist/tools/fundamentals/financials.js +23 -23
- package/dist/tools/fundamentals/financials.js.map +1 -1
- package/dist/tools/fundamentals/sec-filings.d.ts +1 -1
- package/dist/tools/index.d.ts +28 -1
- package/dist/tools/index.js +35 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interaction/ask-user.d.ts +1 -1
- package/dist/tools/interaction/ask-user.js +28 -64
- package/dist/tools/interaction/ask-user.js.map +1 -1
- package/dist/tools/interaction/twitter-login.d.ts +1 -1
- package/dist/tools/macro/fear-greed.d.ts +1 -1
- package/dist/tools/macro/fred-data.d.ts +4 -2
- package/dist/tools/macro/fred-data.js +26 -26
- package/dist/tools/macro/fred-data.js.map +1 -1
- package/dist/tools/market/crypto-history.d.ts +1 -1
- package/dist/tools/market/crypto-price.d.ts +1 -1
- package/dist/tools/market/search-ticker.d.ts +1 -1
- package/dist/tools/market/stock-history.d.ts +1 -1
- package/dist/tools/market/stock-quote.d.ts +1 -1
- package/dist/tools/options/option-chain.d.ts +1 -1
- package/dist/tools/options/option-chain.js +4 -1
- package/dist/tools/options/option-chain.js.map +1 -1
- package/dist/tools/portfolio/correlation.d.ts +1 -1
- package/dist/tools/portfolio/predictions.d.ts +1 -1
- package/dist/tools/portfolio/risk-analysis.d.ts +1 -1
- package/dist/tools/portfolio/tracker.d.ts +1 -1
- package/dist/tools/portfolio/watchlist.d.ts +1 -1
- package/dist/tools/sentiment/reddit-sentiment.d.ts +4 -2
- package/dist/tools/sentiment/reddit-sentiment.js +107 -22
- package/dist/tools/sentiment/reddit-sentiment.js.map +1 -1
- package/dist/tools/sentiment/sentiment-summary.d.ts +7 -0
- package/dist/tools/sentiment/sentiment-summary.js +230 -0
- package/dist/tools/sentiment/sentiment-summary.js.map +1 -0
- package/dist/tools/sentiment/sentiment-trend.d.ts +22 -0
- package/dist/tools/sentiment/sentiment-trend.js +39 -0
- package/dist/tools/sentiment/sentiment-trend.js.map +1 -0
- package/dist/tools/sentiment/twitter-sentiment.d.ts +1 -1
- package/dist/tools/sentiment/twitter-sentiment.js +17 -0
- package/dist/tools/sentiment/twitter-sentiment.js.map +1 -1
- package/dist/tools/sentiment/web-search.d.ts +11 -0
- package/dist/tools/sentiment/web-search.js +115 -0
- package/dist/tools/sentiment/web-search.js.map +1 -0
- package/dist/tools/sentiment/web-sentiment.d.ts +8 -0
- package/dist/tools/sentiment/web-sentiment.js +66 -0
- package/dist/tools/sentiment/web-sentiment.js.map +1 -0
- package/dist/tools/technical/backtest.d.ts +1 -1
- package/dist/tools/technical/indicators.d.ts +1 -1
- package/dist/tools/technical/indicators.js +7 -1
- package/dist/tools/technical/indicators.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/sentiment.d.ts +21 -0
- package/dist/workflows/options-screener.js +7 -2
- package/dist/workflows/options-screener.js.map +1 -1
- package/dist/workflows/portfolio-builder.js +3 -3
- package/dist/workflows/portfolio-builder.js.map +1 -1
- package/gui/server/background-quotes.ts +31 -0
- package/gui/server/chat-event-adapter.ts +142 -0
- package/gui/server/invoke-tool.ts +89 -0
- package/gui/server/live-chat-event-adapter.ts +181 -0
- package/gui/server/model-setup.ts +100 -0
- package/gui/server/package.json +5 -0
- package/gui/server/projector.ts +212 -0
- package/gui/server/server.ts +592 -0
- package/gui/server/session-actions.ts +31 -0
- package/gui/server/tool-metadata.ts +88 -0
- package/gui/server/websocket.ts +128 -0
- package/gui/server/writer-lock.ts +118 -0
- package/gui/shared/chat-events.ts +118 -0
- package/gui/shared/event-reducer.ts +186 -0
- package/gui/web/dist/assets/CatalogOverlay-D1ImSJTe.js +1 -0
- package/gui/web/dist/assets/index-DBrWq43L.css +1 -0
- package/gui/web/dist/assets/index-RflHaj0y.js +67 -0
- package/gui/web/dist/assets/logo-CWpt6Y2a.svg +187 -0
- package/gui/web/dist/index.html +17 -0
- package/package.json +62 -20
- package/src/analysts/contracts.ts +189 -0
- package/src/analysts/orchestrator.ts +300 -0
- package/src/cli.ts +205 -0
- package/src/config.ts +161 -0
- package/src/index.ts +5 -0
- package/src/infra/browser.ts +111 -0
- package/src/infra/cache.ts +103 -0
- package/src/infra/http-client.ts +68 -0
- package/src/infra/index.ts +18 -0
- package/src/infra/native-dependencies.ts +12 -0
- package/src/infra/node-version.ts +24 -0
- package/src/infra/open-url.ts +28 -0
- package/src/infra/opencandle-paths.ts +64 -0
- package/src/infra/rate-limiter.ts +64 -0
- package/src/memory/index.ts +10 -0
- package/src/memory/manager.ts +159 -0
- package/src/memory/preference-extractor.ts +106 -0
- package/src/memory/retrieval.ts +70 -0
- package/src/memory/sqlite.ts +172 -0
- package/src/memory/storage.ts +204 -0
- package/src/memory/tool-defaults.ts +87 -0
- package/src/memory/types.ts +67 -0
- package/src/onboarding/connect.ts +184 -0
- package/src/onboarding/credential-interceptor.ts +134 -0
- package/src/onboarding/degradation-accumulator.ts +79 -0
- package/src/onboarding/prompt-user.ts +85 -0
- package/src/onboarding/providers.ts +315 -0
- package/src/onboarding/state.ts +218 -0
- package/src/onboarding/tool-helpers.ts +111 -0
- package/src/onboarding/tool-tags.ts +201 -0
- package/src/onboarding/validation.ts +158 -0
- package/src/pi/opencandle-extension.ts +724 -0
- package/src/pi/session-storage.ts +5 -0
- package/src/pi/session.ts +81 -0
- package/src/pi/setup.ts +371 -0
- package/src/pi/tool-adapter.ts +36 -0
- package/src/prompts/context-builder.ts +204 -0
- package/src/prompts/disclaimer.ts +9 -0
- package/src/prompts/sections.ts +46 -0
- package/src/prompts/workflow-prompts.ts +279 -0
- package/src/providers/alpha-vantage.ts +292 -0
- package/src/providers/coingecko.ts +96 -0
- package/src/providers/exa-search.ts +373 -0
- package/src/providers/fear-greed.ts +45 -0
- package/src/providers/finnhub.ts +124 -0
- package/src/providers/fred.ts +83 -0
- package/src/providers/index.ts +9 -0
- package/src/providers/provider-credential-error.ts +23 -0
- package/src/providers/reddit.ts +151 -0
- package/src/providers/sec-edgar.ts +96 -0
- package/src/providers/twitter.ts +173 -0
- package/src/providers/web-search.ts +293 -0
- package/src/providers/with-fallback.ts +41 -0
- package/src/providers/wrap-provider.ts +64 -0
- package/src/providers/yahoo-finance.ts +367 -0
- package/src/routing/classify-intent.ts +194 -0
- package/src/routing/defaults.ts +29 -0
- package/src/routing/entity-extractor.ts +140 -0
- package/src/routing/index.ts +26 -0
- package/src/routing/router-llm-client.ts +51 -0
- package/src/routing/router-prompt.ts +159 -0
- package/src/routing/router-types.ts +66 -0
- package/src/routing/router.ts +213 -0
- package/src/routing/slot-resolver.ts +152 -0
- package/src/routing/types.ts +63 -0
- package/src/runtime/evidence.ts +77 -0
- package/src/runtime/index.ts +55 -0
- package/src/runtime/prompt-step.ts +75 -0
- package/src/runtime/provider-ids.ts +15 -0
- package/src/runtime/provider-tracker.ts +40 -0
- package/src/runtime/run-context.ts +22 -0
- package/src/runtime/session-coordinator.ts +406 -0
- package/src/runtime/tool-defaults-wrapper.ts +35 -0
- package/src/runtime/validation.ts +214 -0
- package/src/runtime/workflow-events.ts +75 -0
- package/src/runtime/workflow-runner.ts +188 -0
- package/src/runtime/workflow-types.ts +102 -0
- package/src/sentiment/adapters/finnhub.ts +44 -0
- package/src/sentiment/adapters/reddit.ts +65 -0
- package/src/sentiment/adapters/twitter.ts +36 -0
- package/src/sentiment/adapters/web.ts +44 -0
- package/src/sentiment/index.ts +58 -0
- package/src/sentiment/keywords.ts +9 -0
- package/src/sentiment/pipeline.ts +68 -0
- package/src/sentiment/scorer.ts +78 -0
- package/src/sentiment/store.ts +260 -0
- package/src/sentiment/trends.ts +90 -0
- package/src/sentiment/types.ts +108 -0
- package/src/system-prompt.ts +115 -0
- package/src/tool-kit.ts +68 -0
- package/src/tools/AGENTS.md +36 -0
- package/src/tools/fundamentals/company-overview.ts +54 -0
- package/src/tools/fundamentals/comps.ts +156 -0
- package/src/tools/fundamentals/dcf.ts +267 -0
- package/src/tools/fundamentals/earnings.ts +47 -0
- package/src/tools/fundamentals/financials.ts +54 -0
- package/src/tools/fundamentals/sec-filings.ts +61 -0
- package/src/tools/index.ts +88 -0
- package/src/tools/interaction/ask-user.ts +81 -0
- package/src/tools/interaction/twitter-login.ts +93 -0
- package/src/tools/macro/fear-greed.ts +41 -0
- package/src/tools/macro/fred-data.ts +54 -0
- package/src/tools/market/crypto-history.ts +51 -0
- package/src/tools/market/crypto-price.ts +53 -0
- package/src/tools/market/search-ticker.ts +53 -0
- package/src/tools/market/stock-history.ts +79 -0
- package/src/tools/market/stock-quote.ts +64 -0
- package/src/tools/options/greeks.ts +82 -0
- package/src/tools/options/option-chain.ts +91 -0
- package/src/tools/portfolio/correlation.ts +162 -0
- package/src/tools/portfolio/predictions.ts +253 -0
- package/src/tools/portfolio/risk-analysis.ts +134 -0
- package/src/tools/portfolio/tracker.ts +147 -0
- package/src/tools/portfolio/watchlist.ts +153 -0
- package/src/tools/sentiment/reddit-sentiment.ts +164 -0
- package/src/tools/sentiment/sentiment-summary.ts +256 -0
- package/src/tools/sentiment/sentiment-trend.ts +58 -0
- package/src/tools/sentiment/twitter-sentiment.ts +96 -0
- package/src/tools/sentiment/web-search.ts +150 -0
- package/src/tools/sentiment/web-sentiment.ts +76 -0
- package/src/tools/technical/backtest.ts +246 -0
- package/src/tools/technical/indicators.ts +258 -0
- package/src/types/fundamentals.ts +46 -0
- package/src/types/index.ts +20 -0
- package/src/types/macro.ts +27 -0
- package/src/types/market.ts +43 -0
- package/src/types/options.ts +35 -0
- package/src/types/portfolio.ts +41 -0
- package/src/types/sentiment.ts +70 -0
- package/src/workflows/compare-assets.ts +39 -0
- package/src/workflows/index.ts +4 -0
- package/src/workflows/options-screener.ts +49 -0
- package/src/workflows/portfolio-builder.ts +52 -0
- package/src/workflows/types.ts +4 -0
- package/dist/tools/sentiment/news-sentiment.d.ts +0 -7
- package/dist/tools/sentiment/news-sentiment.js +0 -55
- package/dist/tools/sentiment/news-sentiment.js.map +0 -1
package/dist/pi/session.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "../infra/node-version.js";
|
|
2
|
+
import { createAgentSession, DefaultResourceLoader, getAgentDir, } from "@earendil-works/pi-coding-agent";
|
|
2
3
|
import { loadEnv } from "../config.js";
|
|
3
4
|
import openCandleExtension from "./opencandle-extension.js";
|
|
4
5
|
export async function createOpenCandleSession(options = {}) {
|
|
5
6
|
loadEnv();
|
|
6
7
|
const cwd = options.cwd ?? process.cwd();
|
|
8
|
+
const agentDir = options.agentDir ?? getAgentDir();
|
|
7
9
|
const useInlineExtension = options.useInlineExtension ?? true;
|
|
8
10
|
const resourceLoader = useInlineExtension
|
|
9
11
|
? new DefaultResourceLoader({
|
|
10
12
|
cwd,
|
|
13
|
+
agentDir,
|
|
11
14
|
settingsManager: options.settingsManager,
|
|
12
15
|
extensionFactories: [(pi) => openCandleExtension(pi, { askUserHandler: options.askUserHandler })],
|
|
13
16
|
})
|
|
@@ -15,14 +18,33 @@ export async function createOpenCandleSession(options = {}) {
|
|
|
15
18
|
if (resourceLoader) {
|
|
16
19
|
await resourceLoader.reload();
|
|
17
20
|
}
|
|
18
|
-
|
|
21
|
+
const result = await createAgentSession({
|
|
19
22
|
cwd,
|
|
23
|
+
agentDir,
|
|
20
24
|
authStorage: options.authStorage,
|
|
21
25
|
modelRegistry: options.modelRegistry,
|
|
22
26
|
sessionManager: options.sessionManager,
|
|
23
27
|
settingsManager: options.settingsManager,
|
|
24
28
|
resourceLoader,
|
|
25
|
-
|
|
29
|
+
noTools: "builtin",
|
|
26
30
|
});
|
|
31
|
+
await applySavedDefaultModel(result);
|
|
32
|
+
if (options.bindExtensions !== false) {
|
|
33
|
+
await result.session.bindExtensions({});
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
async function applySavedDefaultModel(result) {
|
|
38
|
+
const provider = result.session.settingsManager.getDefaultProvider();
|
|
39
|
+
const modelId = result.session.settingsManager.getDefaultModel();
|
|
40
|
+
if (!provider || !modelId)
|
|
41
|
+
return;
|
|
42
|
+
const savedDefault = result.session.modelRegistry.find(provider, modelId);
|
|
43
|
+
if (!savedDefault || !result.session.modelRegistry.hasConfiguredAuth(savedDefault))
|
|
44
|
+
return;
|
|
45
|
+
const current = result.session.model;
|
|
46
|
+
if (current?.provider === savedDefault.provider && current.id === savedDefault.id)
|
|
47
|
+
return;
|
|
48
|
+
await result.session.setModel(savedDefault);
|
|
27
49
|
}
|
|
28
50
|
//# sourceMappingURL=session.js.map
|
package/dist/pi/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/pi/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/pi/session.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,EAKrB,WAAW,GACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAe5D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA0C,EAAE;IAE5C,OAAO,EAAE,CAAC;IAEV,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAC9D,MAAM,cAAc,GAAG,kBAAkB;QACvC,CAAC,CAAC,IAAI,qBAAqB,CAAC;YACxB,GAAG;YACH,QAAQ;YACR,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;SAClG,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;QACtC,GAAG;QACH,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc;QACd,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IAEH,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,MAAgC;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;IACjE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;QAAE,OAAO;IAElC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC;QAAE,OAAO;IAE3F,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,IAAI,OAAO,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE;QAAE,OAAO;IAE1F,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/pi/setup.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { type ExtensionAPI, type ExtensionContext } from "@
|
|
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
4
|
type SetupResult = "ready" | "shutdown" | "cancelled";
|
|
5
5
|
export declare function getLlmSetupRequirement(ctx: Pick<ExtensionContext, "model" | "modelRegistry">): SetupRequirement;
|
|
6
6
|
export declare function runOpenCandleSetup(api: ExtensionAPI, ctx: ExtensionContext, options?: {
|
|
7
7
|
mode: SetupMode;
|
|
8
|
-
forceFinancePrompt?: boolean;
|
|
9
8
|
}): Promise<SetupResult>;
|
|
10
9
|
export {};
|
package/dist/pi/setup.js
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
import { LoginDialogComponent, } from "@
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
ctx.ui.setHeader(undefined);
|
|
29
|
-
ctx.ui.setStatus(SETUP_STATUS_KEY, undefined);
|
|
30
|
-
}
|
|
1
|
+
import { LoginDialogComponent, } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
/**
|
|
3
|
+
* Registry of "fast default" models for each LLM auth provider. After a fresh
|
|
4
|
+
* sign-in we try to activate the default without opening a picker, falling back
|
|
5
|
+
* to the picker if the registry doesn't have a match available. Keys are auth
|
|
6
|
+
* provider ids (as passed to `authStorage.set`); values are `{ provider, id }`
|
|
7
|
+
* tuples matching `Model.provider` / `Model.id` fields in the Pi model registry.
|
|
8
|
+
*
|
|
9
|
+
* Models here are intentionally mid-tier (flash/haiku/mini) — the goal is a
|
|
10
|
+
* quick-to-respond first chat, not the flagship. Users can swap models later
|
|
11
|
+
* via Pi's built-in model picker.
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_LLM_MODELS = {
|
|
14
|
+
// API-key providers
|
|
15
|
+
google: { provider: "google", id: "gemini-2.5-flash" },
|
|
16
|
+
openai: { provider: "openai", id: "gpt-5-mini" },
|
|
17
|
+
anthropic: { provider: "anthropic", id: "claude-haiku-4-5" },
|
|
18
|
+
// OAuth providers
|
|
19
|
+
"google-gemini-cli": { provider: "google-gemini-cli", id: "gemini-2.5-flash" },
|
|
20
|
+
"openai-codex": { provider: "openai-codex", id: "gpt-5.1-codex-mini" },
|
|
21
|
+
};
|
|
22
|
+
/** Human-readable labels for the three API-key providers, used in preamble copy. */
|
|
23
|
+
const API_KEY_PROVIDER_LABELS = {
|
|
24
|
+
google: "Google Gemini",
|
|
25
|
+
openai: "OpenAI",
|
|
26
|
+
anthropic: "Anthropic",
|
|
27
|
+
};
|
|
31
28
|
function sortModels(models, preferredProvider) {
|
|
32
29
|
return [...models].sort((a, b) => {
|
|
33
30
|
const aPreferred = preferredProvider && a.provider === preferredProvider ? -1 : 0;
|
|
@@ -163,7 +160,9 @@ async function runLoginDialog(ctx, providerId) {
|
|
|
163
160
|
return false;
|
|
164
161
|
}
|
|
165
162
|
async function runApiKeySetup(ctx, provider) {
|
|
166
|
-
const
|
|
163
|
+
const label = API_KEY_PROVIDER_LABELS[provider];
|
|
164
|
+
ctx.ui.notify(`OpenCandle stores your ${label} API key locally and only sends it to ${label}.`, "info");
|
|
165
|
+
const key = await ctx.ui.input(`Paste your ${label} API key for OpenCandle`, "sk-...");
|
|
167
166
|
const trimmed = key?.trim();
|
|
168
167
|
if (!trimmed) {
|
|
169
168
|
ctx.ui.notify("No API key entered.", "warning");
|
|
@@ -171,7 +170,32 @@ async function runApiKeySetup(ctx, provider) {
|
|
|
171
170
|
}
|
|
172
171
|
ctx.modelRegistry.authStorage.set(provider, { type: "api_key", key: trimmed });
|
|
173
172
|
ctx.modelRegistry.refresh();
|
|
174
|
-
ctx.ui.notify(
|
|
173
|
+
ctx.ui.notify(`${label} API key saved to OpenCandle.`, "info");
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Attempt to activate the registered default model for `authProviderId`.
|
|
178
|
+
* Returns `true` on success, `false` if no default is registered, the default
|
|
179
|
+
* isn't currently available in `getAvailable()`, or `api.setModel` fails (in
|
|
180
|
+
* which case the caller should fall through to the model picker).
|
|
181
|
+
*/
|
|
182
|
+
async function activateDefaultModel(api, ctx, authProviderId) {
|
|
183
|
+
const defaultModel = DEFAULT_LLM_MODELS[authProviderId];
|
|
184
|
+
if (!defaultModel) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
ctx.modelRegistry.refresh();
|
|
188
|
+
const match = ctx.modelRegistry
|
|
189
|
+
.getAvailable()
|
|
190
|
+
.find((candidate) => candidate.provider === defaultModel.provider && candidate.id === defaultModel.id);
|
|
191
|
+
if (!match) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
const ok = await api.setModel(match);
|
|
195
|
+
if (!ok) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
ctx.ui.notify(`Model selected: ${match.provider}/${match.id}`, "info");
|
|
175
199
|
return true;
|
|
176
200
|
}
|
|
177
201
|
async function selectModel(api, ctx, preferredProvider) {
|
|
@@ -204,10 +228,6 @@ async function runLlmSetup(api, ctx, mode) {
|
|
|
204
228
|
return "ready";
|
|
205
229
|
}
|
|
206
230
|
if (requirement === "select_model") {
|
|
207
|
-
setSetupChrome(ctx, "Choose an AI model", [
|
|
208
|
-
"You already have at least one Pi-connected provider.",
|
|
209
|
-
"Pick the model OpenCandle should use for chat and analysis.",
|
|
210
|
-
]);
|
|
211
231
|
const selected = await selectModel(api, ctx);
|
|
212
232
|
if (selected) {
|
|
213
233
|
return "ready";
|
|
@@ -223,15 +243,7 @@ async function runLlmSetup(api, ctx, mode) {
|
|
|
223
243
|
}
|
|
224
244
|
continue;
|
|
225
245
|
}
|
|
226
|
-
|
|
227
|
-
"Welcome to OpenCandle.",
|
|
228
|
-
"Choose sign-in or paste an API key to enable chat and analysis.",
|
|
229
|
-
]);
|
|
230
|
-
const choice = await ctx.ui.select("Welcome to OpenCandle", [
|
|
231
|
-
"Sign in",
|
|
232
|
-
"Paste API key",
|
|
233
|
-
"Exit setup",
|
|
234
|
-
]);
|
|
246
|
+
const choice = await ctx.ui.select("Welcome to OpenCandle — sign in or paste an API key to start chatting", ["Sign in", "Paste API key", "Exit setup"]);
|
|
235
247
|
if (choice !== "Sign in" && choice !== "Paste API key") {
|
|
236
248
|
if (mode === "startup") {
|
|
237
249
|
ctx.ui.notify("OpenCandle needs an AI model before chat can start.", "warning");
|
|
@@ -253,6 +265,11 @@ async function runLlmSetup(api, ctx, mode) {
|
|
|
253
265
|
if (!loggedIn) {
|
|
254
266
|
continue;
|
|
255
267
|
}
|
|
268
|
+
// Try the registered default for the provider we just signed into —
|
|
269
|
+
// this is the fast path that avoids the model picker entirely.
|
|
270
|
+
if (await activateDefaultModel(api, ctx, providerId)) {
|
|
271
|
+
return "ready";
|
|
272
|
+
}
|
|
256
273
|
const selected = await selectModel(api, ctx, providerId);
|
|
257
274
|
if (selected) {
|
|
258
275
|
return "ready";
|
|
@@ -267,91 +284,21 @@ async function runLlmSetup(api, ctx, mode) {
|
|
|
267
284
|
if (!saved) {
|
|
268
285
|
continue;
|
|
269
286
|
}
|
|
287
|
+
// Try the registered default for the provider we just pasted a key for.
|
|
288
|
+
if (await activateDefaultModel(api, ctx, provider)) {
|
|
289
|
+
return "ready";
|
|
290
|
+
}
|
|
270
291
|
const selected = await selectModel(api, ctx, provider);
|
|
271
292
|
if (selected) {
|
|
272
293
|
return "ready";
|
|
273
294
|
}
|
|
274
295
|
}
|
|
275
296
|
}
|
|
276
|
-
function hasFinanceKeys(readiness) {
|
|
277
|
-
return readiness.hasAlphaVantage && readiness.hasFred;
|
|
278
|
-
}
|
|
279
|
-
function upsertFinanceKey(config, provider, apiKey) {
|
|
280
|
-
return {
|
|
281
|
-
...config,
|
|
282
|
-
providers: {
|
|
283
|
-
...config.providers,
|
|
284
|
-
[provider]: {
|
|
285
|
-
...(config.providers?.[provider] ?? {}),
|
|
286
|
-
apiKey,
|
|
287
|
-
},
|
|
288
|
-
},
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
async function runFinanceSetup(ctx, forcePrompt) {
|
|
292
|
-
const fileConfig = loadFileConfig();
|
|
293
|
-
const readiness = getFinanceProviderReadiness();
|
|
294
|
-
if (hasFinanceKeys(readiness)) {
|
|
295
|
-
saveOnboardingState({ version: ONBOARDING_VERSION, financeSetupStatus: "completed" });
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
const onboardingState = loadOnboardingState();
|
|
299
|
-
if (!forcePrompt &&
|
|
300
|
-
(onboardingState.financeSetupStatus === "dismissed" ||
|
|
301
|
-
onboardingState.financeSetupStatus === "completed")) {
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
setSetupChrome(ctx, "Connect market data providers", [
|
|
305
|
-
"Alpha Vantage unlocks fundamentals, earnings, and DCF.",
|
|
306
|
-
"FRED unlocks interest rates, inflation, and macro data.",
|
|
307
|
-
]);
|
|
308
|
-
const choice = await ctx.ui.select("Connect market data providers (optional)", [
|
|
309
|
-
"Yes",
|
|
310
|
-
"Skip for now",
|
|
311
|
-
]);
|
|
312
|
-
if (choice !== "Yes") {
|
|
313
|
-
saveOnboardingState({ version: ONBOARDING_VERSION, financeSetupStatus: "dismissed" });
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
let nextConfig = fileConfig;
|
|
317
|
-
let nextReadiness = readiness;
|
|
318
|
-
if (!nextReadiness.hasAlphaVantage) {
|
|
319
|
-
await openInBrowser(ALPHA_VANTAGE_SIGNUP_URL).catch(() => { });
|
|
320
|
-
ctx.ui.notify("Opening Alpha Vantage signup in your browser...", "info");
|
|
321
|
-
const alphaKey = await ctx.ui.input("Alpha Vantage API key (optional)", "Enter key or leave blank");
|
|
322
|
-
const trimmed = alphaKey?.trim();
|
|
323
|
-
if (trimmed) {
|
|
324
|
-
nextConfig = upsertFinanceKey(nextConfig, "alphaVantage", trimmed);
|
|
325
|
-
nextReadiness = { ...nextReadiness, hasAlphaVantage: true };
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
if (!nextReadiness.hasFred) {
|
|
329
|
-
await openInBrowser(FRED_SIGNUP_URL).catch(() => { });
|
|
330
|
-
ctx.ui.notify("Opening FRED API key page in your browser...", "info");
|
|
331
|
-
const fredKey = await ctx.ui.input("FRED API key (optional)", "Enter key or leave blank");
|
|
332
|
-
const trimmed = fredKey?.trim();
|
|
333
|
-
if (trimmed) {
|
|
334
|
-
nextConfig = upsertFinanceKey(nextConfig, "fred", trimmed);
|
|
335
|
-
nextReadiness = { ...nextReadiness, hasFred: true };
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
if (nextConfig !== fileConfig) {
|
|
339
|
-
saveFileConfig(nextConfig);
|
|
340
|
-
}
|
|
341
|
-
const status = hasFinanceKeys(nextReadiness) ? "completed" : "dismissed";
|
|
342
|
-
saveOnboardingState({ version: ONBOARDING_VERSION, financeSetupStatus: status });
|
|
343
|
-
}
|
|
344
297
|
export async function runOpenCandleSetup(api, ctx, options = { mode: "startup" }) {
|
|
345
298
|
const initialRequirement = getLlmSetupRequirement(ctx);
|
|
346
299
|
if (initialRequirement !== "ready" || options.mode === "manual") {
|
|
347
|
-
|
|
348
|
-
if (result === "shutdown" || result === "cancelled") {
|
|
349
|
-
clearSetupChrome(ctx);
|
|
350
|
-
return result;
|
|
351
|
-
}
|
|
300
|
+
return runLlmSetup(api, ctx, options.mode);
|
|
352
301
|
}
|
|
353
|
-
await runFinanceSetup(ctx, options.forceFinancePrompt ?? options.mode === "manual");
|
|
354
|
-
clearSetupChrome(ctx);
|
|
355
302
|
return "ready";
|
|
356
303
|
}
|
|
357
304
|
//# sourceMappingURL=setup.js.map
|
package/dist/pi/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/pi/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/pi/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AgentTool } from "@
|
|
2
|
-
import type { ToolDefinition } from "@
|
|
1
|
+
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
3
3
|
import type { TSchema } from "@sinclair/typebox";
|
|
4
4
|
export declare function agentToolToPiTool<TParams extends TSchema, TDetails>(tool: AgentTool<TParams, TDetails>): ToolDefinition<TParams, TDetails>;
|
|
5
5
|
export declare function getOpenCandleToolDefinitions(): ToolDefinition[];
|
package/dist/pi/tool-adapter.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { getAllTools } from "../tools/index.js";
|
|
2
|
+
import { getDefaults } from "../memory/tool-defaults.js";
|
|
3
|
+
import { wrapWithDefaults } from "../runtime/tool-defaults-wrapper.js";
|
|
2
4
|
export function agentToolToPiTool(tool) {
|
|
3
5
|
return {
|
|
4
6
|
name: tool.name,
|
|
@@ -12,6 +14,17 @@ export function agentToolToPiTool(tool) {
|
|
|
12
14
|
};
|
|
13
15
|
}
|
|
14
16
|
export function getOpenCandleToolDefinitions() {
|
|
15
|
-
return getAllTools()
|
|
17
|
+
return getAllTools()
|
|
18
|
+
.map((tool) => ({ tool, defaults: safeGetDefaults(tool.name) }))
|
|
19
|
+
.filter(({ defaults }) => defaults.__enabled !== false)
|
|
20
|
+
.map(({ tool, defaults }) => agentToolToPiTool(wrapWithDefaults(tool, defaults)));
|
|
21
|
+
}
|
|
22
|
+
function safeGetDefaults(toolName) {
|
|
23
|
+
try {
|
|
24
|
+
return getDefaults(toolName);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
16
29
|
}
|
|
17
30
|
//# sourceMappingURL=tool-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/pi/tool-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/pi/tool-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAC/B,IAAkC;IAElC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;QAClD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,WAAW,EAAE;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/D,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC;SACtD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -6,6 +6,21 @@ export interface PromptContextOptions {
|
|
|
6
6
|
memoryContext?: string;
|
|
7
7
|
providerStatus?: string;
|
|
8
8
|
addonToolDescriptions?: string[];
|
|
9
|
+
/**
|
|
10
|
+
* Optional fallback-route context (router-mode only). When present, a
|
|
11
|
+
* fallback playbook and an Assumptions block are slotted into
|
|
12
|
+
* `workflow-instructions`. Mutually exclusive with `workflowInstructions` —
|
|
13
|
+
* if both are set, `workflowInstructions` wins (rule-path compatibility).
|
|
14
|
+
*/
|
|
15
|
+
fallbackContext?: FallbackContext;
|
|
16
|
+
}
|
|
17
|
+
export interface FallbackContext {
|
|
18
|
+
/** Pre-rendered Assumptions block from the router output. */
|
|
19
|
+
assumptionsBlock: string;
|
|
20
|
+
/** Router `missing_required` list. When non-empty, the prompt instructs ask_user. */
|
|
21
|
+
missingRequired: string[];
|
|
22
|
+
/** Optional free-text describing entities/slots for context. */
|
|
23
|
+
extraContext?: string;
|
|
9
24
|
}
|
|
10
25
|
/**
|
|
11
26
|
* Assembles the system prompt from composable, budgeted sections.
|
|
@@ -24,3 +39,10 @@ export declare class PromptContextBuilder {
|
|
|
24
39
|
*/
|
|
25
40
|
populateFromOptions(options: PromptContextOptions): this;
|
|
26
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Fallback playbook — rendered when the router picks `route: "fallback"`.
|
|
44
|
+
* Composes with the universal analyst stance in `base-role`/`safety-rules`.
|
|
45
|
+
* Instructs tool-first, commit-with-reasoning, ask_user when required slots
|
|
46
|
+
* are missing. Contains NO refusal or hedging language.
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildFallbackPlaybook(ctx: FallbackContext): string;
|
|
@@ -47,6 +47,9 @@ export class PromptContextBuilder {
|
|
|
47
47
|
if (options.workflowInstructions) {
|
|
48
48
|
this.setSection("workflow-instructions", options.workflowInstructions);
|
|
49
49
|
}
|
|
50
|
+
else if (options.fallbackContext) {
|
|
51
|
+
this.setSection("workflow-instructions", buildFallbackPlaybook(options.fallbackContext));
|
|
52
|
+
}
|
|
50
53
|
if (options.memoryContext) {
|
|
51
54
|
this.setSection("memory-context", formatMemorySection(options.memoryContext));
|
|
52
55
|
}
|
|
@@ -57,19 +60,47 @@ export class PromptContextBuilder {
|
|
|
57
60
|
return this;
|
|
58
61
|
}
|
|
59
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Fallback playbook — rendered when the router picks `route: "fallback"`.
|
|
65
|
+
* Composes with the universal analyst stance in `base-role`/`safety-rules`.
|
|
66
|
+
* Instructs tool-first, commit-with-reasoning, ask_user when required slots
|
|
67
|
+
* are missing. Contains NO refusal or hedging language.
|
|
68
|
+
*/
|
|
69
|
+
export function buildFallbackPlaybook(ctx) {
|
|
70
|
+
const missingLine = ctx.missingRequired.length > 0
|
|
71
|
+
? `\n## Missing Required Information\nThe following slots are required but not yet filled: ${ctx.missingRequired.join(", ")}. Call the \`ask_user\` tool to collect each one BEFORE committing to a final answer. Do not guess or assume these values.`
|
|
72
|
+
: "";
|
|
73
|
+
const extraLine = ctx.extraContext ? `\n## Additional Context\n${ctx.extraContext}` : "";
|
|
74
|
+
return `## Fallback Playbook
|
|
75
|
+
This turn did not match a structured workflow, but you still commit to an answer under the analyst stance. Follow this playbook:
|
|
76
|
+
|
|
77
|
+
1. Tool-first: fetch relevant data with your available tools before stating prices, levels, or metrics.
|
|
78
|
+
2. Anchor on the Assumptions block below — it carries the router's best reading of what the user said and what came from saved preferences. Reproduce the block in your response exactly as written.
|
|
79
|
+
3. Commit: give a concrete, specific answer (entry zone, target, allocation, recommendation, explanation — whatever the question asked for). Do not refuse. Do not hedge into vagueness. Low confidence is a legitimate answer; refusal is not.
|
|
80
|
+
4. Attach reasoning, a confidence band, and an invalidation condition to every committal response.${missingLine}${extraLine}
|
|
81
|
+
|
|
82
|
+
${ctx.assumptionsBlock}
|
|
83
|
+
|
|
84
|
+
Response format:
|
|
85
|
+
- Start with the Assumptions block above exactly as written. Do not relabel source attribution anywhere else.
|
|
86
|
+
- Commit to specifics. Present numeric data in tables when comparing multiple values.
|
|
87
|
+
- Flag downside and risks loudly; never downplay them.`;
|
|
88
|
+
}
|
|
60
89
|
// --- Section content ---
|
|
61
|
-
const BASE_ROLE = `You are OpenCandle, a
|
|
90
|
+
const BASE_ROLE = `You are OpenCandle, a research analyst for investors and traders.
|
|
62
91
|
|
|
63
92
|
## Your Role
|
|
64
|
-
You
|
|
93
|
+
You are an analyst, not a fiduciary advisor. When asked for entry levels, price targets, stops, position sizes, or allocations, you COMMIT to specific numbers backed by the data you fetched. Uncertainty is expressed as a confidence band and an invalidation level — never as refusal. Refusal-shaped hedges are wrong for this product; users are here for an analyst's view. Frame views as analyst opinion ("our read", "the data suggests", "analyst view"), never as personalised fiduciary guidance ("tailored to your situation", "given your full financial picture").`;
|
|
65
94
|
const SAFETY_RULES = `## Guidelines
|
|
66
95
|
- Always fetch data with tools before stating prices, ratios, or metrics. Never guess financial numbers. Every substantive response should be backed by at least one tool call — if you find yourself writing a response with zero tool calls, stop and think about what data would make it better.
|
|
96
|
+
- Commit to specifics when asked for entries, targets, stops, allocations, or position sizes. Refusal is not an acceptable output shape.
|
|
97
|
+
- Each committal response carries FOUR things: the specific number or range, a reasoning chain naming the data points you used, a confidence band, and an invalidation level (what would break the thesis).
|
|
67
98
|
- For options analysis, use get_option_chain to see the full chain with Greeks. Pay attention to put/call ratio, unusual volume, and IV levels.
|
|
68
99
|
- Present numerical data in tables when comparing multiple securities.
|
|
69
100
|
- Include data timestamps so users know how fresh the information is.
|
|
70
|
-
- Be concise and actionable. Lead with the
|
|
71
|
-
- Flag risks
|
|
72
|
-
-
|
|
101
|
+
- Be concise and actionable. Lead with the commitment, then supporting data and reasoning.
|
|
102
|
+
- Flag downside and risks loudly through invalidation levels and honest confidence bands. A bearish analyst view with conviction is valid output. Never downplay downside; also never refuse in its name.
|
|
103
|
+
- Calibrate explanation depth from conversational signals — user vocabulary, prior turns, explicit asks ("explain it simply"). The commit-to-specifics bar is identical for beginners and sophisticated users; only the depth of supporting explanation varies.
|
|
73
104
|
- Reuse prior tool outputs when they already answer the question. Do not re-fetch the same symbol and parameters unless you need a missing field or fresher timestamp.
|
|
74
105
|
- If one provider is missing data, continue with the remaining tools and clearly label unavailable metrics instead of aborting the entire response.
|
|
75
106
|
|
|
@@ -95,7 +126,8 @@ const TOOL_CATALOG = `## Available Tools
|
|
|
95
126
|
- **Fundamentals**: get_company_overview, get_financials, get_earnings, compute_dcf, compare_companies, get_sec_filings — company financials, valuation metrics, DCF intrinsic value, peer comparison, and SEC EDGAR filings (10-K, 10-Q, 8-K)
|
|
96
127
|
- **Technical Analysis**: get_technical_indicators, backtest_strategy — SMA, EMA, RSI, MACD, Bollinger Bands, OBV, VWAP computed from price data, plus simple strategy backtesting
|
|
97
128
|
- **Macro**: get_economic_data, get_fear_greed — FRED economic indicators and market sentiment
|
|
98
|
-
- **Sentiment**: get_reddit_sentiment,
|
|
129
|
+
- **Sentiment**: get_reddit_sentiment, get_twitter_sentiment, get_web_sentiment, get_sentiment_trend, get_sentiment_summary — retail and news sentiment from Reddit, Twitter/X, and web sources with historical trends and cross-source divergence detection
|
|
130
|
+
- **Web Search**: search_web — breaking news, earnings context, company events, regulatory developments. When a dedicated tool can answer the question (quotes, fundamentals, earnings, macro, SEC filings, sentiment), use that tool instead — do not add search_web as a supplementary source for data available through dedicated tools
|
|
99
131
|
- **Options**: get_option_chain — full options chain with strikes, bids/asks, volume, OI, IV, and computed Greeks (delta, gamma, theta, vega, rho)
|
|
100
132
|
- **Portfolio**: track_portfolio, analyze_risk, manage_watchlist, analyze_correlation, track_prediction — position tracking, P&L, Sharpe ratio, VaR, watchlist with price alerts, correlation matrix, and prediction tracking with accuracy scoring
|
|
101
133
|
- **User Interaction**: ask_user — ask the user a clarification question when their request is ambiguous or missing key details`;
|
|
@@ -116,11 +148,15 @@ When analyzing a stock, follow these steps in order:
|
|
|
116
148
|
2. **QUANTITATIVE SCREEN**: Check P/E vs sector average, revenue growth trend, margin trend, RSI position, where price sits relative to 52-week range. State PASS or FAIL on each.
|
|
117
149
|
3. **QUALITATIVE ASSESSMENT**: Earnings surprise trend, sentiment divergence from price action, macro headwinds or tailwinds affecting this stock or sector.
|
|
118
150
|
4. **RISK CHECK**: Volatility, max drawdown history, VaR. Flag anything in the danger zone.
|
|
119
|
-
5. **SYNTHESIS**: State your reasoning chain explicitly: "Because [data point] + [data point],
|
|
151
|
+
5. **SYNTHESIS**: Commit to a specific call (entry zone / target / stop / allocation / position size — whichever the question asked for). State your reasoning chain explicitly: "Because [data point] + [data point], our read is [thesis]." Attach a confidence band and an invalidation level.
|
|
120
152
|
|
|
121
|
-
##
|
|
122
|
-
|
|
153
|
+
## Commit Shape
|
|
154
|
+
Every committal response MUST carry four elements:
|
|
155
|
+
- **The commitment** — a specific number or tight range (entry zone, target, stop, allocation %, position size). Not "consider a range around current price"; give the zone.
|
|
156
|
+
- **Reasoning chain** — name the data points you used ("P/E 28 vs sector 22, RSI 41, DCF midpoint $X, revenue growth 18% YoY").
|
|
157
|
+
- **Confidence band** — e.g. "moderate conviction", "50% confidence", "high conviction given the sector tailwind". Low confidence is a legitimate answer; refusal is not.
|
|
158
|
+
- **Invalidation level** — what would change your view, stated concretely ("thesis breaks if quarterly revenue growth falls below 15%", "invalidated on a daily close below $120 with expanding volume").
|
|
123
159
|
|
|
124
|
-
##
|
|
125
|
-
|
|
160
|
+
## Assumption Disclosure
|
|
161
|
+
Workflow prompts include a pre-rendered "Assumptions" block with correct source attribution (user-specified, saved preference, or default). Start your response with that block exactly as written. Do NOT independently relabel any value's source anywhere in your response. The assumptions block is the single authoritative provenance representation.`;
|
|
126
162
|
//# sourceMappingURL=context-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/prompts/context-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/prompts/context-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-facing disclaimer text. Rendered OUTSIDE the LLM instruction context as
|
|
3
|
+
* a custom display message (see `src/pi/opencandle-extension.ts`), so it no
|
|
4
|
+
* longer steers model behavior but still surfaces on every assistant turn.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DISCLAIMER_TEXT: string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-facing disclaimer text. Rendered OUTSIDE the LLM instruction context as
|
|
3
|
+
* a custom display message (see `src/pi/opencandle-extension.ts`), so it no
|
|
4
|
+
* longer steers model behavior but still surfaces on every assistant turn.
|
|
5
|
+
*/
|
|
6
|
+
export const DISCLAIMER_TEXT = "OpenCandle is a research and analysis tool, not a fiduciary financial advisor. " +
|
|
7
|
+
"Views, targets, and allocations are informational analyst output — not personalized recommendations. " +
|
|
8
|
+
"Verify independently before acting.";
|
|
9
|
+
//# sourceMappingURL=disclaimer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disclaimer.js","sourceRoot":"","sources":["../../src/prompts/disclaimer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAC1B,iFAAiF;IACjF,uGAAuG;IACvG,qCAAqC,CAAC"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { PortfolioSlots, OptionsScreenerSlots, CompareAssetsSlots, SlotResolution, SlotSource } from "../routing/types.js";
|
|
2
|
+
import type { RouterOutput } from "../routing/router-types.js";
|
|
2
3
|
/**
|
|
3
4
|
* Build a deterministic assumption disclosure block from resolution.sources.
|
|
4
5
|
* This is the single authoritative provenance representation.
|
|
5
6
|
*/
|
|
6
7
|
export declare function buildDisclosureBlock(slotValues: Record<string, unknown>, slotSources: Record<string, SlotSource | undefined>, workflowConstraints?: string[]): string;
|
|
8
|
+
/**
|
|
9
|
+
* Render the Assumptions block directly from router output. Workflow and
|
|
10
|
+
* fallback routes both call this so provenance labels render consistently.
|
|
11
|
+
* Matches `buildDisclosureBlock` labels verbatim (`User-specified` /
|
|
12
|
+
* `From saved preferences` / `Defaults`).
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildAssumptionsBlockFromRouter(slots: RouterOutput["slots"], workflowConstraints?: string[]): string;
|
|
7
15
|
export declare function buildPortfolioPrompt(resolution: SlotResolution<PortfolioSlots>): string;
|
|
8
16
|
export declare function buildOptionsScreenerPrompt(resolution: SlotResolution<OptionsScreenerSlots>): string;
|
|
9
17
|
export declare function buildCompareAssetsPrompt(resolution: SlotResolution<CompareAssetsSlots>): string;
|