These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | 4f2bf2d | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
feat: add terms of service confirmation for prompt to query (#3231)
| Commit: | 5fdbd59 | |
|---|---|---|
| Author: | Wilson Rivera | |
Merge branch 'wilson/cosmo-335-cosmo-cloud-prompt-to-query-via-mcp-product' into wilson/cosmo-424-cosmo-add-terms-of-service-confirmation-for-prompt-to-query # Conflicts: # connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go # connect/src/wg/cosmo/platform/v1/platform_pb.ts # controlplane/migrations/meta/0148_snapshot.json # controlplane/migrations/meta/_journal.json
| Commit: | 0e149be | |
|---|---|---|
| Author: | Wilson Rivera | |
Merge branch 'main' into wilson/cosmo-335-cosmo-cloud-prompt-to-query-via-mcp-product
| Commit: | c55b467 | |
|---|---|---|
| Author: | Wilson Rivera | |
feat: implement ai feature terms acceptance
| Commit: | 808eac6 | |
|---|---|---|
| Author: | Sam Gaus | |
Merge branch 'main' into sam/cosmo-415-studio-playground-and-schema-view-should-show-feature platform_pb.ts and platform.pb.go conflicted where both sides added to the platform service. The proto merged cleanly, so both are regenerated from it rather than resolved by hand.
| Commit: | fd12221 | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
feat: add an option to set default headers (#3208)
| Commit: | f627581 | |
|---|---|---|
| Author: | JivusAyrus | |
feat: add an option to set default headers
| Commit: | becdb12 | |
|---|---|---|
| Author: | Wilson Rivera | |
chore: cleanup removed rpc
| Commit: | d76342a | |
|---|---|---|
| Author: | Wilson Rivera | |
Merge remote-tracking branch 'origin/wilson/cosmo-335-cosmo-cloud-prompt-to-query-via-mcp-product' into wilson/cosmo-335-cosmo-cloud-prompt-to-query-via-mcp-product # Conflicts: # controlplane/src/core/services/PromptToQueryService.ts
| Commit: | 792740d | |
|---|---|---|
| Author: | Sam Gaus | |
feat: show feature subgraphs in playground and schema dropdowns Both dropdowns listed a graph's feature flags but not the feature subgraphs those flags contain. Feature subgraphs are now nested under their flag. Scoping them to a flag matters. Feature flags compose independently, so a feature subgraph shared by two flags can be pinned at a different schema version in each, and either can be behind the latest publish when a recomposition failed. Entries therefore show the version that flag's serving composition used, read from graph_composition_subgraphs, not the latest published SDL. GetSubgraphSDLFromLatestComposition cannot resolve them at all since feature subgraphs never appear in the base composition. GetFeatureFlagsInLatestCompositionByFederatedGraph gains a feature_subgraphs field carrying those pinned versions. In the playground, selecting a feature subgraph queries its own routing URL directly, like a base subgraph, so no X-Feature-Flag header is sent.
| Commit: | 098ab60 | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
| Committer: | GitHub | |
refactor(ai): resolve query schemas by version Accept the active router configuration version in GenerateQuery and resolve its SDL within the authenticated federated graph. Return not-found when the graph or schema version cannot be resolved.
| Commit: | 2a0fffa | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
| Committer: | GitHub | |
refactor(proto): move query generation to AI service Move the existing GenerateQuery RPC and response types from NodeService to a dedicated AIService while preserving the current hash-based behavior. Register the new service with the existing router authentication flow.
| Commit: | 8c22265 | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
feat: implement ptq rpc and index schemas
| Commit: | 6a8da18 | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
fix: show feature flags for a federated graph under split config (#3129)
| Commit: | 48f77b3 | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
refactor(ai): resolve query schemas by version Accept the active router configuration version in GenerateQuery and resolve its SDL within the authenticated federated graph. Return not-found when the graph or schema version cannot be resolved.
| Commit: | ee068a4 | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
refactor(proto): move query generation to AI service Move the existing GenerateQuery RPC and response types from NodeService to a dedicated AIService while preserving the current hash-based behavior. Register the new service with the existing router authentication flow.
| Commit: | d2dc1cd | |
|---|---|---|
| Author: | Alessandro Pagnin | |
feat: add filter by proposal name
| Commit: | 93e7b27 | |
|---|---|---|
| Author: | JivusAyrus | |
Merge branch 'main' of github.com:wundergraph/cosmo into suvij/cosmo-315-controlplane-feature-flags-not-shown-for-a-federated-graph
| Commit: | fd817ff | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
refactor: align generate query version field
| Commit: | 7fe0fa1 | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
feat: resolve prompt-to-query indexes by schema version
| Commit: | b3a786e | |
|---|---|---|
| Author: | Alberto Garcia Hierro | |
wip: expose prompt-to-query through MCP
| Commit: | a9b0b5d | |
|---|---|---|
| Author: | Ahmet Soormally | |
| Committer: | Ahmet Soormally | |
fix(router): keep schema discovery protos out of the shared buf module
| Commit: | 455e0c6 | |
|---|---|---|
| Author: | Ahmet Soormally | |
feat(router): add MCP schema discovery for search and query generation
| Commit: | 9543225 | |
|---|---|---|
| Author: | Nithin Kumar B | |
| Committer: | GitHub | |
feat(controlplane): add CreateFederatedSubgraphs batch rpc (#3152)
| Commit: | 2ebe73f | |
|---|---|---|
| Author: | Nithin Kumar B | |
feat(controlplane): add CreateFederatedSubgraphs batch rpc Creates several subgraphs in a single request. Every entry is validated before anything is written and the writes share one transaction, so the request either creates all of the subgraphs or none of them. Creating a subgraph triggers no composition, so this is purely a batched write; schemas are published afterwards with PublishFederatedSubgraphs. The routing and subscription validation that create, publish and update each carried their own near-identical copy of now lives in a single helper. The wording of a few error messages is normalised as a result.
| Commit: | d685de5 | |
|---|---|---|
| Author: | JivusAyrus | |
Merge branch 'main' of github.com:wundergraph/cosmo into suvij/cosmo-315-controlplane-feature-flags-not-shown-for-a-federated-graph
| Commit: | e81b5fa | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
feat: resolve feature subgraphs in federated graph field usage (#3144)
| Commit: | 899b02e | |
|---|---|---|
| Author: | JivusAyrus | |
feat: resolve feature subgraphs in federated graph field usage
| Commit: | b9c52bf | |
|---|---|---|
| Author: | Wilson Rivera | |
feat: implement ptq rpc and index schemas
| Commit: | a2e8028 | |
|---|---|---|
| Author: | JivusAyrus | |
fix(controlplane): report feature flags only when they have a valid composition
| Commit: | a552348 | |
|---|---|---|
| Author: | Ludwig Bedacht | |
| Committer: | GitHub | |
fix: incorrect behavior for abstract types on required fields (#3130)
| Commit: | 536bd54 | |
|---|---|---|
| Author: | Ludwig Bedacht | |
chore: add test cases for abstract required fields
| Commit: | 417c9e8 | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
fix: orphan subgraphs not shown as active on the header (#3086)
| Commit: | 7fbab81 | |
|---|---|---|
| Author: | Wilson Rivera | |
fix: orphan subgraphs not shown as active on the header
| Commit: | 96663cc | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
fix: active subgraph not shown on the subgraph details page (#3063)
| Commit: | 7454692 | |
|---|---|---|
| Author: | Wilson Rivera | |
fix: active subgraph not shown on the subgraph details page
| Commit: | 8aadbf0 | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
feat: add support for feature subgraph checks (#3029)
| Commit: | cb138b5 | |
|---|---|---|
| Author: | JivusAyrus | |
Merge branch 'main' of github.com:wundergraph/cosmo into suvij/eng-9391-controlplane-support-schema-checks-for-feature-subgraphs-and
| Commit: | f704e34 | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
feat: decouple feature flag composition when split config is enabled (#3034)
| Commit: | 4b26cda | |
|---|---|---|
| Author: | Milinda Dias | |
fix(entity-caching): rename EntityCachingConfiguration.entity_cache to entity_cache_configurations Align the proto field with origin/main (entity_cache_configurations). The old name serialized to JSON as entityCache, so the router silently dropped the control-plane's entity caching config on unmarshal. Regenerated Go/TS bindings and updated all GetEntityCache() consumers.
| Commit: | 9a6df7b | |
|---|---|---|
| Author: | Milinda Dias | |
fix(entity-caching): rename EntityCachingConfiguration.entity_cache to entity_cache_configurations Align the proto field with origin/main (entity_cache_configurations). The old name serialized to JSON as entityCache, so the router silently dropped the control-plane's entity caching config on unmarshal. Regenerated Go/TS bindings and updated all GetEntityCache() consumers in the router core and tests.
| Commit: | 426cbf0 | |
|---|---|---|
| Author: | Milinda Dias | |
fix(entity-caching): rename EntityCachingConfiguration.entity_cache to entity_cache_configurations Align the proto field name with origin/main (entity_cache_configurations), which the control plane emits. The old name (entity_cache -> JSON entityCache) caused the router to silently drop the entity caching config on unmarshal. Regenerated Go/TS bindings and updated the router-config builder.
| Commit: | 0c26d31 | |
|---|---|---|
| Author: | Wilson Rivera | |
feat: decouple feature flag composition when split config is enabled
| Commit: | a9e3827 | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | Milinda Dias | |
Merge remote-tracking branch 'origin/main' into milinda/entity-caching-2-router # Conflicts: # composition/src/directive-definition-data/directive-definition-data.ts # composition/src/errors/errors.ts # composition/src/router-configuration/types.ts # composition/src/v1/constants/constants.ts # composition/src/v1/constants/directive-definitions.ts # composition/src/v1/normalization/normalization-factory.ts # composition/src/v1/normalization/types/types.ts # composition/src/v1/normalization/utils.ts # composition/tests/v1/directives/cache-populate.test.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # proto/wg/cosmo/node/v1/node.proto # router/gen/proto/wg/cosmo/node/v1/node.pb.go # shared/src/router-config/builder.ts
| Commit: | 15b3265 | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | Milinda Dias | |
Merge remote-tracking branch 'origin/main' into milinda/entity-caching-1b-demo # Conflicts: # composition/src/directive-definition-data/directive-definition-data.ts # composition/src/errors/errors.ts # composition/src/router-configuration/types.ts # composition/src/v1/constants/constants.ts # composition/src/v1/constants/directive-definitions.ts # composition/src/v1/normalization/normalization-factory.ts # composition/src/v1/normalization/types/types.ts # composition/src/v1/normalization/utils.ts # composition/tests/v1/directives/cache-populate.test.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # proto/wg/cosmo/node/v1/node.proto # router/gen/proto/wg/cosmo/node/v1/node.pb.go # shared/src/router-config/builder.ts
| Commit: | 8c47d71 | |
|---|---|---|
| Author: | JivusAyrus | |
feat: add support for feature subgraph checks
| Commit: | a45b33c | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
fix: pagination in proposals page (#2989)
| Commit: | 3db24b0 | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | GitHub | |
fix: proto changes for entity cache (#2996)
| Commit: | e96a801 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge queryCache into requestScoped (requestScoped becomes 5/5) Restacks @openfed__requestScoped on top of the queryCache branch. The resulting tree is identical to the previous combined stack tip; this commit re-applies the requestScoped feature (including its assertions in shared/test/entity-caching.test.ts) on top of queryCache.
| Commit: | efa4cdf | |
|---|---|---|
| Author: | Milinda Dias | |
chore: remove requestScoped from queryCache branch (queryCache becomes 4/5) Reorders the stack so @openfed__queryCache/@openfed__is sits directly on main as the 4th PR. The @openfed__requestScoped feature is removed here and re-applied on top in the requestScoped branch (now 5/5). The requestScoped assertions in shared/test/entity-caching.test.ts move to that PR. Proto regenerated (request_scoped_configurations field 4 dropped; query_cache remains field 5).
| Commit: | a8cc2af | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | GitHub | |
feat(composition): @openfed__cachePopulate directive (3/5) (#2984) Co-authored-by: Aenimus <david@wundergraph.com>
| Commit: | cd52465 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/requestScoped-directive' into milinda/queryCache-directive # Conflicts: # composition/src/router-configuration/types.ts # composition/src/v1/normalization/normalization-factory.ts # composition/src/v1/warnings/warnings.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # proto/wg/cosmo/node/v1/node.proto # router/gen/proto/wg/cosmo/node/v1/node.pb.go # shared/src/router-config/builder.ts
| Commit: | dc74e32 | |
|---|---|---|
| Author: | Milinda Dias | |
fix: review comments
| Commit: | 9058b72 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/requestScoped-directive' into milinda/queryCache-directive Reconcile queryCache's cache-extraction (old dispatcher structure) with requestScoped's refactored inline structure (from cachePopulate review fixes): - Adopt requestScoped's inline 1-arg extractCacheInvalidateConfig/extractCachePopulateConfig (called during the parent walk); trim processRootFieldCacheDirectives() to only dispatch @openfed__queryCache extraction + @openfed__is placement validation, re-add its normalize() call - extractQueryCacheConfig writes via getOrInitializeEntityCaching (required-field type) - Restore queryCache's richer maxAgeNotPositiveIntegerErrorMessage({directiveName, value}) and update entityCache/cachePopulate call sites + tests to the object form - Dedup imports (ENTITY_CACHE/OPENFED_ENTITY_CACHE/EntityCacheConfiguration/EntityCacheDirectiveNode) - Regenerate node.pb.go (max_age_seconds non-optional); rename test helper to createSubgraphWithDefaultName
| Commit: | e48fef3 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/cachePopulate-directive' into milinda/requestScoped-directive Resolve conflicts from cachePopulate's review-fix refactor: - EntityCachingConfiguration: cachePopulateConfigurations now required; keep requestScopedFields - Dedup imports in normalization-factory.ts / utils.ts (ENTITY_CACHE, OPENFED_ENTITY_CACHE) - Adopt CacheInvalidateConfig -> CacheInvalidateConfiguration rename - normalize(): drop obsolete processRootFieldCacheDirectives() (cache invalidate/populate now extracted inline); extractRequestScopedFields() uses getOrInitializeEntityCaching() - Regenerate node.pb.go (max_age_seconds non-optional per cachePopulate) - Rename test helper createSubgraphWithDefault -> createSubgraphWithDefaultName
| Commit: | da93894 | |
|---|---|---|
| Author: | Milinda Dias | |
fix: review comments
| Commit: | 845b75a | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
Merge branch 'main' into suvij/eng-9781-studio-proposals-table-shows-page-1-of-1-when-more-than-one
| Commit: | 19bbbe5 | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | GitHub | |
feat(composition): @openfed__cacheInvalidate directive (2/5) (#2983) Co-authored-by: Aenimus <daviditstutt@gmail.com>
| Commit: | 44cab48 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/cacheInvalidate-directive' into milinda/cachePopulate-directive
| Commit: | c6fb320 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/entityCache-directive' into milinda/cacheInvalidate-directive
| Commit: | 2075164 | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | GitHub | |
feat(composition): @openfed__entityCache directive (1/5) (#2980)
| Commit: | f21a2a2 | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | GitHub | |
Merge branch 'main' into milinda/entityCache-directive
| Commit: | 238e4fb | |
|---|---|---|
| Author: | JivusAyrus | |
refactor: rename totalProposalsCount to totalCount in proposal responses
| Commit: | ea22596 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/requestScoped-directive' into milinda/queryCache-directive # Conflicts: # composition/src/v1/normalization/normalization-factory.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # router/gen/proto/wg/cosmo/node/v1/node.pb.go # shared/src/router-config/builder.ts
| Commit: | 09ebecc | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/cachePopulate-directive' into milinda/requestScoped-directive # Conflicts: # composition/src/v1/normalization/normalization-factory.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # router/gen/proto/wg/cosmo/node/v1/node.pb.go
| Commit: | bcbc740 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/cacheInvalidate-directive' into milinda/cachePopulate-directive # Conflicts: # composition/src/v1/normalization/normalization-factory.ts # composition/src/v1/normalization/types/types.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # router/gen/proto/wg/cosmo/node/v1/node.pb.go # shared/src/router-config/builder.ts
| Commit: | 34122a1 | |
|---|---|---|
| Author: | Milinda Dias | |
Merge branch 'milinda/entityCache-directive' into milinda/cacheInvalidate-directive # Conflicts: # composition/src/router-configuration/types.ts # composition/src/v1/normalization/normalization-factory.ts # connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go # connect/src/wg/cosmo/node/v1/node_pb.ts # proto/wg/cosmo/node/v1/node.proto # router/gen/proto/wg/cosmo/node/v1/node.pb.go # shared/src/router-config/builder.ts
| Commit: | ecc8047 | |
|---|---|---|
| Author: | Milinda Dias | |
fix: review comments
| Commit: | c3301e0 | |
|---|---|---|
| Author: | JivusAyrus | |
fix: pagination in proposals page
| Commit: | 69f5af6 | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__entityCache directive
| Commit: | 1d693ce | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__cacheInvalidate directive
| Commit: | b52c0a2 | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__cachePopulate directive
| Commit: | 4c90da9 | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__queryCache and @openfed__is directives
| Commit: | faca30a | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__requestScoped directive
| Commit: | 37a198e | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__queryCache and @openfed__is directives
| Commit: | 2859cba | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__requestScoped directive
| Commit: | c7044af | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__cachePopulate directive
| Commit: | 3e8d3c5 | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__cacheInvalidate directive
| Commit: | 62bbc85 | |
|---|---|---|
| Author: | Milinda Dias | |
feat(composition): @openfed__entityCache directive
| Commit: | f54ef2a | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
feat: controlpanel move to a accept first strategy for batch (#2963)
| Commit: | 9aef4ca | |
|---|---|---|
| Author: | Ondrej Synacek | |
| Committer: | GitHub | |
feat: delete & list clients using wgc (#2795)
| Commit: | 51f766e | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | Milinda Dias | |
feat(composition): entity caching directives, proto config types, and generated bindings Extracted from jensneuse/entity-caching-v2 (PR #2777) — composition + proto layer only. - composition: @openfed__entityCache / @openfed__queryCache / @openfed__requestScoped directive definitions, extraction in normalization-factory, ConfigurationData types, warnings, and tests (incl. fuzz + mapping rules) - proto: additive DataSourceConfiguration fields 17-21 and new messages (EntityCacheConfiguration, RootFieldCacheConfiguration, EntityKeyMapping, EntityCacheFieldMapping, CachePopulateConfiguration, CacheInvalidateConfiguration, RequestScopedFieldConfiguration) - regenerated bindings: router/gen, connect-go, connect (incl. graphqlmetrics regen side-effects), composition-go bundle - shared: router-config serializer for the new proto fields Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| Commit: | 6029ae0 | |
|---|---|---|
| Author: | Ahmet Soormally | |
| Committer: | GitHub | |
fix(router/connectrpc): map GraphQL enum values to proto names on response path (#2928)
| Commit: | ccbcb76 | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
feat: implement early stop for feature flag updates with no changes (#2932) Co-authored-by: Wilson Rivera <wilson@wundergraph.com>
| Commit: | 9361a30 | |
|---|---|---|
| Author: | Nithin Kumar B | |
| Committer: | GitHub | |
feat(cli): add subgraph batch-publish command (#2899)
| Commit: | 2c2cb71 | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
feat: add functionality to restrict the login methods of an organization (#2896) Co-authored-by: Alessandro Pagnin <ale@wundergraph.com>
| Commit: | 42b307b | |
|---|---|---|
| Author: | Suvij Surya | |
| Committer: | GitHub | |
feat: add options to restrict certain namespaces to certain login methods (#2876)
| Commit: | 89635b7 | |
|---|---|---|
| Author: | Ondrej Synacek | |
| Committer: | GitHub | |
feat: declutter step 1 in the onboarding + new empty state (#2888)
| Commit: | 716b786 | |
|---|---|---|
| Author: | Ondrej Synacek | |
| Committer: | GitHub | |
feat: studio handles analytics downtime gracefully (#2878)
| Commit: | d465de3 | |
|---|---|---|
| Author: | Jens Neuse | |
feat(router): entity caching with L1/L2, shadow mode, and analytics Re-implementation of PR #2777 entity caching on top of fresh origin/main (74ce84b4b6). Previous branch was hard-reset; backup preserved on backup/v2-pre-merge-attempt-2-20260524-121556 and rescue/entity-caching-merge-attempt-20260523-135801. What's added: - @openfed__entityCache, queryCache, cachePopulate, cacheInvalidate, is, requestScoped composition directives + extraction - router/pkg/entitycache: ristretto memory + go-redis L2 + circuit breaker - router/pkg/metric/entity_cache_metrics: OTLP + Prometheus instruments - router/core wiring: WithEntityCaching, WithEntityCacheInstances, EntityCachingHandlerOptions, cachingOptions(reqCtx) for per-request X-WG-Disable-Entity-Cache[-L1/-L2] header overrides (dev-only), EntityCacheKeyInterceptor module interface - Proto extensions on node.v1.DataSourceConfiguration: EntityCacheConfiguration, QueryCacheConfiguration / RootFieldCacheConfiguration, CachePopulateConfiguration, CacheInvalidateConfiguration, EntityKeyMapping/EntityCacheFieldMapping, RequestScopedFieldConfiguration - Playground Cache Explorer view + cache-mode dropdown - demo cachegraph/cachegraph_ext/viewer subgraphs + cache-demo runner - router-tests/entity_caching test suite (59 subtests) - composition tests: entity-caching (60), entity-cache-mapping-rules, entity-cache-fuzz (~135 total) - benchmark/ k6 scenarios for cache performance - cli/cachegraph-cachedemo compose configs Dep bump: - graphql-go-tools v2.4.0 -> v2.4.1-0.20260523190154-590f67798262 (PR #1259 HEAD, includes widening fix 85fb34e388 for L1 request-scoped refetch behavior). Adapts to: - LoaderCache.Set TTL moved to per-entry CacheEntry.TTL - SubscriptionUpdater.Close(kind) split into Complete()/Error(data)/Done() - resolve.VariablesView replaces *astjson.Value in cost calc - ArenaResolveGraphQLResponse (3-arg) replaces ResolveGraphQLResponse - resolve.ConnectionID typed alias; NewConnectionID() - plan.FieldCost (was FieldWeight) + DirectiveArgumentWeights - subscriptionclient.ErrFailedUpgrade / ErrInvalidSubprotocol - graphql_datasource.WithUpgradeClient/WithStreamingClient options Adopts main's individual-metric-fields pattern in graphServer (dropped the grouped serverMetrics struct). Adopts main's separated Complete() + Done() pattern in subscription_event_updater (adapters pair the calls). Validation: - go build ./... clean for router, router-tests, demo - router-tests/entity_caching: 59/59 subtests pass - router/core unit tests (entity cache wiring): pass - router/pkg/{entitycache,metric,config}: pass - composition entity-caching tests: 60/60 pass - composition entity-cache mapping + fuzz: 135/135 pass - composition build clean - demo end-to-end smoke: router serves cached entities, cache hit observed (17ms cold -> 0ms warm), embedded playground includes Cache Explorer + cache-mode dropdown Supersedes the failed merge attempt preserved on the rescue branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Commit: | cbd541c | |
|---|---|---|
| Author: | Milinda Dias | |
| Committer: | Milinda Dias | |
emit FIELD_SELECTION events for nested object accessors When events export is enabled, the router writes one FIELD_SELECTION row per Object/Array accessor selected inside an entity scope, in addition to the existing per-leaf FIELD_HASH rows. Emission rides on EventsExport.Enabled — no separate sub-flag. Downstream consumers filter via the EventType column if they only want field_hash. The accessor row gives downstream coverage analytics (hub) the signal to count an accessor as observed even though cosmo's router flattens nested reads onto the parent entity and never emits a row keyed by the accessor name on its own. Wire change: - proto: new EventType.FIELD_SELECTION = 13, new string child_type_name field at slot 94 (reserved 95 for a future concrete_type_name). - engine flag plumbed through CachingOptions.EmitFieldSelections; router sets it to true whenever EventsExport.Enabled is true. - router builder mirrors the FIELD_HASH PII guard (drop on KeyHash=0). - writer appends ChildTypeName as the last column; new ClickHouse migration adds the column (additive, no row rewrite). - end-to-end router-test asserts FIELD_SELECTION for Warehouse.location emits with ChildTypeName=Location, non-zero KeyHash, zero FieldHash. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Commit: | cc85f26 | |
|---|---|---|
| Author: | Jens Neuse | |
| Committer: | Ahmet Soormally | |
chore(code-mode-v2): demo full-federation fix + yoko proto/mock refresh Multi-topic snapshot of code-mode-v2 work in progress. demo/code-mode: - Include all non-EDFS demo subgraphs in the local federation: hobbies, products, test1, countries + the products_fg feature graph (under feature flag myff), in addition to the existing employees, family, availability, mood. Mirrors demo/graph-no-edg.yaml. The previous 4-subgraph set silently lacked Employee.hobbies (and Country, products, test1 fields), so code-mode-search-tools could never resolve prompts about those domains. - Fix BSD sed bug in prepare-schemas.sh: the previous regex used `\b` which macOS BSD sed treats as a literal `b`, so @authenticated stayed on type/enum/interface definitions. Switch to a portable (^|whitespace)/(non-word|EOL) anchor pair. Also extend the loop to cover all 9 subgraphs. - start.sh + run_subgraphs_subset.sh: launch the 5 added subgraphs on ports 4003/4004/4006/4009/4010 with matching wait_url checks. - README + Makefile comment: document the new subgraph set. yoko proto + mock + client: - Rewrite proto/wg/cosmo/code_mode/yoko/v1/yoko.proto and regenerate router/gen/proto/.../{yoko.pb.go, yokov1connect/yoko.connect.go}. - Rewrite demo/code-mode/yoko-mock/main.go (and tests). - Refresh router/internal/codemode/yoko/{client.go, client_test.go, searcher.go} against the new contract. - Bump demo/code-mode/{mcp-stdio-proxy,yoko-mock}/go.{mod,sum}. Connect demo: - Refresh demo/code-mode-connect/{README.md, router-config.yaml, start.sh} against the same yoko contract. Build / generate: - Makefile: pass --include-imports to `buf generate` so transitive protobuf imports are regenerated alongside the yoko v1 schema. - buf.yaml + buf.lock: pin the buf module deps now needed for that --include-imports run. - router/gen/proto/buf/validate/validate.pb.go: regenerated buf validate import. Misc: - router/pkg/codemode/varschema: new package + tests. - router/pkg/grpcconnector/grpcplugin/grpc_plugin.go: minor update. - router/internal/codemode/sandbox/sandbox_test.go + router/internal/codemode/server/observability_handler_test.go: adjust tests for the refreshed client surface. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Commit: | 85b4593 | |
|---|---|---|
| Author: | Jens Neuse | |
| Committer: | Ahmet Soormally | |
feat(router): add Code Mode MCP server Adds a second MCP server next to the existing per-operation one, exposing two generic tools instead of one-tool-per-operation: - code_mode_search_tools: takes prompts, generates GraphQL ops, registers them in the session catalog, returns their TS signatures. - code_mode_run_js: runs an async arrow against the session catalog inside a JS sandbox (V8 isolate), with tools.<name>(vars) bound to the registered ops. Includes: - router/internal/codemode: harness, sandbox, server, storage, tsgen, yoko (query-gen client), calltrace, observability. - proto/wg/cosmo/code_mode/yoko/v1: Yoko query-gen Connect API. - router/pkg/config: code_mode config block (auth, sandbox limits, query-generation endpoint, named-ops, mutation approval). - demo/code-mode: local federation + Yoko mock + start scripts + MCP client config snippets (Claude Code, Claude Desktop, Codex). - demo/code-mode-connect: alternate demo against an external yoko Connect supergraph (set YOKO_DIR). - router-tests: end-to-end named-ops integration test.
| Commit: | f0d0ef6 | |
|---|---|---|
| Author: | Milinda Dias | |
Squash merge cohort-config-versions-rpc into milinda/entity-caching-3-feature-flag-rollout-router
| Commit: | 3f125a2 | |
|---|---|---|
| Author: | Wilson Rivera | |
| Committer: | GitHub | |
feat: add feature flag recomposition support (#2853)
| Commit: | 522968a | |
|---|---|---|
| Author: | Wilson Rivera | |
Merge branch 'feat/split-configs' into wilson/eng-9541-controlplane-add-rpc-method-to-recompose-a-specific-feature # Conflicts: # connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go # connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go # connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts # connect/src/wg/cosmo/platform/v1/platform_connect.ts # connect/src/wg/cosmo/platform/v1/platform_pb.ts # controlplane/src/core/bufservices/PlatformService.ts # controlplane/src/core/services/CompositionService.ts # proto/wg/cosmo/platform/v1/platform.proto
| Commit: | 3bd0039 | |
|---|---|---|
| Author: | Wilson Rivera | |
chore: add audit log and error counts
| Commit: | 6a64b7e | |
|---|---|---|
| Author: | Wilson Rivera | |
feat: add rpc method to recompose feature flags
| Commit: | ba63680 | |
|---|---|---|
| Author: | Dominik Korittki | |
| Committer: | GitHub | |
fix(router): fix unmarshall error of mapper.json during config fetch (#2842)
| Commit: | 3c5d33e | |
|---|---|---|
| Author: | Jens Neuse | |
chore(code-mode-v2): demo full-federation fix + yoko proto/mock refresh Multi-topic snapshot of code-mode-v2 work in progress. demo/code-mode: - Include all non-EDFS demo subgraphs in the local federation: hobbies, products, test1, countries + the products_fg feature graph (under feature flag myff), in addition to the existing employees, family, availability, mood. Mirrors demo/graph-no-edg.yaml. The previous 4-subgraph set silently lacked Employee.hobbies (and Country, products, test1 fields), so code-mode-search-tools could never resolve prompts about those domains. - Fix BSD sed bug in prepare-schemas.sh: the previous regex used `\b` which macOS BSD sed treats as a literal `b`, so @authenticated stayed on type/enum/interface definitions. Switch to a portable (^|whitespace)/(non-word|EOL) anchor pair. Also extend the loop to cover all 9 subgraphs. - start.sh + run_subgraphs_subset.sh: launch the 5 added subgraphs on ports 4003/4004/4006/4009/4010 with matching wait_url checks. - README + Makefile comment: document the new subgraph set. yoko proto + mock + client: - Rewrite proto/wg/cosmo/code_mode/yoko/v1/yoko.proto and regenerate router/gen/proto/.../{yoko.pb.go, yokov1connect/yoko.connect.go}. - Rewrite demo/code-mode/yoko-mock/main.go (and tests). - Refresh router/internal/codemode/yoko/{client.go, client_test.go, searcher.go} against the new contract. - Bump demo/code-mode/{mcp-stdio-proxy,yoko-mock}/go.{mod,sum}. Connect demo: - Refresh demo/code-mode-connect/{README.md, router-config.yaml, start.sh} against the same yoko contract. Build / generate: - Makefile: pass --include-imports to `buf generate` so transitive protobuf imports are regenerated alongside the yoko v1 schema. - buf.yaml + buf.lock: pin the buf module deps now needed for that --include-imports run. - router/gen/proto/buf/validate/validate.pb.go: regenerated buf validate import. Misc: - router/pkg/codemode/varschema: new package + tests. - router/pkg/grpcconnector/grpcplugin/grpc_plugin.go: minor update. - router/internal/codemode/sandbox/sandbox_test.go + router/internal/codemode/server/observability_handler_test.go: adjust tests for the refreshed client surface. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>