@nebulr-group/bridge-cli 0.1.0-beta.0 → 0.1.2
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/LICENSE +21 -0
- package/README.md +75 -18
- package/dist/auth/api-client.d.ts +48 -0
- package/dist/auth/api-client.d.ts.map +1 -0
- package/dist/auth/api-client.js +109 -0
- package/dist/auth/api-client.js.map +1 -0
- package/dist/auth/browser-open.d.ts +12 -0
- package/dist/auth/browser-open.d.ts.map +1 -0
- package/dist/auth/browser-open.js +82 -0
- package/dist/auth/browser-open.js.map +1 -0
- package/dist/auth/loopback.d.ts +63 -0
- package/dist/auth/loopback.d.ts.map +1 -0
- package/dist/auth/loopback.js +290 -0
- package/dist/auth/loopback.js.map +1 -0
- package/dist/auth/pkce.d.ts +19 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +46 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/relative-time.d.ts +2 -0
- package/dist/auth/relative-time.d.ts.map +1 -0
- package/dist/auth/relative-time.js +27 -0
- package/dist/auth/relative-time.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth/config.command.d.ts +8 -0
- package/dist/commands/auth/config.command.d.ts.map +1 -0
- package/dist/commands/auth/config.command.js +60 -0
- package/dist/commands/auth/config.command.js.map +1 -0
- package/dist/commands/auth/login.command.d.ts +20 -0
- package/dist/commands/auth/login.command.d.ts.map +1 -0
- package/dist/commands/auth/login.command.js +141 -0
- package/dist/commands/auth/login.command.js.map +1 -0
- package/dist/commands/auth/logout.command.d.ts +14 -0
- package/dist/commands/auth/logout.command.d.ts.map +1 -0
- package/dist/commands/auth/logout.command.js +57 -0
- package/dist/commands/auth/logout.command.js.map +1 -0
- package/dist/commands/auth/status.command.d.ts +14 -0
- package/dist/commands/auth/status.command.d.ts.map +1 -0
- package/dist/commands/auth/status.command.js +59 -0
- package/dist/commands/auth/status.command.js.map +1 -0
- package/dist/commands/auth.command.d.ts +10 -1
- package/dist/commands/auth.command.d.ts.map +1 -1
- package/dist/commands/auth.command.js +13 -55
- package/dist/commands/auth.command.js.map +1 -1
- package/dist/commands/guide.command.js +5 -5
- package/dist/commands/guide.command.js.map +1 -1
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +79 -9
- package/dist/config.js.map +1 -1
- package/dist/credentials.d.ts +57 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +136 -0
- package/dist/credentials.js.map +1 -0
- package/package.json +2 -2
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export interface StoredCredentials {
|
|
2
|
+
/** The JWT to send as `x-api-key`. Same shape as `BRIDGE_API_KEY`. */
|
|
3
|
+
apiKey: string;
|
|
4
|
+
/** ISO 8601 timestamp at which `apiKey` becomes invalid. */
|
|
5
|
+
expiresAt: string;
|
|
6
|
+
/** ISO 8601 timestamp the token was issued (for diagnostics). */
|
|
7
|
+
issuedAt: string;
|
|
8
|
+
/** App the token is scoped to. */
|
|
9
|
+
app: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
/** User who authorized the token. */
|
|
14
|
+
user: {
|
|
15
|
+
id: string;
|
|
16
|
+
email: string;
|
|
17
|
+
};
|
|
18
|
+
/** Base URL of the bridge-api this token is valid against. */
|
|
19
|
+
baseUrl: string;
|
|
20
|
+
/** Optional human-friendly label set via `bridge auth login --label`. */
|
|
21
|
+
label?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns the absolute path to the credentials file based on the current
|
|
25
|
+
* environment. Does not create directories or files — pure path resolution.
|
|
26
|
+
*
|
|
27
|
+
* Resolution (per XDG Base Directory spec):
|
|
28
|
+
* 1. `$XDG_CONFIG_HOME/bridge/credentials.json` if XDG_CONFIG_HOME is set.
|
|
29
|
+
* 2. `$HOME/.config/bridge/credentials.json` otherwise.
|
|
30
|
+
* 3. `os.homedir()/.config/bridge/credentials.json` if HOME is unset
|
|
31
|
+
* (Windows / corner cases).
|
|
32
|
+
*
|
|
33
|
+
* We deliberately prefer `process.env.HOME` over `os.homedir()` because (a)
|
|
34
|
+
* the XDG spec is defined in terms of `$HOME`, and (b) Node's `os.homedir()`
|
|
35
|
+
* on some test runners (jest) bypasses the `HOME` env var via libuv, which
|
|
36
|
+
* makes overriding it for tests impossible without a wrapper like this.
|
|
37
|
+
*/
|
|
38
|
+
export declare function credentialsPath(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Reads and parses the credentials file. Returns `null` if the file does not
|
|
41
|
+
* exist. Throws if the file exists but is unreadable or contains invalid JSON.
|
|
42
|
+
*/
|
|
43
|
+
export declare function readCredentials(): StoredCredentials | null;
|
|
44
|
+
/**
|
|
45
|
+
* Writes the credentials atomically with mode 0600. Creates the parent
|
|
46
|
+
* directory with mode 0700 if it does not exist.
|
|
47
|
+
*/
|
|
48
|
+
export declare function writeCredentials(creds: StoredCredentials): void;
|
|
49
|
+
/**
|
|
50
|
+
* Deletes the credentials file. No-op if it does not exist.
|
|
51
|
+
*/
|
|
52
|
+
export declare function deleteCredentials(): void;
|
|
53
|
+
/**
|
|
54
|
+
* True if the credentials' `expiresAt` is in the past relative to `now`.
|
|
55
|
+
*/
|
|
56
|
+
export declare function isExpired(creds: StoredCredentials, now?: Date): boolean;
|
|
57
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,qCAAqC;IACrC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAQxC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAiB1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CA4B/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAQxC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAInF"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credentials file management for bridge-cli.
|
|
3
|
+
*
|
|
4
|
+
* Stores the long-lived CLI JWT obtained via `bridge auth login` so subsequent
|
|
5
|
+
* commands can authenticate without `BRIDGE_API_KEY`. The token is sent to
|
|
6
|
+
* bridge-api as `x-api-key: <jwt>` (same path as `BRIDGE_API_KEY`).
|
|
7
|
+
*
|
|
8
|
+
* Path resolution (XDG-compliant, RFC 8252-friendly):
|
|
9
|
+
* 1. `$XDG_CONFIG_HOME/bridge/credentials.json` if env is set
|
|
10
|
+
* 2. `~/.config/bridge/credentials.json` otherwise
|
|
11
|
+
*
|
|
12
|
+
* File mode: 0600 (owner read/write only). Containing dir created with 0700.
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'node:fs';
|
|
15
|
+
import * as path from 'node:path';
|
|
16
|
+
import * as os from 'node:os';
|
|
17
|
+
/**
|
|
18
|
+
* Returns the absolute path to the credentials file based on the current
|
|
19
|
+
* environment. Does not create directories or files — pure path resolution.
|
|
20
|
+
*
|
|
21
|
+
* Resolution (per XDG Base Directory spec):
|
|
22
|
+
* 1. `$XDG_CONFIG_HOME/bridge/credentials.json` if XDG_CONFIG_HOME is set.
|
|
23
|
+
* 2. `$HOME/.config/bridge/credentials.json` otherwise.
|
|
24
|
+
* 3. `os.homedir()/.config/bridge/credentials.json` if HOME is unset
|
|
25
|
+
* (Windows / corner cases).
|
|
26
|
+
*
|
|
27
|
+
* We deliberately prefer `process.env.HOME` over `os.homedir()` because (a)
|
|
28
|
+
* the XDG spec is defined in terms of `$HOME`, and (b) Node's `os.homedir()`
|
|
29
|
+
* on some test runners (jest) bypasses the `HOME` env var via libuv, which
|
|
30
|
+
* makes overriding it for tests impossible without a wrapper like this.
|
|
31
|
+
*/
|
|
32
|
+
export function credentialsPath() {
|
|
33
|
+
const xdg = process.env.XDG_CONFIG_HOME?.trim();
|
|
34
|
+
if (xdg && xdg.length > 0) {
|
|
35
|
+
return path.join(xdg, 'bridge', 'credentials.json');
|
|
36
|
+
}
|
|
37
|
+
const home = process.env.HOME?.trim();
|
|
38
|
+
const base = home && home.length > 0 ? home : os.homedir();
|
|
39
|
+
return path.join(base, '.config', 'bridge', 'credentials.json');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reads and parses the credentials file. Returns `null` if the file does not
|
|
43
|
+
* exist. Throws if the file exists but is unreadable or contains invalid JSON.
|
|
44
|
+
*/
|
|
45
|
+
export function readCredentials() {
|
|
46
|
+
const filePath = credentialsPath();
|
|
47
|
+
if (!fs.existsSync(filePath))
|
|
48
|
+
return null;
|
|
49
|
+
const raw = fs.readFileSync(filePath, 'utf-8');
|
|
50
|
+
let parsed;
|
|
51
|
+
try {
|
|
52
|
+
parsed = JSON.parse(raw);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
throw new Error(`Credentials file at ${filePath} is not valid JSON.`);
|
|
56
|
+
}
|
|
57
|
+
if (!isStoredCredentials(parsed)) {
|
|
58
|
+
throw new Error(`Credentials file at ${filePath} is missing required fields.`);
|
|
59
|
+
}
|
|
60
|
+
return parsed;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Writes the credentials atomically with mode 0600. Creates the parent
|
|
64
|
+
* directory with mode 0700 if it does not exist.
|
|
65
|
+
*/
|
|
66
|
+
export function writeCredentials(creds) {
|
|
67
|
+
const filePath = credentialsPath();
|
|
68
|
+
const dir = path.dirname(filePath);
|
|
69
|
+
// Create dir with restrictive perms. mkdirSync `mode` is masked by umask, so
|
|
70
|
+
// we explicitly chmod after to guarantee 0700 regardless of inherited umask.
|
|
71
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
72
|
+
try {
|
|
73
|
+
fs.chmodSync(dir, 0o700);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// chmod fails on Windows for non-NTFS fs — non-fatal there.
|
|
77
|
+
}
|
|
78
|
+
// Write to a tmp file then rename for atomicity. Open with mode 0600 from
|
|
79
|
+
// the start so the JWT is never world-readable, even briefly.
|
|
80
|
+
const tmpPath = `${filePath}.${process.pid}.tmp`;
|
|
81
|
+
const fd = fs.openSync(tmpPath, 'w', 0o600);
|
|
82
|
+
try {
|
|
83
|
+
fs.writeFileSync(fd, JSON.stringify(creds, null, 2) + '\n');
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
fs.closeSync(fd);
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
fs.chmodSync(tmpPath, 0o600);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// best-effort; openSync's mode arg already set perms.
|
|
93
|
+
}
|
|
94
|
+
fs.renameSync(tmpPath, filePath);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Deletes the credentials file. No-op if it does not exist.
|
|
98
|
+
*/
|
|
99
|
+
export function deleteCredentials() {
|
|
100
|
+
const filePath = credentialsPath();
|
|
101
|
+
try {
|
|
102
|
+
fs.unlinkSync(filePath);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
if (err.code === 'ENOENT')
|
|
106
|
+
return;
|
|
107
|
+
throw err;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* True if the credentials' `expiresAt` is in the past relative to `now`.
|
|
112
|
+
*/
|
|
113
|
+
export function isExpired(creds, now = new Date()) {
|
|
114
|
+
const expiry = Date.parse(creds.expiresAt);
|
|
115
|
+
if (Number.isNaN(expiry))
|
|
116
|
+
return true;
|
|
117
|
+
return expiry <= now.getTime();
|
|
118
|
+
}
|
|
119
|
+
function isStoredCredentials(value) {
|
|
120
|
+
if (!value || typeof value !== 'object')
|
|
121
|
+
return false;
|
|
122
|
+
const v = value;
|
|
123
|
+
return (typeof v.apiKey === 'string' &&
|
|
124
|
+
typeof v.expiresAt === 'string' &&
|
|
125
|
+
typeof v.issuedAt === 'string' &&
|
|
126
|
+
typeof v.baseUrl === 'string' &&
|
|
127
|
+
typeof v.app === 'object' &&
|
|
128
|
+
v.app !== null &&
|
|
129
|
+
typeof v.app.id === 'string' &&
|
|
130
|
+
typeof v.app.name === 'string' &&
|
|
131
|
+
typeof v.user === 'object' &&
|
|
132
|
+
v.user !== null &&
|
|
133
|
+
typeof v.user.id === 'string' &&
|
|
134
|
+
typeof v.user.email === 'string');
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAmB9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,qBAAqB,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,8BAA8B,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,6EAA6E;IAC7E,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IAED,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACjD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IACD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAC7D,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAwB,EAAE,MAAY,IAAI,IAAI,EAAE;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,CAAC,CAAC,GAAG,KAAK,IAAI;QACd,OAAQ,CAAC,CAAC,GAA+B,CAAC,EAAE,KAAK,QAAQ;QACzD,OAAQ,CAAC,CAAC,GAA+B,CAAC,IAAI,KAAK,QAAQ;QAC3D,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,IAAI,KAAK,IAAI;QACf,OAAQ,CAAC,CAAC,IAAgC,CAAC,EAAE,KAAK,QAAQ;QAC1D,OAAQ,CAAC,CAAC,IAAgC,CAAC,KAAK,KAAK,QAAQ,CAC9D,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nebulr-group/bridge-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Bridge platform CLI for AI coding agents and developers",
|
|
5
5
|
"author": "Nebulr Group",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"publish:local": "npm run build && node -e \"const fs=require('fs'),p=JSON.parse(fs.readFileSync('package.json','utf8')),v=p.version.match(/^(\\d+\\.\\d+\\.\\d+)-alpha\\.(\\d+)$/);if(v){p.version=v[1]+'-alpha.'+(+v[2]+1);}else{p.version=p.version+'-alpha.0';}fs.writeFileSync('package.json',JSON.stringify(p,null,' ')+'\\n');console.log('Version bumped to '+p.version);\" && npm publish --registry http://host.docker.internal:4873 --no-git-checks --ignore-scripts && npm dist-tag add @nebulr-group/bridge-cli@$(node -p \"require('./package.json').version\") alpha --registry http://host.docker.internal:4873"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@nebulr-group/bridge-auth-core": "^0.1.0
|
|
26
|
+
"@nebulr-group/bridge-auth-core": "^0.1.0",
|
|
27
27
|
"commander": "^12.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|