@stack-spot/portal-network 0.184.0-beta.1 → 0.184.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 (151) hide show
  1. package/CHANGELOG.md +2412 -2431
  2. package/dist/api/account.js +1 -1
  3. package/dist/api/agent-tools.js +1 -1
  4. package/dist/api/agent.js +1 -1
  5. package/dist/api/ai.js +1 -1
  6. package/dist/api/apiManagement.js +1 -1
  7. package/dist/api/apiRuntime.js +1 -1
  8. package/dist/api/cloudAccount.js +1 -1
  9. package/dist/api/cloudPlatform.js +1 -1
  10. package/dist/api/cloudPlatformHorizon.js +1 -1
  11. package/dist/api/cloudRuntimes.js +1 -1
  12. package/dist/api/cloudServices.js +1 -1
  13. package/dist/api/codeShift.d.ts +4 -76
  14. package/dist/api/codeShift.d.ts.map +1 -1
  15. package/dist/api/codeShift.js +1 -14
  16. package/dist/api/codeShift.js.map +1 -1
  17. package/dist/api/content.js +1 -1
  18. package/dist/api/dataIntegration.js +1 -1
  19. package/dist/api/discover.js +1 -1
  20. package/dist/api/genAiInference.js +1 -1
  21. package/dist/api/insights.js +1 -1
  22. package/dist/api/notification.js +1 -1
  23. package/dist/api/secrets.js +1 -1
  24. package/dist/api/serviceCatalog.js +1 -1
  25. package/dist/api/workspace-ai.js +1 -1
  26. package/dist/api/workspace.js +1 -1
  27. package/dist/api/workspaceManager.d.ts +16 -10
  28. package/dist/api/workspaceManager.d.ts.map +1 -1
  29. package/dist/api/workspaceManager.js +11 -1
  30. package/dist/api/workspaceManager.js.map +1 -1
  31. package/dist/api/workspaceSearchEngine.js +1 -1
  32. package/dist/client/ai.d.ts.map +1 -1
  33. package/dist/client/ai.js +14 -84
  34. package/dist/client/ai.js.map +1 -1
  35. package/dist/client/code-shift.d.ts +0 -30
  36. package/dist/client/code-shift.d.ts.map +1 -1
  37. package/dist/client/code-shift.js +1 -37
  38. package/dist/client/code-shift.js.map +1 -1
  39. package/dist/client/types.d.ts +6 -26
  40. package/dist/client/types.d.ts.map +1 -1
  41. package/dist/client/workspace-manager.d.ts +6 -0
  42. package/dist/client/workspace-manager.d.ts.map +1 -1
  43. package/dist/client/workspace-manager.js +10 -1
  44. package/dist/client/workspace-manager.js.map +1 -1
  45. package/package.json +1 -1
  46. package/readme.md +1 -1
  47. package/scripts/generate-apis.ts +134 -134
  48. package/src/api/account.ts +8367 -8368
  49. package/src/api/agent-tools.ts +2169 -2172
  50. package/src/api/agent.ts +1083 -1085
  51. package/src/api/ai.ts +3388 -3388
  52. package/src/api/apiManagement.ts +570 -570
  53. package/src/api/apiRuntime.ts +2103 -2103
  54. package/src/api/cloudAccount.ts +1239 -1239
  55. package/src/api/cloudPlatform.ts +927 -927
  56. package/src/api/cloudPlatformHorizon.ts +2655 -2655
  57. package/src/api/cloudRuntimes.ts +2043 -2043
  58. package/src/api/cloudServices.ts +1445 -1445
  59. package/src/api/codeShift.ts +3481 -3580
  60. package/src/api/content.ts +9785 -9785
  61. package/src/api/dataIntegration.ts +1657 -1657
  62. package/src/api/discover.ts +435 -435
  63. package/src/api/eventBus.ts +171 -171
  64. package/src/api/genAiInference.ts +603 -603
  65. package/src/api/insights.ts +310 -310
  66. package/src/api/notification.ts +334 -336
  67. package/src/api/secrets.ts +342 -342
  68. package/src/api/serviceCatalog.ts +2908 -2908
  69. package/src/api/workflows.ts +1669 -1669
  70. package/src/api/workspace-ai.ts +677 -677
  71. package/src/api/workspace.ts +5889 -5889
  72. package/src/api/workspaceManager.ts +2951 -2936
  73. package/src/api/workspaceSearchEngine.ts +153 -153
  74. package/src/api-addresses.ts +120 -120
  75. package/src/apis-itau.json +225 -225
  76. package/src/apis.json +225 -225
  77. package/src/client/account.ts +902 -902
  78. package/src/client/agent-tools.ts +210 -210
  79. package/src/client/agent.ts +81 -81
  80. package/src/client/ai.ts +395 -469
  81. package/src/client/api-management.ts +40 -40
  82. package/src/client/cloud-account.ts +70 -70
  83. package/src/client/cloud-platform-horizon.ts +113 -113
  84. package/src/client/cloud-platform.ts +163 -163
  85. package/src/client/cloud-runtimes.ts +129 -129
  86. package/src/client/cloud-services.ts +94 -94
  87. package/src/client/code-shift.ts +349 -371
  88. package/src/client/content.ts +538 -538
  89. package/src/client/data-integration.ts +191 -191
  90. package/src/client/discover.ts +89 -89
  91. package/src/client/event-bus.ts +84 -84
  92. package/src/client/gen-ai-inference.ts +65 -65
  93. package/src/client/insights.ts +28 -28
  94. package/src/client/notification.ts +32 -32
  95. package/src/client/runtime-manager.ts +76 -76
  96. package/src/client/secrets.ts +60 -60
  97. package/src/client/types.ts +377 -398
  98. package/src/client/workflow.ts +83 -83
  99. package/src/client/workspace-ai.ts +191 -191
  100. package/src/client/workspace-manager.ts +564 -560
  101. package/src/client/workspace-search.ts +39 -39
  102. package/src/client/workspace.ts +480 -480
  103. package/src/error/DefaultAPIError.ts +151 -151
  104. package/src/error/FileUploadError.ts +18 -18
  105. package/src/error/IgnoredErrorCodes.ts +3 -3
  106. package/src/error/StackspotAPIError.ts +101 -101
  107. package/src/error/StreamCanceledError.ts +10 -10
  108. package/src/error/StreamError.ts +7 -7
  109. package/src/error/StreamJsonError.ts +10 -10
  110. package/src/error/dictionary/account.ts +58 -58
  111. package/src/error/dictionary/action-details.ts +20 -20
  112. package/src/error/dictionary/action.ts +211 -211
  113. package/src/error/dictionary/agent-tools.ts +75 -75
  114. package/src/error/dictionary/ai-inference.ts +28 -28
  115. package/src/error/dictionary/base.ts +22 -22
  116. package/src/error/dictionary/cloud-platform.ts +82 -82
  117. package/src/error/dictionary/cnt-fields.ts +14 -14
  118. package/src/error/dictionary/cnt.ts +103 -103
  119. package/src/error/dictionary/code-shift.ts +12 -12
  120. package/src/error/dictionary/rte.ts +24 -24
  121. package/src/error/dictionary/rtm.ts +10 -10
  122. package/src/error/dictionary/secrets.ts +14 -14
  123. package/src/error/dictionary/workspace-ai.ts +10 -10
  124. package/src/error/dictionary/workspace-details.ts +15 -15
  125. package/src/error/dictionary/workspace-fields.ts +10 -10
  126. package/src/error/dictionary/workspace.ts +209 -209
  127. package/src/error/types.ts +21 -21
  128. package/src/index.ts +43 -43
  129. package/src/network/AutoInfiniteQuery.ts +115 -115
  130. package/src/network/AutoMutation.ts +27 -27
  131. package/src/network/AutoOperation.ts +73 -73
  132. package/src/network/AutoQuery.ts +75 -75
  133. package/src/network/ManualInfiniteQuery.ts +95 -95
  134. package/src/network/ManualMutation.ts +40 -40
  135. package/src/network/ManualOperation.ts +52 -52
  136. package/src/network/ManualQuery.ts +82 -82
  137. package/src/network/NetworkClient.ts +167 -167
  138. package/src/network/ReactQueryNetworkClient.ts +312 -312
  139. package/src/network/react-query-client.ts +14 -14
  140. package/src/network/types.ts +294 -294
  141. package/src/types.ts +1 -1
  142. package/src/utils/StreamedArray.tsx +146 -146
  143. package/src/utils/StreamedJson.tsx +166 -166
  144. package/src/utils/remove-authorization-param.ts +6 -6
  145. package/src/utils/string.ts +19 -19
  146. package/src/utils/use-extended-list.ts +80 -80
  147. package/src/utils/use-streamed-array.ts +17 -17
  148. package/tsconfig.build.json +4 -4
  149. package/tsconfig.json +10 -10
  150. package/logs/simple-failure/01JBER7AWKACEC3Y1NF7M6PHFF/job_id_1.log +0 -3
  151. package/logs/simple-suspend/01JBEMQG94ADPT99MSZ7EJKGXZ/job_id_1.log +0 -5
@@ -1,167 +1,167 @@
1
- import { AuthenticationError, SessionExpiredError } from '@stack-spot/auth'
2
- import { requestPermission } from '@stack-spot/opa'
3
- import { events } from 'fetch-event-stream'
4
- import { getBaseUrlByTenantWithOverride } from '../api-addresses'
5
- import { StackspotAPIError } from '../error/StackspotAPIError'
6
- import { Env, FetchEventStream, HTTPMethod, SessionManager, Tenant } from './types'
7
-
8
- /**
9
- * A set of methods for performing network requests to an API.
10
- *
11
- * The requests are authenticated unless there's no session available.
12
- *
13
- * In order for a network client to work properly, the general setup for the class `NetworkClient` must be made before any request is
14
- * attempted:
15
- *
16
- * ```
17
- * NetworkClient.setup(mySessionManager, currentEnv)
18
- * ```
19
- */
20
- export abstract class NetworkClient {
21
- private baseURL: Record<Env, string>
22
- static readonly sessionManager?: SessionManager
23
- private static env?: Env
24
- private static tenant?: Tenant
25
-
26
- /**
27
- * @param baseURL An object with the keys "dev", "stg" and "prd". The values must be the url for each of these environments.
28
- */
29
- constructor(baseURL: Record<Env, string>) {
30
- this.baseURL = baseURL
31
- }
32
-
33
- /**
34
- * Sets up all network clients. Must be called before attempting to make any request.
35
- * @param sessionManager An object with functions capable of checking, retrieving and ending the current session.
36
- * @param env The environment to send the requests to.
37
- * @param tenant - {@link Tenant} tenant identifier used to scope requests.
38
- */
39
- static setup(sessionManager: SessionManager, env: Env, tenant?: Tenant) {
40
- //@ts-ignore This is the only place we would link session manager to be set.
41
- NetworkClient.sessionManager = sessionManager
42
- NetworkClient.env = env
43
- NetworkClient.tenant = tenant
44
- }
45
-
46
- /**
47
- * Retrieves the current environment configuration.
48
- *
49
- * This method returns the environment setting for the `NetworkClient`.
50
- * If no environment is explicitly set, it defaults to `'prd'` (production).
51
- *
52
- * @returns {Env} The current environment configuration, either the value of `NetworkClient.env` or `'prd'` if not set.
53
- */
54
- static getEnv(): Env {
55
- return NetworkClient.env || 'prd'
56
- }
57
-
58
- private uninitializedError() {
59
- return new Error('Please, call "NetworkClient.setup(sessionManager, env)" before attempting to make a request.')
60
- }
61
-
62
- /**
63
- * Resolves the final base URL for the current environment.
64
- * If a local API override exists for the current environment and current resource (api name), it will be use instead.
65
- * @returns the final baseURL for the current environment, considering overrides if available.
66
- */
67
- protected getBaseURL(): string {
68
- return getBaseUrlByTenantWithOverride(this.baseURL, NetworkClient.env, NetworkClient.tenant);
69
- }
70
-
71
- /**
72
- * Builds a URL with the `baseUrl` of this network client and the `path` passed as parameter.
73
- * @param path the path to the resource.
74
- * @returns a full URL.
75
- */
76
- protected resolveURL(path: string) {
77
- if (!NetworkClient.env) throw this.uninitializedError()
78
- // paths must not start with "/", otherwise, the base url will not be fully appended to it.
79
- const fixedPath = path.replace(/^\//, '')
80
- // the baseUrl must end with "/", otherwise, the last of its part will get replaced by the path, instead of concatenated with.
81
- const fixedBaseUrl = this.getBaseURL().replace(/([^/])$/, '$1/')
82
- return new URL(fixedPath, fixedBaseUrl)
83
- }
84
-
85
- /**
86
- * Verifies if the current user is allowed to send the given request.
87
- * @param method the request's method.
88
- * @param path the path to the resource.
89
- * @param body the request's body.
90
- * @returns a promise that resolves to true if it's allowed or false otherwise.
91
- */
92
- protected async requestPermission(method: HTTPMethod, path: string, body?: string | object): Promise<boolean> {
93
- try {
94
- return await requestPermission(method, this.resolveURL(path).toString(), body)
95
- } catch (error) {
96
- if (error instanceof AuthenticationError) {
97
- this.getSessionManager().endSession()
98
- }
99
- return false
100
- }
101
- }
102
-
103
- private getSessionManager() {
104
- const sessionManager = NetworkClient.sessionManager
105
- if (!sessionManager) throw this.uninitializedError()
106
- return sessionManager
107
- }
108
-
109
- /**
110
- * Makes a request (same signature as `globalThis.fetch`). This request will prepend the base url to the url and, if there's an active
111
- * session, include authentication headers.
112
- * @param input the url or request object.
113
- * @param init the fetch options.
114
- * @returns a promise with the Response.
115
- */
116
- protected fetch(input: string | URL | Request, init?: RequestInit): Promise<Response> {
117
- const sessionManager = this.getSessionManager()
118
- let inputWithBaseUrl: string | URL | Request = ''
119
- if (typeof input === 'string') inputWithBaseUrl = this.resolveURL(input)
120
- else if (input instanceof URL) inputWithBaseUrl = this.resolveURL(input.toString())
121
- else inputWithBaseUrl = { ...input, url: this.resolveURL(input.url).toString() }
122
- // some APIs throw errors if the method is lowercase, the following line prevents it
123
- if (init?.method) init.method = init.method.toUpperCase()
124
- try {
125
- return sessionManager.hasSession() ? sessionManager.getSession().fetch(inputWithBaseUrl, init) : fetch(inputWithBaseUrl, init)
126
- } catch (error) {
127
- if (error instanceof AuthenticationError || error instanceof SessionExpiredError) sessionManager.endSession()
128
- throw error
129
- }
130
- }
131
-
132
- /**
133
- * Reads an EventSource from the endpoint. Differently than the original specification, this allows common HTTP requests with method and
134
- * body to be made.
135
- *
136
- * @example
137
- * ```
138
- * let events = this.stream('url', options)
139
- * for await (let event of events) {
140
- * console.log('<<', event.data)
141
- * }
142
- * ```
143
- * @param input the url or request object.
144
- * @param init the fetch options.
145
- * @returns a promise with a FetchEventStream, which is an AsyncGenerator.
146
- */
147
- protected async stream(input: string | URL | Request, init?: RequestInit): Promise<FetchEventStream> {
148
- const response = await this.fetch(input, init)
149
- if (!response.ok) {
150
- let message = `Failed to get stream response. Error status: ${response.status}.`
151
- try {
152
- message = await response.text()
153
- } catch { /* empty */ }
154
- throw new StackspotAPIError({ status: response.status, headers: response.headers, message })
155
- }
156
- return events(response, init?.signal)
157
- }
158
-
159
- /**
160
- * Checks whether or not the current account is freemium.
161
- * @returns true if it's a freemium account, false otherwise.
162
- */
163
- protected isFreemium() {
164
- const sessionManager = this.getSessionManager()
165
- return sessionManager.hasSession() && !!sessionManager.getSession().getTokenData().freemium_status
166
- }
167
- }
1
+ import { AuthenticationError, SessionExpiredError } from '@stack-spot/auth'
2
+ import { requestPermission } from '@stack-spot/opa'
3
+ import { events } from 'fetch-event-stream'
4
+ import { getBaseUrlByTenantWithOverride } from '../api-addresses'
5
+ import { StackspotAPIError } from '../error/StackspotAPIError'
6
+ import { Env, FetchEventStream, HTTPMethod, SessionManager, Tenant } from './types'
7
+
8
+ /**
9
+ * A set of methods for performing network requests to an API.
10
+ *
11
+ * The requests are authenticated unless there's no session available.
12
+ *
13
+ * In order for a network client to work properly, the general setup for the class `NetworkClient` must be made before any request is
14
+ * attempted:
15
+ *
16
+ * ```
17
+ * NetworkClient.setup(mySessionManager, currentEnv)
18
+ * ```
19
+ */
20
+ export abstract class NetworkClient {
21
+ private baseURL: Record<Env, string>
22
+ static readonly sessionManager?: SessionManager
23
+ private static env?: Env
24
+ private static tenant?: Tenant
25
+
26
+ /**
27
+ * @param baseURL An object with the keys "dev", "stg" and "prd". The values must be the url for each of these environments.
28
+ */
29
+ constructor(baseURL: Record<Env, string>) {
30
+ this.baseURL = baseURL
31
+ }
32
+
33
+ /**
34
+ * Sets up all network clients. Must be called before attempting to make any request.
35
+ * @param sessionManager An object with functions capable of checking, retrieving and ending the current session.
36
+ * @param env The environment to send the requests to.
37
+ * @param tenant - {@link Tenant} tenant identifier used to scope requests.
38
+ */
39
+ static setup(sessionManager: SessionManager, env: Env, tenant?: Tenant) {
40
+ //@ts-ignore This is the only place we would link session manager to be set.
41
+ NetworkClient.sessionManager = sessionManager
42
+ NetworkClient.env = env
43
+ NetworkClient.tenant = tenant
44
+ }
45
+
46
+ /**
47
+ * Retrieves the current environment configuration.
48
+ *
49
+ * This method returns the environment setting for the `NetworkClient`.
50
+ * If no environment is explicitly set, it defaults to `'prd'` (production).
51
+ *
52
+ * @returns {Env} The current environment configuration, either the value of `NetworkClient.env` or `'prd'` if not set.
53
+ */
54
+ static getEnv(): Env {
55
+ return NetworkClient.env || 'prd'
56
+ }
57
+
58
+ private uninitializedError() {
59
+ return new Error('Please, call "NetworkClient.setup(sessionManager, env)" before attempting to make a request.')
60
+ }
61
+
62
+ /**
63
+ * Resolves the final base URL for the current environment.
64
+ * If a local API override exists for the current environment and current resource (api name), it will be use instead.
65
+ * @returns the final baseURL for the current environment, considering overrides if available.
66
+ */
67
+ protected getBaseURL(): string {
68
+ return getBaseUrlByTenantWithOverride(this.baseURL, NetworkClient.env, NetworkClient.tenant);
69
+ }
70
+
71
+ /**
72
+ * Builds a URL with the `baseUrl` of this network client and the `path` passed as parameter.
73
+ * @param path the path to the resource.
74
+ * @returns a full URL.
75
+ */
76
+ protected resolveURL(path: string) {
77
+ if (!NetworkClient.env) throw this.uninitializedError()
78
+ // paths must not start with "/", otherwise, the base url will not be fully appended to it.
79
+ const fixedPath = path.replace(/^\//, '')
80
+ // the baseUrl must end with "/", otherwise, the last of its part will get replaced by the path, instead of concatenated with.
81
+ const fixedBaseUrl = this.getBaseURL().replace(/([^/])$/, '$1/')
82
+ return new URL(fixedPath, fixedBaseUrl)
83
+ }
84
+
85
+ /**
86
+ * Verifies if the current user is allowed to send the given request.
87
+ * @param method the request's method.
88
+ * @param path the path to the resource.
89
+ * @param body the request's body.
90
+ * @returns a promise that resolves to true if it's allowed or false otherwise.
91
+ */
92
+ protected async requestPermission(method: HTTPMethod, path: string, body?: string | object): Promise<boolean> {
93
+ try {
94
+ return await requestPermission(method, this.resolveURL(path).toString(), body)
95
+ } catch (error) {
96
+ if (error instanceof AuthenticationError) {
97
+ this.getSessionManager().endSession()
98
+ }
99
+ return false
100
+ }
101
+ }
102
+
103
+ private getSessionManager() {
104
+ const sessionManager = NetworkClient.sessionManager
105
+ if (!sessionManager) throw this.uninitializedError()
106
+ return sessionManager
107
+ }
108
+
109
+ /**
110
+ * Makes a request (same signature as `globalThis.fetch`). This request will prepend the base url to the url and, if there's an active
111
+ * session, include authentication headers.
112
+ * @param input the url or request object.
113
+ * @param init the fetch options.
114
+ * @returns a promise with the Response.
115
+ */
116
+ protected fetch(input: string | URL | Request, init?: RequestInit): Promise<Response> {
117
+ const sessionManager = this.getSessionManager()
118
+ let inputWithBaseUrl: string | URL | Request = ''
119
+ if (typeof input === 'string') inputWithBaseUrl = this.resolveURL(input)
120
+ else if (input instanceof URL) inputWithBaseUrl = this.resolveURL(input.toString())
121
+ else inputWithBaseUrl = { ...input, url: this.resolveURL(input.url).toString() }
122
+ // some APIs throw errors if the method is lowercase, the following line prevents it
123
+ if (init?.method) init.method = init.method.toUpperCase()
124
+ try {
125
+ return sessionManager.hasSession() ? sessionManager.getSession().fetch(inputWithBaseUrl, init) : fetch(inputWithBaseUrl, init)
126
+ } catch (error) {
127
+ if (error instanceof AuthenticationError || error instanceof SessionExpiredError) sessionManager.endSession()
128
+ throw error
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Reads an EventSource from the endpoint. Differently than the original specification, this allows common HTTP requests with method and
134
+ * body to be made.
135
+ *
136
+ * @example
137
+ * ```
138
+ * let events = this.stream('url', options)
139
+ * for await (let event of events) {
140
+ * console.log('<<', event.data)
141
+ * }
142
+ * ```
143
+ * @param input the url or request object.
144
+ * @param init the fetch options.
145
+ * @returns a promise with a FetchEventStream, which is an AsyncGenerator.
146
+ */
147
+ protected async stream(input: string | URL | Request, init?: RequestInit): Promise<FetchEventStream> {
148
+ const response = await this.fetch(input, init)
149
+ if (!response.ok) {
150
+ let message = `Failed to get stream response. Error status: ${response.status}.`
151
+ try {
152
+ message = await response.text()
153
+ } catch { /* empty */ }
154
+ throw new StackspotAPIError({ status: response.status, headers: response.headers, message })
155
+ }
156
+ return events(response, init?.signal)
157
+ }
158
+
159
+ /**
160
+ * Checks whether or not the current account is freemium.
161
+ * @returns true if it's a freemium account, false otherwise.
162
+ */
163
+ protected isFreemium() {
164
+ const sessionManager = this.getSessionManager()
165
+ return sessionManager.hasSession() && !!sessionManager.getSession().getTokenData().freemium_status
166
+ }
167
+ }