| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
test(extraction): lock article/blog/news output against content-root regressions | 3 个月前 | |
test(extract,crawl): integration fixtures for markdown post-process | 4 个月前 | |
test(extract,crawl): integration fixtures for markdown post-process | 4 个月前 | |
feat(fetch): thin frameless pages are partial/thin_content, not shell | 2 个月前 | |
test(skills): integration suite — per-agent layouts, upgrade/refuse/symlink, sweep, windsurf salvage | 2 个月前 | |
test(plugins): add integration test for full plugin lifecycle | 5 个月前 | |
test(watch): failing repro — change past fetch body-budget goes undetected The watch scheduler hashes the fetch tool's returned markdown, which the tool clips to its presentation body-token budget. A change that lives past that truncation point produces an identical truncated body, so the hash never moves and `changed` never fires — the watch tool goes blind on long pages. Adds a watch-boundary integration test (large article, tail-only diff beyond the 16k-token budget) plus fetch-boundary tests asserting a view-flag-independent content fingerprint. Both fail on current code. | 2 个月前 | |
feat(tools): tighten default caps for cache/agent/extract to fit token budgets H3: lower defaults that were blowing token budgets on common workloads. - cache.query default limit: 100 (FTS) / 20 (hybrid) -> 5. Callers who genuinely need more pass limit explicitly. - agent default max_pages: 10 -> 3. Three reads is enough for synthesis on most prompts; long runs still opt in via max_pages. - extract mode=tables: implicit 30000-char ceiling when caller did not pass max_tokens_out. Adds truncated:true on the ExtractOutput so callers can detect the clip and rewiden. Each default has both a unit/tool test pinning the new value and an integration test verifying the response shape at the tool boundary. | 3 个月前 | |
fix(research,agent): route local-tier synthesis via additive backend param Replace the process.env.WIGOLO_LLM_PROVIDER set/restore bridge in synthesizeLocal (research) and the agent synthesis rung with the additive runLlmText `backend: { url, model }` override merged from C1. It routes a single call to the resolved endpoint reading/mutating NO process.env, so two concurrent tier syntheses can no longer corrupt a shared provider (cloud->local durable reroute). Adds Promise.all concurrency regression tests on both paths and updates routing assertions to the backend param. | 2 个月前 | |
fix(agent): inherit brand-collision rank for executeSearches output Agent had an independent rank path (executeSearches -> dedup -> insert into fetch queue) that bypassed the core ranker's domain quality + lexical alignment multipliers. Q10 / AG1+AG2 surfaced Microsoft Lists and NASA stars above modelcontextprotocol/servers. Apply the same multiplier the core orchestrator uses, keyed on the original prompt. | 4 个月前 | |
test(integration): tool-boundary coverage for list detector + agent schema fallback Cover the new behaviors at the MCP tool boundary (handleExtract / handleAgent), not just the unit seam: the list detector surfacing an <ol> listing via extract mode:structured, the agent schema prose fallback on a wrong-shape add-on grid, and the negative lock that a shape-complete tier grid still returns typed rows. | 2 个月前 | |
refactor: tighten all tool handlers to StageResult<T> return type | 4 个月前 | |
build(tsup): drop Python asset copy hooks (Phase 4 leaves no Python) src/scripts/ and src/python/ are both gone after Phase 4 Part B. tsup no longer needs the cpSync onSuccess hook. build-output test updated to assert that dist/scripts/ and dist/python/ are absent — an explicit zero-Python invariant. | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
test(fetch): add integration tests for CDP discovery with mock Chrome endpoint | 5 个月前 | |
fix(fetch): preserve full-page cache for section requests - 背景 / Background:section 请求会把裁剪后的 Markdown 写入 canonical cache,并触发整页删除误报 / Section requests persisted scoped Markdown and produced false full-page deletion diffs. - 改动 / Changes:完整 extraction 专供 change detection、cache、embedding 与 content_hash;section 和预算仅整形响应,并统一 fresh/cache 的资源范围 / Keep canonical operations full-page and apply section/budgets only to response shaping with consistent scoped assets. - 文件 / Files:src/tools/fetch.ts, tests/unit/tools/fetch.test.ts, tests/integration/change-detection.test.ts - 验证 / Verification:63 targeted tests passed; npm run lint passed; npm run build passed. Full suite: 7836 passed, 16 unrelated REPL readline failures under the inherited production environment; targeted rerun remains green. | 2 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
fix(opencode): harden config synchronization Preserve JSONC formatting, make current/legacy migration rollback-safe, and align status, init output, tests, and marketing with MCP-only OpenCode support. | 2 个月前 | |
test(crawl): failing tests for background embedding queue | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
feat(serve): lazy REST delegation, MCP bearer gate, bind gate + banner http-server delegates /v1, /openapi.json, /compat via a memoized dynamic import of the REST router (rest/ + ajv never load at boot/stdio). Token- configured serve now bearer-gates /mcp,/sse,/messages (401 envelope); /health and /admin stay on their own paths. CLI adds --allow-unauthenticated, a fail- closed bind gate before start, and REST/OpenAPI/auth/shim banner lines. | 2 个月前 | |
refactor(embedding): switch factory to fastembed + cache modelId filter | 4 个月前 | |
refactor(embedding): delete VectorIndex + wire EmbeddingService through factory VectorIndex (in-memory Map) and LegacyVectorStore are gone. EmbeddingService now obtains a VectorStore via getVectorStore() in init() and delegates upsert / search to it. Public surface (init / embedAndStore / embedAsync / findSimilar / getIndex / isAvailable / setAvailable / isSubprocessReady / shutdown) is preserved so callers in server.ts, tools/fetch.ts, research/pipeline.ts, search/find-similar.ts, and the legacy SearXNG orchestrator continue to work. getIndex() now returns an IndexView shim with size() / has(url) so existing 'index.size() === 0' guards keep working. On first init, any embeddings persisted in url_cache (pre-Phase-5 layout) are batch-migrated into the sqlite-vec store, gated on an empty vec_documents table so the migration is idempotent. Deleted: - src/embedding/vector-index.ts - src/cache/legacy-vector-store.ts - tests/unit/embedding/vector-index.test.ts (functionality covered by tests/unit/cache/sqlite-vec-store.test.ts) Adds tests/perf/vector-search.bench.ts scaffold (gated on RUN_VEC_PERF=1) so the dev-host bench gate from the v1 plan can run without polluting the sandbox suite. | 4 个月前 | |
fix(extraction): guard main-containing wrappers in boilerplate strip VitePress nests the doc body as <div class="VPContent has-sidebar"> > <div class="VPContentDoc has-aside has-sidebar"><main>...</main></div>. The boilerplate pre-pass selector matched the has-sidebar state class on those layout wrappers and removed the whole content region before content-root isolation ran, leaving only the VitePress navbar cluster (~nav-only markdown) for vuejs.org/guide/introduction. Add a semantic guard to stripBoilerplateDom: never remove an element that contains the page's single <main> landmark. Boilerplate (nav/sidebar/ footer/feedback) sits beside <main>, never wraps it. The guard subsumes react.dev's grid-cols-sidebar-content case, so the sidebar selector is simplified back to plain [class*="sidebar"]. Guard keys on <main> only (not <article>) so related-content asides wrapping <article> cards stay removable. Empirical (real served HTML): vuejs guide body 220 -> 10535 chars (Single-File/declarative/Progressive present); react.dev reference body unchanged at 3611 chars. | 3 个月前 | |
test(extract): proportional budget-trim contract for tables + arrays Cover the live P0 repro where a small max_tokens_out silently trims tables to data:[]. Adds must-pass cases (26-row table keeps headers+rows, structured multi-array partial fill, degenerate budget) and must-not-fire negatives (no budget, generous budget, metadata under budget, strings-only). | 2 个月前 | |
feat(extract): gate schema local-model step on the opt-in local tier The extract tool's schema mode gated the local-model gap-fill on isLocalLlmEnabled() (the cloud/custom-backend check). Switch the gate to resolveLocalModelTier() so the headline schema-via-local-model path is the opt-in WIGOLO_LOCAL_LLM tier: when it resolves, run the deterministic structure-first passes, then the local model over the pre-extraction for genuine gaps, evidence-filtering model-proposed fields. When the tier is null (flag off — the default — or server down) the block is skipped and control flows to the deterministic schema path, byte-for-byte identical to the keyless behavior with no model call and no latency beyond one cached probe. | 2 个月前 | |
test(integration): tool-boundary coverage for list detector + agent schema fallback Cover the new behaviors at the MCP tool boundary (handleExtract / handleAgent), not just the unit seam: the list detector surfacing an <ol> listing via extract mode:structured, the agent schema prose fallback on a wrong-shape add-on grid, and the negative lock that a shape-complete tier grid still returns typed rows. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
test(extract): assert structured-data short-circuits heuristic fallback | 4 个月前 | |
test: fix Windows pdf timeout + keychain roundtrip non-determinism pdf.test.ts: bump the PDF-extraction case timeout to 60s. pdf-parse@2 lazily boots pdf.js (WASM + font/CMap data + first-call JIT) on the first getText() of the process; on a cold Windows CI runner that one-time init intermittently overran the 20s global default while passing on mac/linux (~0.5s). It is genuine first-run slowness, not a hang — the promise always resolves and a real empty-body regression still fails fast on the content assertions. extras-prompt-roundtrip.test.ts: stub keychainAvailable() false so both cases pin to the deterministic encrypted-file keystore tier. The OS keychain is a process-global, machine-wide store NOT scoped to the test's per-case dataDir, so on a CI runner with a working keyring backend the first case's stored anthropic secret leaked into the second case (which expects no stored key) and across runs. Locally the keychain set/get silently EPERMs and falls through to the file tier, which is why this only broke in CI. The file tier is the persistence path this test actually asserts ("file fallback in the test env"). | 3 个月前 | |
feat(fetch): thin frameless pages are partial/thin_content, not shell | 2 个月前 | |
refactor: tighten all tool handlers to StageResult<T> return type | 4 个月前 | |
refactor(fetch): capability-named fetch_method 'browser' (was 'playwright') across value/docs/openapi/SDK/tests The fetch_method returned value leaked the browser library name in user-facing output. Rename the RETURNED contract value 'playwright' -> 'browser' — the tier name, its type members, its producers, and its documentation. The internal browser library (imports, browser pool, warmup/doctor component names, the dep) is untouched. - FetchMethod union + doc comment (src/types.ts): 'playwright' -> 'browser'. - RawFetchResult.method union + doc comment (the value that flows straight to FetchOutput.fetch_method): 'playwright' -> 'browser'. - CachedContent.fetchMethod DB-mirror union: 'playwright' -> 'browser'. - The three value producers (router.ts browser-escalation return, browser-pool.ts download + main return): method: 'playwright' -> 'browser'. - fetch tool description (src/instructions.ts): fetch_method (cache/http/tls-impersonation/playwright) -> (.../browser). - Tests: every fetch_method / RawFetchResult.method assertion and mock literal across the fetch + router + browser-pool + cache-store lanes -> 'browser'. OpenAPI types fetch_method as a generic string (no tier enum) and the SDKs type it as string too, so no OpenAPI/SDK value change and no drift is introduced. Left untouched: vi.mock('playwright'), 'playwright' library imports, warmup reporter keys, doctor's npx playwright, and the OpenAPI playwright->'browser engine' sanitizer + its forbidden-term tests. Prior research/agent free-key guidance, source_span restore, and the competitor-routing guard tests are unchanged. | 2 个月前 | |
fix(fetch): route binary downloads to the byte tier and intercept browser downloads A PDF only reaches the browser tier when its domain is preferPlaywright (known-SPA / prior escalation / failure threshold), where page.goto throws 'Download is starting' and the fetch hard-errors. Two fixes: - router: a URL whose pathname ends in a known binary extension (.pdf/.zip/.doc(x)/.xls(x)/.ppt(x)) is forced to the HTTP tier in the implicit auto path, so it is buffered into rawBuffer regardless of preferPlaywright. Explicit renderJs='always'/useAuth/actions requests still go to the browser. Extension-based, not a domain list. - browser-pool: contexts accept downloads and a download listener is registered before goto; a goto that rejects with 'Download is starting' (or a fired download event) reads the bytes into a rawBuffer PDF result instead of throwing, so the tool layer extracts it like the HTTP path. Non-download navigations are unchanged. | 2 个月前 | |
test(fetch): challenge fast-fail integration + e2e coverage at tool boundary | 2 个月前 | |
refactor(fetch): capability-named fetch_method 'browser' (was 'playwright') across value/docs/openapi/SDK/tests The fetch_method returned value leaked the browser library name in user-facing output. Rename the RETURNED contract value 'playwright' -> 'browser' — the tier name, its type members, its producers, and its documentation. The internal browser library (imports, browser pool, warmup/doctor component names, the dep) is untouched. - FetchMethod union + doc comment (src/types.ts): 'playwright' -> 'browser'. - RawFetchResult.method union + doc comment (the value that flows straight to FetchOutput.fetch_method): 'playwright' -> 'browser'. - CachedContent.fetchMethod DB-mirror union: 'playwright' -> 'browser'. - The three value producers (router.ts browser-escalation return, browser-pool.ts download + main return): method: 'playwright' -> 'browser'. - fetch tool description (src/instructions.ts): fetch_method (cache/http/tls-impersonation/playwright) -> (.../browser). - Tests: every fetch_method / RawFetchResult.method assertion and mock literal across the fetch + router + browser-pool + cache-store lanes -> 'browser'. OpenAPI types fetch_method as a generic string (no tier enum) and the SDKs type it as string too, so no OpenAPI/SDK value change and no drift is introduced. Left untouched: vi.mock('playwright'), 'playwright' library imports, warmup reporter keys, doctor's npx playwright, and the OpenAPI playwright->'browser engine' sanitizer + its forbidden-term tests. Prior research/agent free-key guidance, source_span restore, and the competitor-routing guard tests are unchanged. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
feat: hybrid skips unavailable searxng fallback + per-request warning (D1) | 2 个月前 | |
fix(a1): update integration tool-count + reduce ONNX startup in schema-registration tests - Bump tests/integration/instructions-v3.test.ts tool count to 10 and add brief `diff` / `watch` references to WIGOLO_INSTRUCTIONS so the "WIGOLO_INSTRUCTIONS references every tool in TOOL_DESCRIPTIONS" invariant holds (was failing for the two stub entries). - Mock src/embedding/embed.js inside tests/unit/server/schema-registration so `connectClient()` skips the cold ONNX startup on each of the 5 tests. Matches the existing "mock all heavy subsystems" pattern in this file (db, browser-pool, http-client, router, searxng/*, cache/store). | 3 个月前 | |
refactor(llm): make GEMINI_API_KEY the canonical Gemini key GEMINI_API_KEY (the name Google AI Studio uses) is now canonical everywhere - code, docs, and help. GOOGLE_API_KEY stays accepted as a silent back-compat alias so existing setups keep working. | 2 个月前 | |
feat(extract): evidence-only constraint on schema extraction | 3 个月前 | |
test(crawl): add map mode integration test with local HTTP server | 5 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
feat(repl): NDJSON shell, exit plumbing, history hygiene, .json toggle | 2 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
test(integration): local-model tier synthesis at the research + agent tool boundary Exercise handleResearch / handleAgent end-to-end with the C0 opt-in local-model tier: local-synthesized report with index-aligned per-claim [n] citations, and the keyless-default no-model-call path. | 2 个月前 | |
feat: cite key findings and heuristic summary per-claim in evidence-fallback brief The keyless (non-LLM) research render only cited 3 of 5 sections: the comparison-only Verdict/Comparison branches and cross-references (which need a phrase shared by 2+ sources). The dominant Key Findings section and the heuristic Summary branch emitted uncited bullets, so most sources never resolved to an inline [n] and per-claim citation density stayed low. buildKeyFindings now returns each finding's source index alongside the text; buildResearchBrief remaps it from the fetched-only view to the full sources array and exposes it as an optional parallel key_finding_sources array on ResearchBrief (the public key_findings string[] shape is unchanged). renderKeyFindings and the heuristic Summary branch weave a per-bullet [n] keyed on whether that finding has a resolved index, failing open (no fabricated index) when absent or out of range. Also remaps comparison tradeoffs and cross-reference source indices to the full sources base so a leading unfetched source no longer produces an off-by-one citation in the Verdict/Comparison/Agreement sections. | 2 个月前 | |
test(rest): diff route now reaches its handler (200), not a 501 stub | 2 个月前 | |
fix(rest): apply /v1 slot+deadline discipline to firecrawl-compat shim The synchronous compat shim routes (scrape/search/map) and the crawl start/status routes bypassed the REST concurrency cap and per-route deadline — an unbounded escape hatch past D7/D11. Extract a shared runUnderSlotAndDeadline helper mirroring handleToolRequest (acquire slot before work, 429 on exhaustion, 504 on deadline, slot released only on settle, respond() double-write guarded, detached late-rejection catch) and wrap the shim branch in it. Scrape reuses the fetch deadline, search the search deadline, map the crawl deadline; crawl start/status take a short deadline. The background crawl job model (runningCrawlJobs) is unchanged — the POST holds a transient slot for its own work only. | 2 个月前 | |
test(rest): per-route HTTP-boundary tests for the 8 filled routes Assert documented top-level fields reach the JSON response per route, plus the SSRF negatives (metadata/file:// → 400, loopback-under-non-loopback-bind → 400, allow-local override → 200) and the crawl clamp over-cap/boundary rows. | 2 个月前 | |
feat(fetch): guard challenge shells at router terminal returns + 2xx escalation + stealth | 2 个月前 | |
test: fix StageResult unwrap regressions in fetch+schema-extract error paths | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
feat(search): search_depth tiers from ultra-fast to deep | 4 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
refactor: tighten all tool handlers to StageResult<T> return type | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
fix(search): wire streaming flag for stream_answer + realign integration tests with post-rerank boosts and new fallback synthesis | 4 个月前 | |
refactor(providers): harden SearchProvider factory + drop config noise - Clear memoized promise on import rejection so transient module load errors don't permanently brick the search tool - Remove unused Config.searchProvider field (factory reads env directly) - Drop _resetConfigForTest alias; tests use existing resetConfig - Document parity snapshot regeneration path | 4 个月前 | |
fix(search): wire streaming flag for stream_answer + realign integration tests with post-rerank boosts and new fallback synthesis | 4 个月前 | |
fix(search): thread degraded+lexical signal into the score-floor seam Wire the orchestrator's degraded flag and a per-result lexical-alignment accessor into applyScoreFloor at the core-provider seam so a degraded pool of purely zero-lexical junk empties and surfaces 'no_lexical_match' on engine_pool.reasons. Adds the D4 mechanism fixture: an all-but-one-engine-down pool whose lone survivor is a zero-lexical gamed-logit result flows through the real rerank-fold + normalisation + floor and returns empty; must-not-fire negatives keep a lexically-aligned degraded survivor and a healthy zero-lexical result. | 2 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 4 个月前 | |
chore(test): drop stale doc-comment in s11c integration suite | 3 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 | |
test: rename stale MAX_AUTO_ATTEMPTS labels to reflect env-driven cap | 5 个月前 | |
fix(setup): browser component reports lazy, not failed, when missing The browser engine is lazily acquired since wave-2 S8: a missing browser triggers a memoized background install inside the fetch path (src/fetch/browser-acquire.ts). On a genuinely clean machine `wigolo init --non-interactive` therefore must not exit 1 for a component that self-installs on first use. - setup-status classifier: browser missing → status 'lazy' (○), detail 'downloads on first use — wigolo warmup --browser pre-caches'; stays 'ok' when launchable, stays required (lazy is non-failing per summarizeSetup). - retargeted the two browser-failed pins deliberately: the probe test now asserts lazy/○/exit-0 (same WHY — missing browser surfaced distinctly); the init exit-propagation fixtures use the agents-requested-but-failed case, the remaining real producer of a required failure. - new fresh-machine cases (unit + integration): no browser, no embeddings, engine-only → exit 0, json status ok, both components ○ lazy. | 2 个月前 | |
fix(skills): symlink-safe writes, non-member remove no-op, atomic-pack semantics - F1: executor lstats every leaf before writing — never writes through a symlink; force unlinks the LINK (file or dir) before mkdir/write. TOCTOU plants (symlink appearing after planning) are refused, target untouched. - F2: remove for a non-member agent is a no-op with an ownership notice — no longer deletes files owned by other agents. - F3: per-pack remove no longer strips the windsurf digest; the digest is touched only for remove-all or when wigolo-digest is named explicitly. - F4: listSkills windsurf-global compares the wigolo BLOCK hash (not the whole shared file) and reports absent (not adopted) when no block/receipt. - F5: delete unreachable per-file refuse branches; document atomic-pack semantics at the aggregate; add TOCTOU-refuse test. - F6: engine-level windsurf removal integration coverage. - F9: pruneEmptyDirsUpTo is now path-separator-aware. - F10/F11/F13: correct stale snapshot/types/removeAll comments; make the foreign-cwd uninstall refusal reason actionable. - planRemove: pure remove preview (no fs/receipt mutation) for the CLI. - F15/F16: list-state (adopted/outdated/stale/managed-externally) and adopted-flag-persistence tests. | 2 个月前 | |
test(tui): real disk-round-trip integration test for autosave persistence Adds tests/integration/tui-autosave-roundtrip.test.ts which writes to a real temp file (no mocks of persistKey/writePersistedConfig/readPersistedConfig) and asserts the nested on-disk shape. Catches the flat-dotted-key regression. Temp path injected via WIGOLO_CONFIG_PATH env var + resetPersistedConfig(). | 3 个月前 | |
fix(tui): restore InkRoot routing tests + add width boundary tests + breadcrumb honesty | 3 个月前 | |
fix(tui): SP6 hardening (deprecate InkRouter, honor initialRoute, exhaustive action switch, reset focus on home) | 3 个月前 | |
refactor(cli): drop Python trafilatura install + config surface Phase 6.6. Trafilatura was the Python ensemble fallback used by the extractor; Phase 6.5 deleted the module and its only callers. The warmup install step, doctor check, status fields, TUI probe, and WIGOLO_TRAFILATURA config field were all checking for a Python package nothing imports anymore. - src/cli/warmup.ts: drop trafilatura install step + flag + status - src/cli/doctor.ts, status.ts: drop trafilatura check + print line - src/cli/tui/{verify,status-*,verify-suggestions,hooks/*}: drop trafilatura status plumbing - src/config.ts: drop trafilatura config field + WIGOLO_TRAFILATURA env var - tests: remove or update assertions on the deleted surface SearXNG Python venv bootstrap still installs (default WIGOLO_SEARCH= searxng requires it). That is expected per the v1 plan. | 4 个月前 | |
refactor(cli): drop Python trafilatura install + config surface Phase 6.6. Trafilatura was the Python ensemble fallback used by the extractor; Phase 6.5 deleted the module and its only callers. The warmup install step, doctor check, status fields, TUI probe, and WIGOLO_TRAFILATURA config field were all checking for a Python package nothing imports anymore. - src/cli/warmup.ts: drop trafilatura install step + flag + status - src/cli/doctor.ts, status.ts: drop trafilatura check + print line - src/cli/tui/{verify,status-*,verify-suggestions,hooks/*}: drop trafilatura status plumbing - src/config.ts: drop trafilatura config field + WIGOLO_TRAFILATURA env var - tests: remove or update assertions on the deleted surface SearXNG Python venv bootstrap still installs (default WIGOLO_SEARCH= searxng requires it). That is expected per the v1 plan. | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 5 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 |