vscode-apollo 2.5.5 → 2.6.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.
Files changed (183) hide show
  1. package/.circleci/config.yml +17 -0
  2. package/.github/workflows/E2E.yml +25 -5
  3. package/.github/workflows/build-prs.yml +2 -1
  4. package/.prettierignore +3 -0
  5. package/.semgrepignore +2 -0
  6. package/.vscode/settings.json +7 -2
  7. package/CHANGELOG.md +14 -0
  8. package/apollo.connectors.mapping.configuration.json +10 -0
  9. package/package.json +39 -5
  10. package/sampleWorkspace/connectors-community/.github/ISSUE_TEMPLATE/connector-bug-report.md +36 -0
  11. package/sampleWorkspace/connectors-community/.github/ISSUE_TEMPLATE/new-connector.md +10 -0
  12. package/sampleWorkspace/connectors-community/.github/renovate.json5 +3 -0
  13. package/sampleWorkspace/connectors-community/.vscode/extensions.json +3 -0
  14. package/sampleWorkspace/connectors-community/.vscode/settings.json +13 -0
  15. package/sampleWorkspace/connectors-community/.vscode/tasks.json +10 -0
  16. package/sampleWorkspace/connectors-community/README.md +108 -0
  17. package/sampleWorkspace/connectors-community/apollo.config.json +5 -0
  18. package/sampleWorkspace/connectors-community/connectors/.template/Dockerfile +5 -0
  19. package/sampleWorkspace/connectors-community/connectors/.template/README +46 -0
  20. package/sampleWorkspace/connectors-community/connectors/.template/connector.graphql +31 -0
  21. package/sampleWorkspace/connectors-community/connectors/.template/router.yaml +18 -0
  22. package/sampleWorkspace/connectors-community/connectors/.template/supergraph.yaml +6 -0
  23. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/README +12 -0
  24. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/albums.graphql +48 -0
  25. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/comments.graphql +54 -0
  26. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/photos.graphql +54 -0
  27. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/posts.graphql +51 -0
  28. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/supergraph.yaml +26 -0
  29. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/todos.graphql +51 -0
  30. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/users.graphql +80 -0
  31. package/sampleWorkspace/connectors-community/connectors/TM-Forum/README.md +9 -0
  32. package/sampleWorkspace/connectors-community/connectors/TM-Forum/router.yaml +18 -0
  33. package/sampleWorkspace/connectors-community/connectors/TM-Forum/supergraph.yaml +6 -0
  34. package/sampleWorkspace/connectors-community/connectors/TM-Forum/tmf622-ProductOrdering.graphql +296 -0
  35. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/README.md +7 -0
  36. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/addresses.graphql +30 -0
  37. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/customer.graphql +77 -0
  38. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/products.graphql +70 -0
  39. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/router.yaml +24 -0
  40. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/supergraph.yaml +14 -0
  41. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/swagger.json +69226 -0
  42. package/sampleWorkspace/connectors-community/connectors/anthropic/Dockerfile +5 -0
  43. package/sampleWorkspace/connectors-community/connectors/anthropic/README +61 -0
  44. package/sampleWorkspace/connectors-community/connectors/anthropic/messages.graphql +258 -0
  45. package/sampleWorkspace/connectors-community/connectors/anthropic/router.yaml +18 -0
  46. package/sampleWorkspace/connectors-community/connectors/anthropic/supergraph.yaml +6 -0
  47. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/README +3 -0
  48. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/connector.graphql +38 -0
  49. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/router.yaml +18 -0
  50. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/supergraph.yaml +6 -0
  51. package/sampleWorkspace/connectors-community/connectors/apple/README +36 -0
  52. package/sampleWorkspace/connectors-community/connectors/apple/app-store-connect.graphql +100 -0
  53. package/sampleWorkspace/connectors-community/connectors/apple/router.yaml +18 -0
  54. package/sampleWorkspace/connectors-community/connectors/apple/supergraph.yaml +6 -0
  55. package/sampleWorkspace/connectors-community/connectors/aws/README +125 -0
  56. package/sampleWorkspace/connectors-community/connectors/aws/dynamodb.graphql +130 -0
  57. package/sampleWorkspace/connectors-community/connectors/aws/json-responses/product-price.json +10 -0
  58. package/sampleWorkspace/connectors-community/connectors/aws/json-responses/products.json +53 -0
  59. package/sampleWorkspace/connectors-community/connectors/aws/lambda.graphql +179 -0
  60. package/sampleWorkspace/connectors-community/connectors/aws/router.yaml +54 -0
  61. package/sampleWorkspace/connectors-community/connectors/aws/supergraph.yaml +10 -0
  62. package/sampleWorkspace/connectors-community/connectors/bored/README.md +35 -0
  63. package/sampleWorkspace/connectors-community/connectors/bored/bored.graphql +87 -0
  64. package/sampleWorkspace/connectors-community/connectors/bored/supergraph.yaml +6 -0
  65. package/sampleWorkspace/connectors-community/connectors/common-room/README.md +23 -0
  66. package/sampleWorkspace/connectors-community/connectors/common-room/contacts.graphql +141 -0
  67. package/sampleWorkspace/connectors-community/connectors/common-room/json-responses/members_email_.json +61 -0
  68. package/sampleWorkspace/connectors-community/connectors/common-room/router.yaml +18 -0
  69. package/sampleWorkspace/connectors-community/connectors/common-room/supergraph.yaml +6 -0
  70. package/sampleWorkspace/connectors-community/connectors/googlemaps/README.md +58 -0
  71. package/sampleWorkspace/connectors-community/connectors/googlemaps/distancematrix.graphql +155 -0
  72. package/sampleWorkspace/connectors-community/connectors/googlemaps/places-legacy.graphql +117 -0
  73. package/sampleWorkspace/connectors-community/connectors/googlemaps/places.graphql +399 -0
  74. package/sampleWorkspace/connectors-community/connectors/googlemaps/router.yaml +18 -0
  75. package/sampleWorkspace/connectors-community/connectors/googlemaps/supergraph.yaml +18 -0
  76. package/sampleWorkspace/connectors-community/connectors/googlemaps/timezone.graphql +64 -0
  77. package/sampleWorkspace/connectors-community/connectors/heygen/README +105 -0
  78. package/sampleWorkspace/connectors-community/connectors/heygen/avatars.graphql +79 -0
  79. package/sampleWorkspace/connectors-community/connectors/heygen/photo-avatars.graphql +454 -0
  80. package/sampleWorkspace/connectors-community/connectors/heygen/router.yaml +21 -0
  81. package/sampleWorkspace/connectors-community/connectors/heygen/supergraph.yaml +10 -0
  82. package/sampleWorkspace/connectors-community/connectors/jira/README +36 -0
  83. package/sampleWorkspace/connectors-community/connectors/jira/connector.graphql +197 -0
  84. package/sampleWorkspace/connectors-community/connectors/jira/router.yaml +18 -0
  85. package/sampleWorkspace/connectors-community/connectors/jira/supergraph.yaml +6 -0
  86. package/sampleWorkspace/connectors-community/connectors/museums/README.md +40 -0
  87. package/sampleWorkspace/connectors-community/connectors/museums/chicagoArt.graphql +150 -0
  88. package/sampleWorkspace/connectors-community/connectors/museums/met.graphql +119 -0
  89. package/sampleWorkspace/connectors-community/connectors/museums/supergraph.yaml +10 -0
  90. package/sampleWorkspace/connectors-community/connectors/nws/README.md +45 -0
  91. package/sampleWorkspace/connectors-community/connectors/nws/alerts.graphql +598 -0
  92. package/sampleWorkspace/connectors-community/connectors/nws/supergraph.yaml +6 -0
  93. package/sampleWorkspace/connectors-community/connectors/odata/README +18 -0
  94. package/sampleWorkspace/connectors-community/connectors/odata/connector.graphql +171 -0
  95. package/sampleWorkspace/connectors-community/connectors/odata/router.yaml +18 -0
  96. package/sampleWorkspace/connectors-community/connectors/odata/supergraph.yaml +6 -0
  97. package/sampleWorkspace/connectors-community/connectors/openai/README.md +61 -0
  98. package/sampleWorkspace/connectors-community/connectors/openai/assistants.graphql +285 -0
  99. package/sampleWorkspace/connectors-community/connectors/openai/chat-completions.graphql +169 -0
  100. package/sampleWorkspace/connectors-community/connectors/openai/models.graphql +47 -0
  101. package/sampleWorkspace/connectors-community/connectors/openai/router.yaml +24 -0
  102. package/sampleWorkspace/connectors-community/connectors/openai/supergraph.yaml +14 -0
  103. package/sampleWorkspace/connectors-community/connectors/pokeapi/README +45 -0
  104. package/sampleWorkspace/connectors-community/connectors/pokeapi/games.graphql +70 -0
  105. package/sampleWorkspace/connectors-community/connectors/pokeapi/locations.graphql +127 -0
  106. package/sampleWorkspace/connectors-community/connectors/pokeapi/moves.graphql +107 -0
  107. package/sampleWorkspace/connectors-community/connectors/pokeapi/pokemon.graphql +539 -0
  108. package/sampleWorkspace/connectors-community/connectors/pokeapi/router.yaml +18 -0
  109. package/sampleWorkspace/connectors-community/connectors/pokeapi/supergraph.yaml +18 -0
  110. package/sampleWorkspace/connectors-community/connectors/strapi/README.md +75 -0
  111. package/sampleWorkspace/connectors-community/connectors/strapi/router.yaml +19 -0
  112. package/sampleWorkspace/connectors-community/connectors/strapi/supergraph.yaml +6 -0
  113. package/sampleWorkspace/connectors-community/connectors/strapi/users.graphql +227 -0
  114. package/sampleWorkspace/connectors-community/connectors/stripe/README.md +83 -0
  115. package/sampleWorkspace/connectors-community/connectors/stripe/checkout.graphql +112 -0
  116. package/sampleWorkspace/connectors-community/connectors/stripe/core-resources.graphql +868 -0
  117. package/sampleWorkspace/connectors-community/connectors/stripe/payment-methods.graphql +526 -0
  118. package/sampleWorkspace/connectors-community/connectors/stripe/products.graphql +162 -0
  119. package/sampleWorkspace/connectors-community/connectors/stripe/router.yaml +26 -0
  120. package/sampleWorkspace/connectors-community/connectors/stripe/supergraph.yaml +18 -0
  121. package/sampleWorkspace/connectors-community/connectors/supabase/README.md +80 -0
  122. package/sampleWorkspace/connectors-community/connectors/supabase/router.yaml +5 -0
  123. package/sampleWorkspace/connectors-community/connectors/supabase/supabase.graphql +143 -0
  124. package/sampleWorkspace/connectors-community/connectors/supabase/supergraph.yaml +6 -0
  125. package/sampleWorkspace/connectors-community/connectors/thespacedevs/README +46 -0
  126. package/sampleWorkspace/connectors-community/connectors/thespacedevs/agencies.graphql +193 -0
  127. package/sampleWorkspace/connectors-community/connectors/thespacedevs/api-throttle.graphql +33 -0
  128. package/sampleWorkspace/connectors-community/connectors/thespacedevs/astronauts.graphql +237 -0
  129. package/sampleWorkspace/connectors-community/connectors/thespacedevs/celestial-bodies.graphql +131 -0
  130. package/sampleWorkspace/connectors-community/connectors/thespacedevs/docking-events.graphql +3460 -0
  131. package/sampleWorkspace/connectors-community/connectors/thespacedevs/launches.graphql +1156 -0
  132. package/sampleWorkspace/connectors-community/connectors/thespacedevs/supergraph.yaml +77 -0
  133. package/sampleWorkspace/connectors-community/connectors/tint/README +35 -0
  134. package/sampleWorkspace/connectors-community/connectors/tint/accounts.graphql +69 -0
  135. package/sampleWorkspace/connectors-community/connectors/tint/router.yaml +21 -0
  136. package/sampleWorkspace/connectors-community/connectors/tint/social-feeds.graphql +62 -0
  137. package/sampleWorkspace/connectors-community/connectors/tint/supergraph.yaml +10 -0
  138. package/sampleWorkspace/connectors-community/connectors/todoist/README.md +48 -0
  139. package/sampleWorkspace/connectors-community/connectors/todoist/supergraph.yaml +6 -0
  140. package/sampleWorkspace/connectors-community/connectors/todoist/todoist.graphql +381 -0
  141. package/sampleWorkspace/connectors-community/connectors/trimblemaps/README +99 -0
  142. package/sampleWorkspace/connectors-community/connectors/trimblemaps/connector.graphql +66 -0
  143. package/sampleWorkspace/connectors-community/connectors/trimblemaps/router.yaml +18 -0
  144. package/sampleWorkspace/connectors-community/connectors/trimblemaps/supergraph.yaml +6 -0
  145. package/sampleWorkspace/connectors-community/connectors/twilio/README.md +44 -0
  146. package/sampleWorkspace/connectors-community/connectors/twilio/messages.graphql +107 -0
  147. package/sampleWorkspace/connectors-community/connectors/twilio/router.yaml +6 -0
  148. package/sampleWorkspace/connectors-community/connectors/twilio/supergraph.yaml +6 -0
  149. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/README.md +44 -0
  150. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/earthquakes.graphql +235 -0
  151. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/supergraph.yaml +6 -0
  152. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/README.md +44 -0
  153. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/earthquake-simple.graphql +87 -0
  154. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/router.yaml +3 -0
  155. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/supergraph.yaml +6 -0
  156. package/sampleWorkspace/connectors-community/connectors/usps/README +36 -0
  157. package/sampleWorkspace/connectors-community/connectors/usps/router.yaml +18 -0
  158. package/sampleWorkspace/connectors-community/connectors/usps/supergraph.yaml +6 -0
  159. package/sampleWorkspace/connectors-community/connectors/usps/tracking.graphql +118 -0
  160. package/sampleWorkspace/connectors-community/connectors/zendesk/README +36 -0
  161. package/sampleWorkspace/connectors-community/connectors/zendesk/connector.graphql +98 -0
  162. package/sampleWorkspace/connectors-community/connectors/zendesk/router.yaml +18 -0
  163. package/sampleWorkspace/connectors-community/connectors/zendesk/supergraph.yaml +6 -0
  164. package/sampleWorkspace/connectors-community/file-new/index.js +520 -0
  165. package/sampleWorkspace/connectors-community/package-lock.json +119 -0
  166. package/sampleWorkspace/connectors-community/package.json +20 -0
  167. package/sampleWorkspace/connectors-community/supergraph.yaml +6 -0
  168. package/sampleWorkspace/rover/apollo.config.yaml +1 -1
  169. package/sampleWorkspace/rover/supergraph.yaml +4 -0
  170. package/sampleWorkspace/sampleWorkspace.code-workspace +29 -8
  171. package/src/__tests__/fixtures/textmate/test.apollo.connectors.mapping +213 -0
  172. package/src/__tests__/fixtures/textmate/test.connect.graphql +104 -0
  173. package/src/language-server/__e2e__/configFileTypes.e2e.ts +2 -2
  174. package/src/language-server/__e2e__/rover.e2e.ts +37 -49
  175. package/src/language-server/__tests__/fixtures/documents/functionCall.ts.snap +3 -3
  176. package/src/language-server/config/config.ts +4 -2
  177. package/syntaxes/build.ts +266 -0
  178. package/syntaxes/connectors.mapping.json +532 -0
  179. package/syntaxes/connectors.mapping.yaml +440 -0
  180. package/syntaxes/graphql.connectors.json +426 -0
  181. package/syntaxes/graphql.connectors.yaml +254 -0
  182. package/syntaxes/graphql.json +22 -1
  183. package/syntaxes/tsconfig.json +6 -0
@@ -0,0 +1,171 @@
1
+ extend schema
2
+ @link(
3
+ url: "https://specs.apollo.dev/federation/v2.10"
4
+ import: ["@key", "@requires"]
5
+ )
6
+ @link(
7
+ url: "https://specs.apollo.dev/connect/v0.2"
8
+ import: ["@source", "@connect"]
9
+ )
10
+ @source(
11
+ name: "TripPin"
12
+ http: {
13
+ # https://www.odata.org/getting-started/basic-tutorial/
14
+ baseURL: "https://services.odata.org/V4/"
15
+ }
16
+ )
17
+
18
+ type Person {
19
+ id: ID!
20
+ firstName: String
21
+ lastName: String
22
+ gender: String
23
+ emails: [String]
24
+ address: Address
25
+ concurrency: Float
26
+ trips(limit: Int = 5, offset: Int = 0): [Trip]
27
+ @connect(
28
+ source: "TripPin"
29
+ http: {
30
+ GET: "(S(jl4zbkgydqfv3qjad3f3xmrb))/TripPinServiceRW/People('{$this.id}')/Trips"
31
+ queryParams: """
32
+ '$top': $args.limit
33
+ '$skip': $args.offset
34
+ """
35
+ }
36
+ selection: """
37
+ $.value {
38
+ id: TripId
39
+ name: Name
40
+ description: Description
41
+ budget: Budget
42
+ start: StartsAt
43
+ end: EndsAt
44
+ tags: Tags
45
+ }
46
+ """
47
+ )
48
+ }
49
+
50
+ type Address {
51
+ state: String
52
+ city: String
53
+ country: String
54
+ street: String
55
+ }
56
+
57
+ type Trip {
58
+ id: ID!
59
+ name: String
60
+ description: String
61
+ start: String
62
+ end: String
63
+ budget: Float
64
+ tags: [String]
65
+ }
66
+
67
+ type Query {
68
+ person(id: ID!): Person
69
+ @connect(
70
+ source: "TripPin"
71
+ http: {
72
+ GET: "(S(unfmciiartlvloowd54bozof))/TripPinServiceRW/People('{$args.id}')"
73
+ }
74
+ selection: """
75
+ # JSON Example Response 👇
76
+ # https://services.odata.org/V4/(S(upwrd1sjjfgvtldusskzpafr))/TripPinServiceRW/People('russellwhyte')
77
+ id: UserName
78
+ firstName: FirstName
79
+ lastName: LastName
80
+ gender: Gender
81
+ emails: Emails
82
+ address: AddressInfo->first {
83
+ street: Address
84
+ country: City.CountryRegion
85
+ city: City.Name
86
+ state: City.Region
87
+ }
88
+ concurrency: Concurrency
89
+ """
90
+ entity: true
91
+ )
92
+ people(limit: Int = 5, offset: Int = 0): [Person]
93
+ @connect(
94
+ source: "TripPin"
95
+ http: {
96
+ GET: "(S(unfmciiartlvloowd54bozof))/TripPinServiceRW/People"
97
+ queryParams: """
98
+ '$top': $args.limit
99
+ '$skip': $args.offset
100
+ """
101
+ }
102
+ selection: """
103
+ # JSON Example Response 👇
104
+ # https://services.odata.org/V4/(S(upwrd1sjjfgvtldusskzpafr))/TripPinServiceRW/People
105
+ $.value {
106
+ id: UserName
107
+ firstName: FirstName
108
+ lastName: LastName
109
+ gender: Gender
110
+ emails: Emails
111
+ address: AddressInfo->first {
112
+ street: Address
113
+ country: City.CountryRegion
114
+ city: City.Name
115
+ state: City.Region
116
+ }
117
+ concurrency: Concurrency
118
+ }
119
+ """
120
+ )
121
+ }
122
+ type Mutation {
123
+ createPerson(username: ID!, firstName: String, lastName: String): Person
124
+ @connect(
125
+ source: "TripPin"
126
+ http: {
127
+ POST: "(S(unfmciiartlvloowd54bozof))/TripPinServiceRW/People/"
128
+ body: """
129
+ Username: $args.username
130
+ FirstName: $args.firstName
131
+ LastName: $args.lastName
132
+ """
133
+ }
134
+ selection: """
135
+ $.value {
136
+ id: UserName
137
+ firstName: FirstName
138
+ lastName: LastName
139
+ emails: Emails
140
+ }
141
+ """
142
+ )
143
+ updatePerson(username: ID!, updates: PersonUpdates): PersonUpdatesResponse
144
+ @connect(
145
+ source: "TripPin"
146
+ http: {
147
+ PATCH: "(S(unfmciiartlvloowd54bozof))/TripPinServiceRW/People('{$args.username}')"
148
+ body: """
149
+ Username: $args.username
150
+ FirstName: $args.updates.firstName
151
+ LastName: $args.updates.lastName
152
+ """
153
+ }
154
+ selection: """
155
+ $.value {
156
+ success: $(true)
157
+ message: $("User deleted")
158
+ }
159
+ """
160
+ )
161
+ }
162
+
163
+ type PersonUpdatesResponse {
164
+ success: Boolean
165
+ message: String
166
+ }
167
+
168
+ input PersonUpdates {
169
+ firstName: String
170
+ lastName: String
171
+ }
@@ -0,0 +1,18 @@
1
+ supergraph:
2
+ listen: 0.0.0.0:${env.PORT:-4000}
3
+
4
+ headers:
5
+ all:
6
+ request:
7
+ - propagate:
8
+ matching: .*
9
+ telemetry:
10
+ instrumentation:
11
+ spans:
12
+ mode: spec_compliant
13
+
14
+ # connectors:
15
+ # subgraphs:
16
+ # connector:
17
+ # $config:
18
+ # api: ${env.API_KEY}
@@ -0,0 +1,6 @@
1
+ federation_version: =2.11.0
2
+ subgraphs:
3
+ connector:
4
+ routing_url: http://connector
5
+ schema:
6
+ file: connector.graphql
@@ -0,0 +1,61 @@
1
+ # OpenAI REST Connector
2
+
3
+ This connector currently covers the [chat](https://platform.openai.com/docs/api-reference/chat) and [assistants (beta)](https://platform.openai.com/docs/api-reference/assistants) APIs provided by OpenAI.
4
+
5
+ ## Prerequisites
6
+
7
+ To use the connector, you need a [OpenAI API token](https://platform.openai.com/docs/api-reference/authentication).
8
+
9
+ ## Getting started
10
+
11
+ 1. If you haven't already, [create a new graph in GraphOS](https://www.apollographql.com/docs/graphos/get-started/guides/rest#step-1-set-up-your-graphql-api). Once you get to the **Set up your local development environment** modal in the [Create a graph](https://www.apollographql.com/docs/graphos/get-started/guides/rest#create-a-graph) section:
12
+ - Copy the `supergraph.yaml` and `router.yaml` files from this folder instead of the `supergraph.yaml` provided by the modal.
13
+ - Instead of downloading the example schema provided by the modal, copy the schema file from this fodler that you want to use.
14
+ 1. Grab your Strapi API key and set it as an environment variable for your terminal:
15
+
16
+ ```
17
+ export OPENAI_API_KEY=....
18
+ ```
19
+
20
+ 2. Run `rover dev` to start the local development session:
21
+
22
+ ```
23
+ APOLLO_KEY=service:My-Graph-s1ff1u:•••••••••••••••••••••• \
24
+ APOLLO_GRAPH_REF=My-Graph-s1ff1u@main \
25
+ rover dev --supergraph-config supergraph.yaml --router-config router.yaml
26
+ ```
27
+
28
+ You’re all set! Open up http://localhost:4000 to query your graph using Apollo Sandbox.
29
+
30
+ ### Adding to an existing graph in GraphOS
31
+
32
+ To add these connectors to an existing graph, publish the schema files to your graph ref using `rover subgraph publish`:
33
+
34
+ ```
35
+ APOLLO_KEY=service:My-Graph-s1ff1u:•••••••••••••••••••••• \
36
+ rover subgraph publish My-Graph-s1ff1u@main --name models --schema models.graphql --routing-url http://usmodelsers
37
+ ```
38
+
39
+ ## Additional setup for VS Code task runner
40
+
41
+ Edit your `.vscode/settings.json` to include the following Strapi-specific keys
42
+
43
+ ```
44
+ {
45
+ "terminal.integrated.profiles.osx": {
46
+ "graphos": {
47
+ "path": "zsh",
48
+ "args": ["-l"],
49
+ "env": {
50
+ "STRAPI_URL: "",
51
+ "STRAPI_API_KEY": "",
52
+ }
53
+ }
54
+ },
55
+ "terminal.integrated.defaultProfile.osx": "graphos"
56
+ }
57
+
58
+ ```
59
+
60
+ Once you've set this up, you can execute the `Tasks: Run Task` command in VS Code to run the `rover dev` task.
61
+ Alternatively, you can open a new terminal window in VS Code with the `graphos` profile, then run `rover dev --supergraph-config supergraph.yaml --router-config router.yaml`.
@@ -0,0 +1,285 @@
1
+ extend schema
2
+ @link(
3
+ url: "https://specs.apollo.dev/federation/v2.10"
4
+ import: ["@key", "@requires", "@shareable"]
5
+ )
6
+ @link(
7
+ url: "https://specs.apollo.dev/connect/v0.2"
8
+ import: ["@source", "@connect"]
9
+ )
10
+ @source(
11
+ name: "openai"
12
+ http: {
13
+ baseURL: "https://api.openai.com/v1/"
14
+ headers: [
15
+ { name: "Authorization", value: "Bearer {$config.apiKey}" }
16
+ { name: "OpenAI-Beta", value: "assistants=v2" }
17
+ ]
18
+ }
19
+ )
20
+
21
+ type Assistant {
22
+ id: ID!
23
+ createdAt: Float
24
+ name: String
25
+ description: String
26
+ model: String
27
+ instructions: String
28
+ topP: Float
29
+ temperature: Float
30
+ ownedBy: String
31
+ }
32
+ type PageInfo @shareable {
33
+ first: ID
34
+ last: ID
35
+ hasMore: Boolean
36
+ }
37
+ type AssistantConnection {
38
+ pageInfo: PageInfo
39
+ items: [Assistant]
40
+ }
41
+ type MessagesConnection {
42
+ pageInfo: PageInfo
43
+ items: [Message]
44
+ }
45
+ type RunsConnection {
46
+ pageInfo: PageInfo
47
+ items: [Run]
48
+ }
49
+ type Run {
50
+ id: ID!
51
+ createdAt: Float
52
+ startedAt: Float
53
+ expiresAt: Float
54
+ cancelledAt: Float
55
+ failedAt: Float
56
+ completedAt: Float
57
+ assistant: Assistant
58
+ status: String
59
+ model: String
60
+ instructions: String
61
+ topP: Float
62
+ temperature: Float
63
+ usage: TokenUsage
64
+ }
65
+ type TokenUsage @shareable{
66
+ promptTokens: Int
67
+ completionTokens: Int
68
+ totalTokens: Int
69
+ }
70
+ type Query {
71
+ assistants(before: ID, after: ID, limit: Int = 20): AssistantConnection
72
+ @connect(
73
+ source: "openai"
74
+ http: {
75
+ GET: "/assistants"
76
+ queryParams: """
77
+ before: $args.before
78
+ after: $args.after
79
+ limit: $args.limit
80
+ """
81
+ }
82
+ selection: """
83
+ pageInfo: {
84
+ first: first_id
85
+ last: last_id
86
+ hasMore: has_more
87
+ }
88
+ items: $.data {
89
+ id
90
+ createdAt: created_at
91
+ name
92
+ description
93
+ model
94
+ instructions
95
+ topP: top_P
96
+ temperature
97
+ ownedBy: owned_by
98
+ }
99
+ """
100
+ )
101
+ assistant(id: ID!): Assistant
102
+ @connect(
103
+ source: "openai"
104
+ http: { GET: "/assistant/{$args.id}" }
105
+ selection: """
106
+ $.data {
107
+ id
108
+ createdAt: created_at
109
+ name
110
+ description
111
+ model
112
+ instructions
113
+ topP: top_P
114
+ temperature
115
+ ownedBy: owned_by
116
+ }
117
+ """
118
+ entity: true
119
+ )
120
+ thread(id: ID!): Thread
121
+ @connect(
122
+ source: "openai"
123
+ http: { GET: "/thread/{$args.id}" }
124
+ selection: """
125
+ id
126
+ createdAt: created_at
127
+ """
128
+ entity: true
129
+ )
130
+ }
131
+
132
+ type Mutation {
133
+ createMessage(thread: ID!, content: String): Thread
134
+ @connect(
135
+ source: "openai"
136
+ http: {
137
+ POST: "/threads/{$args.thread}/messages"
138
+ body: """
139
+ content: $args.content
140
+ role: $args.role->match(
141
+ ['USER','user'],
142
+ ['ASSISTANT','assistant']
143
+ )
144
+ """
145
+ }
146
+ selection: """
147
+ id: $args.thread
148
+ """
149
+ )
150
+ createThread(input: MessagesInput): Thread
151
+ @connect(
152
+ source: "openai"
153
+ http: {
154
+ POST: "/threads"
155
+ body: """
156
+ $args.input.messages {
157
+ content
158
+ role: role->match(
159
+ ['USER','user'],
160
+ ['ASSISTANT','assistant']
161
+ )
162
+ }
163
+ """
164
+ }
165
+ selection: """
166
+ id
167
+ createdAt: created_at
168
+ """
169
+ )
170
+ }
171
+ input MessagesInput {
172
+ messages: [MessageInput]
173
+ }
174
+ input MessageInput {
175
+ content: String
176
+ role: MessageRole
177
+ }
178
+ type Message {
179
+ id: ID!
180
+ createdAt: Float
181
+ assistant: Assistant
182
+ role: MessageRole
183
+ content: [String]
184
+ }
185
+ type Thread {
186
+ id: ID!
187
+ createdAt: Float
188
+ message(id: ID!): Message
189
+ @connect(
190
+ source: "openai"
191
+ http: { GET: "/threads/{$this.id}/messages/{$args.id}" }
192
+ selection: """
193
+ id
194
+ createdAt: created_at
195
+ assistant: {
196
+ id: assistant_id
197
+ }
198
+ role: role->match(
199
+ ['USER','user'],
200
+ ['ASSISTANT','assistant']
201
+ )
202
+ content: content->map(@.text.value)
203
+ """
204
+ )
205
+ messages(before: ID, after: ID, limit: Int = 20): MessagesConnection
206
+ @connect(
207
+ source: "openai"
208
+ http: {
209
+ GET: "/threads/{$this.id}/messages"
210
+ queryParams: """
211
+ before: $args.before
212
+ after: $args.after
213
+ limit: $args.limit
214
+ """
215
+ }
216
+ selection: """
217
+ pageInfo: {
218
+ first: first_id
219
+ last: last_id
220
+ hasMore: has_more
221
+ }
222
+ items: $.data {
223
+ id
224
+ createdAt: created_at
225
+ assistant: {
226
+ id: assistant_id
227
+ }
228
+ role: role->match(
229
+ ['USER','user'],
230
+ ['ASSISTANT','assistant']
231
+ )
232
+ content: content->map(@.text.value)
233
+ }
234
+ """
235
+ )
236
+ runs(before: ID, after: ID, limit: Int = 20): RunsConnection
237
+ @connect(
238
+ source: "openai"
239
+ http: {
240
+ GET: "/threads/{$this.id}/runs"
241
+ queryParams: """
242
+ before: $args.before
243
+ after: $args.after
244
+ limit: $args.limit
245
+ """
246
+ }
247
+ selection: """
248
+ pageInfo: {
249
+ first: first_id
250
+ last: last_id
251
+ hasMore: has_more
252
+ }
253
+ items: $.data {
254
+ id
255
+ createdAt: created_at
256
+ assistant: {
257
+ id: assistant_id
258
+ }
259
+ status
260
+ startedAt: started_at
261
+ expiresAt: expires_at
262
+ cancelledAt: cancelled_at
263
+ failedAt: failed_at
264
+ completedAt: completed_at
265
+ model
266
+ instructions
267
+ usage {
268
+ promptTokens: prompt_tokens
269
+ completionTokens: completion_tokens
270
+ totalTokens: total_tokens
271
+ }
272
+ temperature
273
+ topP: top_p
274
+ }
275
+ """
276
+ )
277
+ }
278
+ enum MessageRole {
279
+ SYSTEM
280
+ ASSISTANT
281
+ USER
282
+ FUNCTION
283
+ TOOL
284
+ DEVELOPER
285
+ }
@@ -0,0 +1,169 @@
1
+ extend schema
2
+ @link(
3
+ url: "https://specs.apollo.dev/federation/v2.10"
4
+ import: ["@key", "@requires", "@shareable"]
5
+ )
6
+ @link(
7
+ url: "https://specs.apollo.dev/connect/v0.2"
8
+ import: ["@source", "@connect"]
9
+ )
10
+ @source(
11
+ name: "openai"
12
+ http: {
13
+ baseURL: "https://api.openai.com/v1/"
14
+ headers: [{ name: "Authorization", value: "Bearer {$config.apiKey}" }]
15
+ }
16
+ )
17
+
18
+ type ChatCompletion {
19
+ id: ID!
20
+ createdAt: Float
21
+ model: String
22
+ messages: [ChatMessage]
23
+ usage: TokenUsage
24
+ }
25
+ type TokenUsage @shareable{
26
+ promptTokens: Int
27
+ completionTokens: Int
28
+ totalTokens: Int
29
+ }
30
+ type ChatMessage {
31
+ content: String
32
+ role: MessageRole
33
+ }
34
+ type PageInfo @shareable {
35
+ first: ID
36
+ last: ID
37
+ hasMore: Boolean
38
+ }
39
+ type CompletionsConnection {
40
+ pageInfo: PageInfo
41
+ items: [ChatCompletion]
42
+ }
43
+ type Query {
44
+ completions(before: ID, after: ID, limit: Int = 20): CompletionsConnection
45
+ @connect(
46
+ source: "openai"
47
+ http: {
48
+ GET: "/chat/completions"
49
+ queryParams: """
50
+ before: $args.before
51
+ after: $args.after
52
+ limit: $args.limit
53
+ """
54
+ }
55
+ selection: """
56
+ pageInfo: {
57
+ first: first_id
58
+ last: last_id
59
+ hasMore: has_more
60
+ }
61
+ items: $.data {
62
+ id
63
+ createdAt: created
64
+ model
65
+ messages: $.data {
66
+ role: role->match(
67
+ ['USER','user'],
68
+ ['ASSISTANT','assistant']
69
+ )
70
+ content
71
+ }
72
+ usage {
73
+ promptTokens: prompt_tokens
74
+ completionTokens: completion_tokens
75
+ totalTokens: total_tokens
76
+ }
77
+ }
78
+ """
79
+ )
80
+ completion(id: ID!): ChatCompletion
81
+ @connect(
82
+ source: "openai"
83
+ http: { GET: "/chat/completions/{$args.id}" }
84
+ selection: """
85
+ id
86
+ createdAt: created
87
+ model
88
+ usage {
89
+ promptTokens: prompt_tokens
90
+ completionTokens: completion_tokens
91
+ totalTokens: total_tokens
92
+ }
93
+ """
94
+ entity: true
95
+ )
96
+ @connect(
97
+ source: "openai"
98
+ http: { GET: "/chat/completions/{$args.id}/messages" }
99
+ selection: """
100
+ messages: $.data {
101
+ role: role->match(
102
+ ['SYSTEM','system'],
103
+ ['ASSISTANT','assistant'],
104
+ ['USER','user'],
105
+ ['FUNCTION','function'],
106
+ ['TOOL','tool'],
107
+ ['DEVELOPER','developer']
108
+ )
109
+ content
110
+ }
111
+ """
112
+ )
113
+ }
114
+ type Mutation {
115
+ createChatCompletion(model: ID!, messages: [MessageInput]!): ChatCompletion
116
+ @connect(
117
+ source: "openai"
118
+ http: {
119
+ POST: "/chat/completions"
120
+ body: """
121
+ model: $args.model
122
+ messages: $args.messages {
123
+ role: role->match(
124
+ ['SYSTEM','system'],
125
+ ['ASSISTANT','assistant'],
126
+ ['USER','user'],
127
+ ['FUNCTION','function'],
128
+ ['TOOL','tool'],
129
+ ['DEVELOPER','developer']
130
+ )
131
+ content
132
+ }
133
+ """
134
+ }
135
+ selection: """
136
+ id
137
+ createdAt: created
138
+ model
139
+ messages: $.choices {
140
+ role: $.message.role->match(
141
+ ['system','SYSTEM'],
142
+ ['assistant','ASSISTANT'],
143
+ ['user','USER'],
144
+ ['function','FUNCTION'],
145
+ ['tool','TOOL'],
146
+ ['developer','DEVELOPER']
147
+ )
148
+ content: $.message.content
149
+ }
150
+ usage {
151
+ promptTokens: prompt_tokens
152
+ completionTokens: completion_tokens
153
+ totalTokens: total_tokens
154
+ }
155
+ """
156
+ )
157
+ }
158
+ input MessageInput {
159
+ content: String
160
+ role: MessageRole
161
+ }
162
+ enum MessageRole {
163
+ SYSTEM
164
+ ASSISTANT
165
+ USER
166
+ FUNCTION
167
+ TOOL
168
+ DEVELOPER
169
+ }