@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 +1 -1
- package/dist/src/client.d.ts +3 -14
- package/dist/src/client.js +56 -72
- package/dist/src/client.js.map +1 -1
- package/dist/src/config.d.ts +17 -0
- package/dist/src/config.js +89 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/types.d.ts +9 -0
- package/package.json +10 -13
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[![Stable][preview-stability]](https://qbraid.github.io/qbraid-core-js/#launch-stages)
|
|
6
6
|
[](https://npm.im/@qbraid-core/ibm/cloud)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Client for interacting with IBM's Qiskit Runtime Service via the IBM Cloud API.
|
|
9
9
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
package/dist/src/client.d.ts
CHANGED
|
@@ -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>;
|
package/dist/src/client.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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 (!
|
|
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.
|
|
45
|
-
Authorization: this.
|
|
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 /
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
}
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";AAAA,8CAA8C;AAC9C,uBAAuB;;;;;;AAEvB,
|
|
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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/src/types.d.ts
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"main": "dist/src/index.js",
|
|
5
5
|
"types": "dist/src/index.d.ts",
|
|
6
|
-
"description": "
|
|
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
|
-
"
|
|
19
|
-
"
|
|
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.
|
|
33
|
-
"
|
|
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",
|