@qbraid-core/ibm-cloud 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Stable][preview-stability]](https://qbraid.github.io/qbraid-core-js/#launch-stages)
6
6
  [![npm](https://img.shields.io/npm/v/@qbraid-core/ibm-cloud?color=blue)](https://npm.im/@qbraid-core/ibm/cloud)
7
7
 
8
- IBM Cloud API client used for interacting with IBM's Qiskit Runtime Service API.
8
+ Client for interacting with IBM's Qiskit Runtime Service via the IBM Cloud API.
9
9
 
10
10
  ## Installation
11
11
 
@@ -1,30 +1,19 @@
1
- import { AllDevicesResponse, DeviceProperties, DeviceConfiguration, DeviceStatus, JobList, Job, JobMetrics, GetJobParams, APIErrorResponse, JobTranspiledCircuitResponse } from './types';
1
+ import { AllDevicesResponse, DeviceProperties, DeviceConfiguration, DeviceErrors, DeviceStatus, JobList, Job, JobMetrics, GetJobParams, APIErrorResponse, JobTranspiledCircuitResponse } from './types';
2
2
  export declare class IBMCloudClient {
3
- private apiKey?;
4
- private token?;
5
- private crn;
6
3
  private baseUrl;
7
4
  private client;
5
+ private configManager;
8
6
  constructor({ apiKey, token, crn }: {
9
7
  apiKey?: string;
10
8
  token?: string;
11
9
  crn?: string;
12
10
  });
13
- loadCredsFromFile(): {
14
- apiKey?: string;
15
- token?: string;
16
- crn?: string;
17
- };
18
- loadCredsFromEnv(): {
19
- apiKey?: string;
20
- token?: undefined;
21
- crn?: string;
22
- };
23
11
  private handleJobRequest;
24
12
  getBackends(): Promise<AllDevicesResponse>;
25
13
  getBackendProperties(backendName: string, updatedBefore?: string): Promise<DeviceProperties>;
26
14
  getBackendConfiguration(backendName: string): Promise<DeviceConfiguration>;
27
15
  getBackendStatus(backendName: string): Promise<DeviceStatus>;
16
+ getBackendErrors(backendName: string): Promise<DeviceErrors>;
28
17
  getJobs(params?: GetJobParams): Promise<JobList | APIErrorResponse>;
29
18
  getJob(jobId: string, excludeParams?: boolean): Promise<Job | APIErrorResponse>;
30
19
  deleteJob(jobId: string): Promise<null | APIErrorResponse>;
@@ -6,43 +6,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  };
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.IBMCloudClient = void 0;
9
- const fs_1 = __importDefault(require("fs"));
10
9
  const https_1 = require("https");
11
- const os_1 = __importDefault(require("os"));
12
- const path_1 = __importDefault(require("path"));
13
10
  const axios_1 = __importDefault(require("axios"));
14
- const homedir = os_1.default.homedir();
11
+ const config_1 = require("./config");
15
12
  class IBMCloudClient {
16
- apiKey;
17
- token;
18
- crn;
19
13
  baseUrl;
20
14
  client;
15
+ configManager;
21
16
  constructor({ apiKey, token, crn }) {
22
- if (!apiKey && !token && !crn) {
23
- // attempt to load the creds from ~/.qiskit/qiskit-ibm.json file
24
- // or from the env vars QISKIT_IBM_TOKEN and QISKIT_IBM_INSTANCE
25
- let creds = this.loadCredsFromFile();
26
- if (Object.keys(creds).length === 0) {
27
- creds = this.loadCredsFromEnv();
28
- }
29
- apiKey = creds.apiKey;
30
- token = creds.token;
31
- crn = creds.crn;
32
- }
33
- if (!apiKey && !token) {
17
+ this.configManager = new config_1.IBMConfigManager();
18
+ if (apiKey)
19
+ this.configManager.setApiKey(apiKey);
20
+ if (token)
21
+ this.configManager.setBearerToken(token);
22
+ if (crn)
23
+ this.configManager.setServiceCRN(crn);
24
+ if (!this.configManager.getApiKey() && !this.configManager.getBearerToken()) {
34
25
  throw new Error('Either apiKey or token must be provided');
35
26
  }
36
- if (!crn) {
27
+ if (!this.configManager.getServiceCRN()) {
37
28
  throw new Error('Service CRN must be provided');
38
29
  }
39
- this.apiKey = apiKey;
40
- this.token = token;
41
- this.crn = crn;
42
30
  this.baseUrl = 'https://quantum.cloud.ibm.com/api/v1';
43
31
  const headers = {
44
- 'Service-CRN': this.crn,
45
- Authorization: this.apiKey ? `apikey ${this.apiKey}` : `Bearer ${this.token}`,
32
+ 'Service-CRN': this.configManager.getServiceCRN(),
33
+ Authorization: this.configManager.getApiKey()
34
+ ? `apikey ${this.configManager.getApiKey()}`
35
+ : `Bearer ${this.configManager.getBearerToken()}`,
46
36
  };
47
37
  const axiosInstance = axios_1.default.create({
48
38
  baseURL: this.baseUrl,
@@ -51,46 +41,6 @@ class IBMCloudClient {
51
41
  });
52
42
  this.client = axiosInstance;
53
43
  }
54
- loadCredsFromFile() {
55
- const filePath = path_1.default.join(homedir, '.qiskit', 'qiskit-ibm.json');
56
- try {
57
- if (fs_1.default.existsSync(filePath)) {
58
- const rawData = fs_1.default.readFileSync(filePath, 'utf-8');
59
- const creds = JSON.parse(rawData);
60
- console.log('Loaded credentials from file');
61
- return {
62
- apiKey: creds.apiKey,
63
- token: creds.token,
64
- crn: creds.serviceCRN,
65
- };
66
- }
67
- else {
68
- console.log('Credentials file not found');
69
- return {};
70
- }
71
- }
72
- catch (error) {
73
- console.error('Error loading credentials from file:', error);
74
- return {};
75
- }
76
- }
77
- loadCredsFromEnv() {
78
- // Loading account from environment variables
79
- // Ref : https://github.com/Qiskit/qiskit-ibm-runtime/tree/main?tab=readme-ov-file#loading-account-from-environment-variables
80
- const apiKey = process.env.QISKIT_IBM_TOKEN;
81
- const crn = process.env.QISKIT_IBM_INSTANCE;
82
- if (!apiKey || !crn) {
83
- console.log('Environment variables not found');
84
- return {};
85
- }
86
- // in this case, token is null
87
- console.log('Loaded credentials from env');
88
- return {
89
- apiKey: apiKey,
90
- token: undefined,
91
- crn: crn,
92
- };
93
- }
94
44
  async handleJobRequest(request) {
95
45
  try {
96
46
  const response = await request;
@@ -125,21 +75,55 @@ class IBMCloudClient {
125
75
  const response = await this.client.get(`/backends/${backendName}/status`);
126
76
  return response.data;
127
77
  }
128
- // 5. GET /jobs - get all jobs from IBM
78
+ // 5. GET /backends/:backend_name/errors - get the gate errors of a specific backend
79
+ async getBackendErrors(backendName) {
80
+ const backendProps = await this.getBackendProperties(backendName);
81
+ if (!backendProps.gates || backendProps.gates.length === 0) {
82
+ return { gate_errors: [] };
83
+ }
84
+ const gates = backendProps.gates;
85
+ const gateErrors = {};
86
+ for (let gate of gates) {
87
+ const gateName = gate.gate;
88
+ // check if gate is not present
89
+ if (gateErrors[gateName] === undefined) {
90
+ gateErrors[gateName] = {
91
+ name: gate.gate,
92
+ num_qubits: gate.qubits.length,
93
+ lowest: 1e6,
94
+ highest: 0,
95
+ };
96
+ }
97
+ const gateParams = gate.parameters;
98
+ for (let param of gateParams) {
99
+ if (param.name === 'gate_error') {
100
+ // update the gate errors
101
+ const error = param.value;
102
+ gateErrors[gateName].lowest = Math.min(gateErrors[gateName].lowest, error);
103
+ gateErrors[gateName].highest = Math.max(gateErrors[gateName].highest, error);
104
+ }
105
+ }
106
+ }
107
+ const errors = {
108
+ gate_errors: Object.values(gateErrors),
109
+ };
110
+ return errors;
111
+ }
112
+ // 6. GET /jobs - get all jobs from IBM
129
113
  async getJobs(params) {
130
114
  return this.handleJobRequest(this.client.get('/jobs', { params }));
131
115
  }
132
- // 6. GET /jobs/:job_id - get a specific job from IBM
116
+ // 7. GET /jobs/:job_id - get a specific job from IBM
133
117
  async getJob(jobId, excludeParams) {
134
118
  return this.handleJobRequest(this.client.get(`/jobs/${jobId}`, {
135
119
  params: { exclude_params: excludeParams },
136
120
  }));
137
121
  }
138
- // 7. DELETE /jobs/:job_id - delete a specific job from IBM
122
+ // 8. DELETE /jobs/:job_id - delete a specific job from IBM
139
123
  async deleteJob(jobId) {
140
124
  return this.handleJobRequest(this.client.delete(`/jobs/${jobId}`));
141
125
  }
142
- // 8. POST /jobs/:job_id/cancel - cancel a specific job from IBM
126
+ // 9. POST /jobs/:job_id/cancel - cancel a specific job from IBM
143
127
  async cancelJob(jobId, parentJobId) {
144
128
  const customHeader = parentJobId ? { 'parent-job-id': parentJobId } : {};
145
129
  return this.handleJobRequest(this.client.post(`/jobs/${jobId}/cancel`, null, {
@@ -149,15 +133,15 @@ class IBMCloudClient {
149
133
  },
150
134
  }));
151
135
  }
152
- // 9. GET /jobs/:job_id/logs - get logs of a specific job from IBM
136
+ // 10. GET /jobs/:job_id/logs - get logs of a specific job from IBM
153
137
  async getJobLogs(jobId) {
154
138
  return this.handleJobRequest(this.client.get(`/jobs/${jobId}/logs`));
155
139
  }
156
- // 10. GET /jobs/:job_id/transpiled_circuits - get transpiled circuits of a specific job from IBM
140
+ // 11. GET /jobs/:job_id/transpiled_circuits - get transpiled circuits of a specific job from IBM
157
141
  async getJobTranspiledCircuits(jobId) {
158
142
  return this.handleJobRequest(this.client.get(`/jobs/${jobId}/transpiled_circuits`));
159
143
  }
160
- // 11. GET /jobs/:job_id/metrics - get metrics of a specific job from IBM
144
+ // 12. GET /jobs/:job_id/metrics - get metrics of a specific job from IBM
161
145
  async getJobMetrics(jobId) {
162
146
  return this.handleJobRequest(this.client.get(`/jobs/${jobId}/metrics`));
163
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ConfigManager } from '@qbraid-core/base';
2
+ type IBMConfigData = Record<string, Record<string, string | boolean>>;
3
+ export declare const DEFAULT_IBM_CONFIG_PATH: string;
4
+ declare class IBMConfigManager extends ConfigManager<IBMConfigData> {
5
+ private bearerToken;
6
+ constructor(filePath?: string);
7
+ protected parseConfig(content: string): IBMConfigData;
8
+ protected stringifyConfig(config: IBMConfigData): string;
9
+ protected getDefaultConfig(): IBMConfigData;
10
+ getApiKey(): string;
11
+ setApiKey(apiKey: string): void;
12
+ getServiceCRN(): string;
13
+ setServiceCRN(crn: string): void;
14
+ getBearerToken(): string;
15
+ setBearerToken(token: string): void;
16
+ }
17
+ export { IBMConfigManager };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ // Copyright (c) 2025, qBraid Development Team
3
+ // All rights reserved.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.IBMConfigManager = exports.DEFAULT_IBM_CONFIG_PATH = void 0;
39
+ const os = __importStar(require("os"));
40
+ const path = __importStar(require("path"));
41
+ const base_1 = require("@qbraid-core/base");
42
+ exports.DEFAULT_IBM_CONFIG_PATH = path.join(os.homedir(), '.qiskit', 'qiskit-ibm.json');
43
+ class IBMConfigManager extends base_1.ConfigManager {
44
+ // this field is not used in the config file, but is an option which can be used
45
+ // to authenticate with the IBM Quantum API. Needed if user provides it separately
46
+ bearerToken = '';
47
+ constructor(filePath) {
48
+ super(filePath ? filePath : exports.DEFAULT_IBM_CONFIG_PATH);
49
+ }
50
+ parseConfig(content) {
51
+ return JSON.parse(content);
52
+ }
53
+ stringifyConfig(config) {
54
+ return JSON.stringify(config);
55
+ }
56
+ getDefaultConfig() {
57
+ return {
58
+ 'default-ibm-cloud': {
59
+ channel: 'ibm_cloud',
60
+ // Loading account from environment variables
61
+ // Ref : https://github.com/Qiskit/qiskit-ibm-runtime/tree/main?tab=readme-ov-file#loading-account-from-environment-variables
62
+ instance: process.env.QISKIT_IBM_INSTANCE ?? '',
63
+ token: process.env.QISKIT_IBM_TOKEN ?? '',
64
+ private_endpoint: false,
65
+ url: 'https://cloud.ibm.com',
66
+ },
67
+ };
68
+ }
69
+ getApiKey() {
70
+ return this.config['default-ibm-cloud'].token;
71
+ }
72
+ setApiKey(apiKey) {
73
+ this.config['default-ibm-cloud'].token = apiKey;
74
+ }
75
+ getServiceCRN() {
76
+ return this.config['default-ibm-cloud'].instance;
77
+ }
78
+ setServiceCRN(crn) {
79
+ this.config['default-ibm-cloud'].instance = crn;
80
+ }
81
+ getBearerToken() {
82
+ return this.bearerToken;
83
+ }
84
+ setBearerToken(token) {
85
+ this.bearerToken = token;
86
+ }
87
+ }
88
+ exports.IBMConfigManager = IBMConfigManager;
89
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";AAAA,8CAA8C;AAC9C,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvB,uCAAyB;AACzB,2CAA6B;AAE7B,4CAAkD;AAIrC,QAAA,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAE7F,MAAM,gBAAiB,SAAQ,oBAA4B;IACzD,gFAAgF;IAChF,kFAAkF;IAC1E,WAAW,GAAW,EAAE,CAAC;IAEjC,YAAY,QAAiB;QAC3B,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,+BAAuB,CAAC,CAAC;IACvD,CAAC;IAES,WAAW,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAES,eAAe,CAAC,MAAqB;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAES,gBAAgB;QACxB,OAAO;YACL,mBAAmB,EAAE;gBACnB,OAAO,EAAE,WAAW;gBACpB,6CAA6C;gBAC7C,6HAA6H;gBAC7H,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;gBAC/C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;gBACzC,gBAAgB,EAAE,KAAK;gBACvB,GAAG,EAAE,uBAAuB;aAC7B;SACF,CAAC;IACJ,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAe,CAAC;IAC1D,CAAC;IAEM,SAAS,CAAC,MAAc;QAC7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;IAClD,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAkB,CAAC;IAC7D,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC;IAClD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,cAAc,CAAC,KAAa;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF;AAEQ,4CAAgB"}
@@ -2,4 +2,4 @@
2
2
  * @module ibm-cloud
3
3
  */
4
4
  export { IBMCloudClient } from './client';
5
- export type { APIErrorResponse, Job, JobMetrics, JobList, DeviceProperties, DeviceStatus, DeviceConfiguration, } from './types';
5
+ export type { APIErrorResponse, Job, JobMetrics, JobList, DeviceProperties, DeviceErrors, DeviceStatus, DeviceConfiguration, } from './types';
@@ -138,6 +138,15 @@ export interface DeviceStatus {
138
138
  length_queue: number;
139
139
  backend_version: string;
140
140
  }
141
+ export interface GateError {
142
+ name: string;
143
+ num_qubits: number;
144
+ lowest: number;
145
+ highest: number;
146
+ }
147
+ export interface DeviceErrors {
148
+ gate_errors: GateError[];
149
+ }
141
150
  export interface JobState {
142
151
  status: string;
143
152
  reason?: string;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@qbraid-core/ibm-cloud",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "main": "dist/src/index.js",
5
5
  "types": "dist/src/index.d.ts",
6
- "description": "Functionality for interacting with Qiskit Runtime services on qBraid Cloud.",
6
+ "description": "Client for interacting with IBM's Qiskit Runtime Service via the IBM Cloud API.",
7
7
  "author": "qBraid Development Team",
8
8
  "license": "Proprietary",
9
9
  "files": [
@@ -13,14 +13,15 @@
13
13
  "qbraid",
14
14
  "qbraid-core",
15
15
  "qbraid-core-js",
16
- "qbraid ibm",
17
16
  "qbraid cloud",
18
- "qbraid api",
19
- "qbraid apis",
17
+ "ibm",
18
+ "ibm cloud",
19
+ "ibm quantum",
20
+ "qiskit",
21
+ "qiskit runtime",
20
22
  "cloud",
21
23
  "quantum",
22
- "quantum computing",
23
- "ibm"
24
+ "quantum computing"
24
25
  ],
25
26
  "repository": {
26
27
  "type": "git",
@@ -29,12 +30,8 @@
29
30
  },
30
31
  "homepage": "https://qbraid.github.io/qbraid-core-js/modules/ibm-cloud.html",
31
32
  "dependencies": {
32
- "axios": "^1.7.9",
33
- "fs": "^0.0.1-security",
34
- "ini": "^5.0.0"
35
- },
36
- "devDependencies": {
37
- "@types/ini": "^4.1.1"
33
+ "axios": "^1.8.2",
34
+ "@qbraid-core/base": "0.10.0"
38
35
  },
39
36
  "scripts": {
40
37
  "clean": "rimraf dist tsconfig.tsbuildinfo src/*.js",