wicked-crew 0.15.0 → 0.15.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/dist/api/mcp.d.ts.map +1 -1
- package/dist/api/mcp.js +32 -19
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +8 -6
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +26 -9
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-agents.d.ts.map +1 -1
- package/dist/api/seat-agents.js +19 -5
- package/dist/api/seat-agents.js.map +1 -1
- package/dist/api/seat-standing.d.ts +13 -0
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +50 -42
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/seat-version.d.ts +47 -5
- package/dist/api/seat-version.d.ts.map +1 -1
- package/dist/api/seat-version.js +54 -7
- package/dist/api/seat-version.js.map +1 -1
- package/dist/cli/index.js +14 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +11 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +15 -0
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/engine-roster.d.ts +12 -6
- package/dist/core/engine-roster.d.ts.map +1 -1
- package/dist/core/engine-roster.js +30 -13
- package/dist/core/engine-roster.js.map +1 -1
- package/dist/core/vault-bin.d.ts +69 -0
- package/dist/core/vault-bin.d.ts.map +1 -0
- package/dist/core/vault-bin.js +101 -0
- package/dist/core/vault-bin.js.map +1 -0
- package/dist/mcp/policies.d.ts +22 -1
- package/dist/mcp/policies.d.ts.map +1 -1
- package/dist/mcp/policies.js +56 -20
- package/dist/mcp/policies.js.map +1 -1
- package/dist/studio/assets/{index-BV1Wz0_j.js → index-BhpoNOI0.js} +214 -214
- package/dist/studio/editors/wicked-deck/editor.json +1 -1
- package/dist/studio/editors/wicked-deck/index.html +1 -1
- package/dist/studio/editors/wicked-doc/editor.json +1 -1
- package/dist/studio/editors/wicked-doc/index.html +1 -1
- package/dist/studio/editors/wicked-page/editor.json +1 -1
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/editors/wicked-video/editor.json +1 -1
- package/dist/studio/editors/wicked-video/index.html +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/studio/testid-inventory.json +1 -1
- package/endpoint-manifest.json +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (crew#1068) The wicked-vault CLI the engine records held team findings with.
|
|
3
|
+
*
|
|
4
|
+
* wicked-core vaults a team finding held for the operator (core#959 / core#1006) by running the
|
|
5
|
+
* wicked-vault CLI named by `WICKED_VAULT_BIN`, read per record (`src/team/vault.rs`; empty = the
|
|
6
|
+
* vault is switched off). Crew ships `wicked-vault` as a runtime dependency and, before the engine
|
|
7
|
+
* spawns, exports the absolute path of that package's own `wicked-vault` bin as the variable, so a
|
|
8
|
+
* held finding always gets a vault entry instead of reading "not vaulted". ONE mechanism: PATH is
|
|
9
|
+
* never touched, and nothing else is tried.
|
|
10
|
+
*
|
|
11
|
+
* An operator's own `WICKED_VAULT_BIN` (the value this process booted with) is kept exactly — an
|
|
12
|
+
* explicit empty value included, because that is the vault switched off on purpose. When crew's own
|
|
13
|
+
* bin cannot be resolved, or the operator switched the vault off, the daemon still boots: the
|
|
14
|
+
* posture rides `/health.warnings` (and `wicked-crew status`) and `/diagnostics.vault` with a remedy.
|
|
15
|
+
*/
|
|
16
|
+
import type { DiagnosticsVault, HealthWarning } from 'wicked-crew-api-types';
|
|
17
|
+
export declare const VAULT_BIN_ENV = "WICKED_VAULT_BIN";
|
|
18
|
+
/** The value this process BOOTED with: an operator's choice, never one crew exported itself. */
|
|
19
|
+
export declare const BOOT_VAULT_BIN: string | undefined;
|
|
20
|
+
/** What the engine is handed: crew's shipped bin, the operator's value, the vault switched off by
|
|
21
|
+
* the operator, or nothing because crew's bin could not be resolved (`reason` says why). */
|
|
22
|
+
export type VaultBinPosture = {
|
|
23
|
+
source: 'shipped';
|
|
24
|
+
bin: string;
|
|
25
|
+
} | {
|
|
26
|
+
source: 'operator';
|
|
27
|
+
bin: string;
|
|
28
|
+
} | {
|
|
29
|
+
source: 'off';
|
|
30
|
+
bin: null;
|
|
31
|
+
} | {
|
|
32
|
+
source: 'unresolvable';
|
|
33
|
+
bin: null;
|
|
34
|
+
reason: string;
|
|
35
|
+
};
|
|
36
|
+
/** Resolves the absolute path of the `wicked-vault` bin; throws with the reason it cannot. */
|
|
37
|
+
export type VaultBinResolver = () => string;
|
|
38
|
+
/** What the decision is made from. The daemon's one call site (`CoreAdapter`) passes the value the
|
|
39
|
+
* process booted with and crew's own resolver; tests pass both explicitly, so no case depends on
|
|
40
|
+
* the importing process's environment. */
|
|
41
|
+
export interface VaultBinInputs {
|
|
42
|
+
/** The operator's `WICKED_VAULT_BIN` as the process booted: `undefined` = none set. */
|
|
43
|
+
operator: string | undefined;
|
|
44
|
+
resolve: VaultBinResolver;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The absolute path of crew's own `wicked-vault` bin: the installed package's `bin.wicked-vault`
|
|
48
|
+
* file (`wicked-vault/package.json`, resolved from this module and never loaded). On Windows the
|
|
49
|
+
* engine cannot start a `.mjs` file, so the path is npm's `.cmd` shim for that bin, which npm writes
|
|
50
|
+
* into the `.bin` dir of the `node_modules` holding the package. Throws when the package, its bin
|
|
51
|
+
* field or the file is missing, or (POSIX) the file is not executable.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveShippedVaultBin(platform?: NodeJS.Platform, resolvePackageJson?: () => string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Hand the engine its wicked-vault CLI in `env` before it spawns. `operator` (the value the process
|
|
56
|
+
* booted with) wins, untouched (`''` = switched off, kept empty); otherwise `resolve()`'s bin is
|
|
57
|
+
* exported. A bin that cannot be resolved leaves `env` as it was and is reported — it never fails boot.
|
|
58
|
+
*
|
|
59
|
+
* Every input is a plain parameter, deliberately: a default of `BOOT_VAULT_BIN` here would be
|
|
60
|
+
* substituted for an explicit `undefined` too (that is what a default parameter does), so a caller
|
|
61
|
+
* saying "no operator value" would silently get the importing process's environment instead. The
|
|
62
|
+
* daemon passes `BOOT_VAULT_BIN` itself (`CoreAdapter`).
|
|
63
|
+
*/
|
|
64
|
+
export declare function applyVaultBinEnv(env: NodeJS.ProcessEnv, resolve: VaultBinResolver, operator: string | undefined): VaultBinPosture;
|
|
65
|
+
/** The `/health.warnings[]` entry for a posture (the message carries the remedy), or `null`. */
|
|
66
|
+
export declare function vaultBinWarning(p: VaultBinPosture): HealthWarning | null;
|
|
67
|
+
/** `/diagnostics.vault`: what the engine is handed, and the finding with its remedy. */
|
|
68
|
+
export declare function vaultDiagnostics(p: VaultBinPosture): DiagnosticsVault;
|
|
69
|
+
//# sourceMappingURL=vault-bin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-bin.d.ts","sourceRoot":"","sources":["../../src/core/vault-bin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE7E,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAEhD,gGAAgG;AAChG,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG,SAAsC,CAAC;AAE7E;6FAC6F;AAC7F,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,8FAA8F;AAC9F,MAAM,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC;AAE5C;;2CAE2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,uFAAuF;IACvF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAID;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,kBAAkB,GAAE,MAAM,MAAkF,GAC3G,MAAM,CAWR;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAYjI;AA2BD,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,CAAC,EAAE,eAAe,GAAG,aAAa,GAAG,IAAI,CAGxE;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,gBAAgB,CAErE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (crew#1068) The wicked-vault CLI the engine records held team findings with.
|
|
3
|
+
*
|
|
4
|
+
* wicked-core vaults a team finding held for the operator (core#959 / core#1006) by running the
|
|
5
|
+
* wicked-vault CLI named by `WICKED_VAULT_BIN`, read per record (`src/team/vault.rs`; empty = the
|
|
6
|
+
* vault is switched off). Crew ships `wicked-vault` as a runtime dependency and, before the engine
|
|
7
|
+
* spawns, exports the absolute path of that package's own `wicked-vault` bin as the variable, so a
|
|
8
|
+
* held finding always gets a vault entry instead of reading "not vaulted". ONE mechanism: PATH is
|
|
9
|
+
* never touched, and nothing else is tried.
|
|
10
|
+
*
|
|
11
|
+
* An operator's own `WICKED_VAULT_BIN` (the value this process booted with) is kept exactly — an
|
|
12
|
+
* explicit empty value included, because that is the vault switched off on purpose. When crew's own
|
|
13
|
+
* bin cannot be resolved, or the operator switched the vault off, the daemon still boots: the
|
|
14
|
+
* posture rides `/health.warnings` (and `wicked-crew status`) and `/diagnostics.vault` with a remedy.
|
|
15
|
+
*/
|
|
16
|
+
import { accessSync, constants, existsSync, readFileSync } from 'node:fs';
|
|
17
|
+
import { createRequire } from 'node:module';
|
|
18
|
+
import { dirname, isAbsolute, join } from 'node:path';
|
|
19
|
+
export const VAULT_BIN_ENV = 'WICKED_VAULT_BIN';
|
|
20
|
+
/** The value this process BOOTED with: an operator's choice, never one crew exported itself. */
|
|
21
|
+
export const BOOT_VAULT_BIN = process.env[VAULT_BIN_ENV];
|
|
22
|
+
const VAULT_PKG = 'wicked-vault';
|
|
23
|
+
/**
|
|
24
|
+
* The absolute path of crew's own `wicked-vault` bin: the installed package's `bin.wicked-vault`
|
|
25
|
+
* file (`wicked-vault/package.json`, resolved from this module and never loaded). On Windows the
|
|
26
|
+
* engine cannot start a `.mjs` file, so the path is npm's `.cmd` shim for that bin, which npm writes
|
|
27
|
+
* into the `.bin` dir of the `node_modules` holding the package. Throws when the package, its bin
|
|
28
|
+
* field or the file is missing, or (POSIX) the file is not executable.
|
|
29
|
+
*/
|
|
30
|
+
export function resolveShippedVaultBin(platform = process.platform, resolvePackageJson = () => createRequire(import.meta.url).resolve(`${VAULT_PKG}/package.json`)) {
|
|
31
|
+
const pkgJson = resolvePackageJson();
|
|
32
|
+
const pkgDir = dirname(pkgJson);
|
|
33
|
+
const pkg = JSON.parse(readFileSync(pkgJson, 'utf8'));
|
|
34
|
+
const rel = typeof pkg.bin === 'string' ? pkg.bin : pkg.bin?.[VAULT_PKG];
|
|
35
|
+
if (typeof rel !== 'string' || rel === '')
|
|
36
|
+
throw new Error(`${pkgJson} declares no "${VAULT_PKG}" bin`);
|
|
37
|
+
const bin = platform === 'win32' ? join(dirname(pkgDir), '.bin', `${VAULT_PKG}.cmd`) : join(pkgDir, rel);
|
|
38
|
+
if (!isAbsolute(bin))
|
|
39
|
+
throw new Error(`${bin} is not an absolute path`);
|
|
40
|
+
if (!existsSync(bin))
|
|
41
|
+
throw new Error(`${bin} does not exist`);
|
|
42
|
+
if (platform !== 'win32')
|
|
43
|
+
accessSync(bin, constants.X_OK);
|
|
44
|
+
return bin;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Hand the engine its wicked-vault CLI in `env` before it spawns. `operator` (the value the process
|
|
48
|
+
* booted with) wins, untouched (`''` = switched off, kept empty); otherwise `resolve()`'s bin is
|
|
49
|
+
* exported. A bin that cannot be resolved leaves `env` as it was and is reported — it never fails boot.
|
|
50
|
+
*
|
|
51
|
+
* Every input is a plain parameter, deliberately: a default of `BOOT_VAULT_BIN` here would be
|
|
52
|
+
* substituted for an explicit `undefined` too (that is what a default parameter does), so a caller
|
|
53
|
+
* saying "no operator value" would silently get the importing process's environment instead. The
|
|
54
|
+
* daemon passes `BOOT_VAULT_BIN` itself (`CoreAdapter`).
|
|
55
|
+
*/
|
|
56
|
+
export function applyVaultBinEnv(env, resolve, operator) {
|
|
57
|
+
if (operator !== undefined) {
|
|
58
|
+
return operator.trim() === '' ? { source: 'off', bin: null } : { source: 'operator', bin: operator };
|
|
59
|
+
}
|
|
60
|
+
let bin;
|
|
61
|
+
try {
|
|
62
|
+
bin = resolve();
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return { source: 'unresolvable', bin: null, reason: err instanceof Error ? err.message : String(err) };
|
|
66
|
+
}
|
|
67
|
+
env[VAULT_BIN_ENV] = bin;
|
|
68
|
+
return { source: 'shipped', bin };
|
|
69
|
+
}
|
|
70
|
+
const UNRESOLVABLE_REMEDY = 'reinstall wicked-crew so its wicked-vault dependency is present (npm i -g wicked-crew), or set WICKED_VAULT_BIN to a wicked-vault CLI, then restart the daemon';
|
|
71
|
+
const OFF_REMEDY = 'unset WICKED_VAULT_BIN (crew then hands the engine its own wicked-vault) and restart the daemon';
|
|
72
|
+
/** The finding a posture carries, or `null` when the engine has a CLI to vault with. */
|
|
73
|
+
function vaultFinding(p) {
|
|
74
|
+
if (p.source === 'unresolvable') {
|
|
75
|
+
return {
|
|
76
|
+
kind: 'vault.unresolvable',
|
|
77
|
+
severity: 'warning',
|
|
78
|
+
message: `wicked-vault is not resolvable (${p.reason}); held boundary findings will not be vaulted`,
|
|
79
|
+
remedy: UNRESOLVABLE_REMEDY,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (p.source === 'off') {
|
|
83
|
+
return {
|
|
84
|
+
kind: 'vault.off',
|
|
85
|
+
severity: 'warning',
|
|
86
|
+
message: 'wicked-vault is switched off (WICKED_VAULT_BIN is set empty); held boundary findings will not be vaulted',
|
|
87
|
+
remedy: OFF_REMEDY,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/** The `/health.warnings[]` entry for a posture (the message carries the remedy), or `null`. */
|
|
93
|
+
export function vaultBinWarning(p) {
|
|
94
|
+
const f = vaultFinding(p);
|
|
95
|
+
return f === null ? null : { kind: f.kind, severity: f.severity, message: `${f.message} — ${f.remedy}` };
|
|
96
|
+
}
|
|
97
|
+
/** `/diagnostics.vault`: what the engine is handed, and the finding with its remedy. */
|
|
98
|
+
export function vaultDiagnostics(p) {
|
|
99
|
+
return { bin: p.bin, source: p.source, finding: vaultFinding(p) };
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=vault-bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-bin.js","sourceRoot":"","sources":["../../src/core/vault-bin.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/policies.d.ts
CHANGED
|
@@ -21,6 +21,13 @@
|
|
|
21
21
|
* the server's approval too: the server asks again on its next first use.
|
|
22
22
|
*
|
|
23
23
|
* Ledger edits are read-modify-write of one rule, so they are serialized here.
|
|
24
|
+
*
|
|
25
|
+
* - **One server, one writer (crew#993).** Approving, revoking, and the routes that withdraw then
|
|
26
|
+
* change a registration (a save, a removal) run one at a time per server, through
|
|
27
|
+
* {@link McpPolicies.exclusive}. An approval that arrives while a save is withdrawing and
|
|
28
|
+
* committing waits for the commit, so it is judged against the registration the save left (a
|
|
29
|
+
* tool the save dropped is a 404), never against the one the save is replacing. Different
|
|
30
|
+
* servers do not wait on each other.
|
|
24
31
|
*/
|
|
25
32
|
import type { ConformanceRule, McpAuthConfig, McpApprovalsResponse, McpPhaseRole, McpPolicyPreviewResponse, McpPreviewTool, McpRunMode, McpUpstreamKind } from '../core/types.js';
|
|
26
33
|
import { type HashedRestTarget } from './classify.js';
|
|
@@ -65,6 +72,8 @@ export declare class McpPolicies {
|
|
|
65
72
|
private readonly registry;
|
|
66
73
|
private readonly engine;
|
|
67
74
|
private chain;
|
|
75
|
+
/** Per server: the tail of the work queued by {@link exclusive}. Never rejects. */
|
|
76
|
+
private readonly serverTails;
|
|
68
77
|
constructor(registry: McpRegistry, engine: McpPolicyEngine);
|
|
69
78
|
preview(query: McpPolicyQuery): Promise<McpPolicyPreviewResponse>;
|
|
70
79
|
/**
|
|
@@ -82,7 +91,19 @@ export declare class McpPolicies {
|
|
|
82
91
|
approve(subject: string): Promise<string[]>;
|
|
83
92
|
/** Revoke a subject's approval from both ledgers. 404 when neither holds it. */
|
|
84
93
|
revoke(subject: string): Promise<string[]>;
|
|
85
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Run `fn` alone for `server` (crew#993): after every earlier `exclusive` call for the same
|
|
96
|
+
* server has settled, and before any later one starts. `approve` and `revoke` take it
|
|
97
|
+
* themselves; a route that withdraws approvals and then changes the registration (save, remove)
|
|
98
|
+
* wraps the whole sequence in it, so no approval lands between the withdrawal and the change.
|
|
99
|
+
* Not re-entrant: inside `fn`, call {@link withdraw}, never `approve` or `revoke`, for the same
|
|
100
|
+
* server. Other servers are not blocked.
|
|
101
|
+
*/
|
|
102
|
+
exclusive<T>(server: string, fn: () => Promise<T>): Promise<T>;
|
|
103
|
+
/**
|
|
104
|
+
* Remove every listed token from both ledgers (revoke, a changed schema, a removed server).
|
|
105
|
+
* Callers outside this class hold {@link exclusive} for the server the tokens name.
|
|
106
|
+
*/
|
|
86
107
|
withdraw(tokens: readonly string[]): Promise<string[]>;
|
|
87
108
|
/**
|
|
88
109
|
* The approval tokens saving `next` over the registered server of the same name withdraws: each
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/mcp/policies.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/mcp/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACb,oBAAoB,EAKpB,YAAY,EAEZ,wBAAwB,EACxB,cAAc,EACd,UAAU,EAKV,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAiB,KAAK,gBAAgB,EAAuC,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAGnE;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;IAEpD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM;CAIlB;AAED,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,gDAAgD;AAChD,eAAO,MAAM,YAAY,sBAAsB,CAAC;AAEhD,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,kEAAmE,CAAC;AAClG,eAAO,MAAM,iBAAiB,EAAE,SAAS,YAAY,EAAsC,CAAC;AAC5F,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAAsC,CAAC;AAEtF,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,+EAA+E;IAC/E,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AA0BD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAOpG;AAmBD,qBAAa,WAAW;IAMpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,KAAK,CAAuC;IACpD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;gBAGhD,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,eAAe;IAKpC,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA6CvE;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAA;KAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAmC3K,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAwBhD,gHAAgH;IAC1G,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBjD,gFAAgF;IAC1E,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUhD;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAU9D;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU5D;;;;;;;;;OASG;IACG,eAAe,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuB7J,0FAA0F;IACpF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOjD,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,IAAI;YAUE,KAAK;YAkCL,OAAO;IAerB,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,IAAI;CA0Cb"}
|
package/dist/mcp/policies.js
CHANGED
|
@@ -21,6 +21,13 @@
|
|
|
21
21
|
* the server's approval too: the server asks again on its next first use.
|
|
22
22
|
*
|
|
23
23
|
* Ledger edits are read-modify-write of one rule, so they are serialized here.
|
|
24
|
+
*
|
|
25
|
+
* - **One server, one writer (crew#993).** Approving, revoking, and the routes that withdraw then
|
|
26
|
+
* change a registration (a save, a removal) run one at a time per server, through
|
|
27
|
+
* {@link McpPolicies.exclusive}. An approval that arrives while a save is withdrawing and
|
|
28
|
+
* committing waits for the commit, so it is judged against the registration the save left (a
|
|
29
|
+
* tool the save dropped is a 404), never against the one the save is replacing. Different
|
|
30
|
+
* servers do not wait on each other.
|
|
24
31
|
*/
|
|
25
32
|
import { canonicalJson, MCP_SERVER_NAME_RE, parseMcpSubject } from './classify.js';
|
|
26
33
|
import { McpRegistryError } from './registry.js';
|
|
@@ -82,6 +89,8 @@ export class McpPolicies {
|
|
|
82
89
|
registry;
|
|
83
90
|
engine;
|
|
84
91
|
chain = Promise.resolve();
|
|
92
|
+
/** Per server: the tail of the work queued by {@link exclusive}. Never rejects. */
|
|
93
|
+
serverTails = new Map();
|
|
85
94
|
constructor(registry, engine) {
|
|
86
95
|
this.registry = registry;
|
|
87
96
|
this.engine = engine;
|
|
@@ -205,32 +214,59 @@ export class McpPolicies {
|
|
|
205
214
|
const parts = parseApprovalSubject(subject);
|
|
206
215
|
if (parts === null)
|
|
207
216
|
throw new McpRegistryError(400, 'bad_subject', 'a subject is mcp:<server> or mcp:<server>/<tool>');
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
217
|
+
// Judged and written under the server's lock, so a save or removal in flight commits first.
|
|
218
|
+
return this.exclusive(parts.server, async () => {
|
|
219
|
+
const server = (await this.registry.list()).servers.find((s) => s.name === parts.server);
|
|
220
|
+
if (server === undefined)
|
|
221
|
+
throw new McpRegistryError(404, 'unknown_server', `no MCP server named ${parts.server}`);
|
|
222
|
+
if (parts.tool !== null && !server.tools.some((t) => t.name === parts.tool && t.status !== 'gone')) {
|
|
223
|
+
throw new McpRegistryError(404, 'unknown_tool', `no tool ${subject}`);
|
|
224
|
+
}
|
|
225
|
+
const ledgers = parts.tool === null ? [FIRST_USE_LEDGER] : [FIRST_USE_LEDGER, WRITE_LEDGER];
|
|
226
|
+
return this.edit((rule) => {
|
|
227
|
+
if (!ledgers.includes(rule.id))
|
|
228
|
+
return null;
|
|
229
|
+
const excludes = rule.excludes ?? [];
|
|
230
|
+
if (excludes.includes(subject))
|
|
231
|
+
return null;
|
|
232
|
+
return [...excludes, subject];
|
|
233
|
+
});
|
|
222
234
|
});
|
|
223
235
|
}
|
|
224
236
|
/** Revoke a subject's approval from both ledgers. 404 when neither holds it. */
|
|
225
237
|
async revoke(subject) {
|
|
226
|
-
|
|
238
|
+
const parts = parseApprovalSubject(subject);
|
|
239
|
+
if (parts === null)
|
|
227
240
|
throw new McpRegistryError(400, 'bad_subject', 'a subject is mcp:<server> or mcp:<server>/<tool>');
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
241
|
+
return this.exclusive(parts.server, async () => {
|
|
242
|
+
const changed = await this.withdraw([subject]);
|
|
243
|
+
if (changed.length === 0)
|
|
244
|
+
throw new McpRegistryError(404, 'not_approved', `${subject} is not approved`);
|
|
245
|
+
return changed;
|
|
246
|
+
});
|
|
232
247
|
}
|
|
233
|
-
/**
|
|
248
|
+
/**
|
|
249
|
+
* Run `fn` alone for `server` (crew#993): after every earlier `exclusive` call for the same
|
|
250
|
+
* server has settled, and before any later one starts. `approve` and `revoke` take it
|
|
251
|
+
* themselves; a route that withdraws approvals and then changes the registration (save, remove)
|
|
252
|
+
* wraps the whole sequence in it, so no approval lands between the withdrawal and the change.
|
|
253
|
+
* Not re-entrant: inside `fn`, call {@link withdraw}, never `approve` or `revoke`, for the same
|
|
254
|
+
* server. Other servers are not blocked.
|
|
255
|
+
*/
|
|
256
|
+
exclusive(server, fn) {
|
|
257
|
+
const result = (this.serverTails.get(server) ?? Promise.resolve()).then(fn);
|
|
258
|
+
const tail = result.catch(() => undefined);
|
|
259
|
+
this.serverTails.set(server, tail);
|
|
260
|
+
void tail.then(() => {
|
|
261
|
+
if (this.serverTails.get(server) === tail)
|
|
262
|
+
this.serverTails.delete(server);
|
|
263
|
+
});
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Remove every listed token from both ledgers (revoke, a changed schema, a removed server).
|
|
268
|
+
* Callers outside this class hold {@link exclusive} for the server the tokens name.
|
|
269
|
+
*/
|
|
234
270
|
async withdraw(tokens) {
|
|
235
271
|
if (tokens.length === 0)
|
|
236
272
|
return [];
|
package/dist/mcp/policies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/mcp/policies.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/mcp/policies.ts"],"names":[],"mappings":"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"}
|