chore(release): version packages#103
Merged
Merged
Conversation
f32c107 to
2ee65d8
Compare
6f20ad6 to
1149aa8
Compare
1149aa8 to
0f5ec20
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
gitsema@0.97.0
Minor Changes
gitsema admin models list|allow|deny|reset --kind <embedding|narrator|guide> [--org <name>]. Independently,narrate/explain/guide(CLI, HTTP, and MCP) accept request-scoped BYOK credentials (--byok-http-url/--byok-api-key/--byok-model/--byok-max-tokens/--byok-temperatureand equivalent HTTP/MCP fields) that bypass the allow-list entirely and are never persisted.src/server/routes/analysis.ts.POST /analysis/merge-auditgainedbase(merge-base override);POST /analysis/merge-previewgainedtop/iterations/edgeThreshold/enhancedKeywordsN/useEnhancedLabels;POST /analysis/branch-summarygainedenhancedLabels/enhancedKeywordsN(slicesnearestConcepts[].topKeywordsin the JSON response);POST /analysis/clustersgainediterations/edgeThreshold/enhancedKeywordsN;POST /analysis/security-scangainedhighConfidenceOnly;POST /analysis/impactgainedchunks/level/lens(structural/hybridnow makes it a thinblast-radiusalias, closing a prior silent divergence from the CLI's default);POST /analysis/semantic-diffgainedhybrid/bm25Weight(also fixing a pre-existing CLI bug wherediff's--hybrid/--bm25-weightflags were declared but never wired to anything);POST /analysis/semantic-blamegainedlevel(file/symbol).clusters,change-points,author,impact,semantic-diff,semantic-blame,triage, andworkflowanalysis routes now accept the samemodel/textModel/codeModelembedding overrides already available as--model/--text-model/--code-modelon their CLI equivalents, via a new shared request-scoped resolver.gitsema audit log [--org] [--repo] [--limit]. Completes the Multi-Tenant Auth Track (Phases 122-125).POST /analysis/author(HTTP API) now supports the fullgitsema authorCLI flag surface:since,detail,includeCommits,hybrid, andbm25Weightare wired through to the same author-attribution logic the CLI uses, pluschunks/level/vssare accepted for flag-surface parity (no-op, matching the CLI's own behavior for these three). Breaking change: the response shape is now{ authors, commits? }instead of a bare array, to carryincludeCommitsresults.gitsema code-searchnow isolates its chunk and symbol candidate pools by default, returning them as separate, independently-ranked result lists instead of one shared-cutoff merged ranking — the default--level symbolwas combining both pools on every call, which could let a file whose best evidence was chunk-framed get crowded out by symbol-framed matches (or vice versa) purely from embedding-framing bias. Pass--merge-levelsto opt back into the previous single merged list. The MCPcode_searchtool and Guide'scode_searchtool adopt the same per-level separation, returning aresults_by_levelobject (keyed byfile/chunk/symbol) instead of a flatresultsarray when multiple levels are active — a breaking response-shape change for existing callers, both of which gained amerge_levelsparameter to opt back into the flat shape.gitsema searchnow returns distinct, independently-ranked result lists per search level (file/chunk/symbol/module) by default whenever two or more of--chunks/--level symbol/--level moduleare active at once — e.g.--chunks --level symbol, or a per-model saved-level mismatch — instead of merging every level into one shared-cutoff ranked list where a weaker level's matches could be crowded out entirely. Text output renders one labeled section per level;--out jsonemits aresultsByLevelobject keyed by level. Pass--merge-levelsto opt back into the previous single merged list. A single active level (the common case) is unaffected.gitsema index doctor --fix: automatically backfills missing FTS5 content and garbage-collects orphan embeddings when those issues are detected, then re-reports index health — no need to runindex backfill-fts/index gcseparately.POST /evolution/filenow acceptslevel(file/symbolper-symbol centroid evolution),branch,model/textModel/codeModeloverrides, andalerts(top-N largest semantic jumps with author/commit), matching the CLI'sfile-evolutionflag surface.POST /evolution/conceptgainsbranchand model overrides, matchingevolution/concept-evolution.POST /graph/hotspotsgainsweightStructural, matching CLI's--weight-structural. Branch filtering is now threaded through the corecomputeEvolution()/computeConceptEvolution()functions rather than being CLI-only.graphcommand family (callers,callees,neighbors,path,relate,similar,unused,cycles,deps,co-change,blast-radius) is now exposed over HTTP (POST /api/v1/graph/*) and MCP (graph_path,graph_relate,graph_similar,graph_unused,cycles,deps,co_change,blast_radiustools;callers/calleesgained HTTP routes and reuse the existingcall_graphMCP tool), matching the CLI's existing flag surface.graph buildremains CLI-only — it's a mutating, truncate-and-rebuild index-maintenance operation, not a query, consistent withindex vacuum/gc/rebuild-fts/etc.POST /api/v1/guide/chat(HTTP API) now accepts alens: 'semantic'|'structural'|'hybrid'field, mirroring CLIgitsema guide --lens— understructural/hybridit biases the guide agent's tool choice towardcall_graph/blast_radius/hotspots, identically to the CLI. Remote multi-turn/session support (an HTTP equivalent of CLIguide --interactive) remains a deferred, unresolved design question — seedocs/feature-ideas.md.gitsema tools serve: user accounts with password login (gitsema auth login/logout/whoami) and long-lived API keys (gitsema auth token create/list/revoke), backed by newusers/sessions/api_keystables. The server's auth middleware now resolves these alongside the existingGITSEMA_SERVE_KEY/per-repo token mechanisms.textDocument/hovernow enriches its semantic matches with optional Temporal (last touch/change frequency), Risk & quality (debt/hotspot/security), and Structure (caller/callee counts) sections when their data is available. AddedtextDocument/codeLenswith per-symbol "Called N× · debt X.XX" annotations, and an opt-ingitsema tools lsp --diagnosticsflag that pushestextDocument/publishDiagnosticsnotifications for high-debt/high-hotspot-risk files on a background timer (not supported together with--remote).gitsema tools mcp --remote <url>andgitsema tools lsp --remote <url>(with--remote-key/--remote-timeout, orGITSEMA_REMOTE/GITSEMA_REMOTE_KEY) now proxy every data-access call to a runninggitsema tools serveinstance via a new genericPOST /api/v1/protocol/:operationroute, with a startup health check that fails fast if the remote is unreachable.gitsema tools mcp --websocket <bind-address>andgitsema tools lsp --websocket <bind-address>(e.g.--websocket 0.0.0.0:4242) listen on fixed/mcp//lsppaths, with--key <token>requiring a matchingAuthorization: Bearer <token>header. Unlike--remotedelegation, WebSocket supports server push, so--diagnosticsnow works together with--websocket. gitsema does not terminate TLS — put a reverse proxy in front forwss://.textDocument/definitionandtextDocument/referencesnow resolve structurally first when the knowledge graph (gitsema graph build) is built, returning exact matches instead of approximate semantic/text results (fallback results are now taggedtags: ['fallback']). Added three new LSP methods backed by the same graph:textDocument/prepareCallHierarchy,callHierarchy/incomingCalls, andcallHierarchy/outgoingCalls, advertised via a newcallHierarchyProvider: truecapability.gitsema tools mcp --http <bind-address>(e.g.--http 0.0.0.0:4242) — a proper MCP Streamable HTTP transport using the SDK's ownStreamableHTTPServerTransport, listening on a fixed/mcppath with stateful sessions tracked via theMcp-Session-Idheader.--key <token>requires a matchingAuthorization: Bearer <token>header, same convention as--websocket. Unlike the non-standard--websockettransport (kept only for forward compatibility), Streamable HTTP is MCP's actual recommended network transport and should be preferred by clients/harnesses that need a network-reachable MCP server.gitsema tools servedeployment can now offer several named embedding profiles (provider/model pairs) at once viaGITSEMA_EMBEDDING_PROFILES/theembeddingProfilesconfig key. Repos are pinned to a profile forever at first index (gitsema remote-index --profile <name>), andgitsema repos info <repo-id>shows the pinned profile. Servers with no profiles configured behave exactly as before.POST /narrateandPOST /explainnow accept anevidenceOnlyfield, letting HTTP callers explicitly request the same safe-by-default evidence-only mode as the CLI'snarrate/explain(omitted = evidence-only, no LLM call) — both responses also gain a structuredevidencearray.POST /explainadditionally acceptslog(error/stack-trace context file) andfiles(search-scope glob), and both routes acceptlens, which on/explainreturns astructuralContextfield (call-graph/co-change enrichment) when combined with a concretefilespath under astructural/hybridlens.org_admin/memberroles), and repo access is granted per-user viarepo_grants(read/write/owner, optionally scoped to a branch glob). New CLI:gitsema orgs create/list/members add/remove/list,gitsema users create/list, andgitsema repos grant/grants/revoke/move-to-org. New HTTP routes under/api/v1/orgsand/api/v1/repos/:repoId/{grants,move-to-org}.bisect,refactor-candidates,lifecycle,cherry-pick-suggest,file-diff,pr-report,regression-gate,code-review,map, andheatmapare now available as MCP tools andPOST /api/v1/insights/*HTTP routes, not just CLI commands — AI clients and remote callers can now reach them directly. Also fixes a pre-existing bug inrefactor-candidates' default symbol-level scan that made it error out on any index with symbol embeddings.public(gitsema repos visibility <repo-id> public|private), auto-grantingreadaccess to non-owner callers who index an existing public repo, gated by a first-index allow-list (auth.allowPublicAutoIndex/GITSEMA_PUBLIC_AUTO_INDEX) and a per-user re-index throttle (auth.minReindexIntervalSeconds/GITSEMA_MIN_REINDEX_INTERVAL_SECONDS).tools lsp --tcptransport entirely (previously deprecated in Phase 120 in favor of--websocket --key): raw TCP had no authentication mechanism at all, and nothing in the test suite exercised it.gitsema tools lsp/gitsema lspare now stdio or--websocketonly — use--websocket <bind-address> --key <token>for network-reachable LSP access.semantic_search/first_seenand HTTPPOST /search/POST /search/first-seennow have full flag parity with CLIsearch/first-seen: per-level result separation (a newmodulesearch level, plus labeled per-level output or aresultsByLevelJSON shape when 2+ of chunk/symbol/module are active, withmerge_levels/mergeLevelsto opt back into one merged list), negative-example scoring (not_like/notLike,lambda), boolean query composition (or/and),explain, LLM provenance citations (explain_llm/explainLlm), query expansion (expand_query/expandQuery), cluster annotation (annotate_clusters/annotateClusters), HNSW ANN search (vss), multi-repo search (repos), per-request embedding model overrides (model/text_model/code_modelon MCP,model/textModel/codeModelon HTTP), candidate-pool sampling (early_cut/earlyCut), and cache bypass (no_cache/noCache). This is a breaking change to the HTTPPOST /searchJSON response shape when 2+ search levels are active (now{ resultsByLevel: {...} }instead of a flat array), matching CLI's existing per-level behavior.POST /api/v1/analysis/multi-repo-searchis now deprecated in favor ofPOST /api/v1/searchwith areposparam — the old route still works unchanged, with aDeprecationresponse header pointing at its replacement.(provider, externalId)identity linked alongside their password/API keys, all resolving to the same account. Providers must be explicitly allowlisted viaGITSEMA_SSO_PROVIDERS. New operator CLI:gitsema auth sso link/unlink/list. New self-service HTTP routes:GET /api/v1/auth/ssoandDELETE /api/v1/auth/sso/:provider/:externalId. The live browser-based OIDC login flow is not yet implemented — linking an identity is currently an operator action.graph neighbors,graph path,blast-radius,relate,similar, andhotspots: pass--out html:graph.htmlfor an interactive force-directed graph (clicking a node shows its details and suggested follow-up commands), or--out text/--out markdown:graph.mdfor an ASCII tree / nested bullet list rendering, alongside each command's existing JSON and default text output.GET /watch(list saved watch queries) andDELETE /watch/:name(remove one by name), matching the CLI'swatch list/watch remove— previously onlywatch add/watch runhad HTTP routes.POST /analysis/workflowroute now supports all 8 productized workflow templates that CLIworkflow runhas (pr-review,incident,release-audit,onboarding,ownership-intel,arch-drift,knowledge-portal,regression-forecast) instead of just 3, and acceptsrole/refbody fields (mirroring CLI--role/--ref) generally rather than gated to a single template.Patch Changes
POST /api/v1/remote/index) now records agrant.createaudit event, matching every otherrepo_grantswrite path.4000-char LLM-result truncation cap (previously a separate constant inguideTools.tsandllm/narrator.ts) into a single sharedcore/narrator/resultCap.tshelper. Also refresheddocs/feature-ideas.md— removed LSP/MCP remote-delegation, WebSocket, structural-navigation, and diagnostics/hover ideas that shipped as Phases 113–117, and added the still-undesigned plugin-API idea.gitsema index backfill-fts(and its existing top-level aliasgitsema backfill-fts) in favor ofgitsema index rebuild-fts. No index database predating Phase 11 remains in active use, so the Git-refetch behaviorbackfill-ftsprovided is no longer needed; both commands print a deprecation warning but keep working.gitsema tools lsp --tcpis now deprecated in favor of--websocket --key: raw TCP has no request framing to carry a Bearer token in, so the unauthenticated---tcpgap flagged in review10 is closed by steering users to the already-authenticated WebSocket transport instead of inventing a bespoke handshake-auth protocol.--tcpcontinues to work unchanged but now prints a deprecation notice on every invocation.gitsema tools mcp --remote: thenarrate_repoandexplain_issue_or_errortools now delegate to the remote server like every other tool (they previously always ran locally), and--remotenow also takes effect when combined with--websocketor--http(previously only the default stdio transport honored it).gitsema tools mcp --websocketnow prints a startup warning that raw WebSocket is not one of MCP's standard transports and is unlikely to work with most MCP clients/harnesses — it's kept for forward compatibility, not removed. A proper MCP Streamable HTTP transport is planned as a follow-up (seedocs/PLAN.mdPhase 117).gitsema models add <name> --level <level>now actually takes effect:index startandsearchfall back to a model's saved--levelwhen no explicit--chunker/--level/--profileflag is passed, instead of silently ignoring it (Phase 77 Goal Phase 8: file-type-aware embedding model routing, dual-model search, and incremental indexing #4 closed).SELECT 1) on first use, so a bad or unreachablestorage.metadata.url/GITSEMA_STORAGE_METADATA_URLfails with an actionable error instead of an opaque driver error at the first query — mirroring the existing Qdrant connection probe. Also fixed a stale "in progress" roadmap heading and the recurringdocs/features.mdversion-banner drift, now enforced by a test.--key(withGITSEMA_WEBSOCKET_KEY/GITSEMA_MCP_HTTP_KEYenv-var fallbacks for--key);tools lsp --tcpis documented as unauthenticated.hotspots'topKparameter is now capped at 500 on the HTTP route and MCP tool.regression-gate/code-review's git ref handling moved from shell-interpolatedexecSynctoexecFileSyncwith the same git-ref allowlist used elsewhere.resolveNode()now uses an indexeddisplay_namelookup instead of a full graph scan, the HTML viz's client-sideesc()helper now escapes quotes to match the server-side escaper, andgitsema cycles' DFS no longer risks a stack overflow on very long import chains.