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.
Files changed (50) hide show
  1. package/dist/api/mcp.d.ts.map +1 -1
  2. package/dist/api/mcp.js +32 -19
  3. package/dist/api/mcp.js.map +1 -1
  4. package/dist/api/roster-standing.js.map +1 -1
  5. package/dist/api/routes.d.ts +8 -6
  6. package/dist/api/routes.d.ts.map +1 -1
  7. package/dist/api/routes.js +26 -9
  8. package/dist/api/routes.js.map +1 -1
  9. package/dist/api/seat-agents.d.ts.map +1 -1
  10. package/dist/api/seat-agents.js +19 -5
  11. package/dist/api/seat-agents.js.map +1 -1
  12. package/dist/api/seat-standing.d.ts +13 -0
  13. package/dist/api/seat-standing.d.ts.map +1 -1
  14. package/dist/api/seat-standing.js +50 -42
  15. package/dist/api/seat-standing.js.map +1 -1
  16. package/dist/api/seat-version.d.ts +47 -5
  17. package/dist/api/seat-version.d.ts.map +1 -1
  18. package/dist/api/seat-version.js +54 -7
  19. package/dist/api/seat-version.js.map +1 -1
  20. package/dist/cli/index.js +14 -10
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/core/adapter.d.ts +11 -0
  23. package/dist/core/adapter.d.ts.map +1 -1
  24. package/dist/core/adapter.js +15 -0
  25. package/dist/core/adapter.js.map +1 -1
  26. package/dist/core/engine-roster.d.ts +12 -6
  27. package/dist/core/engine-roster.d.ts.map +1 -1
  28. package/dist/core/engine-roster.js +30 -13
  29. package/dist/core/engine-roster.js.map +1 -1
  30. package/dist/core/vault-bin.d.ts +69 -0
  31. package/dist/core/vault-bin.d.ts.map +1 -0
  32. package/dist/core/vault-bin.js +101 -0
  33. package/dist/core/vault-bin.js.map +1 -0
  34. package/dist/mcp/policies.d.ts +22 -1
  35. package/dist/mcp/policies.d.ts.map +1 -1
  36. package/dist/mcp/policies.js +56 -20
  37. package/dist/mcp/policies.js.map +1 -1
  38. package/dist/studio/assets/{index-BV1Wz0_j.js → index-BhpoNOI0.js} +214 -214
  39. package/dist/studio/editors/wicked-deck/editor.json +1 -1
  40. package/dist/studio/editors/wicked-deck/index.html +1 -1
  41. package/dist/studio/editors/wicked-doc/editor.json +1 -1
  42. package/dist/studio/editors/wicked-doc/index.html +1 -1
  43. package/dist/studio/editors/wicked-page/editor.json +1 -1
  44. package/dist/studio/editors/wicked-page/index.html +1 -1
  45. package/dist/studio/editors/wicked-video/editor.json +1 -1
  46. package/dist/studio/editors/wicked-video/index.html +1 -1
  47. package/dist/studio/index.html +1 -1
  48. package/dist/studio/testid-inventory.json +1 -1
  49. package/endpoint-manifest.json +1 -1
  50. 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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"}
@@ -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
- /** Remove every listed token from both ledgers (revoke, a changed schema, a removed server). */
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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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;IAIpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,KAAK,CAAuC;gBAGjC,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;IAiBjD,gFAAgF;IAC1E,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOhD,gGAAgG;IAC1F,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"}
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"}
@@ -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
- const server = (await this.registry.list()).servers.find((s) => s.name === parts.server);
209
- if (server === undefined)
210
- throw new McpRegistryError(404, 'unknown_server', `no MCP server named ${parts.server}`);
211
- if (parts.tool !== null && !server.tools.some((t) => t.name === parts.tool && t.status !== 'gone')) {
212
- throw new McpRegistryError(404, 'unknown_tool', `no tool ${subject}`);
213
- }
214
- const ledgers = parts.tool === null ? [FIRST_USE_LEDGER] : [FIRST_USE_LEDGER, WRITE_LEDGER];
215
- return this.edit((rule) => {
216
- if (!ledgers.includes(rule.id))
217
- return null;
218
- const excludes = rule.excludes ?? [];
219
- if (excludes.includes(subject))
220
- return null;
221
- return [...excludes, subject];
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
- if (parseApprovalSubject(subject) === null)
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
- const changed = await this.withdraw([subject]);
229
- if (changed.length === 0)
230
- throw new McpRegistryError(404, 'not_approved', `${subject} is not approved`);
231
- return changed;
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
- /** Remove every listed token from both ledgers (revoke, a changed schema, a removed server). */
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 [];
@@ -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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"}