@nebulr-group/bridge-cli 0.6.0-beta.7 → 0.6.0-beta.9
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 +31 -2
- package/dist/auth/api-client.d.ts +2 -0
- package/dist/auth/api-client.d.ts.map +1 -1
- package/dist/auth/api-client.js.map +1 -1
- package/dist/auth/workspace-client.d.ts +70 -0
- package/dist/auth/workspace-client.d.ts.map +1 -0
- package/dist/auth/workspace-client.js +105 -0
- package/dist/auth/workspace-client.js.map +1 -0
- package/dist/bin.js +4 -1
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -14
- package/dist/cli.js.map +1 -1
- package/dist/commands/app.command.d.ts.map +1 -1
- package/dist/commands/app.command.js +117 -1
- package/dist/commands/app.command.js.map +1 -1
- package/dist/commands/auth/login.command.d.ts +13 -1
- package/dist/commands/auth/login.command.d.ts.map +1 -1
- package/dist/commands/auth/login.command.js +17 -3
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/status.command.js +14 -0
- package/dist/commands/auth/status.command.js.map +1 -1
- package/dist/commands/check.command.d.ts +10 -0
- package/dist/commands/check.command.d.ts.map +1 -0
- package/dist/commands/check.command.js +95 -0
- package/dist/commands/check.command.js.map +1 -0
- package/dist/commands/plan.command.d.ts +19 -5
- package/dist/commands/plan.command.d.ts.map +1 -1
- package/dist/commands/plan.command.js +40 -26
- package/dist/commands/plan.command.js.map +1 -1
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +190 -47
- package/dist/config.js.map +1 -1
- package/dist/credentials.d.ts +21 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +21 -0
- package/dist/credentials.js.map +1 -1
- package/dist/gate-rules.d.ts +51 -0
- package/dist/gate-rules.d.ts.map +1 -0
- package/dist/gate-rules.js +171 -0
- package/dist/gate-rules.js.map +1 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +7 -0
- package/dist/output.js.map +1 -1
- package/dist/program.d.ts +17 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +76 -0
- package/dist/program.js.map +1 -1
- package/dist/prompts/auth-master-integration-prompt.md +5 -2
- package/dist/prompts/billing/master.md +5 -2
- package/dist/prompts/decisions/feature-control.md +6 -1
- package/dist/prompts/decisions/going-live.md +1 -1
- package/dist/prompts/decisions/payments.md +9 -4
- package/dist/prompts/decisions/roles.md +2 -2
- package/dist/prompts/decisions/teams.md +4 -3
- package/dist/prompts/fit-together.md +22 -4
- package/dist/prompts/flags/master.md +3 -0
- package/dist/prompts/mcp-tools.json +7 -2
- package/dist/prompts/mechanisms.md +9 -5
- package/package.json +1 -1
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAO1B,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAgB5D,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAE3E;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CA6BtD;AAED,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,kBAAkB,GAAG,KAAK,CAAC;IAC/C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,kBAAkB,CAgE9D;AAMD,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAC;CACf;AAOD,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAEnE;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAEjD;AAMD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF/E;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAmED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,oBAAoB,CAYxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAM5C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQnE;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BridgeManagement, ManagementHttpClient } from '@nebulr-group/bridge-auth-core';
|
|
2
2
|
import { CredentialSelectorError, findCredential, isExpired, readCredentials, } from './credentials.js';
|
|
3
|
+
import { createWorkspaceClient, looksLikeAppId, resolveAppSelector, } from './auth/workspace-client.js';
|
|
3
4
|
export const DEFAULT_BASE_URL = 'https://api.thebridge.dev';
|
|
4
5
|
let _client = null;
|
|
5
6
|
let _baseUrl = null;
|
|
@@ -50,12 +51,35 @@ export function getManagementClient() {
|
|
|
50
51
|
if (_client)
|
|
51
52
|
return _client;
|
|
52
53
|
const debug = process.env.BRIDGE_DEBUG === 'true';
|
|
54
|
+
const envBaseUrl = process.env.BRIDGE_BASE_URL?.trim();
|
|
55
|
+
const selected = resolveSelectedCredential();
|
|
56
|
+
const { creds, source, selector, baseUrl } = selected;
|
|
57
|
+
// TBP-769 — a workspace login acting on another app swaps in that app's
|
|
58
|
+
// short-lived token, fetched by `prepareAppContext()` before the action ran.
|
|
59
|
+
const apiKey = _appContext ? _appContext.apiKey : selected.apiKey;
|
|
60
|
+
writeContextBanner({ creds, source, baseUrl, selector, appContext: _appContext });
|
|
61
|
+
if (debug) {
|
|
62
|
+
const baseSource = envBaseUrl && envBaseUrl.length > 0
|
|
63
|
+
? 'env'
|
|
64
|
+
: source === 'env'
|
|
65
|
+
? 'default'
|
|
66
|
+
: 'credentials-file';
|
|
67
|
+
console.error(`[bridge-cli] apiKey=<redacted from ${source}> baseUrl=${baseUrl} (${baseSource})`);
|
|
68
|
+
}
|
|
69
|
+
_client = new BridgeManagement({ apiKey, baseUrl, debug });
|
|
70
|
+
_baseUrl = baseUrl;
|
|
71
|
+
_apiKey = apiKey;
|
|
72
|
+
return _client;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* WHICH login is in force, per the resolution order documented on
|
|
76
|
+
* `getManagementClient()`. Throws `ConfigError` exactly as it always has.
|
|
77
|
+
* Offline; prints nothing.
|
|
78
|
+
*/
|
|
79
|
+
export function resolveSelectedCredential() {
|
|
53
80
|
const envApiKey = process.env.BRIDGE_API_KEY?.trim();
|
|
54
81
|
const envBaseUrl = process.env.BRIDGE_BASE_URL?.trim();
|
|
55
|
-
|
|
56
|
-
let baseUrl;
|
|
57
|
-
let source;
|
|
58
|
-
let creds = null;
|
|
82
|
+
const withBase = (fallback) => envBaseUrl && envBaseUrl.length > 0 ? envBaseUrl : fallback;
|
|
59
83
|
const selector = activeProfileSelector();
|
|
60
84
|
if (selector) {
|
|
61
85
|
// 1. Explicit profile. Resolve it or fail — no fallback of any kind.
|
|
@@ -73,50 +97,158 @@ export function getManagementClient() {
|
|
|
73
97
|
`${entry.creds.expiresAt}. Run \`bridge auth login\` to re-authenticate it. ` +
|
|
74
98
|
'Refusing to fall back to another app.');
|
|
75
99
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
return {
|
|
101
|
+
key: entry.key,
|
|
102
|
+
creds: entry.creds,
|
|
103
|
+
apiKey: entry.creds.apiKey,
|
|
104
|
+
baseUrl: withBase(entry.creds.baseUrl),
|
|
105
|
+
source: 'profile',
|
|
106
|
+
selector,
|
|
107
|
+
};
|
|
80
108
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
109
|
+
// 2. Active credential from `bridge auth login` / `bridge auth use`.
|
|
110
|
+
const active = safeReadCredentials();
|
|
111
|
+
if (active && !isExpired(active)) {
|
|
112
|
+
// Env override still wins for baseUrl (useful for hitting a local
|
|
113
|
+
// bridge-api with a token issued by prod, or vice versa during dev).
|
|
114
|
+
return {
|
|
115
|
+
key: active.app.id,
|
|
116
|
+
creds: active,
|
|
117
|
+
apiKey: active.apiKey,
|
|
118
|
+
baseUrl: withBase(active.baseUrl),
|
|
119
|
+
source: 'credentials-file',
|
|
120
|
+
selector: null,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (envApiKey && envApiKey.length > 0) {
|
|
124
|
+
// 3. BRIDGE_API_KEY env var (CI / service-account fallback).
|
|
125
|
+
return {
|
|
126
|
+
key: null,
|
|
127
|
+
creds: null,
|
|
128
|
+
apiKey: envApiKey,
|
|
129
|
+
baseUrl: withBase(DEFAULT_BASE_URL),
|
|
130
|
+
source: 'env',
|
|
131
|
+
selector: null,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (active && isExpired(active)) {
|
|
135
|
+
// 4a. Found a credentials file but token expired; no env fallback either.
|
|
136
|
+
throw new ConfigError('Token expired. Run `bridge auth login` to re-authenticate.');
|
|
137
|
+
}
|
|
138
|
+
// 4b. No credentials at all.
|
|
139
|
+
throw new ConfigError('Not logged in. Run `bridge auth login`.');
|
|
140
|
+
}
|
|
141
|
+
let _appFlag = null;
|
|
142
|
+
let _appContext = null;
|
|
143
|
+
/** Per-app tokens, in memory for this process only. Never written to disk. */
|
|
144
|
+
const _appTokenCache = new Map();
|
|
145
|
+
/** The global `--app` value for this invocation, set by the preAction hook. */
|
|
146
|
+
export function setAppOverride(app) {
|
|
147
|
+
_appFlag = app?.trim() || null;
|
|
148
|
+
}
|
|
149
|
+
/** The app the NEXT management client will act on (workspace logins only). */
|
|
150
|
+
export function getAppContext() {
|
|
151
|
+
return _appContext;
|
|
152
|
+
}
|
|
153
|
+
function isHomeSelector(selector, home) {
|
|
154
|
+
return selector === home.id || selector.toLowerCase() === home.name.toLowerCase();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Decide which app this command acts on and, for a workspace login, fetch
|
|
158
|
+
* the token for it before the action runs — the server re-checks access on
|
|
159
|
+
* every call (`getManagementClient()` is synchronous, so this happens up front).
|
|
160
|
+
*
|
|
161
|
+
* Precedence: `--app` > the credential's `currentApp` (`bridge app use`) > home.
|
|
162
|
+
* A workspace login calls the token route for every target, the home app
|
|
163
|
+
* included, so the server re-checks access each time. Single-app logins and `BRIDGE_API_KEY` behave exactly as
|
|
164
|
+
* before; asking them for another app is an error that says how to fix it.
|
|
165
|
+
*/
|
|
166
|
+
export async function prepareAppContext(fetchImpl) {
|
|
167
|
+
_appContext = null;
|
|
168
|
+
_client = null;
|
|
169
|
+
_http = null;
|
|
170
|
+
let selected;
|
|
171
|
+
try {
|
|
172
|
+
selected = resolveSelectedCredential();
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
// Without --app, leave "not logged in" etc. to the command, as before.
|
|
176
|
+
if (!_appFlag)
|
|
177
|
+
return;
|
|
178
|
+
throw err;
|
|
179
|
+
}
|
|
180
|
+
if (selected.source === 'env' || !selected.creds || !selected.key) {
|
|
181
|
+
if (_appFlag) {
|
|
182
|
+
throw new ConfigError('--app needs a workspace login from `bridge auth login`. ' +
|
|
183
|
+
'BRIDGE_API_KEY is bound to the one app it was issued for.');
|
|
105
184
|
}
|
|
185
|
+
return;
|
|
106
186
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
187
|
+
const creds = selected.creds;
|
|
188
|
+
const target = _appFlag ?? creds.currentApp?.id ?? null;
|
|
189
|
+
if (creds.appAccess !== 'workspace') {
|
|
190
|
+
// Single-app login: unchanged, no extra call — its token IS its one app.
|
|
191
|
+
if (!target || isHomeSelector(target, creds.app))
|
|
192
|
+
return;
|
|
193
|
+
// A stray currentApp on a single-app login cannot be honoured; ignore it
|
|
194
|
+
// rather than fail every command. An explicit --app is a request: refuse.
|
|
195
|
+
if (!_appFlag)
|
|
196
|
+
return;
|
|
197
|
+
throw Object.assign(new ConfigError(`This login covers only the app ${creds.app.name} (${creds.app.id}), so --app ${_appFlag} is not available.`), {
|
|
198
|
+
hint: 'Run `bridge auth login` again and choose "Every app in <workspace>" on the consent ' +
|
|
199
|
+
'screen to work across apps with one login.',
|
|
200
|
+
});
|
|
115
201
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
202
|
+
const client = createWorkspaceClient({
|
|
203
|
+
baseUrl: selected.baseUrl,
|
|
204
|
+
loginToken: creds.apiKey,
|
|
205
|
+
fetchImpl,
|
|
206
|
+
});
|
|
207
|
+
// A workspace login re-checks access on EVERY command, home app included
|
|
208
|
+
// (the server answers the home app with the login token itself, after the
|
|
209
|
+
// check) — same as the MCP server.
|
|
210
|
+
let targetId;
|
|
211
|
+
if (!target || isHomeSelector(target, creds.app)) {
|
|
212
|
+
targetId = creds.app.id;
|
|
213
|
+
}
|
|
214
|
+
else if (looksLikeAppId(target)) {
|
|
215
|
+
targetId = target;
|
|
216
|
+
}
|
|
217
|
+
else if (creds.currentApp && target.toLowerCase() === creds.currentApp.name.toLowerCase()) {
|
|
218
|
+
targetId = creds.currentApp.id;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const { apps } = await client.listApps();
|
|
222
|
+
targetId = resolveAppSelector(target, apps).id;
|
|
223
|
+
}
|
|
224
|
+
const cacheKey = `${selected.key}:${targetId}`;
|
|
225
|
+
const cached = _appTokenCache.get(cacheKey);
|
|
226
|
+
let token;
|
|
227
|
+
if (cached && cached.expiresAt - Date.now() > 15_000) {
|
|
228
|
+
token = cached;
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
const res = await client.appToken(targetId);
|
|
232
|
+
const exp = Date.parse(res.expiresAt);
|
|
233
|
+
_appTokenCache.set(cacheKey, {
|
|
234
|
+
apiKey: res.apiKey,
|
|
235
|
+
app: res.app,
|
|
236
|
+
expiresAt: Number.isNaN(exp) ? Date.now() + 60_000 : exp,
|
|
237
|
+
});
|
|
238
|
+
token = res;
|
|
239
|
+
}
|
|
240
|
+
_appContext = {
|
|
241
|
+
apiKey: token.apiKey,
|
|
242
|
+
app: token.app,
|
|
243
|
+
via: _appFlag ? `--app ${_appFlag}` : 'current app (bridge app use)',
|
|
244
|
+
home: targetId === creds.app.id,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/** For tests: forget --app, the chosen app and every cached per-app token. */
|
|
248
|
+
export function resetAppContext() {
|
|
249
|
+
_appFlag = null;
|
|
250
|
+
_appContext = null;
|
|
251
|
+
_appTokenCache.clear();
|
|
120
252
|
}
|
|
121
253
|
/**
|
|
122
254
|
* One line on stderr naming the app that is about to answer.
|
|
@@ -132,9 +264,18 @@ export function getManagementClient() {
|
|
|
132
264
|
* certain and is merging the two streams.
|
|
133
265
|
*/
|
|
134
266
|
function writeContextBanner(ctx) {
|
|
267
|
+
const { creds, source, baseUrl, selector, appContext } = ctx;
|
|
268
|
+
// TBP-769 — acting on an app other than the login's home app is said out
|
|
269
|
+
// loud even with BRIDGE_NO_BANNER: it is the one case where the credential
|
|
270
|
+
// on disk does not name the app that is about to answer.
|
|
271
|
+
if (appContext && !appContext.home) {
|
|
272
|
+
const home = creds ? `${creds.label ?? creds.app.name} (${creds.app.id})` : 'login';
|
|
273
|
+
process.stderr.write(`bridge: Acting on app ${appContext.app.name} (${appContext.app.id}) · ${baseUrl} · ` +
|
|
274
|
+
`via ${appContext.via}, workspace login ${home}\n`);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
135
277
|
if (process.env.BRIDGE_NO_BANNER === 'true')
|
|
136
278
|
return;
|
|
137
|
-
const { creds, source, baseUrl, selector } = ctx;
|
|
138
279
|
const who = creds
|
|
139
280
|
? `${creds.label ?? creds.app.name} (${creds.app.id})`
|
|
140
281
|
: 'BRIDGE_API_KEY (app unknown — the key carries it)';
|
|
@@ -149,11 +290,12 @@ function writeContextBanner(ctx) {
|
|
|
149
290
|
// the reported incident was a session that set them and believed them.
|
|
150
291
|
if (source !== 'env' && process.env.BRIDGE_API_KEY?.trim()) {
|
|
151
292
|
process.stderr.write('bridge: BRIDGE_API_KEY is set but IGNORED — the credentials file wins. ' +
|
|
152
|
-
'Use `--profile <label>` to pick a stored
|
|
293
|
+
'Use `--profile <label>` to pick a stored login, `--app` to pick an app within it, ' +
|
|
294
|
+
'or `bridge auth logout` to use the key.\n');
|
|
153
295
|
}
|
|
154
296
|
if (process.env.BRIDGE_APP_ID?.trim()) {
|
|
155
297
|
process.stderr.write('bridge: BRIDGE_APP_ID has no effect — the app is carried by the credential itself. ' +
|
|
156
|
-
'Use `--profile <label|app id>`
|
|
298
|
+
'Use `--app <id|name>` (workspace login) or `--profile <label|app id>` to target another app.\n');
|
|
157
299
|
}
|
|
158
300
|
}
|
|
159
301
|
/**
|
|
@@ -198,6 +340,7 @@ export function getManagementHttp() {
|
|
|
198
340
|
* to reset the cached client between operations.
|
|
199
341
|
*/
|
|
200
342
|
export function resetManagementClient() {
|
|
343
|
+
_appContext = null;
|
|
201
344
|
_client = null;
|
|
202
345
|
_baseUrl = null;
|
|
203
346
|
_apiKey = null;
|
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,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,eAAe,GAEhB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.d.ts
CHANGED
|
@@ -19,6 +19,22 @@ export interface StoredCredentials {
|
|
|
19
19
|
baseUrl: string;
|
|
20
20
|
/** Optional human-friendly label set via `bridge auth login --label`. */
|
|
21
21
|
label?: string;
|
|
22
|
+
/**
|
|
23
|
+
* TBP-769 — what the login covers, as chosen on the consent screen:
|
|
24
|
+
* `workspace` = every app of the workspace (`app` above is the HOME app),
|
|
25
|
+
* `app` = only `app`. Absent on credentials stored before TBP-769; those are
|
|
26
|
+
* treated as `app` until the server says otherwise.
|
|
27
|
+
*/
|
|
28
|
+
appAccess?: 'app' | 'workspace';
|
|
29
|
+
/**
|
|
30
|
+
* TBP-769 — the app commands act on by default within a workspace login,
|
|
31
|
+
* set by `bridge app use`. Absent = the home app. Only ever an id + name:
|
|
32
|
+
* per-app tokens are fetched per run and never written to disk.
|
|
33
|
+
*/
|
|
34
|
+
currentApp?: {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
};
|
|
22
38
|
}
|
|
23
39
|
/** Current on-disk shape. See the module docstring for why it is a map. */
|
|
24
40
|
export interface CredentialsFile {
|
|
@@ -93,6 +109,11 @@ export declare function findCredential(selector: string): CredentialEntry;
|
|
|
93
109
|
export declare function writeCredentials(creds: StoredCredentials): void;
|
|
94
110
|
/** Point the persisted default at an already-stored credential. Offline. */
|
|
95
111
|
export declare function setActiveCredential(key: string): void;
|
|
112
|
+
/**
|
|
113
|
+
* Update fields of ONE stored credential in place (TBP-769: `currentApp`,
|
|
114
|
+
* `appAccess`). `undefined` values remove the field. Does not move `active`.
|
|
115
|
+
*/
|
|
116
|
+
export declare function updateCredential(key: string, patch: Partial<Pick<StoredCredentials, 'currentApp' | 'appAccess'>>): StoredCredentials;
|
|
96
117
|
/** Persist the store atomically with mode 0600, dir 0700. */
|
|
97
118
|
export declare function writeCredentialsFile(file: CredentialsFile): void;
|
|
98
119
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AA6CA,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;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AA6CA,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;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAChD;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAQxC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAyB5D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAU1D;AAED,mEAAmE;AACnE,wBAAgB,eAAe,IAAI,eAAe,EAAE,CASnD;AAED,8EAA8E;AAC9E,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAmChE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAK/D;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC,GAClE,iBAAiB,CAcnB;AAED,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA4BhE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAsBD;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAInF"}
|
package/dist/credentials.js
CHANGED
|
@@ -197,6 +197,27 @@ export function setActiveCredential(key) {
|
|
|
197
197
|
file.active = key;
|
|
198
198
|
writeCredentialsFile(file);
|
|
199
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Update fields of ONE stored credential in place (TBP-769: `currentApp`,
|
|
202
|
+
* `appAccess`). `undefined` values remove the field. Does not move `active`.
|
|
203
|
+
*/
|
|
204
|
+
export function updateCredential(key, patch) {
|
|
205
|
+
const file = readCredentialsFileOrEmpty();
|
|
206
|
+
const existing = file.credentials[key];
|
|
207
|
+
if (!existing) {
|
|
208
|
+
throw new CredentialSelectorError(`No stored credential with app id ${key}.`);
|
|
209
|
+
}
|
|
210
|
+
const next = { ...existing };
|
|
211
|
+
for (const [k, v] of Object.entries(patch)) {
|
|
212
|
+
if (v === undefined)
|
|
213
|
+
delete next[k];
|
|
214
|
+
else
|
|
215
|
+
next[k] = v;
|
|
216
|
+
}
|
|
217
|
+
file.credentials[key] = next;
|
|
218
|
+
writeCredentialsFile(file);
|
|
219
|
+
return next;
|
|
220
|
+
}
|
|
200
221
|
/** Persist the store atomically with mode 0600, dir 0700. */
|
|
201
222
|
export function writeCredentialsFile(file) {
|
|
202
223
|
const filePath = credentialsPath();
|
package/dist/credentials.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TBP-705 — the owner's rule for app code (2026-09-29): every gate in app code
|
|
3
|
+
* is a flag. Its rule says why (a privilege, a plan feature, a rollout); app
|
|
4
|
+
* code never reads a role, a privilege list, the plan or a plan feature to
|
|
5
|
+
* decide what someone may see or do. Numbers (plan limits) and permission on
|
|
6
|
+
* one specific record are not gates.
|
|
7
|
+
*
|
|
8
|
+
* Two checks live here, from one list of what a direct check looks like:
|
|
9
|
+
* - `codeGateFindings`: `bridge check gates`, run by the agent as the last
|
|
10
|
+
* step of every integration, over the developer's own sources;
|
|
11
|
+
* - `docGateViolations`: the currency test over the guides we serve, so no
|
|
12
|
+
* guide teaches the thing the command then flags.
|
|
13
|
+
*
|
|
14
|
+
* bridge-svelte and bridge-nestjs carry a copy of the doc pattern list in
|
|
15
|
+
* their own currency tests. This file is the source; keep them the same.
|
|
16
|
+
*/
|
|
17
|
+
export type GateKind = 'role' | 'privilege' | 'plan-feature' | 'plan-name' | 'removed-api';
|
|
18
|
+
export type GateFinding = {
|
|
19
|
+
file: string;
|
|
20
|
+
line: number;
|
|
21
|
+
kind: GateKind;
|
|
22
|
+
text: string;
|
|
23
|
+
/** What to use instead, in words an agent can act on. */
|
|
24
|
+
instead: string;
|
|
25
|
+
};
|
|
26
|
+
/** Written on the line, or the line above, to mark a direct check the developer asked for. */
|
|
27
|
+
export declare const GATE_EXCEPTION_MARKER = "bridge-gate-exception";
|
|
28
|
+
type CodeCheck = {
|
|
29
|
+
kind: GateKind;
|
|
30
|
+
pattern: RegExp;
|
|
31
|
+
instead: (match: RegExpExecArray) => string;
|
|
32
|
+
};
|
|
33
|
+
export declare const CODE_CHECKS: CodeCheck[];
|
|
34
|
+
/** Every direct gate check in one source file. */
|
|
35
|
+
export declare function codeGateFindings(source: string, file: string): GateFinding[];
|
|
36
|
+
export declare const SOURCE_EXTENSIONS: string[];
|
|
37
|
+
export declare const SKIPPED_DIRS: Set<string>;
|
|
38
|
+
export declare function isScannedSource(name: string): boolean;
|
|
39
|
+
export declare const DOC_FORBIDDEN: Array<[string, RegExp]>;
|
|
40
|
+
export type DocViolation = {
|
|
41
|
+
line: number;
|
|
42
|
+
rule: string;
|
|
43
|
+
text: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Every sentence in a guide that teaches a direct check, outside the one
|
|
47
|
+
* section a guide may have whose heading says "Exceptions".
|
|
48
|
+
*/
|
|
49
|
+
export declare function docGateViolations(markdown: string): DocViolation[];
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=gate-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-rules.d.ts","sourceRoot":"","sources":["../src/gate-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;AAE3F,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AA2B7D,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;CAC7C,CAAC;AAKF,eAAO,MAAM,WAAW,EAAE,SAAS,EA+BlC,CAAC;AAIF,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB5E;AAED,eAAO,MAAM,iBAAiB,UAAoE,CAAC;AACnG,eAAO,MAAM,YAAY,aAGvB,CAAC;AAEH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CA8BjD,CAAC;AAOF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAsBlE"}
|