@newpeak/barista-cli 0.1.334 → 0.1.347

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 (196) hide show
  1. package/dist/commands/liberica/client-price/update.js +1 -1
  2. package/dist/commands/liberica/client-price/update.js.map +1 -1
  3. package/dist/commands/liberica/finance/proceeds/create.d.ts.map +1 -1
  4. package/dist/commands/liberica/finance/proceeds/create.js +102 -31
  5. package/dist/commands/liberica/finance/proceeds/create.js.map +1 -1
  6. package/dist/commands/liberica/inventory-shortage/create.d.ts.map +1 -1
  7. package/dist/commands/liberica/inventory-shortage/create.js.map +1 -1
  8. package/dist/commands/liberica/material-issue/create.d.ts.map +1 -1
  9. package/dist/commands/liberica/material-issue/create.js +0 -5
  10. package/dist/commands/liberica/material-issue/create.js.map +1 -1
  11. package/dist/commands/liberica/material-return/batch-review.d.ts.map +1 -1
  12. package/dist/commands/liberica/material-return/batch-review.js +1 -0
  13. package/dist/commands/liberica/material-return/batch-review.js.map +1 -1
  14. package/dist/commands/liberica/material-transfers/batch-review.d.ts.map +1 -1
  15. package/dist/commands/liberica/material-transfers/batch-review.js +0 -1
  16. package/dist/commands/liberica/material-transfers/batch-review.js.map +1 -1
  17. package/dist/commands/liberica/material-transfers/create.d.ts.map +1 -1
  18. package/dist/commands/liberica/material-transfers/create.js.map +1 -1
  19. package/dist/commands/liberica/purchase-orders/create.d.ts.map +1 -1
  20. package/dist/commands/liberica/purchase-orders/create.js +17 -0
  21. package/dist/commands/liberica/purchase-orders/create.js.map +1 -1
  22. package/dist/commands/liberica/routing/history.d.ts.map +1 -1
  23. package/dist/commands/liberica/routing/history.js.map +1 -1
  24. package/dist/commands/liberica/supplier-price/update.js +1 -1
  25. package/dist/commands/liberica/supplier-price/update.js.map +1 -1
  26. package/dist/commands/liberica/teams/index.d.ts.map +1 -1
  27. package/dist/commands/liberica/teams/index.js +12 -0
  28. package/dist/commands/liberica/teams/index.js.map +1 -1
  29. package/dist/commands/liberica/teams/tasks/delete.d.ts.map +1 -1
  30. package/dist/commands/liberica/teams/tasks/delete.js +5 -3
  31. package/dist/commands/liberica/teams/tasks/delete.js.map +1 -1
  32. package/dist/commands/liberica/teams/test-cases/batch-delete.d.ts +3 -0
  33. package/dist/commands/liberica/teams/test-cases/batch-delete.d.ts.map +1 -0
  34. package/dist/commands/liberica/teams/test-cases/batch-delete.js +74 -0
  35. package/dist/commands/liberica/teams/test-cases/batch-delete.js.map +1 -0
  36. package/dist/commands/liberica/teams/test-cases/create.d.ts +3 -0
  37. package/dist/commands/liberica/teams/test-cases/create.d.ts.map +1 -0
  38. package/dist/commands/liberica/teams/test-cases/create.js +149 -0
  39. package/dist/commands/liberica/teams/test-cases/create.js.map +1 -0
  40. package/dist/commands/liberica/teams/test-cases/delete.d.ts +3 -0
  41. package/dist/commands/liberica/teams/test-cases/delete.d.ts.map +1 -0
  42. package/dist/commands/liberica/teams/test-cases/delete.js +55 -0
  43. package/dist/commands/liberica/teams/test-cases/delete.js.map +1 -0
  44. package/dist/commands/liberica/teams/test-cases/get.d.ts +3 -0
  45. package/dist/commands/liberica/teams/test-cases/get.d.ts.map +1 -0
  46. package/dist/commands/liberica/teams/test-cases/get.js +90 -0
  47. package/dist/commands/liberica/teams/test-cases/get.js.map +1 -0
  48. package/dist/commands/liberica/teams/test-cases/index.d.ts +3 -0
  49. package/dist/commands/liberica/teams/test-cases/index.d.ts.map +1 -0
  50. package/dist/commands/liberica/teams/test-cases/index.js +23 -0
  51. package/dist/commands/liberica/teams/test-cases/index.js.map +1 -0
  52. package/dist/commands/liberica/teams/test-cases/list.d.ts +3 -0
  53. package/dist/commands/liberica/teams/test-cases/list.d.ts.map +1 -0
  54. package/dist/commands/liberica/teams/test-cases/list.js +117 -0
  55. package/dist/commands/liberica/teams/test-cases/list.js.map +1 -0
  56. package/dist/commands/liberica/teams/test-cases/update.d.ts +3 -0
  57. package/dist/commands/liberica/teams/test-cases/update.d.ts.map +1 -0
  58. package/dist/commands/liberica/teams/test-cases/update.js +155 -0
  59. package/dist/commands/liberica/teams/test-cases/update.js.map +1 -0
  60. package/dist/commands/liberica/teams/test-cases/version-get.d.ts +3 -0
  61. package/dist/commands/liberica/teams/test-cases/version-get.d.ts.map +1 -0
  62. package/dist/commands/liberica/teams/test-cases/version-get.js +90 -0
  63. package/dist/commands/liberica/teams/test-cases/version-get.js.map +1 -0
  64. package/dist/commands/liberica/teams/test-cases/versions.d.ts +3 -0
  65. package/dist/commands/liberica/teams/test-cases/versions.d.ts.map +1 -0
  66. package/dist/commands/liberica/teams/test-cases/versions.js +93 -0
  67. package/dist/commands/liberica/teams/test-cases/versions.js.map +1 -0
  68. package/dist/commands/liberica/teams/test-executions/add.d.ts +3 -0
  69. package/dist/commands/liberica/teams/test-executions/add.d.ts.map +1 -0
  70. package/dist/commands/liberica/teams/test-executions/add.js +169 -0
  71. package/dist/commands/liberica/teams/test-executions/add.js.map +1 -0
  72. package/dist/commands/liberica/teams/test-executions/delete.d.ts +3 -0
  73. package/dist/commands/liberica/teams/test-executions/delete.d.ts.map +1 -0
  74. package/dist/commands/liberica/teams/test-executions/delete.js +55 -0
  75. package/dist/commands/liberica/teams/test-executions/delete.js.map +1 -0
  76. package/dist/commands/liberica/teams/test-executions/get.d.ts +3 -0
  77. package/dist/commands/liberica/teams/test-executions/get.d.ts.map +1 -0
  78. package/dist/commands/liberica/teams/test-executions/get.js +68 -0
  79. package/dist/commands/liberica/teams/test-executions/get.js.map +1 -0
  80. package/dist/commands/liberica/teams/test-executions/index.d.ts +3 -0
  81. package/dist/commands/liberica/teams/test-executions/index.d.ts.map +1 -0
  82. package/dist/commands/liberica/teams/test-executions/index.js +17 -0
  83. package/dist/commands/liberica/teams/test-executions/index.js.map +1 -0
  84. package/dist/commands/liberica/teams/test-executions/list.d.ts +3 -0
  85. package/dist/commands/liberica/teams/test-executions/list.d.ts.map +1 -0
  86. package/dist/commands/liberica/teams/test-executions/list.js +118 -0
  87. package/dist/commands/liberica/teams/test-executions/list.js.map +1 -0
  88. package/dist/commands/liberica/teams/test-executions/update.d.ts +3 -0
  89. package/dist/commands/liberica/teams/test-executions/update.d.ts.map +1 -0
  90. package/dist/commands/liberica/teams/test-executions/update.js +130 -0
  91. package/dist/commands/liberica/teams/test-executions/update.js.map +1 -0
  92. package/dist/commands/liberica/teams/test-flaky/index.d.ts +3 -0
  93. package/dist/commands/liberica/teams/test-flaky/index.d.ts.map +1 -0
  94. package/dist/commands/liberica/teams/test-flaky/index.js +9 -0
  95. package/dist/commands/liberica/teams/test-flaky/index.js.map +1 -0
  96. package/dist/commands/liberica/teams/test-flaky/list.d.ts +3 -0
  97. package/dist/commands/liberica/teams/test-flaky/list.d.ts.map +1 -0
  98. package/dist/commands/liberica/teams/test-flaky/list.js +98 -0
  99. package/dist/commands/liberica/teams/test-flaky/list.js.map +1 -0
  100. package/dist/commands/liberica/teams/test-projects/create.d.ts +3 -0
  101. package/dist/commands/liberica/teams/test-projects/create.d.ts.map +1 -0
  102. package/dist/commands/liberica/teams/test-projects/create.js +139 -0
  103. package/dist/commands/liberica/teams/test-projects/create.js.map +1 -0
  104. package/dist/commands/liberica/teams/test-projects/delete.d.ts +3 -0
  105. package/dist/commands/liberica/teams/test-projects/delete.d.ts.map +1 -0
  106. package/dist/commands/liberica/teams/test-projects/delete.js +55 -0
  107. package/dist/commands/liberica/teams/test-projects/delete.js.map +1 -0
  108. package/dist/commands/liberica/teams/test-projects/get.d.ts +3 -0
  109. package/dist/commands/liberica/teams/test-projects/get.d.ts.map +1 -0
  110. package/dist/commands/liberica/teams/test-projects/get.js +66 -0
  111. package/dist/commands/liberica/teams/test-projects/get.js.map +1 -0
  112. package/dist/commands/liberica/teams/test-projects/index.d.ts +3 -0
  113. package/dist/commands/liberica/teams/test-projects/index.d.ts.map +1 -0
  114. package/dist/commands/liberica/teams/test-projects/index.js +17 -0
  115. package/dist/commands/liberica/teams/test-projects/index.js.map +1 -0
  116. package/dist/commands/liberica/teams/test-projects/list.d.ts +3 -0
  117. package/dist/commands/liberica/teams/test-projects/list.d.ts.map +1 -0
  118. package/dist/commands/liberica/teams/test-projects/list.js +101 -0
  119. package/dist/commands/liberica/teams/test-projects/list.js.map +1 -0
  120. package/dist/commands/liberica/teams/test-projects/update.d.ts +3 -0
  121. package/dist/commands/liberica/teams/test-projects/update.d.ts.map +1 -0
  122. package/dist/commands/liberica/teams/test-projects/update.js +118 -0
  123. package/dist/commands/liberica/teams/test-projects/update.js.map +1 -0
  124. package/dist/commands/liberica/teams/test-runs/create.d.ts +3 -0
  125. package/dist/commands/liberica/teams/test-runs/create.d.ts.map +1 -0
  126. package/dist/commands/liberica/teams/test-runs/create.js +141 -0
  127. package/dist/commands/liberica/teams/test-runs/create.js.map +1 -0
  128. package/dist/commands/liberica/teams/test-runs/delete.d.ts +3 -0
  129. package/dist/commands/liberica/teams/test-runs/delete.d.ts.map +1 -0
  130. package/dist/commands/liberica/teams/test-runs/delete.js +55 -0
  131. package/dist/commands/liberica/teams/test-runs/delete.js.map +1 -0
  132. package/dist/commands/liberica/teams/test-runs/get.d.ts +3 -0
  133. package/dist/commands/liberica/teams/test-runs/get.d.ts.map +1 -0
  134. package/dist/commands/liberica/teams/test-runs/get.js +68 -0
  135. package/dist/commands/liberica/teams/test-runs/get.js.map +1 -0
  136. package/dist/commands/liberica/teams/test-runs/index.d.ts +3 -0
  137. package/dist/commands/liberica/teams/test-runs/index.d.ts.map +1 -0
  138. package/dist/commands/liberica/teams/test-runs/index.js +17 -0
  139. package/dist/commands/liberica/teams/test-runs/index.js.map +1 -0
  140. package/dist/commands/liberica/teams/test-runs/list.d.ts +3 -0
  141. package/dist/commands/liberica/teams/test-runs/list.d.ts.map +1 -0
  142. package/dist/commands/liberica/teams/test-runs/list.js +113 -0
  143. package/dist/commands/liberica/teams/test-runs/list.js.map +1 -0
  144. package/dist/commands/liberica/teams/test-runs/update.d.ts +3 -0
  145. package/dist/commands/liberica/teams/test-runs/update.d.ts.map +1 -0
  146. package/dist/commands/liberica/teams/test-runs/update.js +155 -0
  147. package/dist/commands/liberica/teams/test-runs/update.js.map +1 -0
  148. package/dist/commands/liberica/teams/test-suites/create.d.ts +3 -0
  149. package/dist/commands/liberica/teams/test-suites/create.d.ts.map +1 -0
  150. package/dist/commands/liberica/teams/test-suites/create.js +151 -0
  151. package/dist/commands/liberica/teams/test-suites/create.js.map +1 -0
  152. package/dist/commands/liberica/teams/test-suites/delete.d.ts +3 -0
  153. package/dist/commands/liberica/teams/test-suites/delete.d.ts.map +1 -0
  154. package/dist/commands/liberica/teams/test-suites/delete.js +55 -0
  155. package/dist/commands/liberica/teams/test-suites/delete.js.map +1 -0
  156. package/dist/commands/liberica/teams/test-suites/get.d.ts +3 -0
  157. package/dist/commands/liberica/teams/test-suites/get.d.ts.map +1 -0
  158. package/dist/commands/liberica/teams/test-suites/get.js +71 -0
  159. package/dist/commands/liberica/teams/test-suites/get.js.map +1 -0
  160. package/dist/commands/liberica/teams/test-suites/index.d.ts +3 -0
  161. package/dist/commands/liberica/teams/test-suites/index.d.ts.map +1 -0
  162. package/dist/commands/liberica/teams/test-suites/index.js +17 -0
  163. package/dist/commands/liberica/teams/test-suites/index.js.map +1 -0
  164. package/dist/commands/liberica/teams/test-suites/list.d.ts +3 -0
  165. package/dist/commands/liberica/teams/test-suites/list.d.ts.map +1 -0
  166. package/dist/commands/liberica/teams/test-suites/list.js +101 -0
  167. package/dist/commands/liberica/teams/test-suites/list.js.map +1 -0
  168. package/dist/commands/liberica/teams/test-suites/update.d.ts +3 -0
  169. package/dist/commands/liberica/teams/test-suites/update.d.ts.map +1 -0
  170. package/dist/commands/liberica/teams/test-suites/update.js +122 -0
  171. package/dist/commands/liberica/teams/test-suites/update.js.map +1 -0
  172. package/dist/commands/models/index.d.ts.map +1 -1
  173. package/dist/commands/models/index.js +1 -1
  174. package/dist/commands/models/index.js.map +1 -1
  175. package/dist/commands/models/models.d.ts.map +1 -1
  176. package/dist/commands/models/models.js +1 -13
  177. package/dist/commands/models/models.js.map +1 -1
  178. package/dist/core/api/client.d.ts +30 -0
  179. package/dist/core/api/client.d.ts.map +1 -1
  180. package/dist/core/api/client.js +603 -19
  181. package/dist/core/api/client.js.map +1 -1
  182. package/dist/skills/barista-cli/scripts/generate.js +0 -1
  183. package/dist/skills/barista-cli/scripts/generate.js.map +1 -1
  184. package/dist/types/finance.d.ts +1 -0
  185. package/dist/types/finance.d.ts.map +1 -1
  186. package/dist/types/index.d.ts +1 -0
  187. package/dist/types/index.d.ts.map +1 -1
  188. package/dist/types/purchase-order.d.ts +1 -0
  189. package/dist/types/purchase-order.d.ts.map +1 -1
  190. package/dist/types/test-case.d.ts +336 -0
  191. package/dist/types/test-case.d.ts.map +1 -0
  192. package/dist/types/test-case.js +2 -0
  193. package/dist/types/test-case.js.map +1 -0
  194. package/package.json +4 -1
  195. package/skills/barista-cli/data/commands.json +175 -1
  196. package/skills/barista-cli/data/commands.yaml +112 -1
@@ -16,6 +16,7 @@ export class APIClient {
16
16
  if (typeof data !== 'string')
17
17
  return data;
18
18
  try {
19
+ // eslint-disable-next-line no-useless-escape
19
20
  const preserved = data.replace(/(?<=[\[,:])\s*(-?\d{16,})\s*(?=[,\]\}])/g, '"$1"');
20
21
  return JSON.parse(preserved);
21
22
  }
@@ -939,17 +940,8 @@ export const apiClient = {
939
940
  return { success: true, data: cached.items };
940
941
  }
941
942
  try {
942
- // Use dict API for richer data (dictCode, sortOrder, statusFlag).
943
- // pageSize 200 is well above typical position counts (<50).
944
- const result = await this.listDictItems(environment, tenant, {
945
- dictTypeCode: 'POSITION_TYPE',
946
- pageSize: 200,
947
- });
948
- if (!result.success) {
949
- return { success: false, error: result.error };
950
- }
951
943
  // Helper to map dict item fields to PositionListItem
952
- function mapDictItem(d) {
944
+ const mapDictItem = (d) => {
953
945
  return {
954
946
  id: String(d.dictId || ''),
955
947
  name: String(d.dictName || ''),
@@ -960,6 +952,15 @@ export const apiClient = {
960
952
  sortOrder: typeof d.sortOrder === 'number' ? d.sortOrder : 0,
961
953
  statusFlag: typeof d.statusFlag === 'number' ? d.statusFlag : 1,
962
954
  };
955
+ };
956
+ // Use dict API for richer data (dictCode, sortOrder, statusFlag).
957
+ // pageSize 200 is well above typical position counts (<50).
958
+ const result = await this.listDictItems(environment, tenant, {
959
+ dictTypeCode: 'POSITION_TYPE',
960
+ pageSize: 200,
961
+ });
962
+ if (!result.success) {
963
+ return { success: false, error: result.error };
963
964
  }
964
965
  const rawData = result.data;
965
966
  let items = [];
@@ -4230,6 +4231,558 @@ export const apiClient = {
4230
4231
  }
4231
4232
  },
4232
4233
  // ============================================
4234
+ // TestTracking: TestCase API methods
4235
+ // ============================================
4236
+ async listTestCases(environment, tenant, params) {
4237
+ try {
4238
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4239
+ if (!token) {
4240
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4241
+ }
4242
+ const client = createAPIClient('liberica', environment, tenant);
4243
+ client.setAuthToken(token);
4244
+ const queryString = new URLSearchParams();
4245
+ if (params.pageNo !== undefined)
4246
+ queryString.append('pageNo', params.pageNo.toString());
4247
+ if (params.pageSize)
4248
+ queryString.append('pageSize', params.pageSize.toString());
4249
+ if (params.suiteId)
4250
+ queryString.append('suiteId', params.suiteId);
4251
+ if (params.status)
4252
+ queryString.append('status', params.status);
4253
+ if (params.projectCode)
4254
+ queryString.append('projectCode', params.projectCode);
4255
+ if (params.moduleCode)
4256
+ queryString.append('moduleCode', params.moduleCode);
4257
+ if (params.featureArea)
4258
+ queryString.append('featureArea', params.featureArea);
4259
+ if (params.name)
4260
+ queryString.append('name', params.name);
4261
+ const url = `/api/enterprise/team/test/case/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4262
+ const response = await client.getClient().get(url);
4263
+ return response.data;
4264
+ }
4265
+ catch (error) {
4266
+ return handleApiErrorTestCase(error);
4267
+ }
4268
+ },
4269
+ async getTestCase(environment, tenant, testCaseId) {
4270
+ try {
4271
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4272
+ if (!token) {
4273
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4274
+ }
4275
+ const client = createAPIClient('liberica', environment, tenant);
4276
+ client.setAuthToken(token);
4277
+ const response = await client.getClient().get(`/api/enterprise/team/test/case/detail?testCaseId=${testCaseId}`);
4278
+ return response.data;
4279
+ }
4280
+ catch (error) {
4281
+ return handleApiErrorTestCase(error);
4282
+ }
4283
+ },
4284
+ async createTestCase(environment, tenant, data) {
4285
+ try {
4286
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4287
+ if (!token) {
4288
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4289
+ }
4290
+ const client = createAPIClient('liberica', environment, tenant);
4291
+ client.setAuthToken(token);
4292
+ const response = await client.getClient().post('/api/enterprise/team/test/case/add', data);
4293
+ return response.data;
4294
+ }
4295
+ catch (error) {
4296
+ return handleApiErrorTestCase(error);
4297
+ }
4298
+ },
4299
+ async updateTestCase(environment, tenant, data) {
4300
+ try {
4301
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4302
+ if (!token) {
4303
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4304
+ }
4305
+ const client = createAPIClient('liberica', environment, tenant);
4306
+ client.setAuthToken(token);
4307
+ const response = await client.getClient().post('/api/enterprise/team/test/case/edit', data);
4308
+ return response.data;
4309
+ }
4310
+ catch (error) {
4311
+ return handleApiErrorTestCase(error);
4312
+ }
4313
+ },
4314
+ async deleteTestCase(environment, tenant, testCaseId) {
4315
+ try {
4316
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4317
+ if (!token) {
4318
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4319
+ }
4320
+ const client = createAPIClient('liberica', environment, tenant);
4321
+ client.setAuthToken(token);
4322
+ const response = await client.getClient().post('/api/enterprise/team/test/case/del', { testCaseId });
4323
+ return response.data;
4324
+ }
4325
+ catch (error) {
4326
+ return handleApiErrorTestCase(error);
4327
+ }
4328
+ },
4329
+ async batchDeleteTestCase(environment, tenant, data) {
4330
+ try {
4331
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4332
+ if (!token) {
4333
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4334
+ }
4335
+ const client = createAPIClient('liberica', environment, tenant);
4336
+ client.setAuthToken(token);
4337
+ const response = await client.getClient().post('/api/enterprise/team/test/case/batchDel', data);
4338
+ return response.data;
4339
+ }
4340
+ catch (error) {
4341
+ return handleApiErrorTestCase(error);
4342
+ }
4343
+ },
4344
+ // ============================================
4345
+ // TestTracking: TestProject API methods
4346
+ // ============================================
4347
+ async listTestProjects(environment, tenant, params) {
4348
+ try {
4349
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4350
+ if (!token) {
4351
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4352
+ }
4353
+ const client = createAPIClient('liberica', environment, tenant);
4354
+ client.setAuthToken(token);
4355
+ const queryString = new URLSearchParams();
4356
+ if (params.pageNo !== undefined)
4357
+ queryString.append('pageNo', params.pageNo.toString());
4358
+ if (params.pageSize)
4359
+ queryString.append('pageSize', params.pageSize.toString());
4360
+ if (params.projectCode)
4361
+ queryString.append('projectCode', params.projectCode);
4362
+ if (params.projectType)
4363
+ queryString.append('projectType', params.projectType);
4364
+ if (params.testFramework)
4365
+ queryString.append('testFramework', params.testFramework);
4366
+ const url = `/api/enterprise/team/test/project/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4367
+ const response = await client.getClient().get(url);
4368
+ return response.data;
4369
+ }
4370
+ catch (error) {
4371
+ return handleApiErrorTestProject(error);
4372
+ }
4373
+ },
4374
+ async getTestProject(environment, tenant, testProjectId) {
4375
+ try {
4376
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4377
+ if (!token) {
4378
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4379
+ }
4380
+ const client = createAPIClient('liberica', environment, tenant);
4381
+ client.setAuthToken(token);
4382
+ const response = await client.getClient().get(`/api/enterprise/team/test/project/detail?testProjectId=${testProjectId}`);
4383
+ return response.data;
4384
+ }
4385
+ catch (error) {
4386
+ return handleApiErrorTestProject(error);
4387
+ }
4388
+ },
4389
+ async createTestProject(environment, tenant, data) {
4390
+ try {
4391
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4392
+ if (!token) {
4393
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4394
+ }
4395
+ const client = createAPIClient('liberica', environment, tenant);
4396
+ client.setAuthToken(token);
4397
+ const response = await client.getClient().post('/api/enterprise/team/test/project/add', data);
4398
+ return response.data;
4399
+ }
4400
+ catch (error) {
4401
+ return handleApiErrorTestProject(error);
4402
+ }
4403
+ },
4404
+ async updateTestProject(environment, tenant, data) {
4405
+ try {
4406
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4407
+ if (!token) {
4408
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4409
+ }
4410
+ const client = createAPIClient('liberica', environment, tenant);
4411
+ client.setAuthToken(token);
4412
+ const response = await client.getClient().post('/api/enterprise/team/test/project/edit', data);
4413
+ return response.data;
4414
+ }
4415
+ catch (error) {
4416
+ return handleApiErrorTestProject(error);
4417
+ }
4418
+ },
4419
+ async deleteTestProject(environment, tenant, testProjectId) {
4420
+ try {
4421
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4422
+ if (!token) {
4423
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4424
+ }
4425
+ const client = createAPIClient('liberica', environment, tenant);
4426
+ client.setAuthToken(token);
4427
+ const response = await client.getClient().post('/api/enterprise/team/test/project/delete', { testProjectId });
4428
+ return response.data;
4429
+ }
4430
+ catch (error) {
4431
+ return handleApiErrorTestProject(error);
4432
+ }
4433
+ },
4434
+ // ============================================
4435
+ // TestTracking: TestSuite API methods
4436
+ // ============================================
4437
+ async listTestSuites(environment, tenant, params) {
4438
+ try {
4439
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4440
+ if (!token) {
4441
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4442
+ }
4443
+ const client = createAPIClient('liberica', environment, tenant);
4444
+ client.setAuthToken(token);
4445
+ const queryString = new URLSearchParams();
4446
+ if (params.pageNo !== undefined)
4447
+ queryString.append('pageNo', params.pageNo.toString());
4448
+ if (params.pageSize)
4449
+ queryString.append('pageSize', params.pageSize.toString());
4450
+ if (params.testProjectId)
4451
+ queryString.append('testProjectId', params.testProjectId);
4452
+ if (params.moduleCode)
4453
+ queryString.append('moduleCode', params.moduleCode);
4454
+ if (params.testType)
4455
+ queryString.append('testType', params.testType);
4456
+ const url = `/api/enterprise/team/test/suite/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4457
+ const response = await client.getClient().get(url);
4458
+ return response.data;
4459
+ }
4460
+ catch (error) {
4461
+ return handleApiErrorTestSuite(error);
4462
+ }
4463
+ },
4464
+ async getTestSuite(environment, tenant, testSuiteId) {
4465
+ try {
4466
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4467
+ if (!token) {
4468
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4469
+ }
4470
+ const client = createAPIClient('liberica', environment, tenant);
4471
+ client.setAuthToken(token);
4472
+ const response = await client.getClient().get(`/api/enterprise/team/test/suite/detail?testSuiteId=${testSuiteId}`);
4473
+ return response.data;
4474
+ }
4475
+ catch (error) {
4476
+ return handleApiErrorTestSuite(error);
4477
+ }
4478
+ },
4479
+ async createTestSuite(environment, tenant, data) {
4480
+ try {
4481
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4482
+ if (!token) {
4483
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4484
+ }
4485
+ const client = createAPIClient('liberica', environment, tenant);
4486
+ client.setAuthToken(token);
4487
+ const response = await client.getClient().post('/api/enterprise/team/test/suite/add', data);
4488
+ return response.data;
4489
+ }
4490
+ catch (error) {
4491
+ return handleApiErrorTestSuite(error);
4492
+ }
4493
+ },
4494
+ async updateTestSuite(environment, tenant, data) {
4495
+ try {
4496
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4497
+ if (!token) {
4498
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4499
+ }
4500
+ const client = createAPIClient('liberica', environment, tenant);
4501
+ client.setAuthToken(token);
4502
+ const response = await client.getClient().post('/api/enterprise/team/test/suite/edit', data);
4503
+ return response.data;
4504
+ }
4505
+ catch (error) {
4506
+ return handleApiErrorTestSuite(error);
4507
+ }
4508
+ },
4509
+ async deleteTestSuite(environment, tenant, testSuiteId) {
4510
+ try {
4511
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4512
+ if (!token) {
4513
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4514
+ }
4515
+ const client = createAPIClient('liberica', environment, tenant);
4516
+ client.setAuthToken(token);
4517
+ const response = await client.getClient().post('/api/enterprise/team/test/suite/delete', { testSuiteId });
4518
+ return response.data;
4519
+ }
4520
+ catch (error) {
4521
+ return handleApiErrorTestSuite(error);
4522
+ }
4523
+ },
4524
+ // ============================================
4525
+ // TestTracking: TestRun API methods
4526
+ // ============================================
4527
+ async listTestRuns(environment, tenant, params) {
4528
+ try {
4529
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4530
+ if (!token) {
4531
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4532
+ }
4533
+ const client = createAPIClient('liberica', environment, tenant);
4534
+ client.setAuthToken(token);
4535
+ const queryString = new URLSearchParams();
4536
+ if (params.pageNo !== undefined)
4537
+ queryString.append('pageNo', params.pageNo.toString());
4538
+ if (params.pageSize)
4539
+ queryString.append('pageSize', params.pageSize.toString());
4540
+ if (params.projectCode)
4541
+ queryString.append('projectCode', params.projectCode);
4542
+ if (params.status)
4543
+ queryString.append('status', params.status);
4544
+ if (params.suiteId)
4545
+ queryString.append('suiteId', params.suiteId);
4546
+ if (params.branch)
4547
+ queryString.append('branch', params.branch);
4548
+ if (params.triggerSource)
4549
+ queryString.append('triggerSource', params.triggerSource);
4550
+ const url = `/api/enterprise/team/test/run/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4551
+ const response = await client.getClient().get(url);
4552
+ return response.data;
4553
+ }
4554
+ catch (error) {
4555
+ return handleApiErrorTestRun(error);
4556
+ }
4557
+ },
4558
+ async getTestRun(environment, tenant, testRunId) {
4559
+ try {
4560
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4561
+ if (!token) {
4562
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4563
+ }
4564
+ const client = createAPIClient('liberica', environment, tenant);
4565
+ client.setAuthToken(token);
4566
+ const response = await client.getClient().get(`/api/enterprise/team/test/run/detail?testRunId=${testRunId}`);
4567
+ return response.data;
4568
+ }
4569
+ catch (error) {
4570
+ return handleApiErrorTestRun(error);
4571
+ }
4572
+ },
4573
+ async createTestRun(environment, tenant, data) {
4574
+ try {
4575
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4576
+ if (!token) {
4577
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4578
+ }
4579
+ const client = createAPIClient('liberica', environment, tenant);
4580
+ client.setAuthToken(token);
4581
+ const response = await client.getClient().post('/api/enterprise/team/test/run/add', data);
4582
+ return response.data;
4583
+ }
4584
+ catch (error) {
4585
+ return handleApiErrorTestRun(error);
4586
+ }
4587
+ },
4588
+ async updateTestRun(environment, tenant, data) {
4589
+ try {
4590
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4591
+ if (!token) {
4592
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4593
+ }
4594
+ const client = createAPIClient('liberica', environment, tenant);
4595
+ client.setAuthToken(token);
4596
+ const response = await client.getClient().post('/api/enterprise/team/test/run/edit', data);
4597
+ return response.data;
4598
+ }
4599
+ catch (error) {
4600
+ return handleApiErrorTestRun(error);
4601
+ }
4602
+ },
4603
+ async deleteTestRun(environment, tenant, testRunId) {
4604
+ try {
4605
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4606
+ if (!token) {
4607
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4608
+ }
4609
+ const client = createAPIClient('liberica', environment, tenant);
4610
+ client.setAuthToken(token);
4611
+ const response = await client.getClient().post('/api/enterprise/team/test/run/delete', { testRunId });
4612
+ return response.data;
4613
+ }
4614
+ catch (error) {
4615
+ return handleApiErrorTestRun(error);
4616
+ }
4617
+ },
4618
+ // ============================================
4619
+ // TestTracking: TestExecution API methods
4620
+ // ============================================
4621
+ async listTestExecutions(environment, tenant, params) {
4622
+ try {
4623
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4624
+ if (!token) {
4625
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4626
+ }
4627
+ const client = createAPIClient('liberica', environment, tenant);
4628
+ client.setAuthToken(token);
4629
+ const queryString = new URLSearchParams();
4630
+ if (params.pageNo !== undefined)
4631
+ queryString.append('pageNo', params.pageNo.toString());
4632
+ if (params.pageSize)
4633
+ queryString.append('pageSize', params.pageSize.toString());
4634
+ if (params.runId)
4635
+ queryString.append('runId', params.runId);
4636
+ if (params.testCaseId)
4637
+ queryString.append('testCaseId', params.testCaseId);
4638
+ if (params.status)
4639
+ queryString.append('status', params.status);
4640
+ if (params.errorCategory)
4641
+ queryString.append('errorCategory', params.errorCategory);
4642
+ if (params.browser)
4643
+ queryString.append('browser', params.browser);
4644
+ if (params.os)
4645
+ queryString.append('os', params.os);
4646
+ if (params.retryNumber !== undefined)
4647
+ queryString.append('retryNumber', params.retryNumber.toString());
4648
+ const url = `/api/enterprise/team/test/execution/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4649
+ const response = await client.getClient().get(url);
4650
+ return response.data;
4651
+ }
4652
+ catch (error) {
4653
+ return handleApiErrorTestExecution(error);
4654
+ }
4655
+ },
4656
+ async getTestExecution(environment, tenant, testExecutionId) {
4657
+ try {
4658
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4659
+ if (!token) {
4660
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4661
+ }
4662
+ const client = createAPIClient('liberica', environment, tenant);
4663
+ client.setAuthToken(token);
4664
+ const response = await client.getClient().get(`/api/enterprise/team/test/execution/detail?testExecutionId=${testExecutionId}`);
4665
+ return response.data;
4666
+ }
4667
+ catch (error) {
4668
+ return handleApiErrorTestExecution(error);
4669
+ }
4670
+ },
4671
+ async createTestExecution(environment, tenant, data) {
4672
+ try {
4673
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4674
+ if (!token) {
4675
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4676
+ }
4677
+ const client = createAPIClient('liberica', environment, tenant);
4678
+ client.setAuthToken(token);
4679
+ const response = await client.getClient().post('/api/enterprise/team/test/execution/add', data);
4680
+ return response.data;
4681
+ }
4682
+ catch (error) {
4683
+ return handleApiErrorTestExecution(error);
4684
+ }
4685
+ },
4686
+ async updateTestExecution(environment, tenant, data) {
4687
+ try {
4688
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4689
+ if (!token) {
4690
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4691
+ }
4692
+ const client = createAPIClient('liberica', environment, tenant);
4693
+ client.setAuthToken(token);
4694
+ const response = await client.getClient().post('/api/enterprise/team/test/execution/edit', data);
4695
+ return response.data;
4696
+ }
4697
+ catch (error) {
4698
+ return handleApiErrorTestExecution(error);
4699
+ }
4700
+ },
4701
+ async deleteTestExecution(environment, tenant, testExecutionId) {
4702
+ try {
4703
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4704
+ if (!token) {
4705
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4706
+ }
4707
+ const client = createAPIClient('liberica', environment, tenant);
4708
+ client.setAuthToken(token);
4709
+ const response = await client.getClient().post('/api/enterprise/team/test/execution/delete', { testExecutionId });
4710
+ return response.data;
4711
+ }
4712
+ catch (error) {
4713
+ return handleApiErrorTestExecution(error);
4714
+ }
4715
+ },
4716
+ // ============================================
4717
+ // TestTracking: TestCaseVersion API methods
4718
+ // ============================================
4719
+ async listTestCaseVersions(environment, tenant, params) {
4720
+ try {
4721
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4722
+ if (!token) {
4723
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4724
+ }
4725
+ const client = createAPIClient('liberica', environment, tenant);
4726
+ client.setAuthToken(token);
4727
+ const queryString = new URLSearchParams();
4728
+ if (params.pageNo !== undefined)
4729
+ queryString.append('pageNo', params.pageNo.toString());
4730
+ if (params.pageSize)
4731
+ queryString.append('pageSize', params.pageSize.toString());
4732
+ if (params.testCaseId)
4733
+ queryString.append('testCaseId', params.testCaseId);
4734
+ const url = `/api/enterprise/team/test/case/version/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4735
+ const response = await client.getClient().get(url);
4736
+ return response.data;
4737
+ }
4738
+ catch (error) {
4739
+ return handleApiErrorTestCaseVersion(error);
4740
+ }
4741
+ },
4742
+ async getTestCaseVersion(environment, tenant, versionId) {
4743
+ try {
4744
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4745
+ if (!token) {
4746
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4747
+ }
4748
+ const client = createAPIClient('liberica', environment, tenant);
4749
+ client.setAuthToken(token);
4750
+ const response = await client.getClient().get(`/api/enterprise/team/test/case/version/detail?versionId=${versionId}`);
4751
+ return response.data;
4752
+ }
4753
+ catch (error) {
4754
+ return handleApiErrorTestCaseVersion(error);
4755
+ }
4756
+ },
4757
+ // ============================================
4758
+ // TestTracking: FlakyTest API methods
4759
+ // ============================================
4760
+ async listFlakyTests(environment, tenant, params) {
4761
+ try {
4762
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
4763
+ if (!token) {
4764
+ return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
4765
+ }
4766
+ const client = createAPIClient('liberica', environment, tenant);
4767
+ client.setAuthToken(token);
4768
+ const queryString = new URLSearchParams();
4769
+ if (params.pageNo !== undefined)
4770
+ queryString.append('pageNo', params.pageNo.toString());
4771
+ if (params.pageSize)
4772
+ queryString.append('pageSize', params.pageSize.toString());
4773
+ if (params.projectCode)
4774
+ queryString.append('projectCode', params.projectCode);
4775
+ if (params.suiteId)
4776
+ queryString.append('suiteId', params.suiteId);
4777
+ const url = `/api/enterprise/team/test/flaky/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
4778
+ const response = await client.getClient().get(url);
4779
+ return response.data;
4780
+ }
4781
+ catch (error) {
4782
+ return handleApiErrorFlakyTest(error);
4783
+ }
4784
+ },
4785
+ // ============================================
4233
4786
  // TransferInForm API methods
4234
4787
  // ============================================
4235
4788
  async listTransferInForms(environment, tenant, params) {
@@ -10083,6 +10636,27 @@ export const apiClient = {
10083
10636
  }
10084
10637
  },
10085
10638
  };
10639
+ function handleApiErrorTestCase(error) {
10640
+ return extractApiError(error);
10641
+ }
10642
+ function handleApiErrorTestProject(error) {
10643
+ return extractApiError(error);
10644
+ }
10645
+ function handleApiErrorTestSuite(error) {
10646
+ return extractApiError(error);
10647
+ }
10648
+ function handleApiErrorTestRun(error) {
10649
+ return extractApiError(error);
10650
+ }
10651
+ function handleApiErrorTestExecution(error) {
10652
+ return extractApiError(error);
10653
+ }
10654
+ function handleApiErrorTestCaseVersion(error) {
10655
+ return extractApiError(error);
10656
+ }
10657
+ function handleApiErrorFlakyTest(error) {
10658
+ return extractApiError(error);
10659
+ }
10086
10660
  function handleApiErrorStockReservation(error) {
10087
10661
  return extractApiError(error);
10088
10662
  }
@@ -10150,9 +10724,17 @@ export function extractApiError(error, context) {
10150
10724
  };
10151
10725
  }
10152
10726
  const exceptionTip = responseData.exceptionTip;
10727
+ const httpStatus = axiosError.response?.status;
10728
+ const httpSuffix = httpStatus ? ` (HTTP ${httpStatus})` : '';
10729
+ const reqMethod = axiosError.config?.method ? axiosError.config.method.toUpperCase() : '';
10730
+ const reqUrl = axiosError.config?.url || '';
10731
+ const reqContext = reqMethod && reqUrl ? ` [${reqMethod} ${reqUrl}]` : '';
10732
+ const fallbackMsg = message || 'API error occurred';
10153
10733
  const enhancedMessage = exceptionTip
10154
- ? `${message || 'API error occurred'}\n Backend: ${exceptionTip}`
10155
- : (message || 'API error occurred');
10734
+ ? `${fallbackMsg}\n Backend: ${exceptionTip}`
10735
+ : (fallbackMsg === 'API error occurred' && (httpSuffix || reqContext)
10736
+ ? `${fallbackMsg}${httpSuffix}${reqContext}`
10737
+ : fallbackMsg);
10156
10738
  return {
10157
10739
  success: false,
10158
10740
  error: {
@@ -10163,6 +10745,12 @@ export function extractApiError(error, context) {
10163
10745
  }
10164
10746
  }
10165
10747
  // Fallback: passthrough for already-normalized responses
10748
+ // Include HTTP status code + request context to help diagnose backend issues (e.g. regression TYP-9747ac4b)
10749
+ const httpStatus = axiosError.response?.status;
10750
+ const httpSuffix = httpStatus ? ` (HTTP ${httpStatus})` : '';
10751
+ const reqMethod = axiosError.config?.method ? axiosError.config.method.toUpperCase() : '';
10752
+ const reqUrl = axiosError.config?.url || '';
10753
+ const reqContext = reqMethod && reqUrl ? ` [${reqMethod} ${reqUrl}]` : '';
10166
10754
  const fallbackMessage = responseData.error?.message ||
10167
10755
  responseData.message ||
10168
10756
  'API error occurred';
@@ -10175,7 +10763,9 @@ export function extractApiError(error, context) {
10175
10763
  'API_ERROR',
10176
10764
  message: exceptionTip
10177
10765
  ? `${fallbackMessage}\n Backend: ${exceptionTip}`
10178
- : fallbackMessage,
10766
+ : (fallbackMessage === 'API error occurred' && (httpSuffix || reqContext)
10767
+ ? `${fallbackMessage}${httpSuffix}${reqContext}`
10768
+ : fallbackMessage),
10179
10769
  },
10180
10770
  };
10181
10771
  }
@@ -10294,9 +10884,6 @@ function handleApiErrorOutsourcingStockIn(error) {
10294
10884
  function handleApiErrorPurchaseOrder(error) {
10295
10885
  return extractApiError(error);
10296
10886
  }
10297
- function handleApiErrorSalesOrder(error) {
10298
- return extractApiError(error);
10299
- }
10300
10887
  function handleApiErrorActualProduction(error) {
10301
10888
  return extractApiError(error);
10302
10889
  }
@@ -10315,9 +10902,6 @@ function handleApiErrorMrpTask(error) {
10315
10902
  function handleApiErrorAps(error) {
10316
10903
  return extractApiError(error);
10317
10904
  }
10318
- function handleApiErrorPlanOrder(error) {
10319
- return extractApiError(error);
10320
- }
10321
10905
  function handleApiErrorPhysicalInventory(error) {
10322
10906
  return extractApiError(error);
10323
10907
  }