shadowinlife
fc6ee69f4b
fix(memory): gate features behind flags per maintainer review
...
- Gate find_relevant importance multiplier behind VT_MEMORY_DECAY
- Gate content deduplication behind VT_MEMORY_QUALITY
- Remove compute_hotness / VT_MEMORY_HOTNESS_DECAY (out of scope)
- Remove hotness_decay test file
- Update tests to enable required feature flags
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 15:17:29 +08:00
shadowinlife
b2953a86bb
chore: remove benchmark suite from Phase 1 contribution
...
Evaluation framework (benchmarks, eval tests) moved to separate
contribution scope. Community discussion will determine whether
these are wanted as part of the memory lifecycle work.
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 15:01:46 +08:00
Haozhe Wu
a44e1be357
docs: add 2026-07-21 news across all 5 READMEs
2026-07-21 14:58:18 +08:00
shadowinlife
a8bf593d94
test(memory): skip benchmark suite when corpus files are absent
...
Benchmark corpus lives outside version control (tmp/benchmark_corpus/).
CI runners do not have these files. Skip the entire benchmark module at
collection time rather than failing individual tests.
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 14:58:11 +08:00
shadowinlife
8033844364
fix(memory): address important-level code review findings
...
- Move _HOTNESS_HALF_LIFE_DAYS and _HOTNESS_DECAY_RATE to module-level constants
- Move datetime import to module level in persistent.py
- Remove capacity gate from run_gc (caller decides when to trigger)
- Log warnings when _update_frontmatter_field cannot find frontmatter delimiters
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 14:46:38 +08:00
shadowinlife
c79d9a3e56
fix(memory): address code review findings for Phase 1
...
- Handle add() returning None (dedup blocked) in remember_tool.py
- Call track_access() in _recall() to enable importance decay
- Periodically clean up expired entries from _recent_hashes
- Remove duplicated is_hotness_decay_enabled() from lifecycle.py
- Use atomic write-then-rename in _update_frontmatter_field
- Protect _EVENT_DELTAS with MappingProxyType
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 14:36:21 +08:00
ebujinovch
555dcec560
feat(correlation): regime timeline endpoint and UI (edge density + hysteresis)
...
Implements the proposal in #719 : Mode 1 of the correlation-regime skill
(#557 ) wired into the /correlation surface. New GET /correlation/regime
(same auth, shared rate-limit budget) returns edge density, causally
smoothed density, hysteresis FUSED states and episodes over the requested
window; the Correlation tab gains an opt-in timeline strip above the
matrix. The loader fallback-chain fetch and close-series extraction are
extracted from compute_correlation_matrix for reuse (pure code motion);
existing /correlation behavior is unchanged.
Signed-off-by: ebujinovch <ch.ebujinov@gmail.com >
2026-07-21 08:22:28 +02:00
shadowinlife
4cbb9c3243
chore: remove bench_report.json and revert .gitignore changes
...
These files are not part of the community contribution scope.
Benchmark results are kept locally for validation only.
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 14:15:50 +08:00
shadowinlife
6ffa63be8d
feat(memory): add content dedup, hotness decay and P@5 benchmark
...
- Implement SHA-256 content-hash deduplication with 30s sliding window
- Add compute_hotness() with sigmoid frequency × exponential recency decay
- Register VT_MEMORY_HOTNESS_DECAY feature flag (default off)
- Add P@5/MRR/NDCG@5 evaluation framework with A/B comparison
- Benchmark shows +12.9% P@5 improvement with lifecycle-aware retrieval
- 35 new tests (17 dedup + 8 hotness + 10 benchmark)
Refs: #732
Signed-off-by: shadowinlife <shadowinlife@gmail.com >
2026-07-21 14:12:30 +08:00
Haozhe Wu
251e7e0987
Merge PR #689 : complete partial market-data results through fallback
...
Rebased onto main and deduped — reuse the existing _restore_original_codes helper instead of the PR's parallel _map_result_to_requested; apply the same missing-symbol completion to both _fetch_auto and the explicit-source path. Fixes #681 .
2026-07-21 13:42:04 +08:00
xkam7ar
89ac9eb896
fix(data): fall back for missing symbols
...
Signed-off-by: xkam7ar <kmoteallemi@icloud.com >
2026-07-21 13:38:21 +08:00
Haozhe Wu
bcf318d676
Merge pull request #644 from tyj147454413-cmd/codex/pr543-okx-loader-robustness
...
fix(okx): bound history fetches and handle rate limits
2026-07-21 12:26:29 +08:00
Haozhe Wu
cab87bd40a
Merge pull request #731 from octo-patch/octopatch/minimax-cn-endpoint
...
feat: expose MiniMax regional API endpoints
2026-07-21 12:26:23 +08:00
Haozhe Wu
2fe20faaf9
Merge pull request #748 from Robin1987China/shadow-daily-entry-hour-gate
...
fix(shadow): skip the entry-hour gate on daily bars
2026-07-21 12:26:18 +08:00
Haozhe Wu
857ceac313
Merge pull request #749 from Robin1987China/fix-journal-parsers-empty-code
...
fix(tools): skip blank/NaN symbol rows in futu and generic journal parsers
2026-07-21 12:26:12 +08:00
Haozhe Wu
171185ffd5
Merge pull request #750 from Robin1987China/fix-mcp-host-guard-ipv6
...
fix(mcp): accept IPv6 and case-variant hosts in the network guard
2026-07-21 12:26:07 +08:00
Haozhe Wu
2867365845
Merge pull request #725 from HKUDS/dependabot/pip/websockets-16.1.1
...
build(deps): bump websockets from 15.0.1 to 16.1.1
2026-07-21 12:17:13 +08:00
Haozhe Wu
9216e4baa3
Merge pull request #753 from HKUDS/dependabot/pip/pip-minor-patch-5ba2c1a785
...
build(deps): bump the pip-minor-patch group across 1 directory with 20 updates
2026-07-21 12:16:35 +08:00
Haozhe Wu
f3069b2f03
Merge pull request #754 from HKUDS/dependabot/npm_and_yarn/frontend/npm-minor-patch-0b632d9036
...
build(deps): bump the npm-minor-patch group across 1 directory with 6 updates
2026-07-21 12:15:30 +08:00
dependabot[bot]
5066f99f4d
build(deps): bump the npm-minor-patch group across 1 directory with 6 updates
...
Bumps the npm-minor-patch group with 6 updates in the /frontend directory:
| Package | From | To |
| --- | --- | --- |
| [@fontsource/inter](https://github.com/fontsource/font-files/tree/HEAD/fonts/google/inter ) | `5.2.8` | `5.3.0` |
| [@fontsource/jetbrains-mono](https://github.com/fontsource/font-files/tree/HEAD/fonts/google/jetbrains-mono ) | `5.2.8` | `5.3.0` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react ) | `1.24.0` | `1.25.0` |
| [react-i18next](https://github.com/i18next/react-i18next ) | `17.0.9` | `17.0.10` |
| [autoprefixer](https://github.com/postcss/autoprefixer ) | `10.5.2` | `10.5.4` |
| [postcss](https://github.com/postcss/postcss ) | `8.5.18` | `8.5.20` |
Updates `@fontsource/inter` from 5.2.8 to 5.3.0
- [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md )
- [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/google/inter )
Updates `@fontsource/jetbrains-mono` from 5.2.8 to 5.3.0
- [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md )
- [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/google/jetbrains-mono )
Updates `lucide-react` from 1.24.0 to 1.25.0
- [Release notes](https://github.com/lucide-icons/lucide/releases )
- [Commits](https://github.com/lucide-icons/lucide/commits/1.25.0/packages/lucide-react )
Updates `react-i18next` from 17.0.9 to 17.0.10
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/react-i18next/compare/v17.0.9...v17.0.10 )
Updates `autoprefixer` from 10.5.2 to 10.5.4
- [Release notes](https://github.com/postcss/autoprefixer/releases )
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/postcss/autoprefixer/compare/10.5.2...10.5.4 )
Updates `postcss` from 8.5.18 to 8.5.20
- [Release notes](https://github.com/postcss/postcss/releases )
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/postcss/postcss/compare/8.5.18...8.5.20 )
---
updated-dependencies:
- dependency-name: "@fontsource/inter"
dependency-version: 5.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@fontsource/jetbrains-mono"
dependency-version: 5.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: lucide-react
dependency-version: 1.25.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: react-i18next
dependency-version: 17.0.10
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: autoprefixer
dependency-version: 10.5.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: postcss
dependency-version: 8.5.20
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-07-20 13:13:25 +00:00
Haozhe Wu
585b8f69cd
fix(frontend): render LaTeX math in chat via remark-math + KaTeX
...
LLM answers with \(...\)/\[...\] or $$ formulas rendered as plain text --
the markdown pipeline had no math plugin. Normalize LLM delimiters to $$
outside code segments (streaming-safe for unclosed fences), parse with
remark-math (single-$ disabled so dollar amounts like "$150 to $120"
never become formulas), render with rehype-katex.
2026-07-20 20:56:55 +08:00
Haozhe Wu
7abc2a8a03
docs: add 2026-07-20 news across all 5 READMEs
...
Providers (Anthropic native/SiliconFlow/iFlytek), MetaTrader 5 connector + mt5
source, llm-vision OCR, 80x signal vectorization, USD-M funding data, reliability
consolidation (#584 , 13 issues), options partial-close fix, and more. Keeps 3
entries visible; 2026-07-17 moved into the earlier-news details.
2026-07-20 19:07:11 +08:00
dependabot[bot]
76e8f518f0
build(deps): bump the pip-minor-patch group across 1 directory with 20 updates
...
Bumps the pip-minor-patch group with 20 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [langchain](https://github.com/langchain-ai/langchain ) | `1.3.13` | `1.3.14` |
| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2 ) | `5.11.0` | `5.12.1` |
| [ccxt](https://github.com/ccxt/ccxt ) | `4.5.64` | `4.5.67` |
| [fastapi](https://github.com/fastapi/fastapi ) | `0.139.0` | `0.139.2` |
| [matplotlib](https://github.com/matplotlib/matplotlib ) | `3.11.0` | `3.11.1` |
| [caio](https://github.com/mosquito/caio ) | `0.9.25` | `0.10.2` |
| [cyclopts](https://github.com/BrianPugh/cyclopts ) | `4.21.0` | `4.22.0` |
| [jaraco-functools](https://github.com/jaraco/jaraco.functools ) | `4.5.0` | `4.6.0` |
| [joserfc](https://github.com/authlib/joserfc ) | `1.7.3` | `1.7.4` |
| [langsmith](https://github.com/langchain-ai/langsmith-sdk ) | `0.10.2` | `0.10.6` |
| [narwhals](https://github.com/narwhals-dev/narwhals ) | `2.23.0` | `2.24.0` |
| [openai](https://github.com/openai/openai-python ) | `2.45.0` | `2.46.0` |
| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python ) | `1.43.0` | `1.44.0` |
| [peewee](https://github.com/coleifer/peewee ) | `4.2.1` | `4.2.6` |
| [platformdirs](https://github.com/tox-dev/platformdirs ) | `4.10.0` | `4.10.1` |
| [pydantic-core](https://github.com/pydantic/pydantic ) | `2.46.4` | `2.47.0` |
| [regex](https://github.com/mrabarnett/mrab-regex ) | `2026.7.10` | `2026.7.19` |
| [soupsieve](https://github.com/facelessuser/soupsieve ) | `2.8.4` | `2.9` |
| [tqdm](https://github.com/tqdm/tqdm ) | `4.68.4` | `4.69.0` |
| [yarl](https://github.com/aio-libs/yarl ) | `1.24.2` | `1.24.5` |
Updates `langchain` from 1.3.13 to 1.3.14
- [Release notes](https://github.com/langchain-ai/langchain/releases )
- [Commits](https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.3.14 )
Updates `pypdfium2` from 5.11.0 to 5.12.1
- [Release notes](https://github.com/pypdfium2-team/pypdfium2/releases )
- [Commits](https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.12.1 )
Updates `ccxt` from 4.5.64 to 4.5.67
- [Release notes](https://github.com/ccxt/ccxt/releases )
- [Commits](https://github.com/ccxt/ccxt/compare/v4.5.64...v4.5.67 )
Updates `fastapi` from 0.139.0 to 0.139.2
- [Release notes](https://github.com/fastapi/fastapi/releases )
- [Commits](https://github.com/fastapi/fastapi/compare/0.139.0...0.139.2 )
Updates `matplotlib` from 3.11.0 to 3.11.1
- [Release notes](https://github.com/matplotlib/matplotlib/releases )
- [Commits](https://github.com/matplotlib/matplotlib/compare/v3.11.0...v3.11.1 )
Updates `caio` from 0.9.25 to 0.10.2
- [Release notes](https://github.com/mosquito/caio/releases )
- [Commits](https://github.com/mosquito/caio/compare/0.9.25...0.10.2 )
Updates `cyclopts` from 4.21.0 to 4.22.0
- [Release notes](https://github.com/BrianPugh/cyclopts/releases )
- [Commits](https://github.com/BrianPugh/cyclopts/compare/v4.21.0...v4.22.0 )
Updates `jaraco-functools` from 4.5.0 to 4.6.0
- [Release notes](https://github.com/jaraco/jaraco.functools/releases )
- [Changelog](https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst )
- [Commits](https://github.com/jaraco/jaraco.functools/compare/v4.5.0...v4.6.0 )
Updates `joserfc` from 1.7.3 to 1.7.4
- [Release notes](https://github.com/authlib/joserfc/releases )
- [Changelog](https://github.com/authlib/joserfc/blob/main/docs/changelog.rst )
- [Commits](https://github.com/authlib/joserfc/compare/1.7.3...1.7.4 )
Updates `langsmith` from 0.10.2 to 0.10.6
- [Release notes](https://github.com/langchain-ai/langsmith-sdk/releases )
- [Commits](https://github.com/langchain-ai/langsmith-sdk/compare/v0.10.2...v0.10.6 )
Updates `narwhals` from 2.23.0 to 2.24.0
- [Release notes](https://github.com/narwhals-dev/narwhals/releases )
- [Commits](https://github.com/narwhals-dev/narwhals/compare/v2.23.0...v2.24.0 )
Updates `openai` from 2.45.0 to 2.46.0
- [Release notes](https://github.com/openai/openai-python/releases )
- [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md )
- [Commits](https://github.com/openai/openai-python/compare/v2.45.0...v2.46.0 )
Updates `opentelemetry-api` from 1.43.0 to 1.44.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-python/releases )
- [Changelog](https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md )
- [Commits](https://github.com/open-telemetry/opentelemetry-python/compare/v1.43.0...v1.44.0 )
Updates `peewee` from 4.2.1 to 4.2.6
- [Release notes](https://github.com/coleifer/peewee/releases )
- [Changelog](https://github.com/coleifer/peewee/blob/master/CHANGELOG.md )
- [Commits](https://github.com/coleifer/peewee/compare/4.2.1...4.2.6 )
Updates `platformdirs` from 4.10.0 to 4.10.1
- [Release notes](https://github.com/tox-dev/platformdirs/releases )
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst )
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.10.0...4.10.1 )
Updates `pydantic-core` from 2.46.4 to 2.47.0
- [Release notes](https://github.com/pydantic/pydantic/releases )
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md )
- [Commits](https://github.com/pydantic/pydantic/commits )
Updates `regex` from 2026.7.10 to 2026.7.19
- [Changelog](https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt )
- [Commits](https://github.com/mrabarnett/mrab-regex/compare/2026.7.10...2026.7.19 )
Updates `soupsieve` from 2.8.4 to 2.9
- [Release notes](https://github.com/facelessuser/soupsieve/releases )
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.8.4...2.9 )
Updates `tqdm` from 4.68.4 to 4.69.0
- [Release notes](https://github.com/tqdm/tqdm/releases )
- [Commits](https://github.com/tqdm/tqdm/compare/v4.68.4...v4.69.0 )
Updates `yarl` from 1.24.2 to 1.24.5
- [Release notes](https://github.com/aio-libs/yarl/releases )
- [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst )
- [Commits](https://github.com/aio-libs/yarl/compare/v1.24.2...v1.24.5 )
---
updated-dependencies:
- dependency-name: langchain
dependency-version: 1.3.14
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: pypdfium2
dependency-version: 5.12.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: ccxt
dependency-version: 4.5.67
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: fastapi
dependency-version: 0.139.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: matplotlib
dependency-version: 3.11.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: caio
dependency-version: 0.10.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: cyclopts
dependency-version: 4.22.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: jaraco-functools
dependency-version: 4.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: joserfc
dependency-version: 1.7.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: langsmith
dependency-version: 0.10.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: narwhals
dependency-version: 2.24.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: openai
dependency-version: 2.46.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: opentelemetry-api
dependency-version: 1.44.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: peewee
dependency-version: 4.2.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: platformdirs
dependency-version: 4.10.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: pydantic-core
dependency-version: 2.47.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: regex
dependency-version: 2026.7.19
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: soupsieve
dependency-version: '2.9'
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: tqdm
dependency-version: 4.69.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: yarl
dependency-version: 1.24.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-07-20 11:03:53 +00:00
Haozhe Wu
aaa1061b78
fix(options): honor partial-close quantity instead of flattening the lot
...
The options engine close branch computed cash/PnL from the full matched lot and
removed the whole position, ignoring the leg's requested qty — any partial close
wiped the entire lot with full PnL. Now an explicit leg qty closes only that many
contracts (clamped to the open size), cash/PnL scale to the closed fraction, and
the remainder stays open as a reduced-qty position; a close leg with no qty still
closes the whole lot (legacy). Closes #577 .
2026-07-20 19:00:53 +08:00
Haozhe Wu
c1f9f96a60
Merge PR #548 : feat(ocr): pluggable engine architecture + LLM vision OCR + configurable threshold
...
Self-fix on merge: the qwen-vl → llm-vision deprecation warning now calls out the
credential-source change (DASHSCOPE_API_KEY → configured LANGCHAIN_PROVIDER) so
existing DashScope users aren't surprised. Generalizes the shipped qwen-vl engine
into a provider-agnostic llm-vision engine + entry-point plugin discovery + OCR
threshold + quality metrics. Closes #547 .
2026-07-20 18:56:15 +08:00
Haozhe Wu
2400bbcbaa
Merge PR #695 : feat(providers): add native Anthropic Messages API support
...
Self-fix on merge: moved langchain-anthropic from core dependencies to an
[anthropic] optional extra (like [deepseek]) — _build_anthropic lazy-imports it
and raises an actionable install hint, so the base install stays lean. Resolved
llm.py conflicts against #563 's centralized get_llm_credentials + the anthropic
native adapter-mode branch. Closes #694 .
2026-07-20 18:55:21 +08:00
dependabot[bot]
8d27badecd
build(deps): bump websockets from 15.0.1 to 16.1.1
...
Bumps [websockets](https://github.com/python-websockets/websockets ) from 15.0.1 to 16.1.1.
- [Release notes](https://github.com/python-websockets/websockets/releases )
- [Commits](https://github.com/python-websockets/websockets/compare/15.0.1...16.1.1 )
---
updated-dependencies:
- dependency-name: websockets
dependency-version: 16.1.1
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-07-20 10:54:10 +00:00
Haozhe Wu
0c86356a77
docs(skill): market-data source count 22 → 23 (mt5 loader, #481 )
2026-07-20 18:51:50 +08:00
Haozhe Wu
11b4f62340
Merge PR #481 : feat: MetaTrader 5 (Exness) broker connector + mt5 market-data source
...
Red-lines verified PASS (mandate gate, structural trade_mode discriminator, no MCP
order exposure, sandbox-barred loader). Resolved additive conflicts: registry (mt5
loader alongside longbridge), pyproject (mt5 extra), CHANGELOG (kept both entries);
README/SKILL counts reconciled in the news pass. market_data =F/=X (yahoo) and mt5
forex routing coexist.
2026-07-20 18:48:32 +08:00
Haozhe Wu
5278469d0d
Merge PR #584 : Fix reliability across packaging, web, scheduler, swarm, and CLI
...
Consolidation resolving #603 #605 #611 #613 #617 #639 (named) + folded #583 #585 #587 #589 #591 #595 #599 .
Kept both dev-extra and slack-version packaging tests at merge.
2026-07-20 18:45:20 +08:00
Haozhe Wu
949ccad594
Merge PR #726 : fix: Robinhood connector account_number wiring + remote-MCP display shape
...
Reconciled the connector renderers with #735 (Longbridge schema-tolerant balances):
_print_connector_account now handles balances (broker_sdk) → remote-MCP nested
(Robinhood) → IBKR summary; positions use both remote-MCP shape and _first_present aliasing.
2026-07-20 18:44:45 +08:00
Haozhe Wu
b7c62c68a1
Merge PR #716 : feat(data): add historical USD-M funding settlements + maintenance brackets
...
Stray docs/superpowers/pr-drafts/pr1b-funding-brackets.md dropped at merge (repo never carries docs/ from contributor PRs).
2026-07-20 18:42:41 +08:00
Haozhe Wu
c2151a2269
fix(backtest): make vectorized _align writable (follow-up #698 )
...
The vectorized _align did in-place np.nan_to_num/clip on arrays taken from
pandas via .values/astype(copy=False), which are read-only views under pandas
copy-on-write, raising 'ValueError: assignment destination is read-only' on
current main. Force a writable copy for the per-symbol signal array and use the
copy-returning nan_to_num for the position matrix. Vectorization stays numerically
equivalent to the scalar path (assert_frame_equal tests pass).
2026-07-20 18:39:21 +08:00
Haozhe Wu
099948ec01
Merge PR #698 : perf: Signal alignment vectorization — 80x speedup
2026-07-20 18:37:45 +08:00
Haozhe Wu
8c627b00f7
test(cli): update provider-menu indices after SiliconFlow( #565 )+Spark( #537 ) inserts
...
Both PRs insert providers ahead of ollama/openai-codex in the init menu; the
combined order puts ollama at 17 and openai-codex at 18.
2026-07-20 18:33:20 +08:00
Haozhe Wu
add7b3f364
Merge PR #563 : refactor(providers): centralize credentials + fix gateway misroute ( closes #549 , #553 )
...
# Conflicts:
# agent/src/providers/capabilities.py
# agent/tests/test_llm.py
2026-07-20 18:32:08 +08:00
Haozhe Wu
7ba3bf2f5d
Merge PR #537 : feat(providers): add iFlytek Spark as an OpenAI-compatible provider
2026-07-20 18:31:33 +08:00
Haozhe Wu
3b9dba55eb
Merge PR #565 : feat: add SiliconFlow CN and Global providers
2026-07-20 18:31:33 +08:00
Haozhe Wu
e796a34dd6
Merge PR #663 : fix(codex): classify stream HTTP failures
2026-07-20 18:31:33 +08:00
Haozhe Wu
0802a535a6
Merge PR #641 : Honor cancellation before the first AgentLoop iteration ( closes #638 )
2026-07-20 18:31:33 +08:00
Haozhe Wu
205c940c99
Merge PR #704 : perf(swarm): cache MCP tool discovery specs to avoid redundant RPC calls
2026-07-20 18:31:33 +08:00
Haozhe Wu
015e1f7e3e
Merge PR #717 : fix(frontend): prevent insertBefore DOM race during streaming output
2026-07-20 18:31:33 +08:00
Haozhe Wu
7eff24ddf0
test(api): preserve #738 commented-key upsert coverage after folding into #742
2026-07-20 17:49:20 +08:00
Haozhe Wu
8b4dcaf313
fix(data): resolve Yahoo futures (=F) and forex (=X) suffix tickers
...
get_market_data could not resolve tickers like GC=F or EURUSD=X: detect_source
matched no pattern and fell to the 'tushare' default, routing them to
China-market loaders that cannot serve them; and the yahoo direct loader's
_is_supported guard rejected any non-.US/.HK/.NS/.BO symbol even though Yahoo's
public chart endpoint serves =F/=X verbatim.
Add =F/=X source patterns (route to yahoo) and accept =F/=X in the yahoo loader.
Closes #718
2026-07-20 17:46:14 +08:00
Haozhe Wu
2b31effe13
fix(cli): make connector positions/account renderers schema-tolerant
...
The shared 'connector positions'/'connector account' CLI renderers assumed the
IBKR result shape (position/avg_cost/sec_type/summary). broker_sdk connectors
such as Longbridge emit quantity/cost_price/market/balances, so every
non-matching key rendered as an empty cell.
Read key aliases (position|quantity, avg_cost|cost_price, sec_type|market) via a
None-aware _first_present helper (keeps a real zero qty), and render a balances
table when a connector returns 'balances' instead of IBKR 'summary' rows.
Closes #735
2026-07-20 17:46:14 +08:00
Haozhe Wu
57034a0fbc
Merge PR #743 : fix(api): keep hash characters inside quoted dotenv values
...
# Conflicts:
# agent/tests/test_api_infrastructure.py
2026-07-20 17:36:16 +08:00
Haozhe Wu
7558b8b86a
Merge PR #742 : fix(api): upsert last duplicate active dotenv key (also skips commented keys, folding in #738 )
2026-07-20 17:35:24 +08:00
Haozhe Wu
707ceb1c2b
Merge PR #744 : fix(options): treat non-positive spot/strike as intrinsic in BS helpers
2026-07-20 17:35:16 +08:00
Haozhe Wu
45b21ff516
Merge PR #741 : fix(pattern): reject window=1 for trend_line_slope
2026-07-20 17:35:16 +08:00
Haozhe Wu
2c679b2a23
Merge PR #740 : fix(options): catch OverflowError in options metrics annualization
2026-07-20 17:35:16 +08:00