weavatrix 0.2.19 → 0.3.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 +90 -93
- package/SECURITY.md +13 -31
- package/bin/weavatrix-mcp.mjs +2 -1
- package/docs/adr/0001-v0.3-offline-online-split.md +9 -7
- package/docs/releases/v0.3.0.md +43 -0
- package/package.json +8 -2
- package/skill/SKILL.md +34 -59
- package/src/analysis/architecture/contract-storage.js +2 -2
- package/src/analysis/audit-extensions.js +60 -0
- package/src/analysis/duplicate-groups.js +13 -2
- package/src/analysis/duplicates.compute.js +7 -2
- package/src/analysis/health-capabilities.js +2 -1
- package/src/analysis/internal-audit/supply-chain.js +17 -2
- package/src/analysis/jvm-artifact-index.js +87 -0
- package/src/analysis/jvm-dependency-evidence.js +31 -8
- package/src/analysis/transport-contracts.js +78 -11
- package/src/analysis/transport-runtime-evidence.js +155 -0
- package/src/child-env.js +2 -2
- package/src/extension/local-services.mjs +75 -0
- package/src/graph/internal-builder.langs.js +2 -0
- package/src/graph/repo-registry.js +2 -2
- package/src/mcp/catalog.mjs +47 -21
- package/src/mcp/evidence/duplicate-member-order.mjs +1 -1
- package/src/mcp/evidence-snapshot.health.mjs +2 -2
- package/src/mcp/extension-api.mjs +77 -0
- package/src/mcp/health/audit-format.mjs +11 -1
- package/src/mcp/health/audit.mjs +10 -7
- package/src/mcp/health/duplicates.mjs +5 -3
- package/src/mcp/sync-payload.mjs +1 -1
- package/src/mcp/tools-actions.mjs +1 -8
- package/src/mcp/tools-architecture.mjs +2 -2
- package/src/mcp/tools-company.mjs +4 -2
- package/src/mcp-runtime.mjs +2 -0
- package/src/mcp-server.mjs +28 -17
- package/src/security/advisory-store.js +133 -181
- package/src/security/rust-advisory-report.js +60 -0
- package/src/mcp/actions/advisories.mjs +0 -17
- package/src/mcp/actions/graph-sync.mjs +0 -195
- package/src/mcp/actions/hosted-architecture.mjs +0 -57
package/README.md
CHANGED
|
@@ -7,42 +7,38 @@ inheritance, health findings, clone families and Git-history coupling. It gives
|
|
|
7
7
|
or any MCP client a bounded map for fast application understanding and lower repeated context, then
|
|
8
8
|
reuses the same graph for change impact, Health, dead-code review, duplicates, history and intended-
|
|
9
9
|
architecture safeguards. Text search is included as a supporting source check, not the product core.
|
|
10
|
-
**
|
|
11
|
-
the defaults, no repository data leaves your machine.**
|
|
10
|
+
**34 network-free tools. No repository data leaves your machine.**
|
|
12
11
|
|
|
13
12
|
- Website: [weavatrix.com](https://weavatrix.com)
|
|
14
13
|
- Source: [github.com/sergii-ziborov/weavatrix](https://github.com/sergii-ziborov/weavatrix)
|
|
15
14
|
- npm: [`weavatrix`](https://www.npmjs.com/package/weavatrix) — `npx -y weavatrix <repoRoot>`
|
|
16
15
|
|
|
17
|
-
## 0.3
|
|
16
|
+
## 0.3: the MIT core
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
This package is the complete offline engine: graph,
|
|
20
19
|
local semantic precision, Health, dependencies, duplicates, impact, history and
|
|
21
20
|
architecture safeguards remain here under the existing MIT license. The MIT
|
|
22
21
|
license is not changing.
|
|
23
22
|
|
|
24
|
-
Every outbound HTTP capability
|
|
23
|
+
Every outbound HTTP capability belongs to the separately versioned package
|
|
25
24
|
`weavatrix-online`, beginning at 0.1.0. That connector targets either the
|
|
26
25
|
managed Weavatrix Cloud or a commercially licensed self-hosted Weavatrix
|
|
27
|
-
Enterprise deployment through one source-free wire contract. It is
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
implementations from this package; until then the new connector is not
|
|
34
|
-
publishable. The decision and release gates are in
|
|
26
|
+
Enterprise deployment through one source-free wire contract. It is an expanded
|
|
27
|
+
superset that depends on this package, not a fork: it may add proprietary tools,
|
|
28
|
+
skills and analyzers through the supported extension API while graph/parser/LSP/
|
|
29
|
+
Health fixes continue to ship once in the MIT core.
|
|
30
|
+
|
|
31
|
+
The decision and release gates are in
|
|
35
32
|
[docs/adr/0001-v0.3-offline-online-split.md](docs/adr/0001-v0.3-offline-online-split.md).
|
|
36
33
|
|
|
37
34
|
## One graph, many views
|
|
38
35
|
|
|
39
|
-
The
|
|
36
|
+
The 34 MCP methods are not one linear workflow. They project the same reusable graph into the
|
|
40
37
|
smallest view needed for a task: repository and build state; modules, communities, hubs, neighbors
|
|
41
38
|
and paths; exact symbols and bounded source context; endpoint and cross-repository API flow; symbol
|
|
42
39
|
and change-set blast radius; graph revision and behavioral Git history; Health, dependencies,
|
|
43
40
|
vulnerabilities, dead code, clones, coverage and hot paths; proof-carrying change verification;
|
|
44
|
-
intended-architecture contracts and ratchets; local multi-repository work
|
|
45
|
-
preview-confirmed Hosted exchange.
|
|
41
|
+
intended-architecture contracts and ratchets; and local multi-repository work.
|
|
46
42
|
|
|
47
43
|
## Why
|
|
48
44
|
|
|
@@ -234,38 +230,29 @@ startup_timeout_sec = 20
|
|
|
234
230
|
tool_timeout_sec = 60
|
|
235
231
|
```
|
|
236
232
|
|
|
237
|
-
The package has one binary and
|
|
238
|
-
all local analysis plus `open_repo
|
|
239
|
-
|
|
233
|
+
The package has one binary and two local security profiles. The omitted profile is `offline`:
|
|
234
|
+
all local analysis plus `open_repo`. Pass `pinned` as the final argument for a stricter repository
|
|
235
|
+
boundary:
|
|
240
236
|
|
|
241
|
-
| Profile | Local repository switching | Cross-repo graph reads |
|
|
242
|
-
|
|
243
|
-
| `offline` (default) | Yes, only through `open_repo` | Yes, only through `trace_api_contract` |
|
|
244
|
-
| `pinned` | No | No |
|
|
245
|
-
| `osv` | Yes | Yes, only when called | Only when `refresh_advisories` is called | No |
|
|
246
|
-
| `hosted` / `full` | Yes | Yes, only when called | Only when called | `preview_sync` is local; only `sync_graph` or `pull_architecture_contract` can make a request |
|
|
237
|
+
| Profile | Local repository switching | Cross-repo graph reads | Network requests |
|
|
238
|
+
|---|---:|---:|---:|
|
|
239
|
+
| `offline` (default) | Yes, only through `open_repo` | Yes, only through `trace_api_contract` | None |
|
|
240
|
+
| `pinned` | No | No | None |
|
|
247
241
|
|
|
248
242
|
```sh
|
|
249
243
|
# Hard-pin one repository and expose no network tools:
|
|
250
244
|
claude mcp add -s user weavatrix -- npx -y weavatrix <repoRoot> pinned
|
|
251
245
|
|
|
252
|
-
# Add only explicit OSV refresh:
|
|
253
|
-
claude mcp add -s user weavatrix -- npx -y weavatrix <repoRoot> osv
|
|
254
|
-
|
|
255
|
-
# Enable the owner-authenticated hosted workflow:
|
|
256
|
-
claude mcp add -s user weavatrix -- npx -y weavatrix <repoRoot> hosted
|
|
257
246
|
```
|
|
258
247
|
|
|
259
248
|
Advanced registrations may still pass an exact comma-separated capability set:
|
|
260
|
-
`graph,search,source,health,build,retarget,crossrepo
|
|
261
|
-
|
|
262
|
-
the narrower capability names.
|
|
249
|
+
`graph,search,source,health,build,retarget,crossrepo`. The former `online`, `osv`, `hosted` and `full`
|
|
250
|
+
profiles fail loudly and direct the user to `weavatrix-online`; none can re-enable HTTP in this artifact.
|
|
263
251
|
|
|
264
252
|
After an upgrade, reconnect the MCP server or start a new agent task before checking its tool list:
|
|
265
253
|
many clients snapshot `tools/list` and input schemas for the lifetime of one connection. The expected
|
|
266
|
-
counts are 31 for `pinned
|
|
267
|
-
|
|
268
|
-
legacy advisory/Hosted groups. `graph_stats` reports the running package version, enabled capabilities
|
|
254
|
+
counts are 31 for `pinned` and 34 for `offline`. A custom capability list must include `crossrepo` to
|
|
255
|
+
expose `trace_api_contract`. `graph_stats` reports the running package version, enabled capabilities
|
|
269
256
|
and registered-tool count so a cached process can be distinguished from the installed package.
|
|
270
257
|
|
|
271
258
|
Or clone it:
|
|
@@ -347,7 +334,7 @@ lockfile drift; accepts an immutable `base_ref`, `changed_files`, and `debt: new
|
|
|
347
334
|
review-scoped results; production paths are the default and `include_classified:true` opts into
|
|
348
335
|
test/generated/docs evidence), `find_duplicates` (MOSS winnowing over method bodies — catches copy-paste even
|
|
349
336
|
after renames and can inspect strict small clones down to 12 tokens; homogeneous router boilerplate
|
|
350
|
-
is suppressed unless `include_boilerplate:true`), `coverage_map` (existing coverage reports mapped onto the graph; untested hotspots
|
|
337
|
+
is suppressed unless `include_boilerplate:true`; immutable declarative catalog shapes require `include_declarative:true`), `coverage_map` (existing coverage reports mapped onto the graph; untested hotspots
|
|
351
338
|
ranked by connectivity — tests are never executed), `hot_path_review` (bounded local-cost evidence
|
|
352
339
|
with separate graph/test risk), `verify_architecture`,
|
|
353
340
|
`explain_architecture_violation`, `propose_architecture_exception`
|
|
@@ -411,13 +398,9 @@ are hidden unless `include_low_signal:true`. Broad ranking remains orientation e
|
|
|
411
398
|
`seed_files`, `seed_symbols`, an exact endpoint, or `inspect_symbol` when the intended entry point is already known.
|
|
412
399
|
Instruction words such as “REST”, “path”, and “inspect” do not become fuzzy code seeds.
|
|
413
400
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
`pull_architecture_contract`, `sync_graph`. `preview_sync` performs no request and returns the destination,
|
|
418
|
-
repository UUID, exact payload fields/sections/size/hash and a short-lived confirmation token for
|
|
419
|
-
the cached payload. `sync_graph` sends only with both that token and `dry_run:false`; its legacy
|
|
420
|
-
dry-run form remains a no-network compatibility alias.
|
|
401
|
+
Remote advisory refresh, source-free sync and shared architecture-contract exchange are supplied by
|
|
402
|
+
the separate `weavatrix-online` superset. The core keeps offline advisory matching and the local
|
|
403
|
+
extension services used to validate imported records and source-free payloads.
|
|
421
404
|
|
|
422
405
|
Quality of life: graph/health reads auto-reconcile and expose `none` / `incremental` / `full`
|
|
423
406
|
freshness, with a short clean-read debounce to avoid rescanning the repository for every tool call;
|
|
@@ -430,6 +413,21 @@ metrics are not persisted or transmitted by Weavatrix. If a source checkout's pa
|
|
|
430
413
|
while an old daemon remains alive, `initialize`, `tools/list`, and tool calls fail loudly with
|
|
431
414
|
`STALE_RUNTIME` until the client reconnects; the opt-out is reserved for deliberate development.
|
|
432
415
|
|
|
416
|
+
### 0.3.0 network-free core and exact dependency evidence
|
|
417
|
+
|
|
418
|
+
- The MIT package now contains 34 local tools and no outbound HTTP implementation. Online OSV,
|
|
419
|
+
Cloud and licensed self-hosted workflows live in the separately installed `weavatrix-online`
|
|
420
|
+
0.1.0 superset, which depends on this core through a supported extension API.
|
|
421
|
+
- Cargo.lock provides exact crates.io pins; saved `cargo audit --json` results add RustSec evidence.
|
|
422
|
+
Missing or stale advisory evidence stays incomplete.
|
|
423
|
+
- Maven/Gradle imports map to exact class ownership from already installed JARs. Missing JARs,
|
|
424
|
+
unresolved build expressions and heuristic fallbacks are `PARTIAL`, never a false `COMPLETE`.
|
|
425
|
+
- Real self-dogfood produced persisted `EXACT_LSP` edges and an exact direct caller for
|
|
426
|
+
`startMcpServer`; GraphQL, gRPC and event/Kafka contract joins remain explicit about dynamic
|
|
427
|
+
`UNKNOWN` targets.
|
|
428
|
+
|
|
429
|
+
Full patch notes: [docs/releases/v0.3.0.md](docs/releases/v0.3.0.md).
|
|
430
|
+
|
|
433
431
|
### 0.2.19 supply-chain signal precision
|
|
434
432
|
|
|
435
433
|
- Installed-package URL literals and ordinary standalone network calls no longer become malware
|
|
@@ -758,9 +756,36 @@ scope; ambiguous same-name definitions are skipped and reported as incomplete ev
|
|
|
758
756
|
|
|
759
757
|
The same tool can select GraphQL, gRPC or event evidence. It joins static GraphQL schema fields and
|
|
760
758
|
operations, proto service methods and typed stub calls, and static Kafka/event-bus topic producers
|
|
761
|
-
and consumers across registered repositories.
|
|
762
|
-
|
|
763
|
-
|
|
759
|
+
and consumers across registered repositories. It also imports a bounded, source-free
|
|
760
|
+
`weavatrix.transport-runtime.v1` report from each repository. Normalized observations and OTLP JSON
|
|
761
|
+
spans can confirm runtime GraphQL fields, gRPC service/methods and Kafka/event destinations. A report
|
|
762
|
+
must match the active `graphRevision`, be fresh, declare per-transport capture completeness and map
|
|
763
|
+
dynamic observations to a repository-relative file/line before that exact `UNKNOWN` is resolved.
|
|
764
|
+
|
|
765
|
+
The default report paths are `.weavatrix/transport-runtime.json` and
|
|
766
|
+
`.weavatrix/reports/transport-runtime.json`; `runtime_evidence_files` can select another contained
|
|
767
|
+
path per repository label/UUID. The minimum envelope is:
|
|
768
|
+
|
|
769
|
+
```json
|
|
770
|
+
{
|
|
771
|
+
"schema": "weavatrix.transport-runtime.v1",
|
|
772
|
+
"repositoryRevision": "<active graphRevision>",
|
|
773
|
+
"generatedAt": "2026-07-19T12:00:00.000Z",
|
|
774
|
+
"coverage": { "graphql": "COMPLETE", "grpc": "COMPLETE", "event": "COMPLETE" },
|
|
775
|
+
"observations": [
|
|
776
|
+
{ "transport": "graphql", "side": "client", "operation": "QUERY", "name": "viewer", "file": "src/api.ts", "line": 42 },
|
|
777
|
+
{ "transport": "grpc", "side": "server", "service": "User", "name": "GetUser" },
|
|
778
|
+
{ "transport": "event", "side": "publisher", "name": "user.created" }
|
|
779
|
+
]
|
|
780
|
+
}
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
OTLP `resourceSpans` may be placed at the envelope root or under `otlp`; standard `rpc.*`,
|
|
784
|
+
`graphql.*`, `messaging.*` and `code.*` span attributes are normalized. Missing, stale, mismatched,
|
|
785
|
+
partial or uncorrelated runtime evidence stays `PARTIAL`/`UNKNOWN`; it is never converted into an
|
|
786
|
+
absence claim. The two default report files are excluded from the graph file universe so they do not
|
|
787
|
+
change the revision they attest; a custom report path must be Git-ignored. Reports must omit payloads,
|
|
788
|
+
headers, source text and credentials.
|
|
764
789
|
|
|
765
790
|
Persistent per-client-repository configuration lives in `.weavatrix.json`:
|
|
766
791
|
|
|
@@ -819,53 +844,24 @@ Graph queries, audits, clone scans and repository switching run locally. The def
|
|
|
819
844
|
is `graph,search,source,health,build,retarget,crossrepo`: no Weavatrix HTTP requests. `open_repo`
|
|
820
845
|
changes the active local boundary only when called. Select `pinned` to remove repository switching,
|
|
821
846
|
global repository listing, and cross-repository graph tracing too.
|
|
822
|
-
Weavatrix itself initiates outbound HTTP
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
- `pull_architecture_contract` — sends the active repository's opaque stable UUID with bearer
|
|
829
|
-
authentication, downloads the owner-approved target-architecture contract, validates it, and
|
|
830
|
-
stores the contract in the local graph cache. It sends no source, symbol, or repository path.
|
|
831
|
-
- `preview_sync` — builds a bounded evidence snapshot locally without sending anything. The preview
|
|
832
|
-
shows the destination host/path, normalized repository name, opaque UUID,
|
|
833
|
-
payload version, exact top-level fields, included sections, node/link/byte counts and canonical
|
|
834
|
-
SHA-256 hash. A `sync_graph` call with `dry_run:false` and its exact short-lived `confirm_token` sends
|
|
835
|
-
the cached payload to the same destination. A token alone does not send while the default dry-run
|
|
836
|
-
remains active. It
|
|
837
|
-
sends payload v3: the v2 graph
|
|
838
|
-
allowlist plus module dependencies, runtime/compile-time cycles, declared boundary violations,
|
|
839
|
-
health findings, complexity-threshold breaches, stack identifiers, a bounded direct/transitive
|
|
840
|
-
dependency graph, direct package usage, and bounded clone/divergence review candidates. Local
|
|
841
|
-
analyzers may read repository source and manifests to derive those
|
|
842
|
-
facts. The wire contract has no fields for file bodies, snippets, absolute host paths, environment
|
|
843
|
-
values or Git remotes; unknown fields are discarded and unsafe optional path metadata is omitted.
|
|
844
|
-
The confirmed request also carries the normalized repository display name used by the
|
|
845
|
-
hosted list. The endpoint is **yours**, configured through `WEAVATRIX_SYNC_URL` and the optional
|
|
846
|
-
`WEAVATRIX_SYNC_TOKEN`; the feature is off by default. Pass `payload_version: 2` only for an
|
|
847
|
-
intentional graph-only compatibility sync—there is no silent downgrade that discards evidence.
|
|
848
|
-
Graphs that predate current typed-edge/provenance metadata must be rebuilt once before V3 sync;
|
|
849
|
-
V3 also refuses a stale graph so
|
|
850
|
-
source-derived evidence cannot be mixed with old topology. HTTPS is required except for an
|
|
851
|
-
explicitly configured loopback endpoint; embedded URL credentials and fragments are rejected.
|
|
847
|
+
Weavatrix 0.3 itself initiates no outbound HTTP. It can validate a connector-provided advisory cache,
|
|
848
|
+
construct a bounded source-free payload locally and cache a validated architecture contract, but
|
|
849
|
+
those local extension services have no transport or credential input. The separately installed
|
|
850
|
+
`weavatrix-online` superset owns OSV requests, Cloud/Enterprise authentication, capability
|
|
851
|
+
negotiation, consent and synchronization. It depends on this MIT core and may add proprietary tools,
|
|
852
|
+
skills and local analyzers without replacing baseline implementations.
|
|
852
853
|
|
|
853
854
|
Evidence sections carry independent `state` (`COMPLETE`, `PARTIAL`, `NOT_CHECKED`,
|
|
854
855
|
`NOT_APPLICABLE`, `ERROR`) and `verdict` (`PASS`, `FAIL`, `UNKNOWN`) fields plus exact
|
|
855
856
|
`total/returned/truncated` counts. An incomplete check is never converted into a clean zero. V3 is
|
|
856
857
|
deterministic: volatile timestamps are excluded and the allowlisted snapshot has a canonical SHA-256
|
|
857
|
-
fingerprint
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
If a network tool is not listed by the MCP client, that is the expected offline default. With the
|
|
861
|
-
user's approval, select `osv` for advisory refresh only or `hosted` for the hosted workflow,
|
|
862
|
-
restart/reconnect the MCP server, and then invoke the intended tool. Enabling a profile does not
|
|
863
|
-
trigger a request by itself.
|
|
858
|
+
fingerprint. This local service exists so a separately licensed connector can reuse the same bounded
|
|
859
|
+
wire validation without duplicating core logic; it cannot send the payload itself.
|
|
864
860
|
|
|
865
|
-
Profiles (`offline`, `pinned
|
|
866
|
-
`
|
|
867
|
-
|
|
868
|
-
|
|
861
|
+
Profiles (`offline`, `pinned`) or exact local capability groups (`graph`, `search`, `source`, `health`,
|
|
862
|
+
`build`, `retarget`, `crossrepo`) are selectable through the final positional argument. Omitted caps
|
|
863
|
+
use `offline`; an explicit capability list exposes exactly the named groups. Legacy network profile
|
|
864
|
+
names fail loudly and direct the user to `weavatrix-online`.
|
|
869
865
|
|
|
870
866
|
## Security model
|
|
871
867
|
|
|
@@ -874,12 +870,12 @@ vulnerability findings. This is where each capability comes from and how it is c
|
|
|
874
870
|
|
|
875
871
|
| Capability alert | Why it exists | Activation and boundary |
|
|
876
872
|
|---|---|---|
|
|
877
|
-
| Network access |
|
|
873
|
+
| Network access | None in the MIT core | `offline` and `pinned` expose only local tools; Online/Cloud/Enterprise integration is a separate package |
|
|
878
874
|
| Shell access | Local `git` powers staleness/change impact; `rg` accelerates search; the bundled TLS/tsserver process supplies bounded JS/TS semantic evidence; timed-out Windows child trees may be terminated; `verified_change` can optionally run an existing package test/check/verify script | The semantic provider never invokes repository code. Test execution separately requires `run_tests:true` plus `WEAVATRIX_ALLOW_TEST_RUNS=1`, rejects arbitrary commands and shell-sensitive arguments, and should be enabled only for trusted repository scripts |
|
|
879
875
|
| Debug / dynamic loading | Cache-busted `import()` hot-reloads watched MCP tool entry modules; `createRequire` loads package metadata and parser dependencies | Loads files from the installed package; no `eval` |
|
|
880
|
-
| Environment access | Reads `WEAVATRIX_*`
|
|
876
|
+
| Environment access | Reads local `WEAVATRIX_*` runtime settings; ordinary helpers inherit a credential-stripped environment, while TLS/tsserver receives only allowlisted OS/temp/locale values and a constrained executable path | Connector secrets are removed from child-process and worker environments. TLS/tsserver also receives no registry/proxy/cloud credentials or `NODE_OPTIONS` |
|
|
881
877
|
| Filesystem access | Reads the active repository, graph, lockfiles and coverage reports; writes derived graphs and advisory/architecture caches | Realpath containment blocks traversal and symlink/junction escapes. The `pinned` profile removes `open_repo`; the default `offline` profile permits only explicit local switching. The optional malware dependency scan may inspect installed dependency caches such as GOPATH |
|
|
882
|
-
| URL strings |
|
|
878
|
+
| URL strings | Advisory findings may contain fixed OSV documentation links | The core has no outbound request implementation |
|
|
883
879
|
|
|
884
880
|
`read_source` accepts repo-relative regular files only, caps a read at 2 MB, and refuses lexical or
|
|
885
881
|
realpath escapes. Graph-derived paths pass through the same boundary before analysis tools read
|
|
@@ -923,8 +919,9 @@ loader) behind the thin stdio entry `src/mcp-server.mjs`.
|
|
|
923
919
|
cross-repository wrapper/liveness fixture, framework/convention fixture, full MCP lifecycle gate
|
|
924
920
|
and a portable real-repository runner. Six source-free 0.2.1 real-repository baselines are
|
|
925
921
|
recorded; edge provenance is gated end-to-end and the strict six-repository release command passes.
|
|
926
|
-
- **Cross-transport contracts**
|
|
927
|
-
|
|
922
|
+
- **Cross-transport contracts** combine bounded HTTP/static models with revision-bound GraphQL,
|
|
923
|
+
gRPC and Kafka/event runtime or OTLP evidence; unobserved dynamic identities stay explicit
|
|
924
|
+
`UNKNOWN`.
|
|
928
925
|
- **Hosted architecture workbench** at
|
|
929
926
|
[app.weavatrix.com](https://app.weavatrix.com) is an access-controlled preview for
|
|
930
927
|
owner-authenticated source-free evidence and revision history. Its UI and backend evolve
|
package/SECURITY.md
CHANGED
|
@@ -65,39 +65,21 @@ the selected package-manager script with the credential-stripped child environme
|
|
|
65
65
|
scripts are repository-controlled code and may have arbitrary side effects, so enable this flag only
|
|
66
66
|
for repositories and scripts you trust.
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
confirmation token for that cached payload and destination; the token
|
|
79
|
-
expires after five minutes and is stored only in process memory. A token with the default dry-run,
|
|
80
|
-
or an incorrect/expired token, does not send. Sync rejects
|
|
81
|
-
embedded URL credentials and fragments and requires HTTPS except for explicit loopback development
|
|
82
|
-
endpoints. Query parameters may be used by a configured endpoint but are not echoed in previews or
|
|
83
|
-
errors.
|
|
68
|
+
The 0.3 MIT artifact contains no HTTP tool, sync endpoint/token setting, remote advisory refresher or
|
|
69
|
+
compatibility alias that can enable one. `offline` and `pinned` are both network-free. Advisory
|
|
70
|
+
matching reads only a local validated cache; a missing or stale cache remains `NOT_CHECKED` or
|
|
71
|
+
`PARTIAL`, never a clean zero.
|
|
72
|
+
|
|
73
|
+
The public extension API allows a dependent package to add MCP tools, packaged skills and local
|
|
74
|
+
audit providers. Extension tools cannot replace a core tool, extension profiles cannot replace a
|
|
75
|
+
core profile, and audit providers must declare `network:"none"`; failures remain explicit
|
|
76
|
+
`ERROR/PARTIAL`. The separate `weavatrix-online` superset owns endpoint policy, consent,
|
|
77
|
+
authentication, capability negotiation and every outbound request.
|
|
84
78
|
|
|
85
79
|
Every MCP response includes transient local `_meta["weavatrix/metrics"]` timing, output-size/token
|
|
86
80
|
estimate, graph freshness/revision/update and graph-cache status. Weavatrix does not persist, aggregate
|
|
87
81
|
or transmit these measurements; they are response evidence for the caller, not product telemetry.
|
|
88
82
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
contract has no source-body,
|
|
93
|
-
snippet, absolute-host-path, environment, credential, Git-remote or analyzer-error fields; unknown
|
|
94
|
-
fields are discarded and unsafe optional path metadata is omitted. V3 rejects stale graphs,
|
|
95
|
-
duplicate node IDs, dangling edges and oversized payloads before any request. Graph-only payload v2
|
|
96
|
-
remains an explicit compatibility option and is never selected as a silent fallback.
|
|
97
|
-
|
|
98
|
-
`pull_architecture_contract` sends only the active repository's opaque stable UUID, receives an
|
|
99
|
-
owner-approved target contract, validates it, and caches it locally. It never sends source, symbols,
|
|
100
|
-
file paths, or Git metadata. It applies the same HTTPS-outside-loopback and embedded-credential URL
|
|
101
|
-
rules before sending bearer authentication. Authentication, forbidden, not-found and repository-not-ready responses
|
|
102
|
-
are reported as distinct states so a missing registration or contract is not presented as an opaque
|
|
103
|
-
HTTP failure.
|
|
83
|
+
Core exposes local-only services that build and validate the bounded source-free payload, validate
|
|
84
|
+
connector-provided advisory records, create opaque repository identity and cache a validated
|
|
85
|
+
architecture contract. These services read no connector credential and perform no network I/O.
|
package/bin/weavatrix-mcp.mjs
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
// while the server itself stays a plain module. Positional args pass through:
|
|
4
4
|
// weavatrix-mcp <repoRoot> [caps] — graph path derived automatically
|
|
5
5
|
// weavatrix-mcp <graph.json> <repoRoot> [caps] — explicit graph file
|
|
6
|
-
import('../src/mcp-server.mjs')
|
|
6
|
+
const {startMcpServer} = await import('../src/mcp-server.mjs')
|
|
7
|
+
await startMcpServer()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ADR 0001: Weavatrix 0.3 offline/online split
|
|
2
2
|
|
|
3
|
-
Status: accepted
|
|
3
|
+
Status: accepted; release candidate implemented
|
|
4
4
|
|
|
5
5
|
Date: 2026-07-19
|
|
6
6
|
|
|
@@ -12,9 +12,9 @@ registry, Health, dependency, duplicate, impact, history and architecture tools
|
|
|
12
12
|
remain available without a network capability.
|
|
13
13
|
|
|
14
14
|
All outbound HTTP tools move to the separate public-source `weavatrix-online`
|
|
15
|
-
package, starting at 0.1.0.
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
package, starting at 0.1.0. It uses the permission-required Weavatrix Online
|
|
16
|
+
Source License 1.0 and remains unpublished until the paired release gates pass.
|
|
17
|
+
It extends the MIT engine rather than copying or relicensing it.
|
|
18
18
|
|
|
19
19
|
The managed Cloud and licensed self-hosted Enterprise products are private
|
|
20
20
|
server implementations of the same source-free wire contract. Neither is
|
|
@@ -37,9 +37,11 @@ HTTP implementation.
|
|
|
37
37
|
## Update model
|
|
38
38
|
|
|
39
39
|
`weavatrix-online` depends on a compatible `weavatrix` release and uses a
|
|
40
|
-
supported
|
|
41
|
-
therefore updated once in the MIT core.
|
|
42
|
-
|
|
40
|
+
supported extension API. Parser, graph schema, LSP and baseline Health fixes
|
|
41
|
+
are therefore updated once in the MIT core. Online is an expanded superset: it
|
|
42
|
+
may add proprietary MCP tools, packaged skills and local analyzer providers as
|
|
43
|
+
well as transport, endpoint/authentication and consent workflows. It cannot
|
|
44
|
+
replace or carry patched copies of core implementations.
|
|
43
45
|
|
|
44
46
|
## Release gates
|
|
45
47
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Weavatrix 0.3.0
|
|
2
|
+
|
|
3
|
+
0.3.0 makes the public MIT package a strictly network-free core and introduces
|
|
4
|
+
the supported extension boundary used by the separately versioned
|
|
5
|
+
`weavatrix-online` product.
|
|
6
|
+
|
|
7
|
+
## Trust boundary
|
|
8
|
+
|
|
9
|
+
- The 34 core tools are local. Remote OSV refresh, endpoint authentication,
|
|
10
|
+
architecture pull and graph sync were removed from this package.
|
|
11
|
+
- Legacy `online`, `osv`, `hosted` and `full` profile names fail loudly. They
|
|
12
|
+
cannot re-enable an outbound request implementation.
|
|
13
|
+
- The offline artifact gate scans the packed source boundary and rejects an
|
|
14
|
+
HTTP implementation or Hosted credential/config surface.
|
|
15
|
+
- Extensions compose in-process through a stable API. They may add tools,
|
|
16
|
+
skills and local audit providers without copying or patching the core.
|
|
17
|
+
|
|
18
|
+
## Critical precision fixes
|
|
19
|
+
|
|
20
|
+
- Fresh dogfood of this repository produced 58 persisted `EXACT_LSP` edges.
|
|
21
|
+
An on-demand `get_dependents(startMcpServer)` query returned its direct caller
|
|
22
|
+
as `EXACT_LSP`; zero-edge `UNAVAILABLE` is no longer the expected JS/TS path.
|
|
23
|
+
- `Cargo.lock` v3/v4 registry records become exact crates.io pins for offline
|
|
24
|
+
OSV matching. A saved `cargo audit --json` report is also imported as native
|
|
25
|
+
RustSec vulnerability/warning evidence; missing, invalid or stale reports
|
|
26
|
+
remain visibly incomplete.
|
|
27
|
+
- Maven/Gradle import-to-artifact evidence now reads exact class ownership from
|
|
28
|
+
already installed JAR central directories without executing Java or a build.
|
|
29
|
+
A missing JAR, unresolved property/catalog expression, ambiguity or heuristic
|
|
30
|
+
fallback keeps the ecosystem `PARTIAL` instead of falsely claiming `COMPLETE`.
|
|
31
|
+
- Cross-repository contracts combine static HTTP/GraphQL/gRPC/event models with
|
|
32
|
+
source-free `weavatrix.transport-runtime.v1` reports. Normalized or OTLP JSON
|
|
33
|
+
observations resolve an exact dynamic GraphQL field, gRPC method or
|
|
34
|
+
Kafka/event destination only when the report is fresh, revision-matched,
|
|
35
|
+
capture-complete and source-correlated. Missing or unobserved runtime paths
|
|
36
|
+
remain explicit `UNKNOWN`, never false matches.
|
|
37
|
+
|
|
38
|
+
## Product family
|
|
39
|
+
|
|
40
|
+
`weavatrix` remains the MIT base of the whole product family. The public-source,
|
|
41
|
+
separately licensed `weavatrix-online` 0.1.0 package depends on this release and
|
|
42
|
+
may add Online-only tools, skills and analyzers. Managed Cloud and licensed
|
|
43
|
+
self-hosted servers implement the same source-free wire contract.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "weavatrix",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local repository intelligence MCP for AI coding agents: reusable architecture graph for fast application understanding, Health, dead code, clones, history, blast radius and architecture safeguards.",
|
|
6
6
|
"author": "Sergii Ziborov <sergii.ziborov@gmail.com>",
|
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
"bin": {
|
|
21
21
|
"weavatrix-mcp": "bin/weavatrix-mcp.mjs"
|
|
22
22
|
},
|
|
23
|
+
"exports": {
|
|
24
|
+
"./mcp-runtime": "./src/mcp-runtime.mjs",
|
|
25
|
+
"./extension-api": "./src/mcp/extension-api.mjs",
|
|
26
|
+
"./extension/local-services": "./src/extension/local-services.mjs",
|
|
27
|
+
"./package.json": "./package.json"
|
|
28
|
+
},
|
|
23
29
|
"files": [
|
|
24
30
|
"bin",
|
|
25
31
|
"src",
|
|
@@ -27,6 +33,7 @@
|
|
|
27
33
|
"scripts/run-agent-task-benchmark.mjs",
|
|
28
34
|
"docs/agent-task-benchmark.md",
|
|
29
35
|
"docs/adr/0001-v0.3-offline-online-split.md",
|
|
36
|
+
"docs/releases/v0.3.0.md",
|
|
30
37
|
"docs/releases/v0.2.19.md",
|
|
31
38
|
"README.md",
|
|
32
39
|
"SECURITY.md",
|
|
@@ -40,7 +47,6 @@
|
|
|
40
47
|
"benchmark:real:release": "node scripts/run-real-benchmark.mjs --require-all",
|
|
41
48
|
"benchmark:agent": "node scripts/run-agent-task-benchmark.mjs",
|
|
42
49
|
"benchmark:agent:release": "node scripts/run-agent-task-benchmark.mjs --require-independent",
|
|
43
|
-
"sync:private": "node scripts/sync-private.mjs",
|
|
44
50
|
"build:mcpb": "node scripts/build-mcpb.mjs",
|
|
45
51
|
"verify:release": "node scripts/verify-release.mjs"
|
|
46
52
|
},
|