@fuzdev/fuz_app 0.103.0 → 0.105.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/actions/CLAUDE.md +2 -2
- package/dist/actions/action_bridge.d.ts.map +1 -1
- package/dist/actions/action_bridge.js +2 -2
- package/dist/actions/action_codegen.d.ts.map +1 -1
- package/dist/actions/action_codegen.js +3 -3
- package/dist/actions/action_dispatcher.d.ts.map +1 -1
- package/dist/actions/action_dispatcher.js +3 -3
- package/dist/actions/action_event.d.ts.map +1 -1
- package/dist/actions/action_event.js +11 -11
- package/dist/actions/action_event_data.d.ts.map +1 -1
- package/dist/actions/action_event_data.js +2 -2
- package/dist/actions/action_event_helpers.d.ts.map +1 -1
- package/dist/actions/action_event_helpers.js +2 -2
- package/dist/actions/action_event_types.d.ts.map +1 -1
- package/dist/actions/action_event_types.js +4 -4
- package/dist/actions/action_rpc.d.ts.map +1 -1
- package/dist/actions/action_rpc.js +13 -13
- package/dist/actions/action_spec.d.ts.map +1 -1
- package/dist/actions/action_spec.js +6 -6
- package/dist/actions/action_types.d.ts.map +1 -1
- package/dist/actions/broadcast_api.d.ts.map +1 -1
- package/dist/actions/broadcast_api.js +1 -1
- package/dist/actions/cancel.d.ts.map +1 -1
- package/dist/actions/cancel.js +3 -3
- package/dist/actions/compile_action_registry.d.ts.map +1 -1
- package/dist/actions/frontend_rpc_client.d.ts.map +1 -1
- package/dist/actions/frontend_rpc_client.js +3 -3
- package/dist/actions/heartbeat.d.ts.map +1 -1
- package/dist/actions/heartbeat.js +2 -2
- package/dist/actions/peer_ping.d.ts.map +1 -1
- package/dist/actions/peer_ping.js +6 -6
- package/dist/actions/peer_request.d.ts.map +1 -1
- package/dist/actions/perform_action.d.ts.map +1 -1
- package/dist/actions/perform_action.js +13 -13
- package/dist/actions/protocol.d.ts.map +1 -1
- package/dist/actions/protocol.js +1 -1
- package/dist/actions/register_action_ws.d.ts.map +1 -1
- package/dist/actions/register_action_ws.js +14 -11
- package/dist/actions/register_ws_endpoint.d.ts.map +1 -1
- package/dist/actions/register_ws_endpoint.js +3 -3
- package/dist/actions/request_tracker.svelte.d.ts.map +1 -1
- package/dist/actions/request_tracker.svelte.js +2 -2
- package/dist/actions/rpc_client.d.ts.map +1 -1
- package/dist/actions/rpc_client.js +7 -7
- package/dist/actions/socket.svelte.d.ts.map +1 -1
- package/dist/actions/socket.svelte.js +4 -3
- package/dist/actions/transports.d.ts.map +1 -1
- package/dist/actions/transports_http.d.ts.map +1 -1
- package/dist/actions/transports_http.js +7 -7
- package/dist/actions/transports_ws.d.ts.map +1 -1
- package/dist/actions/transports_ws.js +3 -3
- package/dist/actions/transports_ws_auth_guard.d.ts +4 -4
- package/dist/actions/transports_ws_auth_guard.d.ts.map +1 -1
- package/dist/actions/transports_ws_auth_guard.js +5 -5
- package/dist/actions/transports_ws_backend.d.ts.map +1 -1
- package/dist/actions/transports_ws_backend.js +2 -2
- package/dist/actions/ws_endpoint_spec.d.ts +2 -2
- package/dist/actions/ws_endpoint_spec.d.ts.map +1 -1
- package/dist/auth/CLAUDE.md +40 -18
- package/dist/auth/account_action_specs.d.ts +4 -4
- package/dist/auth/account_action_specs.d.ts.map +1 -1
- package/dist/auth/account_action_specs.js +18 -19
- package/dist/auth/account_actions.d.ts +3 -3
- package/dist/auth/account_actions.d.ts.map +1 -1
- package/dist/auth/account_actions.js +10 -10
- package/dist/auth/account_queries.d.ts.map +1 -1
- package/dist/auth/account_queries.js +6 -6
- package/dist/auth/account_route_schema.d.ts.map +1 -1
- package/dist/auth/account_route_schema.js +19 -19
- package/dist/auth/account_routes.d.ts +2 -2
- package/dist/auth/account_routes.d.ts.map +1 -1
- package/dist/auth/account_routes.js +27 -27
- package/dist/auth/account_schema.d.ts +13 -2
- package/dist/auth/account_schema.d.ts.map +1 -1
- package/dist/auth/account_schema.js +22 -11
- package/dist/auth/actor_lookup_action_specs.d.ts.map +1 -1
- package/dist/auth/actor_lookup_action_specs.js +5 -5
- package/dist/auth/actor_lookup_actions.d.ts +4 -2
- package/dist/auth/actor_lookup_actions.d.ts.map +1 -1
- package/dist/auth/actor_lookup_actions.js +3 -3
- package/dist/auth/actor_lookup_queries.d.ts.map +1 -1
- package/dist/auth/actor_search_action_specs.d.ts.map +1 -1
- package/dist/auth/actor_search_action_specs.js +6 -6
- package/dist/auth/actor_search_actions.d.ts +4 -2
- package/dist/auth/actor_search_actions.d.ts.map +1 -1
- package/dist/auth/actor_search_actions.js +5 -5
- package/dist/auth/actor_search_queries.d.ts.map +1 -1
- package/dist/auth/admin_action_specs.d.ts +2 -2
- package/dist/auth/admin_action_specs.d.ts.map +1 -1
- package/dist/auth/admin_action_specs.js +55 -55
- package/dist/auth/admin_actions.d.ts +5 -5
- package/dist/auth/admin_actions.d.ts.map +1 -1
- package/dist/auth/admin_actions.js +45 -44
- package/dist/auth/all_action_spec_registries.d.ts.map +1 -1
- package/dist/auth/all_action_spec_registries.js +1 -1
- package/dist/auth/all_cell_actions.d.ts.map +1 -1
- package/dist/auth/all_cell_actions.js +1 -1
- package/dist/auth/api_token.d.ts.map +1 -1
- package/dist/auth/api_token_queries.d.ts +7 -2
- package/dist/auth/api_token_queries.d.ts.map +1 -1
- package/dist/auth/api_token_queries.js +8 -3
- package/dist/auth/app_settings_queries.d.ts.map +1 -1
- package/dist/auth/app_settings_schema.d.ts.map +1 -1
- package/dist/auth/app_settings_schema.js +3 -3
- package/dist/auth/audit_emitter.d.ts +28 -20
- package/dist/auth/audit_emitter.d.ts.map +1 -1
- package/dist/auth/audit_emitter.js +37 -19
- package/dist/auth/audit_log_ddl.js +1 -1
- package/dist/auth/audit_log_queries.d.ts.map +1 -1
- package/dist/auth/audit_log_queries.js +2 -2
- package/dist/auth/audit_log_route_schema.d.ts.map +1 -1
- package/dist/auth/audit_log_route_schema.js +1 -1
- package/dist/auth/audit_log_routes.d.ts.map +1 -1
- package/dist/auth/audit_log_routes.js +3 -3
- package/dist/auth/audit_log_schema.d.ts +2 -2
- package/dist/auth/audit_log_schema.d.ts.map +1 -1
- package/dist/auth/audit_log_schema.js +69 -68
- package/dist/auth/auth_ddl.js +3 -3
- package/dist/auth/auth_guard_resolver.d.ts.map +1 -1
- package/dist/auth/bearer_auth.d.ts.map +1 -1
- package/dist/auth/bootstrap_account.d.ts.map +1 -1
- package/dist/auth/bootstrap_account.js +5 -5
- package/dist/auth/bootstrap_route_schema.d.ts.map +1 -1
- package/dist/auth/bootstrap_route_schema.js +6 -6
- package/dist/auth/bootstrap_routes.d.ts.map +1 -1
- package/dist/auth/bootstrap_routes.js +7 -7
- package/dist/auth/cell_action_specs.d.ts +227 -2
- package/dist/auth/cell_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_action_specs.js +117 -39
- package/dist/auth/cell_actions.d.ts +34 -11
- package/dist/auth/cell_actions.d.ts.map +1 -1
- package/dist/auth/cell_actions.js +155 -41
- package/dist/auth/cell_audit_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_audit_action_specs.js +4 -4
- package/dist/auth/cell_audit_actions.d.ts.map +1 -1
- package/dist/auth/cell_audit_actions.js +3 -3
- package/dist/auth/cell_audit_events.d.ts +1 -1
- package/dist/auth/cell_audit_events.d.ts.map +1 -1
- package/dist/auth/cell_audit_events.js +7 -6
- package/dist/auth/cell_audit_metadata.d.ts +15 -0
- package/dist/auth/cell_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_audit_metadata.js +13 -2
- package/dist/auth/cell_authorize.d.ts.map +1 -1
- package/dist/auth/cell_data_schema.d.ts.map +1 -1
- package/dist/auth/cell_data_schema.js +1 -1
- package/dist/auth/cell_field_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_field_action_specs.js +16 -16
- package/dist/auth/cell_field_actions.d.ts +2 -2
- package/dist/auth/cell_field_actions.d.ts.map +1 -1
- package/dist/auth/cell_field_actions.js +11 -11
- package/dist/auth/cell_field_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_field_audit_metadata.js +2 -2
- package/dist/auth/cell_grant_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_grant_action_specs.js +15 -15
- package/dist/auth/cell_grant_actions.d.ts +2 -2
- package/dist/auth/cell_grant_actions.d.ts.map +1 -1
- package/dist/auth/cell_grant_actions.js +12 -12
- package/dist/auth/cell_grant_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_grant_audit_metadata.js +3 -3
- package/dist/auth/cell_item_action_specs.d.ts +6 -2
- package/dist/auth/cell_item_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_item_action_specs.js +25 -21
- package/dist/auth/cell_item_actions.d.ts +2 -2
- package/dist/auth/cell_item_actions.d.ts.map +1 -1
- package/dist/auth/cell_item_actions.js +14 -14
- package/dist/auth/cell_item_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_item_audit_metadata.js +3 -3
- package/dist/auth/cell_relation_visibility.d.ts.map +1 -1
- package/dist/auth/cleanup.d.ts.map +1 -1
- package/dist/auth/cleanup.js +2 -2
- package/dist/auth/credential_type_schema.d.ts.map +1 -1
- package/dist/auth/credential_type_schema.js +5 -5
- package/dist/auth/daemon_token.d.ts.map +1 -1
- package/dist/auth/daemon_token_middleware.d.ts.map +1 -1
- package/dist/auth/daemon_token_middleware.js +2 -2
- package/dist/auth/deps.d.ts +20 -5
- package/dist/auth/deps.d.ts.map +1 -1
- package/dist/auth/grant_path_schema.d.ts.map +1 -1
- package/dist/auth/grant_path_schema.js +8 -8
- package/dist/auth/invite_queries.d.ts.map +1 -1
- package/dist/auth/invite_schema.d.ts.map +1 -1
- package/dist/auth/invite_schema.js +2 -2
- package/dist/auth/keyring.d.ts.map +1 -1
- package/dist/auth/keyring.js +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +7 -7
- package/dist/auth/migrations.d.ts.map +1 -1
- package/dist/auth/migrations.js +22 -20
- package/dist/auth/password.d.ts.map +1 -1
- package/dist/auth/password_argon2.d.ts.map +1 -1
- package/dist/auth/password_argon2.js +2 -2
- package/dist/auth/request_context.d.ts.map +1 -1
- package/dist/auth/request_context.js +7 -7
- package/dist/auth/role_grant_offer_action_specs.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_action_specs.js +35 -35
- package/dist/auth/role_grant_offer_actions.d.ts +7 -4
- package/dist/auth/role_grant_offer_actions.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_actions.js +43 -43
- package/dist/auth/role_grant_offer_notifications.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_notifications.js +13 -13
- package/dist/auth/role_grant_offer_queries.d.ts +1 -1
- package/dist/auth/role_grant_offer_queries.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_queries.js +11 -11
- package/dist/auth/role_grant_offer_schema.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_schema.js +7 -7
- package/dist/auth/role_grant_queries.d.ts.map +1 -1
- package/dist/auth/role_grant_queries.js +3 -3
- package/dist/auth/role_schema.d.ts.map +1 -1
- package/dist/auth/role_schema.js +7 -7
- package/dist/auth/scope_kind_schema.d.ts.map +1 -1
- package/dist/auth/self_service_role_action_specs.d.ts.map +1 -1
- package/dist/auth/self_service_role_action_specs.js +5 -5
- package/dist/auth/self_service_role_actions.d.ts +3 -3
- package/dist/auth/self_service_role_actions.d.ts.map +1 -1
- package/dist/auth/self_service_role_actions.js +9 -9
- package/dist/auth/session_cookie.d.ts.map +1 -1
- package/dist/auth/session_cookie.js +3 -3
- package/dist/auth/session_middleware.d.ts.map +1 -1
- package/dist/auth/session_middleware.js +4 -4
- package/dist/auth/session_queries.d.ts +14 -4
- package/dist/auth/session_queries.d.ts.map +1 -1
- package/dist/auth/session_queries.js +13 -3
- package/dist/auth/signup_route_schema.d.ts.map +1 -1
- package/dist/auth/signup_route_schema.js +6 -6
- package/dist/auth/signup_routes.d.ts.map +1 -1
- package/dist/auth/signup_routes.js +11 -11
- package/dist/auth/standard_action_specs.d.ts.map +1 -1
- package/dist/auth/standard_action_specs.js +1 -1
- package/dist/auth/standard_rpc_actions.d.ts +4 -4
- package/dist/auth/standard_rpc_actions.d.ts.map +1 -1
- package/dist/auth/standard_rpc_actions.js +3 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +3 -3
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/logger.d.ts.map +1 -1
- package/dist/cli/logger.js +1 -1
- package/dist/cli/util.d.ts.map +1 -1
- package/dist/cli/util.js +1 -1
- package/dist/db/CLAUDE.md +16 -6
- package/dist/db/cell_audit_queries.d.ts.map +1 -1
- package/dist/db/cell_audit_queries.js +1 -1
- package/dist/db/cell_ddl.d.ts +14 -1
- package/dist/db/cell_ddl.d.ts.map +1 -1
- package/dist/db/cell_ddl.js +26 -6
- package/dist/db/cell_field_queries.d.ts.map +1 -1
- package/dist/db/cell_grant_queries.d.ts.map +1 -1
- package/dist/db/cell_grant_queries.js +1 -1
- package/dist/db/cell_history_ddl.d.ts.map +1 -1
- package/dist/db/cell_history_ddl.js +4 -4
- package/dist/db/cell_item_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.d.ts +46 -1
- package/dist/db/cell_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.js +42 -5
- package/dist/db/create_db.d.ts.map +1 -1
- package/dist/db/create_db.js +1 -1
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db_pg.d.ts.map +1 -1
- package/dist/db/db_pg.js +1 -1
- package/dist/db/db_pglite.d.ts.map +1 -1
- package/dist/db/db_pglite.js +1 -1
- package/dist/db/fact_ddl.d.ts.map +1 -1
- package/dist/db/fact_ddl.js +3 -3
- package/dist/db/fact_disk_storage.d.ts +1 -1
- package/dist/db/fact_disk_storage.d.ts.map +1 -1
- package/dist/db/fact_disk_storage.js +6 -6
- package/dist/db/fact_queries.d.ts +1 -1
- package/dist/db/fact_queries.d.ts.map +1 -1
- package/dist/db/fact_queries.js +2 -2
- package/dist/db/fact_store.d.ts +1 -1
- package/dist/db/fact_store.d.ts.map +1 -1
- package/dist/db/fact_store.js +9 -9
- package/dist/db/fact_store_errors.d.ts.map +1 -1
- package/dist/db/file_fact_url.d.ts +1 -1
- package/dist/db/file_fact_url.d.ts.map +1 -1
- package/dist/db/file_fact_url.js +1 -1
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/pg_error.d.ts.map +1 -1
- package/dist/db/query_deps.d.ts.map +1 -1
- package/dist/db/schema_ready.d.ts.map +1 -1
- package/dist/db/schema_ready.js +2 -2
- package/dist/db/status.d.ts.map +1 -1
- package/dist/db/status.js +6 -6
- package/dist/dev/setup.d.ts.map +1 -1
- package/dist/dev/setup.js +6 -6
- package/dist/env/dotenv.d.ts.map +1 -1
- package/dist/env/load.d.ts.map +1 -1
- package/dist/env/resolve.d.ts.map +1 -1
- package/dist/hono_context.d.ts.map +1 -1
- package/dist/hono_context.js +2 -2
- package/dist/http/auth_shape.d.ts.map +1 -1
- package/dist/http/auth_shape.js +6 -6
- package/dist/http/client_ip.d.ts.map +1 -1
- package/dist/http/common_routes.d.ts.map +1 -1
- package/dist/http/common_routes.js +8 -8
- package/dist/http/db_routes.d.ts.map +1 -1
- package/dist/http/db_routes.js +27 -23
- package/dist/http/error_schemas.d.ts +1 -1
- package/dist/http/error_schemas.d.ts.map +1 -1
- package/dist/http/error_schemas.js +13 -13
- package/dist/http/jsonrpc.d.ts.map +1 -1
- package/dist/http/jsonrpc.js +9 -9
- package/dist/http/jsonrpc_errors.d.ts.map +1 -1
- package/dist/http/jsonrpc_errors.js +21 -21
- package/dist/http/jsonrpc_helpers.d.ts.map +1 -1
- package/dist/http/jsonrpc_helpers.js +7 -7
- package/dist/http/middleware_spec.d.ts.map +1 -1
- package/dist/http/origin.d.ts.map +1 -1
- package/dist/http/pending_effects.d.ts.map +1 -1
- package/dist/http/proxy.d.ts.map +1 -1
- package/dist/http/proxy.js +1 -1
- package/dist/http/route_spec.d.ts.map +1 -1
- package/dist/http/route_spec.js +6 -6
- package/dist/http/schema_helpers.d.ts.map +1 -1
- package/dist/http/schema_helpers.js +1 -1
- package/dist/http/surface.d.ts.map +1 -1
- package/dist/http/surface.js +11 -11
- package/dist/http/surface_query.d.ts.map +1 -1
- package/dist/http/surface_query.js +1 -1
- package/dist/primitive_schemas.d.ts.map +1 -1
- package/dist/primitive_schemas.js +1 -1
- package/dist/rate_limiter.d.ts.map +1 -1
- package/dist/rate_limiter.js +4 -4
- package/dist/realtime/sse.d.ts.map +1 -1
- package/dist/realtime/sse.js +2 -2
- package/dist/realtime/sse_auth_guard.d.ts +4 -4
- package/dist/realtime/sse_auth_guard.d.ts.map +1 -1
- package/dist/realtime/sse_auth_guard.js +8 -8
- package/dist/realtime/subscriber_registry.d.ts.map +1 -1
- package/dist/runtime/deno.d.ts.map +1 -1
- package/dist/runtime/deno.js +7 -7
- package/dist/runtime/deps.d.ts.map +1 -1
- package/dist/runtime/fs.d.ts.map +1 -1
- package/dist/runtime/mock.d.ts.map +1 -1
- package/dist/runtime/mock.js +3 -3
- package/dist/runtime/node.d.ts.map +1 -1
- package/dist/runtime/node.js +7 -7
- package/dist/schema_meta.d.ts.map +1 -1
- package/dist/server/app_backend.d.ts +3 -3
- package/dist/server/app_backend.d.ts.map +1 -1
- package/dist/server/app_backend.js +3 -3
- package/dist/server/app_server.d.ts +6 -6
- package/dist/server/app_server.d.ts.map +1 -1
- package/dist/server/app_server.js +32 -32
- package/dist/server/app_server_context.d.ts.map +1 -1
- package/dist/server/env.d.ts.map +1 -1
- package/dist/server/env.js +9 -9
- package/dist/server/fact_write.d.ts +1 -1
- package/dist/server/fact_write.d.ts.map +1 -1
- package/dist/server/fact_write.js +2 -1
- package/dist/server/file_fact_fetcher.d.ts.map +1 -1
- package/dist/server/file_fact_fetcher.js +1 -1
- package/dist/server/serve_fact_route.d.ts.map +1 -1
- package/dist/server/serve_fact_route.js +15 -13
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/validate_nginx.js +1 -1
- package/dist/server/x_accel.d.ts.map +1 -1
- package/dist/server/x_accel.js +1 -1
- package/dist/testing/CLAUDE.md +27 -18
- package/dist/testing/admin_integration.d.ts.map +1 -1
- package/dist/testing/admin_integration.js +62 -62
- package/dist/testing/adversarial_404.d.ts.map +1 -1
- package/dist/testing/adversarial_404.js +1 -1
- package/dist/testing/adversarial_headers.d.ts.map +1 -1
- package/dist/testing/adversarial_headers.js +15 -15
- package/dist/testing/adversarial_input.d.ts.map +1 -1
- package/dist/testing/adversarial_input.js +22 -22
- package/dist/testing/app_server.d.ts.map +1 -1
- package/dist/testing/app_server.js +32 -32
- package/dist/testing/assertions.d.ts.map +1 -1
- package/dist/testing/attack_surface.d.ts.map +1 -1
- package/dist/testing/attack_surface.js +12 -12
- package/dist/testing/audit_completeness.d.ts.map +1 -1
- package/dist/testing/audit_completeness.js +41 -41
- package/dist/testing/audit_drift_guard.d.ts +3 -1
- package/dist/testing/audit_drift_guard.d.ts.map +1 -1
- package/dist/testing/audit_drift_guard.js +12 -6
- package/dist/testing/auth_apps.d.ts.map +1 -1
- package/dist/testing/auth_apps.js +4 -4
- package/dist/testing/bootstrap_success.d.ts.map +1 -1
- package/dist/testing/bootstrap_success.js +11 -11
- package/dist/testing/connection_closer_helpers.d.ts.map +1 -1
- package/dist/testing/connection_closer_helpers.js +1 -1
- package/dist/testing/cross_backend/account_lifecycle.d.ts.map +1 -1
- package/dist/testing/cross_backend/account_lifecycle.js +1 -1
- package/dist/testing/cross_backend/action_manifest.d.ts.map +1 -1
- package/dist/testing/cross_backend/action_manifest.js +4 -4
- package/dist/testing/cross_backend/action_manifest_parity.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_lookup.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_lookup.js +3 -3
- package/dist/testing/cross_backend/actor_search.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_search.js +5 -5
- package/dist/testing/cross_backend/app_settings.d.ts.map +1 -1
- package/dist/testing/cross_backend/app_settings.js +6 -6
- package/dist/testing/cross_backend/backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/bench_report.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/bench_report.js +5 -5
- package/dist/testing/cross_backend/bench/run_cross_impl_bench.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/run_cross_impl_bench.js +2 -2
- package/dist/testing/cross_backend/bench/scenario.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/scenario.js +1 -1
- package/dist/testing/cross_backend/body_size.d.ts.map +1 -1
- package/dist/testing/cross_backend/body_size.js +1 -1
- package/dist/testing/cross_backend/bootstrap_backend.d.ts.map +1 -1
- package/dist/testing/cross_backend/bootstrap_backend.js +2 -2
- package/dist/testing/cross_backend/build_test_backend_paths.js +1 -1
- package/dist/testing/cross_backend/capabilities.js +2 -2
- package/dist/testing/cross_backend/cell_cross_helpers.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.js +5 -2
- package/dist/testing/cross_backend/cell_gated_create.d.ts +24 -0
- package/dist/testing/cross_backend/cell_gated_create.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_gated_create.js +178 -35
- package/dist/testing/cross_backend/cell_grant_role.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_grant_role.js +2 -2
- package/dist/testing/cross_backend/cell_relations.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_relations.js +13 -13
- package/dist/testing/cross_backend/conformance_case.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_case.js +11 -11
- package/dist/testing/cross_backend/conformance_table.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_table.js +11 -11
- package/dist/testing/cross_backend/cookie_attributes.d.ts.map +1 -1
- package/dist/testing/cross_backend/cookie_attributes.js +4 -4
- package/dist/testing/cross_backend/create_cross_backend_global_setup.d.ts +1 -1
- package/dist/testing/cross_backend/create_cross_backend_global_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/create_cross_backend_global_setup.js +1 -1
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.d.ts +1 -1
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.js +1 -1
- package/dist/testing/cross_backend/credential_header_robustness.js +1 -1
- package/dist/testing/cross_backend/default_backend_configs.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_backend_configs.js +12 -12
- package/dist/testing/cross_backend/default_spine_surface.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_spine_surface.js +9 -9
- package/dist/testing/cross_backend/expected_schema.json +3 -0
- package/dist/testing/cross_backend/fact_serving.d.ts.map +1 -1
- 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 +11 -8
- package/dist/testing/cross_backend/identity_parity.d.ts.map +1 -1
- package/dist/testing/cross_backend/identity_parity.js +28 -24
- package/dist/testing/cross_backend/in_process_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/in_process_setup.js +9 -9
- package/dist/testing/cross_backend/login_security.d.ts.map +1 -1
- package/dist/testing/cross_backend/login_security.js +2 -2
- package/dist/testing/cross_backend/make_cross_backend_project.d.ts +1 -1
- package/dist/testing/cross_backend/make_cross_backend_project.d.ts.map +1 -1
- package/dist/testing/cross_backend/make_cross_backend_project.js +3 -3
- package/dist/testing/cross_backend/method_coverage.d.ts.map +1 -1
- package/dist/testing/cross_backend/origin.d.ts.map +1 -1
- package/dist/testing/cross_backend/origin.js +4 -4
- package/dist/testing/cross_backend/peer_ping_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/peer_ping_ws.js +6 -6
- package/dist/testing/cross_backend/ready.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_enumeration.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_enumeration.js +1 -1
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.js +1 -1
- package/dist/testing/cross_backend/role_grant_participation.d.ts.map +1 -1
- 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 +5 -5
- package/dist/testing/cross_backend/setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/setup.js +36 -36
- package/dist/testing/cross_backend/spawn_backend.d.ts.map +1 -1
- package/dist/testing/cross_backend/spawn_backend.js +1 -1
- package/dist/testing/cross_backend/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/sse_round_trip.js +10 -7
- package/dist/testing/cross_backend/standard.d.ts.map +1 -1
- package/dist/testing/cross_backend/standard.js +5 -5
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts +12 -7
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts.map +1 -1
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.js +54 -15
- package/dist/testing/cross_backend/testing_backdoor.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_backdoor.js +7 -7
- package/dist/testing/cross_backend/testing_reset_actions.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_reset_actions.js +24 -23
- package/dist/testing/cross_backend/testing_server_bun.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_bun.js +3 -3
- package/dist/testing/cross_backend/testing_server_core.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_core.js +1 -1
- package/dist/testing/cross_backend/testing_server_deno.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_deno.js +1 -1
- package/dist/testing/cross_backend/testing_server_node.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_node.js +3 -3
- package/dist/testing/cross_backend/ts_spine_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/ts_spine_backend_config.js +13 -13
- package/dist/testing/cross_backend/ws_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_round_trip.js +2 -2
- package/dist/testing/data_exposure.d.ts.map +1 -1
- package/dist/testing/data_exposure.js +8 -8
- package/dist/testing/db.d.ts.map +1 -1
- package/dist/testing/db.js +3 -3
- package/dist/testing/db_entities.d.ts.map +1 -1
- package/dist/testing/db_entities.js +1 -1
- package/dist/testing/entities.d.ts.map +1 -1
- package/dist/testing/entities.js +5 -5
- package/dist/testing/error_coverage.d.ts.map +1 -1
- package/dist/testing/integration.d.ts.map +1 -1
- package/dist/testing/integration.js +106 -106
- package/dist/testing/integration_helpers.d.ts.map +1 -1
- package/dist/testing/integration_helpers.js +3 -3
- package/dist/testing/middleware.d.ts.map +1 -1
- package/dist/testing/middleware.js +11 -11
- package/dist/testing/mock_fs.js +1 -1
- package/dist/testing/rate_limiting.d.ts.map +1 -1
- package/dist/testing/rate_limiting.js +23 -23
- package/dist/testing/role_grant_helpers.d.ts.map +1 -1
- package/dist/testing/role_grant_helpers.js +3 -3
- package/dist/testing/round_trip.d.ts.map +1 -1
- package/dist/testing/round_trip.js +6 -6
- package/dist/testing/rpc_attack_surface.d.ts.map +1 -1
- package/dist/testing/rpc_attack_surface.js +12 -12
- package/dist/testing/rpc_helpers.d.ts.map +1 -1
- package/dist/testing/rpc_helpers.js +11 -11
- package/dist/testing/rpc_round_trip.d.ts.map +1 -1
- package/dist/testing/rpc_round_trip.js +3 -3
- package/dist/testing/schema_generators.d.ts.map +1 -1
- package/dist/testing/schema_generators.js +3 -3
- package/dist/testing/schema_introspect.d.ts.map +1 -1
- package/dist/testing/schema_introspect.js +12 -12
- package/dist/testing/schema_parity.d.ts.map +1 -1
- package/dist/testing/schema_parity.js +7 -7
- package/dist/testing/schema_ready_fixture.d.ts.map +1 -1
- package/dist/testing/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/sse_round_trip.js +8 -8
- package/dist/testing/standard.d.ts.map +1 -1
- package/dist/testing/standard.js +8 -8
- package/dist/testing/stubs.d.ts +6 -6
- package/dist/testing/stubs.d.ts.map +1 -1
- package/dist/testing/stubs.js +26 -23
- package/dist/testing/surface_invariants.d.ts.map +1 -1
- package/dist/testing/surface_invariants.js +5 -5
- package/dist/testing/testing_rate_limiter.d.ts.map +1 -1
- package/dist/testing/transports/bootstrap.d.ts.map +1 -1
- package/dist/testing/transports/bootstrap.js +4 -4
- package/dist/testing/transports/fetch_transport.d.ts.map +1 -1
- package/dist/testing/transports/sse_frame_reader.d.ts.map +1 -1
- package/dist/testing/transports/sse_transport.js +1 -1
- package/dist/testing/transports/ws_client.d.ts.map +1 -1
- package/dist/testing/transports/ws_client.js +1 -1
- package/dist/testing/transports/ws_transport.js +4 -4
- package/dist/testing/ws_round_trip.d.ts.map +1 -1
- package/dist/testing/ws_round_trip.js +21 -21
- package/dist/ui/AccountSessions.svelte +11 -11
- package/dist/ui/AdminAccounts.svelte +10 -10
- package/dist/ui/AdminAuditLog.svelte +14 -14
- package/dist/ui/AdminInvites.svelte +13 -13
- package/dist/ui/AdminOverview.svelte +22 -22
- package/dist/ui/AdminRoleGrantHistory.svelte +11 -11
- package/dist/ui/AdminSessions.svelte +12 -12
- package/dist/ui/AdminSettings.svelte +1 -1
- package/dist/ui/AdminSurface.svelte +3 -3
- package/dist/ui/AppShell.svelte +8 -8
- package/dist/ui/AppShell.svelte.d.ts.map +1 -1
- package/dist/ui/BootstrapForm.svelte +9 -9
- package/dist/ui/CLAUDE.md +1 -1
- package/dist/ui/ColumnLayout.svelte +2 -2
- package/dist/ui/ColumnLayout.svelte.d.ts.map +1 -1
- package/dist/ui/ConfirmButton.svelte +8 -8
- package/dist/ui/ConfirmButton.svelte.d.ts.map +1 -1
- package/dist/ui/Datatable.svelte +6 -6
- package/dist/ui/Datatable.svelte.d.ts.map +1 -1
- package/dist/ui/LoginForm.svelte +6 -6
- package/dist/ui/LogoutButton.svelte +2 -2
- package/dist/ui/LogoutButton.svelte.d.ts.map +1 -1
- package/dist/ui/MenuLink.svelte +5 -5
- package/dist/ui/MenuLink.svelte.d.ts.map +1 -1
- package/dist/ui/OpenSignupToggle.svelte +2 -2
- package/dist/ui/PopoverButton.svelte +10 -10
- package/dist/ui/PopoverButton.svelte.d.ts.map +1 -1
- package/dist/ui/RoleGrantOfferForm.svelte +8 -11
- package/dist/ui/RoleGrantOfferForm.svelte.d.ts.map +1 -1
- package/dist/ui/RoleGrantOfferHistory.svelte +11 -11
- package/dist/ui/RoleGrantOfferHistory.svelte.d.ts.map +1 -1
- package/dist/ui/RoleGrantOfferInbox.svelte +6 -6
- package/dist/ui/RoleGrantOfferInbox.svelte.d.ts.map +1 -1
- package/dist/ui/SignupForm.svelte +9 -9
- package/dist/ui/SurfaceExplorer.svelte +11 -11
- package/dist/ui/SurfaceExplorer.svelte.d.ts.map +1 -1
- package/dist/ui/account_sessions_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_accounts_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_accounts_state.svelte.js +2 -2
- package/dist/ui/admin_invites_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_rpc_adapters.d.ts.map +1 -1
- package/dist/ui/admin_rpc_adapters.js +5 -5
- package/dist/ui/admin_sessions_state.svelte.d.ts.map +1 -1
- package/dist/ui/app_settings_state.svelte.d.ts.map +1 -1
- package/dist/ui/async_slot.svelte.d.ts.map +1 -1
- package/dist/ui/audit_log_state.svelte.d.ts.map +1 -1
- package/dist/ui/audit_log_state.svelte.js +1 -1
- package/dist/ui/auth_state.svelte.js +4 -4
- package/dist/ui/form_state.svelte.d.ts.map +1 -1
- package/dist/ui/format_scope.d.ts.map +1 -1
- package/dist/ui/keyed_async_slot.svelte.d.ts.map +1 -1
- package/dist/ui/popover.svelte.d.ts.map +1 -1
- package/dist/ui/popover.svelte.js +1 -1
- package/dist/ui/position_helpers.js +1 -1
- package/dist/ui/role_grant_offers_state.svelte.d.ts.map +1 -1
- package/dist/ui/role_grant_offers_state.svelte.js +1 -1
- package/dist/ui/table_state.svelte.d.ts.map +1 -1
- package/dist/ui/ui_fetch.d.ts.map +1 -1
- package/dist/ui/ui_format.js +2 -2
- package/package.json +13 -12
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
import { Uuid } from '@fuzdev/fuz_util/id.ts';
|
|
10
|
-
import { FactHashSchema } from '@fuzdev/fuz_util/
|
|
10
|
+
import { FactHashSchema } from '@fuzdev/fuz_util/hash_schemas.ts';
|
|
11
11
|
import { ActingActor } from '../http/auth_shape.js';
|
|
12
|
-
import { all_cell_grant_action_specs, cell_grant_create_action_spec, cell_grant_revoke_action_spec, cell_grant_list_action_spec, GrantJson
|
|
13
|
-
import { all_cell_field_action_specs, cell_field_set_action_spec, cell_field_delete_action_spec, cell_field_list_action_spec, FieldJson
|
|
14
|
-
import { all_cell_item_action_specs, cell_item_insert_action_spec, cell_item_move_action_spec, cell_item_delete_action_spec, cell_item_list_action_spec, ItemJson
|
|
15
|
-
import { all_cell_audit_action_specs, cell_audit_list_action_spec
|
|
12
|
+
import { all_cell_grant_action_specs, cell_grant_create_action_spec, cell_grant_revoke_action_spec, cell_grant_list_action_spec, GrantJson } from './cell_grant_action_specs.js';
|
|
13
|
+
import { all_cell_field_action_specs, cell_field_set_action_spec, cell_field_delete_action_spec, cell_field_list_action_spec, FieldJson } from './cell_field_action_specs.js';
|
|
14
|
+
import { all_cell_item_action_specs, cell_item_insert_action_spec, cell_item_move_action_spec, cell_item_delete_action_spec, cell_item_list_action_spec, ItemJson } from './cell_item_action_specs.js';
|
|
15
|
+
import { all_cell_audit_action_specs, cell_audit_list_action_spec } from './cell_audit_action_specs.js';
|
|
16
16
|
import { CellData } from './cell_data_schema.js';
|
|
17
17
|
/**
|
|
18
18
|
* Cell visibility — the coarse-grained access-control axis for a cell.
|
|
@@ -38,7 +38,7 @@ export const CellVisibility = z.enum(['private', 'public']);
|
|
|
38
38
|
// ride the same namespace.
|
|
39
39
|
export { cell_grant_create_action_spec, cell_grant_revoke_action_spec, cell_grant_list_action_spec };
|
|
40
40
|
export { cell_field_set_action_spec, cell_field_delete_action_spec, cell_field_list_action_spec };
|
|
41
|
-
export { cell_item_insert_action_spec, cell_item_move_action_spec, cell_item_delete_action_spec, cell_item_list_action_spec
|
|
41
|
+
export { cell_item_insert_action_spec, cell_item_move_action_spec, cell_item_delete_action_spec, cell_item_list_action_spec };
|
|
42
42
|
export { cell_audit_list_action_spec };
|
|
43
43
|
// -- Error reasons ----------------------------------------------------------
|
|
44
44
|
/** Error reason — cell id did not resolve, or caller can't view it. */
|
|
@@ -77,6 +77,29 @@ export const ERROR_CELL_KIND_IN_DATA = 'cell_kind_in_data';
|
|
|
77
77
|
* `null | non-empty-string` (twin of the Rust `ERROR_CELL_KIND_EMPTY`).
|
|
78
78
|
*/
|
|
79
79
|
export const ERROR_CELL_KIND_EMPTY = 'cell_kind_empty';
|
|
80
|
+
/**
|
|
81
|
+
* Error reason — the parent-aware `CellCreateAuthorize` denied the create for a
|
|
82
|
+
* **viewable** parent (or a root creation): "you see it, you can't contribute
|
|
83
|
+
* here." A **403** `forbidden`, distinct from the create-path **404** mask used
|
|
84
|
+
* when the parent itself isn't viewable (twin of the Rust
|
|
85
|
+
* `ERROR_CELL_CREATE_FORBIDDEN`).
|
|
86
|
+
*/
|
|
87
|
+
export const ERROR_CELL_CREATE_FORBIDDEN = 'cell_create_forbidden';
|
|
88
|
+
/**
|
|
89
|
+
* Error reason — `cell_moderate` caller can view the contribution but lacks
|
|
90
|
+
* moderation authority over its governing root (not admin / not the root's
|
|
91
|
+
* manager). A **403** `forbidden`. The author can view their own pending
|
|
92
|
+
* contribution, so they reach this gate — and are denied here, which is the
|
|
93
|
+
* anti-self-approval guard (twin of the Rust `ERROR_CELL_MODERATE_FORBIDDEN`).
|
|
94
|
+
*/
|
|
95
|
+
export const ERROR_CELL_MODERATE_FORBIDDEN = 'cell_moderate_forbidden';
|
|
96
|
+
/**
|
|
97
|
+
* Error reason — `cell_moderate` target has no governing root (`root_id` is
|
|
98
|
+
* null): it's a root or an unparented cell, not a gated contribution, so there
|
|
99
|
+
* is nothing to moderate. A **400** `invalid_params` (twin of the Rust
|
|
100
|
+
* `ERROR_CELL_NOT_A_CONTRIBUTION`).
|
|
101
|
+
*/
|
|
102
|
+
export const ERROR_CELL_NOT_A_CONTRIBUTION = 'cell_not_a_contribution';
|
|
80
103
|
/**
|
|
81
104
|
* Error reason — null-auth `cell_list` caller passed a `created_by`
|
|
82
105
|
* filter. The filter is a soft account-id enumeration vector ("does
|
|
@@ -144,20 +167,29 @@ export const CellJson = z.strictObject({
|
|
|
144
167
|
path: CellPath.nullable(),
|
|
145
168
|
data: CellData,
|
|
146
169
|
kind: z.string().nullable().meta({
|
|
147
|
-
description: 'Capability / identity tag — a write-once top-level column (peer to `visibility` / `path`), not a field inside `data`. `null` for a typeless cell. The discriminator a creation authorizer gates on; fixed at birth.'
|
|
170
|
+
description: 'Capability / identity tag — a write-once top-level column (peer to `visibility` / `path`), not a field inside `data`. `null` for a typeless cell. The discriminator a creation authorizer gates on; fixed at birth.'
|
|
148
171
|
}),
|
|
149
172
|
visibility: CellVisibility.meta({
|
|
150
|
-
description: "Access-control tag. `'public'` admits everyone (including unauthenticated visitors); `'private'` (default) admits admin / owner / `cell_grant`-admitted callers. Top-level column, not inside `data`."
|
|
173
|
+
description: "Access-control tag. `'public'` admits everyone (including unauthenticated visitors); `'private'` (default) admits admin / owner / `cell_grant`-admitted callers. Top-level column, not inside `data`."
|
|
151
174
|
}),
|
|
152
175
|
refs: z.array(FactHashSchema).nullable(),
|
|
176
|
+
parent_id: Uuid.nullable().meta({
|
|
177
|
+
description: 'Immediate container in the directory tree (the directory this cell lives in). `null` = a root (parentless). Set once at create, immutable in v1.'
|
|
178
|
+
}),
|
|
179
|
+
root_id: Uuid.nullable().meta({
|
|
180
|
+
description: 'Governing root of the directory subtree, denormalized for flat-subtree queries (`root_id = parent.root_id ?? parent.id`). `null` for a root. Set once at create, immutable in v1.'
|
|
181
|
+
}),
|
|
182
|
+
moderation: z.string().nullable().meta({
|
|
183
|
+
description: "Approval-lifecycle marker for a gated contribution (`'pending'` / `'approved'` / `'rejected'`); `null` = unmoderated. A control field with a non-author writer — peer to `visibility`, never inside `data` (set by the create authorizer's verdict, transitioned only by `cell_moderate`)."
|
|
184
|
+
}),
|
|
153
185
|
created_by: Uuid.nullable(),
|
|
154
186
|
updated_by: Uuid.nullable(),
|
|
155
187
|
created_at: z.string(),
|
|
156
188
|
updated_at: z.string().nullable(),
|
|
157
189
|
deleted_at: z.string().nullable(),
|
|
158
190
|
grant_count: z.number().int().nonnegative().meta({
|
|
159
|
-
description: 'Number of `cell_grant` rows naming this cell. Non-leaky scalar (no actor/role identity); surfaces "Shared with N" badges. Derived in SQL via a correlated subquery on `idx_cell_grant_cell`.'
|
|
160
|
-
})
|
|
191
|
+
description: 'Number of `cell_grant` rows naming this cell. Non-leaky scalar (no actor/role identity); surfaces "Shared with N" badges. Derived in SQL via a correlated subquery on `idx_cell_grant_cell`.'
|
|
192
|
+
})
|
|
161
193
|
});
|
|
162
194
|
// -- cell_create ------------------------------------------------------------
|
|
163
195
|
/**
|
|
@@ -167,18 +199,21 @@ export const CellJson = z.strictObject({
|
|
|
167
199
|
*/
|
|
168
200
|
export const CellCreateInput = z.strictObject({
|
|
169
201
|
data: CellData.meta({
|
|
170
|
-
description: 'Cell content. Base fields (label / summary) typed; extras loose. A `kind` key here is rejected (`ERROR_CELL_KIND_IN_DATA`) — kind is the top-level field. Per-kind shape is sub-API.'
|
|
202
|
+
description: 'Cell content. Base fields (label / summary) typed; extras loose. A `kind` key here is rejected (`ERROR_CELL_KIND_IN_DATA`) — kind is the top-level field. Per-kind shape is sub-API.'
|
|
171
203
|
}),
|
|
172
204
|
kind: z.string().nullish().meta({
|
|
173
|
-
description: 'Capability / identity tag, written to the top-level `cell.kind` column (not `data`). Write-once — fixed at birth, not updatable. Non-empty when present (an empty string is rejected `ERROR_CELL_KIND_EMPTY`); omit / null for a typeless cell. A creation authorizer (if mounted) gates on this.'
|
|
205
|
+
description: 'Capability / identity tag, written to the top-level `cell.kind` column (not `data`). Write-once — fixed at birth, not updatable. Non-empty when present (an empty string is rejected `ERROR_CELL_KIND_EMPTY`); omit / null for a typeless cell. A creation authorizer (if mounted) gates on this.'
|
|
174
206
|
}),
|
|
175
207
|
visibility: CellVisibility.optional().meta({
|
|
176
|
-
description: "Access-control tag. Top-level column (not in `data`). Default `'private'` when omitted."
|
|
208
|
+
description: "Access-control tag. Top-level column (not in `data`). Default `'private'` when omitted."
|
|
177
209
|
}),
|
|
178
210
|
path: CellPath.nullish().meta({
|
|
179
|
-
description: 'Admin-only named lookup alias. Globally unique on active rows.'
|
|
211
|
+
description: 'Admin-only named lookup alias. Globally unique on active rows.'
|
|
180
212
|
}),
|
|
181
|
-
|
|
213
|
+
parent_id: Uuid.nullish().meta({
|
|
214
|
+
description: 'Immediate container — the directory this cell is created in. Omit / null = a root (parentless). The handler resolves `root_id` from it and gates the create through the parent-aware authorizer; `root_id` / `moderation` are handler-derived, never wire input.'
|
|
215
|
+
}),
|
|
216
|
+
acting: ActingActor
|
|
182
217
|
});
|
|
183
218
|
export const CellCreateOutput = z.strictObject({ cell: CellJson });
|
|
184
219
|
// -- cell_get ---------------------------------------------------------------
|
|
@@ -192,10 +227,10 @@ export const CellGetInput = z
|
|
|
192
227
|
.strictObject({
|
|
193
228
|
id: Uuid.optional(),
|
|
194
229
|
path: CellPath.optional(),
|
|
195
|
-
acting: ActingActor
|
|
230
|
+
acting: ActingActor
|
|
196
231
|
})
|
|
197
232
|
.refine((v) => v.id !== undefined || v.path !== undefined, {
|
|
198
|
-
message: ERROR_CELL_GET_REQUIRES_ID_OR_PATH
|
|
233
|
+
message: ERROR_CELL_GET_REQUIRES_ID_OR_PATH
|
|
199
234
|
});
|
|
200
235
|
/**
|
|
201
236
|
* Output for `cell_get`. Bundles relation arrays (`fields` + `items`)
|
|
@@ -213,7 +248,7 @@ export const CellGetOutput = z.strictObject({
|
|
|
213
248
|
items: z.array(ItemJson),
|
|
214
249
|
items_truncated: z.boolean(),
|
|
215
250
|
can_edit: z.boolean(),
|
|
216
|
-
can_grant: z.boolean()
|
|
251
|
+
can_grant: z.boolean()
|
|
217
252
|
});
|
|
218
253
|
// -- cell_update ------------------------------------------------------------
|
|
219
254
|
/**
|
|
@@ -228,20 +263,20 @@ export const CellUpdateInput = z.strictObject({
|
|
|
228
263
|
cell_id: Uuid.meta({ description: 'Cell to update.' }),
|
|
229
264
|
data: CellData.optional(),
|
|
230
265
|
visibility: CellVisibility.optional().meta({
|
|
231
|
-
description: 'Access-control tag. Top-level column (not in `data`). Manage-tier write.'
|
|
266
|
+
description: 'Access-control tag. Top-level column (not in `data`). Manage-tier write.'
|
|
232
267
|
}),
|
|
233
268
|
path: CellPath.nullable().optional().meta({ description: 'Admin-only path write.' }),
|
|
234
|
-
acting: ActingActor
|
|
269
|
+
acting: ActingActor
|
|
235
270
|
});
|
|
236
271
|
export const CellUpdateOutput = z.strictObject({ cell: CellJson });
|
|
237
272
|
// -- cell_delete ------------------------------------------------------------
|
|
238
273
|
export const CellDeleteInput = z.strictObject({
|
|
239
274
|
cell_id: Uuid.meta({ description: 'Cell to soft-delete.' }),
|
|
240
|
-
acting: ActingActor
|
|
275
|
+
acting: ActingActor
|
|
241
276
|
});
|
|
242
277
|
export const CellDeleteOutput = z.strictObject({
|
|
243
278
|
ok: z.literal(true),
|
|
244
|
-
deleted: z.boolean()
|
|
279
|
+
deleted: z.boolean()
|
|
245
280
|
});
|
|
246
281
|
// -- cell_list --------------------------------------------------------------
|
|
247
282
|
/**
|
|
@@ -272,29 +307,35 @@ export const CellListInput = z
|
|
|
272
307
|
.optional()
|
|
273
308
|
.meta({ description: 'Batch-fetch by id. Visibility predicate still applies.' }),
|
|
274
309
|
kind: z.string().optional().meta({
|
|
275
|
-
description: 'Match `cell.kind = ?`. An empty string matches nothing — no cell carries an empty kind.'
|
|
310
|
+
description: 'Match `cell.kind = ?`. An empty string matches nothing — no cell carries an empty kind.'
|
|
276
311
|
}),
|
|
277
312
|
visibility: CellVisibility.optional().meta({
|
|
278
|
-
description: "Match `cell.visibility = ?`. The SQL-side auth-narrow already filters to public-or-admitted; this is an additional narrowing filter (e.g. `visibility: 'public'` on the discovery feed so authed callers don't see their own private entries mixed in)."
|
|
313
|
+
description: "Match `cell.visibility = ?`. The SQL-side auth-narrow already filters to public-or-admitted; this is an additional narrowing filter (e.g. `visibility: 'public'` on the discovery feed so authed callers don't see their own private entries mixed in)."
|
|
279
314
|
}),
|
|
280
315
|
ref: FactHashSchema.optional().meta({ description: 'Match cells referencing this fact hash.' }),
|
|
281
316
|
created_by: Uuid.optional().meta({ description: 'Filter to a specific creator.' }),
|
|
282
317
|
path_prefix: CellPath.optional().meta({
|
|
283
|
-
description: 'Match cells whose path starts with this.'
|
|
318
|
+
description: 'Match cells whose path starts with this.'
|
|
319
|
+
}),
|
|
320
|
+
root_id: Uuid.optional().meta({
|
|
321
|
+
description: 'Scope to a directory subtree by governing root (`cell.root_id = ?`) — the feed + mod-queue key.'
|
|
322
|
+
}),
|
|
323
|
+
moderation: z.string().optional().meta({
|
|
324
|
+
description: "Filter by moderation lifecycle marker (`'pending'` drives the moderation queue)."
|
|
284
325
|
}),
|
|
285
326
|
shared_with: z.literal('me').optional().meta({
|
|
286
|
-
description: 'Narrow to cells admitting the caller via `cell_grant`, excluding cells the caller owns. Self-only — a `Uuid` form would need cross-actor role_grant loading.'
|
|
327
|
+
description: 'Narrow to cells admitting the caller via `cell_grant`, excluding cells the caller owns. Self-only — a `Uuid` form would need cross-actor role_grant loading.'
|
|
287
328
|
}),
|
|
288
329
|
order_by: z.enum(['created_at', 'updated_at']).optional(),
|
|
289
330
|
order_direction: z.enum(['asc', 'desc']).optional(),
|
|
290
331
|
limit: z.number().int().positive().max(CELL_LIST_LIMIT_MAX).optional(),
|
|
291
332
|
offset: z.number().int().nonnegative().optional(),
|
|
292
|
-
acting: ActingActor
|
|
333
|
+
acting: ActingActor
|
|
293
334
|
})
|
|
294
335
|
.default({});
|
|
295
336
|
export const CellListOutput = z.strictObject({
|
|
296
337
|
cells: z.array(CellJson),
|
|
297
|
-
cell_grants: z.record(z.string(), z.array(GrantJson)).optional()
|
|
338
|
+
cell_grants: z.record(z.string(), z.array(GrantJson)).optional()
|
|
298
339
|
});
|
|
299
340
|
// -- cell_clone -------------------------------------------------------------
|
|
300
341
|
/**
|
|
@@ -307,7 +348,7 @@ export const CellListOutput = z.strictObject({
|
|
|
307
348
|
export const CellCloneInput = z.strictObject({
|
|
308
349
|
source_id: Uuid.meta({ description: 'Cell to clone.' }),
|
|
309
350
|
deep: z.boolean().optional().meta({
|
|
310
|
-
description: 'Recurse into `items[]` (depth=1 — clones direct children only). Default false.'
|
|
351
|
+
description: 'Recurse into `items[]` (depth=1 — clones direct children only). Default false.'
|
|
311
352
|
}),
|
|
312
353
|
// TODO: cap `with_data_patch` size/depth once a consumer measures the
|
|
313
354
|
// upper bound. `z.json()` is unbounded — a multi-MB patch is in scope
|
|
@@ -315,11 +356,35 @@ export const CellCloneInput = z.strictObject({
|
|
|
315
356
|
// O(few KB); a `.refine` on serialized size would tighten the surface
|
|
316
357
|
// without disturbing the patch-wins-last semantics.
|
|
317
358
|
with_data_patch: CellData.optional().meta({
|
|
318
|
-
description: "Optional shallow patch merged into the new root cell's `data` (patch-last semantics)."
|
|
359
|
+
description: "Optional shallow patch merged into the new root cell's `data` (patch-last semantics)."
|
|
319
360
|
}),
|
|
320
|
-
acting: ActingActor
|
|
361
|
+
acting: ActingActor
|
|
321
362
|
});
|
|
322
363
|
export const CellCloneOutput = z.strictObject({ cell: CellJson });
|
|
364
|
+
// -- cell_moderate ----------------------------------------------------------
|
|
365
|
+
/**
|
|
366
|
+
* The terminal transition a `cell_moderate` call applies to a gated
|
|
367
|
+
* contribution's `moderation` lifecycle. The born state (`'pending'`) is set
|
|
368
|
+
* by the create authorizer, never on the wire; the verb only moves it to a
|
|
369
|
+
* terminal state. `'approved'` publishes (also flips `visibility → 'public'`);
|
|
370
|
+
* `'rejected'` leaves it private.
|
|
371
|
+
*/
|
|
372
|
+
export const CellModerationDecision = z.enum(['approved', 'rejected']);
|
|
373
|
+
/**
|
|
374
|
+
* Input for `cell_moderate` — the `pending → approved | rejected` transition,
|
|
375
|
+
* gated on moderation authority over the **governing root** (admin / root
|
|
376
|
+
* owner in v1), not the contribution (which the author manages, and could
|
|
377
|
+
* otherwise self-approve). 404 when the target isn't viewable; 403 when it is
|
|
378
|
+
* but the caller isn't a root manager (the author lands here).
|
|
379
|
+
*/
|
|
380
|
+
export const CellModerateInput = z.strictObject({
|
|
381
|
+
cell_id: Uuid.meta({ description: 'Contribution to moderate.' }),
|
|
382
|
+
moderation: CellModerationDecision.meta({
|
|
383
|
+
description: 'Terminal decision: `approved` (publishes, visibility → public) or `rejected`.'
|
|
384
|
+
}),
|
|
385
|
+
acting: ActingActor
|
|
386
|
+
});
|
|
387
|
+
export const CellModerateOutput = z.strictObject({ cell: CellJson });
|
|
323
388
|
// -- Action specs -----------------------------------------------------------
|
|
324
389
|
export const cell_create_action_spec = {
|
|
325
390
|
method: 'cell_create',
|
|
@@ -331,7 +396,7 @@ export const cell_create_action_spec = {
|
|
|
331
396
|
output: CellCreateOutput,
|
|
332
397
|
async: true,
|
|
333
398
|
rate_limit: 'account',
|
|
334
|
-
description: 'Create a cell. Handler stamps `created_by` from auth.actor.id; `path` writes are admin-only. Per-account rate-limited to bound write-spam.'
|
|
399
|
+
description: 'Create a cell. Handler stamps `created_by` from auth.actor.id; `path` writes are admin-only. Per-account rate-limited to bound write-spam.'
|
|
335
400
|
};
|
|
336
401
|
export const cell_get_action_spec = {
|
|
337
402
|
method: 'cell_get',
|
|
@@ -343,7 +408,7 @@ export const cell_get_action_spec = {
|
|
|
343
408
|
output: CellGetOutput,
|
|
344
409
|
async: true,
|
|
345
410
|
rate_limit: 'ip',
|
|
346
|
-
description: 'Fetch a cell by id or path. Per-row authz via `can_view_cell`; unauthed callers get only `cell.visibility === "public"` cells. 404 on miss or unauthorized — no existence leak. Bundled relations are filtered to viewable targets. Per-IP rate-limited as the defense-in-depth complement to `cell_list`: an id-walker that learns ids from a side channel can pivot from the enumeration entry point to per-row reads.'
|
|
411
|
+
description: 'Fetch a cell by id or path. Per-row authz via `can_view_cell`; unauthed callers get only `cell.visibility === "public"` cells. 404 on miss or unauthorized — no existence leak. Bundled relations are filtered to viewable targets. Per-IP rate-limited as the defense-in-depth complement to `cell_list`: an id-walker that learns ids from a side channel can pivot from the enumeration entry point to per-row reads.'
|
|
347
412
|
};
|
|
348
413
|
export const cell_update_action_spec = {
|
|
349
414
|
method: 'cell_update',
|
|
@@ -354,7 +419,7 @@ export const cell_update_action_spec = {
|
|
|
354
419
|
input: CellUpdateInput,
|
|
355
420
|
output: CellUpdateOutput,
|
|
356
421
|
async: true,
|
|
357
|
-
description: 'Update a cell. Per-row `can_edit_cell` (admin / owner / editor-grant). `visibility` writes require the manage tier (admin / owner). `path` writes are admin-only. Stamps `updated_by`.'
|
|
422
|
+
description: 'Update a cell. Per-row `can_edit_cell` (admin / owner / editor-grant). `visibility` writes require the manage tier (admin / owner). `path` writes are admin-only. Stamps `updated_by`.'
|
|
358
423
|
};
|
|
359
424
|
export const cell_delete_action_spec = {
|
|
360
425
|
method: 'cell_delete',
|
|
@@ -365,7 +430,7 @@ export const cell_delete_action_spec = {
|
|
|
365
430
|
input: CellDeleteInput,
|
|
366
431
|
output: CellDeleteOutput,
|
|
367
432
|
async: true,
|
|
368
|
-
description: 'Soft-delete a cell. Per-row `can_edit_cell` (admin / owner / editor-grant).'
|
|
433
|
+
description: 'Soft-delete a cell. Per-row `can_edit_cell` (admin / owner / editor-grant).'
|
|
369
434
|
};
|
|
370
435
|
export const cell_list_action_spec = {
|
|
371
436
|
method: 'cell_list',
|
|
@@ -377,7 +442,7 @@ export const cell_list_action_spec = {
|
|
|
377
442
|
output: CellListOutput,
|
|
378
443
|
async: true,
|
|
379
444
|
rate_limit: 'ip',
|
|
380
|
-
description: 'List cells with optional filters. SQL-side visibility predicate: admin sees all; authed see owned + public + grant-admitted; null auth sees public-only. `created_by` filter is rejected for null auth (account-id enumeration guard). Per-IP rate-limited to bound the public-enumeration surface (paired with `actor_lookup` it would be a scrape primitive).'
|
|
445
|
+
description: 'List cells with optional filters. SQL-side visibility predicate: admin sees all; authed see owned + public + grant-admitted; null auth sees public-only. `created_by` filter is rejected for null auth (account-id enumeration guard). Per-IP rate-limited to bound the public-enumeration surface (paired with `actor_lookup` it would be a scrape primitive).'
|
|
381
446
|
};
|
|
382
447
|
export const cell_clone_action_spec = {
|
|
383
448
|
method: 'cell_clone',
|
|
@@ -389,11 +454,23 @@ export const cell_clone_action_spec = {
|
|
|
389
454
|
output: CellCloneOutput,
|
|
390
455
|
async: true,
|
|
391
456
|
rate_limit: 'account',
|
|
392
|
-
description: 'Clone a cell (optionally deep). New owner is the caller; `path` is always nulled. Provenance recorded only in the `cell_clone` audit row. Per-account rate-limited — `deep: true` walks `cell_item` rows and fans out, so unbounded clone is a write-amplification vector.'
|
|
457
|
+
description: 'Clone a cell (optionally deep). New owner is the caller; `path` is always nulled. Provenance recorded only in the `cell_clone` audit row. Per-account rate-limited — `deep: true` walks `cell_item` rows and fans out, so unbounded clone is a write-amplification vector.'
|
|
458
|
+
};
|
|
459
|
+
export const cell_moderate_action_spec = {
|
|
460
|
+
method: 'cell_moderate',
|
|
461
|
+
kind: 'request_response',
|
|
462
|
+
initiator: 'frontend',
|
|
463
|
+
auth: { account: 'required', actor: 'required' },
|
|
464
|
+
side_effects: true,
|
|
465
|
+
input: CellModerateInput,
|
|
466
|
+
output: CellModerateOutput,
|
|
467
|
+
async: true,
|
|
468
|
+
rate_limit: 'account',
|
|
469
|
+
description: 'Moderate a gated contribution (`pending → approved | rejected`). Gated on moderation authority over the governing root (admin / root owner), not the contribution — so the author cannot self-approve. Approval flips `moderation → approved` + `visibility → public`; rejection sets `moderation → rejected`. 404 on an unviewable target, 403 for a viewable target whose caller is not a root manager.'
|
|
393
470
|
};
|
|
394
471
|
/**
|
|
395
472
|
* All cell-layer action specs — composed by app registries. Bundles the
|
|
396
|
-
*
|
|
473
|
+
* seven generic verbs (this module), the three `cell_grant_*` specs, the
|
|
397
474
|
* three `cell_field_*` specs, the four `cell_item_*` specs, and the
|
|
398
475
|
* `cell_audit_list` spec so codegen + UI clients see a single cell
|
|
399
476
|
* namespace.
|
|
@@ -405,8 +482,9 @@ export const all_cell_action_specs = [
|
|
|
405
482
|
cell_delete_action_spec,
|
|
406
483
|
cell_list_action_spec,
|
|
407
484
|
cell_clone_action_spec,
|
|
485
|
+
cell_moderate_action_spec,
|
|
408
486
|
...all_cell_grant_action_specs,
|
|
409
487
|
...all_cell_field_action_specs,
|
|
410
488
|
...all_cell_item_action_specs,
|
|
411
|
-
...all_cell_audit_action_specs
|
|
489
|
+
...all_cell_audit_action_specs
|
|
412
490
|
];
|
|
@@ -40,33 +40,56 @@
|
|
|
40
40
|
*/
|
|
41
41
|
import { type RpcAction } from '../actions/action_rpc.js';
|
|
42
42
|
import { type RequestActorContext } from './request_context.js';
|
|
43
|
-
import type {
|
|
43
|
+
import type { ActionFactoryDeps } from './deps.js';
|
|
44
44
|
import type { Uuid } from '@fuzdev/fuz_util/id.ts';
|
|
45
45
|
import { type CellJson } from './cell_action_specs.js';
|
|
46
46
|
import { type CellRow } from '../db/cell_queries.js';
|
|
47
47
|
import type { CellData } from './cell_data_schema.js';
|
|
48
48
|
/**
|
|
49
49
|
* Input to a `CellCreateAuthorize` callback — the TS twin of the Rust
|
|
50
|
-
* `CellCreateAuthorizeInput`.
|
|
50
|
+
* `CellCreateAuthorizeInput`. **Parent-aware**: it carries the directory
|
|
51
|
+
* context (`parent_id` / the handler-resolved `root_id`) so the authorizer can
|
|
52
|
+
* resolve the governing root's policy.
|
|
51
53
|
*/
|
|
52
54
|
export interface CellCreateAuthorizeInput {
|
|
53
55
|
/** The cell's `kind` (the top-level `cell.kind` value); `null` for a typeless cell. */
|
|
54
56
|
kind: string | null;
|
|
55
57
|
/** The cell `data` (kind-free — a `kind` key is rejected upstream). For richer M3-era policies (e.g. content pre-screen). */
|
|
56
58
|
data: CellData;
|
|
59
|
+
/** The immediate container the create targets. `null` = a root creation; otherwise a contribution under that parent. */
|
|
60
|
+
parent_id: Uuid | null;
|
|
61
|
+
/** The governing root of the directory subtree, resolved by the handler from the parent (`parent.root_id ?? parent.id`). `null` for a root creation. */
|
|
62
|
+
root_id: Uuid | null;
|
|
63
|
+
/** The governing root's `data` — the handler reads it in-tx (when an authorizer is mounted) and hands it over, so a directory-aware authorizer resolves `root.data.policy[kind]` **without a DB read of its own** (pure predicate; reading in-tx avoids the single-connection PGlite deadlock a separate handle would hit). `null` for a root creation, or when no authorizer is mounted. */
|
|
64
|
+
root_data: CellData | null;
|
|
57
65
|
/** Target scope — designed-in for M2 space-scoping; **always `null` in v1** (cells carry no scope column). */
|
|
58
66
|
scope_id: Uuid | null;
|
|
59
67
|
}
|
|
60
68
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* calls) — the create handler is already async with `auth` in hand.
|
|
69
|
+
* An authorizer's decision for a `cell_create` — the TS twin of the Rust
|
|
70
|
+
* `Verdict`. Folds the moderation outcome into the authority decision (one
|
|
71
|
+
* policy resolution, not two): `{allow: false}` denies (the handler surfaces a
|
|
72
|
+
* 403 `forbidden` for a viewable parent / a root creation), `{allow: true,
|
|
73
|
+
* moderation_required}` admits — `true` → born `pending` + private, `false` →
|
|
74
|
+
* born `approved` at the author's visibility.
|
|
68
75
|
*/
|
|
69
|
-
export type
|
|
76
|
+
export type CellCreateVerdict = {
|
|
77
|
+
allow: false;
|
|
78
|
+
} | {
|
|
79
|
+
allow: true;
|
|
80
|
+
moderation_required: boolean;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Opt-in, parent-aware creation authorizer — the TS twin of the Rust
|
|
84
|
+
* `CellCreateAuthorize` trait. Gates both roots (`parent_id = null`) and
|
|
85
|
+
* contributions; answers "may *this actor* create *this kind* here?" and
|
|
86
|
+
* returns a `CellCreateVerdict`. Runs in `cell_create` after `validate_data`
|
|
87
|
+
* and after the handler resolves `root_id` from the parent (an unviewable
|
|
88
|
+
* parent already 404-masks before this runs). Omitted = today's open create
|
|
89
|
+
* (all consumers untouched). Async-capable (DB / policy calls) — a DB-backed
|
|
90
|
+
* impl closes over its own `db` (the create handler stays unaware).
|
|
91
|
+
*/
|
|
92
|
+
export type CellCreateAuthorize = (auth: RequestActorContext, input: CellCreateAuthorizeInput) => CellCreateVerdict | Promise<CellCreateVerdict>;
|
|
70
93
|
/**
|
|
71
94
|
* Dependencies for `create_cell_actions`.
|
|
72
95
|
*
|
|
@@ -81,7 +104,7 @@ export type CellCreateAuthorize = (auth: RequestActorContext, input: CellCreateA
|
|
|
81
104
|
* `authorize_create` is the optional creation-gate hook (see
|
|
82
105
|
* `CellCreateAuthorize`). When omitted, create is open (today's behavior).
|
|
83
106
|
*/
|
|
84
|
-
export type CellActionDeps =
|
|
107
|
+
export type CellActionDeps = ActionFactoryDeps & {
|
|
85
108
|
validate_data?: (data: CellData) => CellData;
|
|
86
109
|
authorize_create?: CellCreateAuthorize;
|
|
87
110
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell_actions.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/auth/cell_actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,
|
|
1
|
+
{"version":3,"file":"cell_actions.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/auth/cell_actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAY,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAoCN,KAAK,QAAQ,EAEb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EASN,KAAK,OAAO,EACZ,MAAM,uBAAuB,CAAC;AAyB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACxC,uFAAuF;IACvF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6HAA6H;IAC7H,IAAI,EAAE,QAAQ,CAAC;IACf,wHAAwH;IACxH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,wJAAwJ;IACxJ,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,6XAA6X;IAC7X,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,8GAA8G;IAC9G,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjG;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,CACjC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,wBAAwB,KAC3B,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAChD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC;IAC7C,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,CAAC;AAkCF,eAAO,MAAM,YAAY,GAAI,KAAK,OAAO,KAAG,QAgB1C,CAAC;AA2BH,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB,GAAI,MAAM,cAAc,KAAG,KAAK,CAAC,SAAS,CAinBzE,CAAC"}
|