@fuzdev/fuz_app 0.101.1 → 0.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/CLAUDE.md +29 -17
- package/dist/auth/cell_action_specs.d.ts +35 -34
- package/dist/auth/cell_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_action_specs.js +23 -8
- package/dist/auth/cell_actions.d.ts +28 -0
- package/dist/auth/cell_actions.d.ts.map +1 -1
- package/dist/auth/cell_actions.js +52 -20
- package/dist/auth/cell_data_schema.d.ts +14 -16
- package/dist/auth/cell_data_schema.d.ts.map +1 -1
- package/dist/auth/cell_data_schema.js +14 -16
- package/dist/auth/role_grant_offer_action_specs.d.ts +56 -3
- package/dist/auth/role_grant_offer_action_specs.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_action_specs.js +48 -3
- package/dist/auth/role_grant_offer_actions.d.ts +9 -19
- package/dist/auth/role_grant_offer_actions.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_actions.js +91 -36
- package/dist/db/CLAUDE.md +8 -5
- package/dist/db/cell_ddl.d.ts +11 -2
- package/dist/db/cell_ddl.d.ts.map +1 -1
- package/dist/db/cell_ddl.js +13 -1
- package/dist/db/cell_queries.d.ts +14 -8
- package/dist/db/cell_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.js +12 -11
- package/dist/testing/CLAUDE.md +66 -7
- package/dist/testing/cross_backend/capabilities.d.ts +14 -0
- package/dist/testing/cross_backend/capabilities.d.ts.map +1 -1
- package/dist/testing/cross_backend/capabilities.js +3 -0
- package/dist/testing/cross_backend/cell_crud.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.js +55 -13
- package/dist/testing/cross_backend/cell_gated_create.d.ts +4 -0
- package/dist/testing/cross_backend/cell_gated_create.d.ts.map +1 -0
- package/dist/testing/cross_backend/cell_gated_create.js +71 -0
- package/dist/testing/cross_backend/cell_grant_role.js +4 -4
- package/dist/testing/cross_backend/cell_relations.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_relations.js +30 -24
- package/dist/testing/cross_backend/default_backend_configs.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_backend_configs.js +7 -0
- package/dist/testing/cross_backend/default_spine_surface.d.ts +9 -5
- package/dist/testing/cross_backend/default_spine_surface.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_spine_surface.js +12 -6
- package/dist/testing/cross_backend/expected_schema.json +1 -0
- package/dist/testing/cross_backend/fact_serving.js +2 -2
- package/dist/testing/cross_backend/full_spine_mount.d.ts.map +1 -1
- package/dist/testing/cross_backend/full_spine_mount.js +6 -1
- package/dist/testing/cross_backend/role_grant_participation.d.ts +11 -0
- package/dist/testing/cross_backend/role_grant_participation.d.ts.map +1 -0
- package/dist/testing/cross_backend/role_grant_participation.js +73 -0
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.js +6 -3
- package/dist/testing/cross_backend/spine_surface_constants.d.ts +12 -0
- package/dist/testing/cross_backend/spine_surface_constants.d.ts.map +1 -1
- package/dist/testing/cross_backend/spine_surface_constants.js +12 -0
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts +17 -0
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts.map +1 -0
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.js +36 -0
- package/dist/testing/cross_backend/ts_spine_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/ts_spine_backend_config.js +5 -2
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import '../assert_dev_env.js';
|
|
2
|
+
/**
|
|
3
|
+
* Cross-backend parity suite for **role-gated participation conferral — the
|
|
4
|
+
* success paths**. The imperative escape hatch beneath the declarative
|
|
5
|
+
* `conformance_participation_cases.ts`: the multi-step flows that need a real
|
|
6
|
+
* recipient account (so a static conformance row can't express them) — an
|
|
7
|
+
* admin assigns the `participant` app-role, and an admin offers it through the
|
|
8
|
+
* consent flow and the recipient accepts.
|
|
9
|
+
*
|
|
10
|
+
* Proves the two conferral *write* paths agree on both spines (TS spine binary
|
|
11
|
+
* + Rust `testing_spine_stub`):
|
|
12
|
+
*
|
|
13
|
+
* - **immediate assign** — `role_grant_assign` of the admin-grantable
|
|
14
|
+
* `participant` role lands a grant and returns `{ok, role_grant_id}`;
|
|
15
|
+
* re-assigning the active grant is idempotent (same id).
|
|
16
|
+
* - **consent flow** — `role_grant_offer_create` of `participant` (admin-only)
|
|
17
|
+
* → the recipient `role_grant_offer_accept`s → a role_grant lands.
|
|
18
|
+
*
|
|
19
|
+
* The single-request gate/denial matrix (grantability refusal, admin-only
|
|
20
|
+
* conferral, dispatcher admin gate, auth) lives in the declarative table
|
|
21
|
+
* (`conformance_participation_cases.ts`) — keep new single-request assertions
|
|
22
|
+
* there; this suite is only for flows the table cannot carry.
|
|
23
|
+
*
|
|
24
|
+
* The `participant` role is registered admin-grantable on both spines
|
|
25
|
+
* (`spine_roles` / the Rust stub's `RoleRegistry`), so the suite is ungated;
|
|
26
|
+
* every spine mounts the standard RPC surface it drives.
|
|
27
|
+
*
|
|
28
|
+
* `$lib`-free by contract (relative specifiers only), like the sibling
|
|
29
|
+
* cross-backend suites.
|
|
30
|
+
*
|
|
31
|
+
* @module
|
|
32
|
+
*/
|
|
33
|
+
import { describe, test, assert } from 'vitest';
|
|
34
|
+
import { rpc_call } from '../rpc_helpers.js';
|
|
35
|
+
import { SPINE_PARTICIPANT_ROLE, SPINE_RPC_PATH } from './spine_surface_constants.js';
|
|
36
|
+
export const describe_role_grant_participation_cross_tests = (options) => {
|
|
37
|
+
const { setup_test } = options;
|
|
38
|
+
const rpc_path = options.rpc_path ?? SPINE_RPC_PATH;
|
|
39
|
+
const rpc = (transport, method, params, headers) => rpc_call({ app: transport, path: rpc_path, method, params, headers });
|
|
40
|
+
describe('role-gated participation conferral (success paths)', () => {
|
|
41
|
+
test('admin assigns the participant app-role to a fresh account (idempotent)', async () => {
|
|
42
|
+
const fixture = await setup_test();
|
|
43
|
+
const recipient = await fixture.create_account({ username: 'participation_assignee' });
|
|
44
|
+
// The keeper holds ROLE_ADMIN (seeded via extra_keeper_roles), so it
|
|
45
|
+
// clears the dispatcher admin gate; `participant` is admin-grantable, so
|
|
46
|
+
// it clears the grant-path gate; the recipient is single-actor, so the
|
|
47
|
+
// target actor resolves without `to_actor_id`.
|
|
48
|
+
const first = await rpc(fixture.transport, 'role_grant_assign', { to_account_id: recipient.account.id, role: SPINE_PARTICIPANT_ROLE }, fixture.create_session_headers());
|
|
49
|
+
assert.ok(first.ok, `assign must succeed: ${JSON.stringify(first)}`);
|
|
50
|
+
const assigned = first.result;
|
|
51
|
+
assert.strictEqual(assigned.ok, true);
|
|
52
|
+
assert.ok(typeof assigned.role_grant_id === 'string' && assigned.role_grant_id.length > 0, 'assign returns the new role_grant id');
|
|
53
|
+
// Idempotent — re-assigning the active grant returns the existing id.
|
|
54
|
+
const second = await rpc(fixture.transport, 'role_grant_assign', { to_account_id: recipient.account.id, role: SPINE_PARTICIPANT_ROLE }, fixture.create_session_headers());
|
|
55
|
+
assert.ok(second.ok, `re-assign must succeed: ${JSON.stringify(second)}`);
|
|
56
|
+
assert.strictEqual(second.result.role_grant_id, assigned.role_grant_id, 're-assigning an active grant returns the existing role_grant id');
|
|
57
|
+
});
|
|
58
|
+
test('admin offers the participant app-role and the recipient accepts', async () => {
|
|
59
|
+
const fixture = await setup_test();
|
|
60
|
+
const recipient = await fixture.create_account({ username: 'participation_offeree' });
|
|
61
|
+
// Admin-only conferral via the consent flow: the keeper (admin) offers
|
|
62
|
+
// the app-role, proving the widened grant-path gate admits it through
|
|
63
|
+
// the offer path too.
|
|
64
|
+
const created = await rpc(fixture.transport, 'role_grant_offer_create', { to_account_id: recipient.account.id, role: SPINE_PARTICIPANT_ROLE }, fixture.create_session_headers());
|
|
65
|
+
assert.ok(created.ok, `offer create must succeed: ${JSON.stringify(created)}`);
|
|
66
|
+
const offer_id = created.result.offer.id;
|
|
67
|
+
// The recipient accepts → a role_grant lands.
|
|
68
|
+
const accepted = await rpc(fixture.fresh_transport(), 'role_grant_offer_accept', { offer_id }, recipient.create_session_headers());
|
|
69
|
+
assert.ok(accepted.ok, `accept must succeed: ${JSON.stringify(accepted)}`);
|
|
70
|
+
assert.ok(typeof accepted.result.role_grant_id === 'string', 'accept lands a role_grant for the app-role');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust_spine_stub_backend_config.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/rust_spine_stub_backend_config.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAuC9B,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AASvD,uGAAuG;AACvG,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"rust_spine_stub_backend_config.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/rust_spine_stub_backend_config.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAuC9B,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AASvD,uGAAuG;AACvG,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AAkBnG,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,0FAA0F;AAC1F,eAAO,MAAM,oCAAoC,sDACG,CAAC;AAErD,MAAM,WAAW,6BAA6B;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,GAC1C,UAAS,6BAAkC,KACzC,aAiDF,CAAC"}
|
|
@@ -49,14 +49,17 @@ export const RUST_SPINE_STUB_EXPECTED_SCHEMA_PATH_ENV = 'FUZ_RUST_SPINE_STUB_EXP
|
|
|
49
49
|
/**
|
|
50
50
|
* Capabilities for the Rust `testing_spine_stub` — `rust_default_capabilities`
|
|
51
51
|
* plus `sse` (the stub serves `GET /api/admin/audit/stream` over the spine
|
|
52
|
-
* `fuz_realtime::SseRegistry` + audit listener)
|
|
53
|
-
* `/ready` over the env-supplied fixture path)
|
|
54
|
-
*
|
|
52
|
+
* `fuz_realtime::SseRegistry` + audit listener), `ready` (it live-mounts
|
|
53
|
+
* `/ready` over the env-supplied fixture path), and `cell_gated_create` (it
|
|
54
|
+
* mounts the `TestCellGatedCreateAuthorize` policy on its cell layer). Named
|
|
55
|
+
* (not inline) so every spine preset is greppable, mirroring
|
|
56
|
+
* `ts_spine_capabilities`.
|
|
55
57
|
*/
|
|
56
58
|
const rust_spine_stub_capabilities = Object.freeze({
|
|
57
59
|
...rust_default_capabilities,
|
|
58
60
|
sse: true,
|
|
59
61
|
ready: true,
|
|
62
|
+
cell_gated_create: true,
|
|
60
63
|
});
|
|
61
64
|
/** Default listening port — slots beside zzz's 1175/1176; matches the binary's `DEFAULT_PORT`. */
|
|
62
65
|
export const RUST_SPINE_STUB_DEFAULT_PORT = 1177;
|
|
@@ -32,6 +32,18 @@ export declare const SPINE_SSE_PATH = "/api/admin/audit/stream";
|
|
|
32
32
|
* Rust `testing_spine_stub`'s `known_roles` (cross-language test contract).
|
|
33
33
|
*/
|
|
34
34
|
export declare const SPINE_CELL_EDITOR_ROLE = "cell_editor";
|
|
35
|
+
/**
|
|
36
|
+
* Admin-grantable app role the role-gated-participation cross suite exercises.
|
|
37
|
+
* Registered with `grant_paths: ['admin']` so it enters the admin grant flow —
|
|
38
|
+
* the cross-backend proof that an app-defined role is conferrable (offer /
|
|
39
|
+
* `role_grant_assign`) admin-only on **both** spines. Must match the
|
|
40
|
+
* `participant` entry in the Rust `testing_spine_stub`'s `RoleRegistry`
|
|
41
|
+
* **and** its `known_roles` (the registry feeds the cell vocabulary too) — a
|
|
42
|
+
* cross-language test contract. Distinct from `SPINE_CELL_EDITOR_ROLE`
|
|
43
|
+
* (no grant path): this one is the *grantable* role, that one is the
|
|
44
|
+
* bootstrap-seed-only cell role.
|
|
45
|
+
*/
|
|
46
|
+
export declare const SPINE_PARTICIPANT_ROLE = "participant";
|
|
35
47
|
/**
|
|
36
48
|
* Committed expected-schema fixture for the spine `/ready` deploy gate — the
|
|
37
49
|
* column map a fresh full spine bootstrap (auth + cell + cell_history + fact)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine_surface_constants.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/spine_surface_constants.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;GAcG;AAEH,iEAAiE;AACjE,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,EAAE,GAAwD,CAAC"}
|
|
1
|
+
{"version":3,"file":"spine_surface_constants.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/spine_surface_constants.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;GAcG;AAEH,iEAAiE;AACjE,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,EAAE,GAAwD,CAAC"}
|
|
@@ -32,6 +32,18 @@ export const SPINE_SSE_PATH = '/api/admin/audit/stream';
|
|
|
32
32
|
* Rust `testing_spine_stub`'s `known_roles` (cross-language test contract).
|
|
33
33
|
*/
|
|
34
34
|
export const SPINE_CELL_EDITOR_ROLE = 'cell_editor';
|
|
35
|
+
/**
|
|
36
|
+
* Admin-grantable app role the role-gated-participation cross suite exercises.
|
|
37
|
+
* Registered with `grant_paths: ['admin']` so it enters the admin grant flow —
|
|
38
|
+
* the cross-backend proof that an app-defined role is conferrable (offer /
|
|
39
|
+
* `role_grant_assign`) admin-only on **both** spines. Must match the
|
|
40
|
+
* `participant` entry in the Rust `testing_spine_stub`'s `RoleRegistry`
|
|
41
|
+
* **and** its `known_roles` (the registry feeds the cell vocabulary too) — a
|
|
42
|
+
* cross-language test contract. Distinct from `SPINE_CELL_EDITOR_ROLE`
|
|
43
|
+
* (no grant path): this one is the *grantable* role, that one is the
|
|
44
|
+
* bootstrap-seed-only cell role.
|
|
45
|
+
*/
|
|
46
|
+
export const SPINE_PARTICIPANT_ROLE = 'participant';
|
|
35
47
|
/**
|
|
36
48
|
* Committed expected-schema fixture for the spine `/ready` deploy gate — the
|
|
37
49
|
* column map a fresh full spine bootstrap (auth + cell + cell_history + fact)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import '../assert_dev_env.js';
|
|
2
|
+
import type { CellCreateAuthorize } from '../../auth/cell_actions.js';
|
|
3
|
+
/** The single kind the test policy gates (shared with the driving suite). */
|
|
4
|
+
export declare const GATED_CELL_KIND = "gated";
|
|
5
|
+
/**
|
|
6
|
+
* The app-role that unlocks creating the gated kind (besides admin) — the
|
|
7
|
+
* `participant` role both reference spines register. Mirrors the Rust policy's
|
|
8
|
+
* `"participant"` literal.
|
|
9
|
+
*/
|
|
10
|
+
export declare const GATED_CELL_ROLE = "participant";
|
|
11
|
+
/**
|
|
12
|
+
* Allow unless the cell's `kind` is `'gated'`, in which case the actor must
|
|
13
|
+
* hold the `participant` role or be a (scope-agnostic) admin. Mirrors the Rust
|
|
14
|
+
* `TestCellGatedCreateAuthorize` exactly.
|
|
15
|
+
*/
|
|
16
|
+
export declare const test_cell_gated_create_authorize: CellCreateAuthorize;
|
|
17
|
+
//# sourceMappingURL=test_cell_gated_create_authorize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_cell_gated_create_authorize.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/test_cell_gated_create_authorize.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAuB9B,OAAO,KAAK,EAAC,mBAAmB,EAA2B,MAAM,4BAA4B,CAAC;AAG9F,6EAA6E;AAC7E,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,eAAe,gBAAyB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,mBAIiD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import '../assert_dev_env.js';
|
|
2
|
+
/**
|
|
3
|
+
* Test `CellCreateAuthorize` policy mounted on **both** reference spines — the
|
|
4
|
+
* TS spine binary's full mount (`full_spine_mount.ts`) and the Rust
|
|
5
|
+
* `testing_spine_stub` — so the cross-backend `cell_gated_create` suite proves
|
|
6
|
+
* the cell-creation authorizer agrees TS↔Rust. The twin of the Rust
|
|
7
|
+
* `TestCellGatedCreateAuthorize`.
|
|
8
|
+
*
|
|
9
|
+
* The policy gates exactly one kind: creating a `kind: 'gated'` cell requires
|
|
10
|
+
* the `participant` app-role (registered on both spines, `grant_paths:
|
|
11
|
+
* ['admin']`) or admin. Every other kind — and a typeless cell — is open, so
|
|
12
|
+
* the existing cell suites (which use `note` / `collection` kinds) are
|
|
13
|
+
* unaffected, exactly as on the Rust stub.
|
|
14
|
+
*
|
|
15
|
+
* **`$lib`-free by contract** — reached by the spawned TS spine binary under
|
|
16
|
+
* Gro's loader (no `$lib` alias). Keep every import relative.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
import { has_role } from '../../auth/request_context.js';
|
|
21
|
+
import { ROLE_ADMIN } from '../../auth/role_schema.js';
|
|
22
|
+
import { SPINE_PARTICIPANT_ROLE } from './spine_surface_constants.js';
|
|
23
|
+
/** The single kind the test policy gates (shared with the driving suite). */
|
|
24
|
+
export const GATED_CELL_KIND = 'gated';
|
|
25
|
+
/**
|
|
26
|
+
* The app-role that unlocks creating the gated kind (besides admin) — the
|
|
27
|
+
* `participant` role both reference spines register. Mirrors the Rust policy's
|
|
28
|
+
* `"participant"` literal.
|
|
29
|
+
*/
|
|
30
|
+
export const GATED_CELL_ROLE = SPINE_PARTICIPANT_ROLE;
|
|
31
|
+
/**
|
|
32
|
+
* Allow unless the cell's `kind` is `'gated'`, in which case the actor must
|
|
33
|
+
* hold the `participant` role or be a (scope-agnostic) admin. Mirrors the Rust
|
|
34
|
+
* `TestCellGatedCreateAuthorize` exactly.
|
|
35
|
+
*/
|
|
36
|
+
export const test_cell_gated_create_authorize = (auth, input) => input.kind !== GATED_CELL_KIND || has_role(auth, GATED_CELL_ROLE) || has_role(auth, ROLE_ADMIN);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts_spine_backend_config.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/ts_spine_backend_config.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AASvD,8GAA8G;AAC9G,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ts_spine_backend_config.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/ts_spine_backend_config.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AASvD,8GAA8G;AAC9G,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAkC3D,6FAA6F;AAC7F,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,wDAAwD,CAAC;AAEzF,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,wDAAwD,CAAC;AAEzF,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,uDAAuD,CAAC;AAEvF,MAAM,WAAW,2BAA2B;IAC3C,mFAAmF;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAWD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACxC,UAAS,2BAAgC,KACvC,aAmBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GACvC,UAAS,2BAAgC,KACvC,aAmBF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GACxC,UAAS,2BAAgC,KACvC,aAgCF,CAAC"}
|
|
@@ -7,14 +7,17 @@ export const TS_SPINE_DIR_ENV = 'FUZ_TESTING_TS_SPINE_DIR';
|
|
|
7
7
|
/**
|
|
8
8
|
* Capabilities for the TS spine binary — `ts_default_capabilities` plus `sse`
|
|
9
9
|
* (the binary wires `audit_log_sse`), `ready` (the binary live-mounts the
|
|
10
|
-
* `/ready` deploy gate in `build_spine_app`),
|
|
11
|
-
* WS transport's `request_connection` path drives server→client `peer/ping`)
|
|
10
|
+
* `/ready` deploy gate in `build_spine_app`), `peer_request` (the backend
|
|
11
|
+
* WS transport's `request_connection` path drives server→client `peer/ping`),
|
|
12
|
+
* and `cell_gated_create` (the binary's `full_spine_mount` mounts the
|
|
13
|
+
* `test_cell_gated_create_authorize` policy).
|
|
12
14
|
*/
|
|
13
15
|
const ts_spine_capabilities = Object.freeze({
|
|
14
16
|
...ts_default_capabilities,
|
|
15
17
|
sse: true,
|
|
16
18
|
ready: true,
|
|
17
19
|
peer_request: true,
|
|
20
|
+
cell_gated_create: true,
|
|
18
21
|
});
|
|
19
22
|
/**
|
|
20
23
|
* Capabilities for the **Bun** spine binary — `ts_spine_capabilities` with
|