Skip to content

refactor: consolidate duplicate utilities and improve code quality - #4

Closed
indrazm wants to merge 16 commits into
mainfrom
core-studio-code-quality-review
Closed

refactor: consolidate duplicate utilities and improve code quality#4
indrazm wants to merge 16 commits into
mainfrom
core-studio-code-quality-review

Conversation

@indrazm

@indrazm indrazm commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Summary

Internal refactoring to improve code quality across @anvia/core and @anvia/studio packages. No behavior changes - all 276 tests pass.

Changes

@anvia/studio (1 commit):

  • Created focused utility modules: compact.ts, type-guards.ts, http.ts, query.ts, config.ts
  • Replaced 242 conditional spread patterns with compact() utility
  • Gutted shared.ts from 500 lines to 170 lines (store resolution only)
  • Eliminated duplicate utilities: isJsonValue (3->1), isJsonObject (2->1), traceSummary (2->1), formatJson (2->1), cleanMetadata (2->1)

@anvia/core (3 commits):

  • Created internal/compact.ts with compact() and isRecord() utilities
  • Applied compact() to 43 conditional spread patterns across 12 files
  • Consolidated 5 duplicate functions:
    • isStreamingCompletionModel - exported from completion/create-completion.ts
    • extractRagText - removed duplicate from extractor/extractor.ts
    • isToolResultContentArray + serializeToolOutput - exported from completion/types.ts
    • isRecord/isPlainRecord - shared utility in internal/compact.ts
  • Split request.ts (878 -> 786 lines) by extracting types and helpers to request-types.ts
  • Documented 3 newly exported symbols in reference docs

Test Results

  • @anvia/core: 22 test files, 205 tests passed
  • @anvia/studio: 3 test files, 71 tests passed
  • docs reference check: 603 exports, 0 undocumented

indrazm and others added 16 commits June 16, 2026 16:24
* feat: add Pinecone and Milvus vector store adapters

Add @anvia/pinecone and @anvia/milvus packages following the existing
adapter pattern (Chroma, PgVector, Qdrant). Both implement the
VectorSearchIndex interface from @anvia/core with full filter
translation, multi-embedding support, and asTool() integration.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* refactor: split vector-stores into flat file modules

Split each monolithic src/index.ts (220-364 lines) into focused modules:
- types.ts (client interfaces, config types)
- store.ts (*VectorStore class)
- search-index.ts (*VectorIndex class)
- filters.ts (VectorFilter translation)
- helpers.ts (serialization, parsing, ID generation)
- index.ts (barrel re-exports)

Applied to all 5 packages: chroma, qdrant, pgvector, pinecone, milvus.
Public API surface unchanged -- all exports preserved via barrel.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* docs: add Pinecone and Milvus reference docs and changeset

Add reference documentation for @anvia/pinecone and @anvia/milvus,
register them in the reference coverage check, and create a minor
changeset for both new packages.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* test: add unit tests for Pinecone and Milvus vector stores

Add test suites matching the existing pattern (Chroma, Qdrant, PgVector).
Tests cover connect, upsert, search, filter translation, reserved metadata
rejection, and empty embeddings rejection.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

---------

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* chore: flatten package layout

* docs: align package layout references
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat(studio): add multi-provider model config

* feat(studio): show assistant loading indicator

* chore: add studio multi-provider changeset

* docs(studio): document model config types

* docs(studio): add model provider config guide
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ead patterns

- Create compact() utility to replace 242 conditional spread patterns
- Create type-guards.ts consolidating duplicate isJsonValue/isJsonObject/etc
- Create http.ts with errorResponse, serializeError, parseJsonBody helpers
- Create query.ts with parameterized parseLimit/parseAfter replacing 3 near-identical functions
- Create config.ts extracting config-building functions from shared.ts
- Gut shared.ts from 500 lines (27 exports, 5 concerns) to 170 lines (store resolution only)
- Deduplicate traceSummary, formatJson, formatUnknown, cleanMetadata across modules
- Remove duplicate isJsonValue in pipelines.ts (incorrectly allowed undefined)
- Replace local parseSessionLogLimit/parseSessionLogAfter with unified query helpers
- Net -399 lines across 25 modified + 5 new files

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…ility

- Create compact() utility in internal/compact.ts
- Apply compact to 43 conditional spread patterns across 12 files
- Agent module: request.ts, tool-execution.ts, hooks.ts, agent.ts, retrieval.ts
- Evals module: outcome.ts, runner.ts
- Pipeline module: graph.ts
- Tool module: create-tool.ts, dynamic-tools.ts
- Vector store and embeddings modules
- All 205 tests pass

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
- Consolidate isStreamingCompletionModel: export from completion/create-completion.ts, re-export from agent/utils.ts
- Consolidate extractRagText: remove duplicate from extractor/extractor.ts, import from agent/utils.ts
- Consolidate isToolResultContentArray + serializeToolOutput: export from completion/types.ts, import from tool/tool.ts
- Consolidate isRecord/isPlainRecord: create shared utility in internal/compact.ts, update skills/local.ts and mcp/result.ts
- Split request.ts: extract types and helper functions to request-types.ts (878 -> 786 lines)
- All 205 core tests pass, 71 studio tests pass

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
- Add patch changeset for @anvia/core and @anvia/studio
- Document isStreamingCompletionModel in core completion reference
- Document serializeToolResultOutput in core completion reference
- Document traceSummary in studio traces reference

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
@indrazm

indrazm commented Jun 17, 2026

Copy link
Copy Markdown
Owner Author

Closing - reopening against upstream

@indrazm indrazm closed this Jun 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant