wgc 0.78.2 → 0.79.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 CHANGED
@@ -22,10 +22,17 @@ npm install -g wgc --help
22
22
 
23
23
  ### Telemetry
24
24
 
25
- The CLI tool collects anonymous usage data to improve the tool. You can disable this by setting this variable in accordance to the [Console Do Not Track](https://consoledonottrack.com/) standard:
26
- ```shell
27
- export DO_NOT_TRACK=1
28
- ```
25
+ The CLI tool collects usage data to help us improve the tool and understand how users interact with it. You can disable telemetry in one of the following ways:
26
+
27
+ 1. Set the environment variable:
28
+ ```shell
29
+ export COSMO_TELEMETRY_DISABLED=true
30
+ ```
31
+
32
+ 2. Follow the [Console Do Not Track](https://consoledonottrack.com/) standard:
33
+ ```shell
34
+ export DO_NOT_TRACK=1
35
+ ```
29
36
 
30
37
  ### Development
31
38
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wgc",
3
- "version": "0.78.2",
3
+ "version": "0.79.0",
4
4
  "description": "The official CLI tool to manage the GraphQL Federation Platform Cosmo",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -67,6 +67,7 @@
67
67
  "ora": "^8.0.1",
68
68
  "pathe": "^1.1.1",
69
69
  "picocolors": "^1.0.0",
70
+ "posthog-node": "^4.17.1",
70
71
  "trieve-ts-sdk": "^0.0.80",
71
72
  "undici": "^6.21.1",
72
73
  "zod": "^3.22.4"
@@ -87,7 +88,7 @@
87
88
  "prettier": "^3.5.2",
88
89
  "tsx": "^4.17.0",
89
90
  "typescript": "5.5.2",
90
- "vitest": "^2.1.9"
91
+ "vitest": "^3.1.2"
91
92
  },
92
93
  "gitHead": "c37aed755e1b19ed91d30f9b5f7041e15c56901a"
93
94
  }
@@ -3,6 +3,7 @@ import { Command } from 'commander';
3
3
  import { CreateClient } from '../core/client/client.js';
4
4
  import { config, configDir } from '../core/config.js';
5
5
  import { checkForUpdates } from '../utils.js';
6
+ import { capture } from '../core/telemetry.js';
6
7
  import AuthCommands from './auth/index.js';
7
8
  import MonographCommands from './graph/monograph/index.js';
8
9
  import FederatedGraphCommands from './graph/federated-graph/index.js';
@@ -76,5 +77,26 @@ program.hook('preAction', async () => {
76
77
  mkdirSync(configDir, { recursive: true });
77
78
  await checkForUpdates();
78
79
  });
80
+ // Hook to capture command usage
81
+ program.hook('preAction', (thisCommand, actionCommand) => {
82
+ const commandPath = actionCommand.name();
83
+ const parentNames = [];
84
+ let current = actionCommand.parent;
85
+ // Build the full command path (e.g., "federated-graph publish")
86
+ while (current) {
87
+ if (current.name() !== '') {
88
+ parentNames.unshift(current.name());
89
+ }
90
+ current = current.parent;
91
+ }
92
+ const fullCommandPath = [...parentNames, commandPath].join(' ');
93
+ const args = actionCommand.args || [];
94
+ // Capture command execution event
95
+ capture('command_executed', {
96
+ command_path: fullCommandPath,
97
+ command_options: actionCommand.opts(),
98
+ command_args: args,
99
+ });
100
+ });
79
101
  export default program;
80
102
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,sBAAsB,MAAM,kCAAkC,CAAC;AACtE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAC/D,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAC1D,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAEnE,IAAI,QAAQ,EAAE,CAAC;IACb,oCAAoC;IACpC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEnE,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAC;IACH,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;KACxC,WAAW,CAAC;;;CAGd,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,CAChB,iBAAiB,CAAC;IAChB,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,sBAAsB,CAAC;IACrB,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,cAAc,CAAC;IACb,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,YAAY,CAAC;IACX,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,iBAAiB,CAAC;IAChB,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,cAAc,CAAC;IACb,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,iBAAiB,CAAC;IAChB,MAAM;CACP,CAAC,CACH,CAAC;AACF,OAAO,CAAC,UAAU,CAChB,gBAAgB,CAAC;IACf,MAAM;CACP,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,UAAU,CAChB,oBAAoB,CAAC;IACnB,MAAM;CACP,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,UAAU,CAChB,mBAAmB,CAAC;IAClB,MAAM;CACP,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,UAAU,CAChB,WAAW,CAAC;IACV,MAAM;CACP,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,UAAU,CAChB,gBAAgB,CAAC;IACf,MAAM;CACP,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IACnC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,gCAAgC;AAChC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE;IACvD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,IAAI,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;IAEnC,gEAAgE;IAChE,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,GAAG,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;IAEtC,kCAAkC;IAClC,OAAO,CAAC,kBAAkB,EAAE;QAC1B,YAAY,EAAE,eAAe;QAC7B,eAAe,EAAE,aAAa,CAAC,IAAI,EAAE;QACrC,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,OAAO,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { lexicographicSortSchema, printSchema } from 'graphql';
3
+ import { buildSchemaWithoutDirectives } from '../schema.js';
4
+ describe('buildSchemaWithoutDirectives', () => {
5
+ it('should remove all directive definitions and usages from a federation schema', () => {
6
+ const schemaWithDirectives = `
7
+ directive @key(fields: String!) on OBJECT | INTERFACE
8
+ directive @external on FIELD_DEFINITION
9
+ directive @requires(fields: String!) on FIELD_DEFINITION
10
+ directive @provides(fields: String!) on FIELD_DEFINITION
11
+ directive @extends on OBJECT | INTERFACE
12
+
13
+ type Query {
14
+ topProducts: [Product]
15
+ }
16
+
17
+ type Product @key(fields: "id") {
18
+ id: ID!
19
+ name: String!
20
+ price: Int @external
21
+ weight: Int @external
22
+ shippingEstimate: Int @requires(fields: "price weight")
23
+ }
24
+
25
+ type User @key(fields: "id") @extends {
26
+ id: ID! @external
27
+ username: String @external
28
+ reviews: [Review] @provides(fields: "author")
29
+ }
30
+
31
+ type Review {
32
+ id: ID!
33
+ author: User
34
+ product: Product!
35
+ rating: Int!
36
+ }
37
+ `;
38
+ const expectedSchema = `type Product {
39
+ id: ID!
40
+ name: String!
41
+ price: Int
42
+ shippingEstimate: Int
43
+ weight: Int
44
+ }
45
+
46
+ type Query {
47
+ topProducts: [Product]
48
+ }
49
+
50
+ type Review {
51
+ author: User
52
+ id: ID!
53
+ product: Product!
54
+ rating: Int!
55
+ }
56
+
57
+ type User {
58
+ id: ID!
59
+ reviews: [Review]
60
+ username: String
61
+ }`;
62
+ const schema = buildSchemaWithoutDirectives(schemaWithDirectives);
63
+ // Sort the schema to ensure consistent output
64
+ const sortedSchema = lexicographicSortSchema(schema);
65
+ const cleanedSchemaString = printSchema(sortedSchema);
66
+ // Compare the actual cleaned schema with expected schema
67
+ expect(cleanedSchemaString.trim()).toBe(expectedSchema.trim());
68
+ });
69
+ it('should throw an error for an invalid schema', () => {
70
+ const invalidSchema = `
71
+ type Query {
72
+ invalidField: NonExistentType
73
+ }
74
+ `;
75
+ expect(() => buildSchemaWithoutDirectives(invalidSchema)).toThrowError('Failed to parse schema: Unknown type: "NonExistentType".');
76
+ });
77
+ });
78
+ //# sourceMappingURL=schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../../../../../../src/commands/mcp/tools/utils/__tests__/schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+B5B,CAAC;QAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuBzB,CAAC;QAEC,MAAM,MAAM,GAAG,4BAA4B,CAAC,oBAAoB,CAAC,CAAC;QAClE,8CAA8C;QAC9C,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,mBAAmB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAEtD,yDAAyD;QACzD,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,aAAa,GAAG;;;;KAIrB,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CACpE,0DAA0D,CAC3D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ /**
3
+ * Removes all directive definitions and directive usages from a GraphQL schema string
4
+ * and returns a built GraphQLSchema.
5
+ *
6
+ * @param schemaString - The GraphQL schema string to process
7
+ * @returns A built GraphQLSchema with all directives removed
8
+ */
9
+ export declare function buildSchemaWithoutDirectives(schemaString: string): GraphQLSchema;
@@ -0,0 +1,28 @@
1
+ import { parse, visit } from 'graphql';
2
+ import { buildASTSchema } from '@wundergraph/composition';
3
+ /**
4
+ * Removes all directive definitions and directive usages from a GraphQL schema string
5
+ * and returns a built GraphQLSchema.
6
+ *
7
+ * @param schemaString - The GraphQL schema string to process
8
+ * @returns A built GraphQLSchema with all directives removed
9
+ */
10
+ export function buildSchemaWithoutDirectives(schemaString) {
11
+ // Parse the schema into an AST
12
+ try {
13
+ const ast = parse(schemaString, { noLocation: true });
14
+ // Visit the AST and remove all directives
15
+ const cleanedAst = visit(ast, {
16
+ // Remove directive definitions
17
+ DirectiveDefinition: () => null,
18
+ // Remove directive usages from any node that can have directives
19
+ Directive: () => null,
20
+ });
21
+ // Build and return the schema
22
+ return buildASTSchema(cleanedAst, { assumeValid: true, assumeValidSDL: true });
23
+ }
24
+ catch (error) {
25
+ throw new Error(`Failed to parse schema: ${error.message}`);
26
+ }
27
+ }
28
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../src/commands/mcp/tools/utils/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,cAAc,EAAa,MAAM,0BAA0B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,YAAoB;IAC/D,+BAA+B;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,0CAA0C;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE;YAC5B,+BAA+B;YAC/B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI;YAC/B,iEAAiE;YACjE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;SACtB,CAAC,CAAC;QAEH,8BAA8B;QAC9B,OAAO,cAAc,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { buildSchema, parse, validate } from 'graphql';
2
+ import { parse, validate } from 'graphql';
3
+ import { buildSchemaWithoutDirectives } from './utils/schema.js';
3
4
  /**
4
5
  * Registers the verify-query-against-in-memory-schema tool with the MCP server.
5
6
  *
@@ -9,7 +10,6 @@ import { buildSchema, parse, validate } from 'graphql';
9
10
  */
10
11
  export const registerVerifyQueryAgainstInMemorySchemaTool = ({ server, opts, }) => {
11
12
  server.tool('verify_query_against_in_memory_schema', 'Verify if a GraphQL query is valid against a local in memory Supergraph or GraphQL SDL.', { query: z.string(), schema: z.string() }, ({ query, schema: schemaString }) => {
12
- // Renamed schema to schemaString to avoid conflict
13
13
  try {
14
14
  let document;
15
15
  try {
@@ -20,14 +20,14 @@ export const registerVerifyQueryAgainstInMemorySchemaTool = ({ server, opts, })
20
20
  content: [{ type: 'text', text: `Query parsing failed:\n${syntaxError.message}` }],
21
21
  };
22
22
  }
23
- // Build the schema from the string
23
+ // Build the schema from the string, removing all directives
24
24
  let schema;
25
25
  try {
26
- schema = buildSchema(schemaString);
26
+ schema = buildSchemaWithoutDirectives(schemaString);
27
27
  }
28
28
  catch (schemaError) {
29
29
  return {
30
- content: [{ type: 'text', text: `Schema building failed:\n${schemaError.message}` }],
30
+ content: [{ type: 'text', text: schemaError.message }],
31
31
  };
32
32
  }
33
33
  // Validate the query against the schema
@@ -1 +1 @@
1
- {"version":3,"file":"verify-query-against-in-memory-schema.js","sourceRoot":"","sources":["../../../../../src/commands/mcp/tools/verify-query-against-in-memory-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAGrE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,EAC3D,MAAM,EACN,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,CAAC,IAAI,CACT,uCAAuC,EACvC,yFAAyF,EACzF,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EACzC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QAClC,mDAAmD;QACnD,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,WAAgB,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;iBACnF,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,WAAgB,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;iBACrF,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAEpD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,gBAAgB;qBACnC,GAAG,CAAC,CAAC,KAAmB,EAAE,EAAE;;oBAC3B,MAAM,SAAS,GACb,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;wBAClF,kBAAkB,CAAC;oBACrB,OAAO,KAAK,KAAK,CAAC,OAAO,QAAQ,SAAS,GAAG,CAAC;gBAChD,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,aAAa,EAAE,EAAE,CAAC;iBAChF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;aACxE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,iCAAiC;YACjC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"verify-query-against-in-memory-schema.js","sourceRoot":"","sources":["../../../../../src/commands/mcp/tools/verify-query-against-in-memory-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,EAC3D,MAAM,EACN,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,CAAC,IAAI,CACT,uCAAuC,EACvC,yFAAyF,EACzF,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EACzC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,WAAgB,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;iBACnF,CAAC;YACJ,CAAC;YAED,4DAA4D;YAC5D,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,4BAA4B,CAAC,YAAY,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,WAAgB,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;iBACvD,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAEpD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,gBAAgB;qBACnC,GAAG,CAAC,CAAC,KAAmB,EAAE,EAAE;;oBAC3B,MAAM,SAAS,GACb,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;wBAClF,kBAAkB,CAAC;oBACrB,OAAO,KAAK,KAAK,CAAC,OAAO,QAAQ,SAAS,GAAG,CAAC;gBAChD,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,aAAa,EAAE,EAAE,CAAC;iBAChF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;aACxE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,iCAAiC;YACjC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -4,6 +4,7 @@ import { Command, program } from 'commander';
4
4
  import { resolve } from 'pathe';
5
5
  import pc from 'picocolors';
6
6
  import { VCSContext } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
7
+ import { splitLabel } from '@wundergraph/cosmo-shared';
7
8
  import { config, getBaseHeaders } from '../../../core/config.js';
8
9
  import { verifyGitHubIntegration } from '../../../github.js';
9
10
  import { handleCheckResult } from '../../../handle-check-result.js';
@@ -15,6 +16,8 @@ export default (opts) => {
15
16
  command.option('--schema <path-to-schema>', 'The path of the new schema file.');
16
17
  command.option('--delete', 'Run checks in case the subgraph is deleted.');
17
18
  command.option('--skip-traffic-check', 'This will skip checking for client traffic and any breaking change will fail the run.');
19
+ command.option('--label [labels...]', 'The labels to apply to the subgraph. The labels are passed in the format <key>=<value> <key>=<value>.' +
20
+ ' This parameter is always ignored if the subgraph already exists.', []);
18
21
  command.action(async (name, options) => {
19
22
  let schemaFile;
20
23
  if (!options.schema && !options.delete) {
@@ -45,6 +48,7 @@ export default (opts) => {
45
48
  delete: options.delete,
46
49
  skipTrafficCheck: options.skipTrafficCheck,
47
50
  vcsContext,
51
+ labels: options.label.map((label) => splitLabel(label)),
48
52
  }, {
49
53
  headers: getBaseHeaders(),
50
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../src/commands/subgraph/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../src/commands/subgraph/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,yDAAyD,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,WAAW,CAAC,yFAAyF,CAAC,CAAC;IAC/G,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,2EAA2E,CAAC,CAAC;IACxG,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,gCAAgC,CAAC,CAAC;IAC7E,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,CAAC;IAChF,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,6CAA6C,CAAC,CAAC;IAC1E,OAAO,CAAC,MAAM,CACZ,sBAAsB,EACtB,uFAAuF,CACxF,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,qBAAqB,EACrB,uGAAuG;QACrG,mEAAmE,EACrE,EAAE,CACH,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACrC,IAAI,UAAU,CAAC;QAEf,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CACX,EAAE,CAAC,GAAG,CACJ,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,wDAAwD,CAAC,CACzG,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,kCAAkC,EAAE,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnG,IAAI,UAAkC,CAAC;QAEvC,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtE,UAAU,GAAG,IAAI,UAAU,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,WAAW;gBAC1B,SAAS,EAAE,MAAM,CAAC,cAAc;gBAChC,MAAM,EAAE,MAAM,CAAC,WAAW;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,mDAAmD;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CACzD;YACE,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;YAC9B,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,UAAU;YACV,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAChE,EACD;YACE,OAAO,EAAE,cAAc,EAAE;SAC1B,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,IAAI,CAAC,kCAAkC,EAAE,CAAC;YACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,6CAA6C;YAC7C,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Initialize PostHog client
3
+ * This should be called once at the start of the CLI
4
+ */
5
+ export declare const initTelemetry: () => void;
6
+ /**
7
+ * Capture a usage event
8
+ */
9
+ export declare const capture: (eventName: string, properties?: Record<string, any>) => void;
10
+ /**
11
+ * Shutdown PostHog client - should be called before CLI exits
12
+ */
13
+ export declare const shutdownTelemetry: () => Promise<void>;
@@ -0,0 +1,109 @@
1
+ import os from 'node:os';
2
+ import { PostHog } from 'posthog-node';
3
+ import { config, getBaseHeaders } from './config.js';
4
+ // Environment variables to allow opting out of telemetry
5
+ // Support for COSMO_TELEMETRY_DISABLED and Console Do Not Track standard
6
+ const TELEMETRY_DISABLED = process.env.COSMO_TELEMETRY_DISABLED === 'true' || process.env.DO_NOT_TRACK === '1';
7
+ let client = null;
8
+ // Detect if running in a CI environment
9
+ const isCI = () => {
10
+ return Boolean(process.env.CI || // Travis CI, CircleCI, GitLab CI, GitHub Actions, etc.
11
+ process.env.CONTINUOUS_INTEGRATION ||
12
+ process.env.BUILD_NUMBER || // Jenkins
13
+ process.env.TEAMCITY_VERSION || // TeamCity
14
+ process.env.GITLAB_CI ||
15
+ process.env.GITHUB_ACTIONS ||
16
+ process.env.BUILDKITE);
17
+ };
18
+ /**
19
+ * Initialize PostHog client
20
+ * This should be called once at the start of the CLI
21
+ */
22
+ export const initTelemetry = () => {
23
+ if (TELEMETRY_DISABLED) {
24
+ return;
25
+ }
26
+ const posthogApiKey = process.env.POSTHOG_API_KEY || '';
27
+ const posthogHost = process.env.POSTHOG_HOST || 'https://eu.i.posthog.com';
28
+ client = new PostHog(posthogApiKey, {
29
+ host: posthogHost,
30
+ flushAt: 1, // For CLI, we want to send events immediately
31
+ flushInterval: 0, // Don't wait to flush events
32
+ disableGeoip: false,
33
+ });
34
+ // Handle errors silently to not interrupt CLI operations
35
+ client.on('error', (err) => {
36
+ if (process.env.DEBUG) {
37
+ console.error('Telemetry error:', err);
38
+ }
39
+ });
40
+ };
41
+ /**
42
+ * Capture a usage event
43
+ */
44
+ export const capture = (eventName, properties = {}) => {
45
+ if (TELEMETRY_DISABLED || !client) {
46
+ return;
47
+ }
48
+ try {
49
+ const distinctId = getDistinctId();
50
+ const metadata = getMetadata();
51
+ client.capture({
52
+ distinctId,
53
+ event: eventName,
54
+ properties: {
55
+ ...metadata,
56
+ ...properties,
57
+ },
58
+ });
59
+ }
60
+ catch (err) {
61
+ // Silently fail to not disrupt CLI operations
62
+ if (process.env.DEBUG) {
63
+ console.error('Failed to capture telemetry event:', err);
64
+ }
65
+ }
66
+ };
67
+ /**
68
+ * Generate a consistent distinct ID
69
+ */
70
+ const getDistinctId = () => {
71
+ // Use organization slug if available
72
+ const headers = getBaseHeaders();
73
+ // Convert HeadersInit to Record to safely access properties
74
+ const headersRecord = Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, value.toString()]));
75
+ const organizationSlug = headersRecord['cosmo-org-slug'] || 'anonymous';
76
+ return `cli_${organizationSlug}`;
77
+ };
78
+ /**
79
+ * Get CLI metadata to include with all events
80
+ */
81
+ const getMetadata = () => {
82
+ var _a;
83
+ return {
84
+ cli_version: config.version,
85
+ node_version: process.version,
86
+ os_name: process.platform,
87
+ os_version: ((_a = process.release) === null || _a === void 0 ? void 0 : _a.name) || '',
88
+ platform: process.arch,
89
+ machine_id: os.hostname(),
90
+ is_ci: isCI(),
91
+ };
92
+ };
93
+ /**
94
+ * Shutdown PostHog client - should be called before CLI exits
95
+ */
96
+ export const shutdownTelemetry = async () => {
97
+ if (client) {
98
+ try {
99
+ await client.shutdown();
100
+ }
101
+ catch (err) {
102
+ // Silently fail
103
+ if (process.env.DEBUG) {
104
+ console.error('Failed to shutdown telemetry:', err);
105
+ }
106
+ }
107
+ }
108
+ };
109
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/core/telemetry.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -3,9 +3,12 @@ import * as dotenv from 'dotenv';
3
3
  import pc from 'picocolors';
4
4
  import boxen from 'boxen';
5
5
  import program from './commands/index.js';
6
+ import { initTelemetry, shutdownTelemetry } from './core/telemetry.js';
6
7
  dotenv.config();
8
+ initTelemetry();
7
9
  try {
8
10
  await program.parseAsync(process.argv);
11
+ await shutdownTelemetry();
9
12
  }
10
13
  catch (e) {
11
14
  console.log('');
@@ -24,5 +27,6 @@ Please try the below steps to solve the issue
24
27
  borderStyle: 'round',
25
28
  }));
26
29
  process.exitCode = 1;
30
+ await shutdownTelemetry();
27
31
  }
28
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG;;;;MAIZ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;;MAE9B,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAAC;IAExE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,EAAE;QACb,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,OAAO;KACrB,CAAC,CACH,CAAC;IAEF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,aAAa,EAAE,CAAC;AAEhB,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG;;;;MAIZ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;;MAE9B,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAAC;IAExE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,EAAE;QACb,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,OAAO;KACrB,CAAC,CACH,CAAC;IAEF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAErB,MAAM,iBAAiB,EAAE,CAAC;AAC5B,CAAC"}