@indx-workspace/embedded 0.0.0-bootstrap → 0.3.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/CHANGELOG.md +72 -0
- package/LICENSE +202 -0
- package/README.md +309 -0
- package/dist/bin.js +73 -0
- package/dist/launch.js +28617 -0
- package/dist/migrations/0000_init.sql +119 -0
- package/dist/migrations/0001_w2_resources.sql +177 -0
- package/dist/migrations/0002_w3_runtime_profiles.sql +34 -0
- package/dist/migrations/0003_steep_galactus.sql +91 -0
- package/dist/migrations/0004_overconfident_lake.sql +16 -0
- package/dist/migrations/0005_durable_sessions_run_tokens.sql +46 -0
- package/dist/migrations/0006_familiar_karnak.sql +2 -0
- package/dist/migrations/0007_fast_hannibal_king.sql +1 -0
- package/dist/migrations/0008_damp_nemesis.sql +31 -0
- package/dist/migrations/0009_special_thena.sql +2 -0
- package/dist/migrations/0010_little_power_pack.sql +66 -0
- package/dist/migrations/0011_goofy_storm.sql +14 -0
- package/dist/migrations/0012_legal_shatterstar.sql +14 -0
- package/dist/migrations/0013_secret_namora.sql +9 -0
- package/dist/migrations/0014_premium_vengeance.sql +16 -0
- package/dist/migrations/0015_amazing_screwball.sql +1 -0
- package/dist/migrations/0016_next_satana.sql +29 -0
- package/dist/migrations/0017_wild_the_executioner.sql +1 -0
- package/dist/migrations/0018_heavy_stone_men.sql +2 -0
- package/dist/migrations/0019_repair_legacy_run_accounting.sql +20 -0
- package/dist/migrations/0020_sparkling_nova.sql +340 -0
- package/dist/migrations/0021_slippery_sister_grimm.sql +1 -0
- package/dist/migrations/0022_warm_paibok.sql +26 -0
- package/dist/migrations/0023_colorful_shotgun.sql +2 -0
- package/dist/migrations/0024_curly_molten_man.sql +9 -0
- package/dist/migrations/0025_name_the_engine_in_stored_rows.sql +50 -0
- package/dist/migrations/0026_create_the_engine_scoped_session_state_store.sql +47 -0
- package/dist/migrations/0027_backfill_claude_session_state.sql +66 -0
- package/dist/migrations/0028_widen_the_engine_checks_to_openai_agents.sql +14 -0
- package/dist/migrations/0029_widen_the_engine_checks_to_pi.sql +14 -0
- package/dist/migrations/0030_create_the_cli_sessions_table.sql +23 -0
- package/dist/migrations/0031_widen_the_engine_checks_to_mastra.sql +17 -0
- package/dist/migrations/0032_mark_the_setup_agent.sql +7 -0
- package/dist/migrations/0033_create_the_agent_version_store.sql +41 -0
- package/dist/migrations/0034_mark_the_workspace_default_runtime_profile.sql +15 -0
- package/dist/migrations/0035_record_who_a_local_runtime_key_acts_for.sql +19 -0
- package/dist/migrations/0036_add_connector_kinds_and_the_run_tool_snapshot.sql +34 -0
- package/dist/migrations/0037_create_the_surface_session_keys.sql +20 -0
- package/dist/migrations/0038_record_feedback_on_a_run.sql +14 -0
- package/dist/migrations/0039_record_an_evaluation_of_a_version.sql +18 -0
- package/dist/migrations/0040_record_the_materialised_version.sql +23 -0
- package/dist/migrations/0041_pin_a_session_to_its_agent_version.sql +4 -0
- package/dist/migrations/0042_store_the_prompt_of_a_run.sql +1 -0
- package/dist/migrations/0043_record_every_pointer_move.sql +30 -0
- package/dist/migrations/meta/0000_snapshot.json +964 -0
- package/dist/migrations/meta/0001_snapshot.json +2278 -0
- package/dist/migrations/meta/0002_snapshot.json +2550 -0
- package/dist/migrations/meta/0003_snapshot.json +3295 -0
- package/dist/migrations/meta/0004_snapshot.json +3452 -0
- package/dist/migrations/meta/0005_snapshot.json +3921 -0
- package/dist/migrations/meta/0006_snapshot.json +3949 -0
- package/dist/migrations/meta/0007_snapshot.json +3956 -0
- package/dist/migrations/meta/0008_snapshot.json +4177 -0
- package/dist/migrations/meta/0009_snapshot.json +4177 -0
- package/dist/migrations/meta/0010_snapshot.json +3988 -0
- package/dist/migrations/meta/0011_snapshot.json +4491 -0
- package/dist/migrations/meta/0012_snapshot.json +4629 -0
- package/dist/migrations/meta/0013_snapshot.json +4646 -0
- package/dist/migrations/meta/0014_snapshot.json +4313 -0
- package/dist/migrations/meta/0015_snapshot.json +4775 -0
- package/dist/migrations/meta/0016_snapshot.json +4976 -0
- package/dist/migrations/meta/0017_snapshot.json +4982 -0
- package/dist/migrations/meta/0018_snapshot.json +4982 -0
- package/dist/migrations/meta/0019_snapshot.json +4990 -0
- package/dist/migrations/meta/0020_snapshot.json +5469 -0
- package/dist/migrations/meta/0021_snapshot.json +5475 -0
- package/dist/migrations/meta/0022_snapshot.json +5711 -0
- package/dist/migrations/meta/0023_snapshot.json +5722 -0
- package/dist/migrations/meta/0024_snapshot.json +5748 -0
- package/dist/migrations/meta/0025_snapshot.json +5748 -0
- package/dist/migrations/meta/0026_snapshot.json +6151 -0
- package/dist/migrations/meta/0027_snapshot.json +6151 -0
- package/dist/migrations/meta/0028_snapshot.json +6151 -0
- package/dist/migrations/meta/0029_snapshot.json +6151 -0
- package/dist/migrations/meta/0030_snapshot.json +6328 -0
- package/dist/migrations/meta/0031_snapshot.json +6328 -0
- package/dist/migrations/meta/0032_snapshot.json +6334 -0
- package/dist/migrations/meta/0033_snapshot.json +6615 -0
- package/dist/migrations/meta/0034_snapshot.json +6633 -0
- package/dist/migrations/meta/0035_snapshot.json +6662 -0
- package/dist/migrations/meta/0036_snapshot.json +6706 -0
- package/dist/migrations/meta/0037_snapshot.json +6816 -0
- package/dist/migrations/meta/0038_snapshot.json +6927 -0
- package/dist/migrations/meta/0039_snapshot.json +7073 -0
- package/dist/migrations/meta/0040_snapshot.json +7096 -0
- package/dist/migrations/meta/0041_snapshot.json +7119 -0
- package/dist/migrations/meta/0042_snapshot.json +7125 -0
- package/dist/migrations/meta/0043_snapshot.json +7292 -0
- package/dist/migrations/meta/_journal.json +314 -0
- package/dist/web/.next-embedded/BUILD_ID +1 -0
- package/dist/web/.next-embedded/app-path-routes-manifest.json +108 -0
- package/dist/web/.next-embedded/build-manifest.json +20 -0
- package/dist/web/.next-embedded/diagnostics/build-diagnostics.json +6 -0
- package/dist/web/.next-embedded/diagnostics/framework.json +1 -0
- package/dist/web/.next-embedded/export-marker.json +6 -0
- package/dist/web/.next-embedded/images-manifest.json +68 -0
- package/dist/web/.next-embedded/package.json +1 -0
- package/dist/web/.next-embedded/prerender-manifest.json +97 -0
- package/dist/web/.next-embedded/react-loadable-manifest.json +1 -0
- package/dist/web/.next-embedded/required-server-files.js +355 -0
- package/dist/web/.next-embedded/required-server-files.json +355 -0
- package/dist/web/.next-embedded/routes-manifest.json +786 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/api-keys/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/api-keys/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/new/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/new/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/runtimes/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/runtimes/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/settings/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/settings/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/shares/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/shares/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/users/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/users/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/[id]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/[id]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/new/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/new/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/new/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/new/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/files/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/files/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/[id]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/[id]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/runs/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/runs/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/[name]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/[name]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/workspaces/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/workspaces/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/_global-error/page.js +31 -0
- package/dist/web/.next-embedded/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/_global-error.html +1 -0
- package/dist/web/.next-embedded/server/app/_global-error.meta +27 -0
- package/dist/web/.next-embedded/server/app/_global-error.rsc +14 -0
- package/dist/web/.next-embedded/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/dist/web/.next-embedded/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +20 -0
- package/dist/web/.next-embedded/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/dist/web/.next-embedded/server/app/_not-found/page.js +1 -0
- package/dist/web/.next-embedded/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/_not-found.html +1 -0
- package/dist/web/.next-embedded/server/app/_not-found.meta +27 -0
- package/dist/web/.next-embedded/server/app/_not-found.rsc +15 -0
- package/dist/web/.next-embedded/server/app/_not-found.segments/_full.segment.rsc +15 -0
- package/dist/web/.next-embedded/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +21 -0
- package/dist/web/.next-embedded/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/evaluations/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/evaluations/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/feedback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/feedback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/grants/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/grants/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/pointers/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/pointers/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/policy/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/policy/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/promote/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/promote/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/resources/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/resources/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/rollback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/rollback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/runs/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/runs/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/versions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/versions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/audit-events/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/audit-events/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/callback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/callback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-device/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-device/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-token/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-token/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-verify/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-verify/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-workspace/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-workspace/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/login/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/login/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/workspace/route.js +13 -0
- package/dist/web/.next-embedded/server/app/api/auth/workspace/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/test-connection/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/test-connection/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/engines/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/engines/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/accept/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/accept/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/resend/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/resend/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/me/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/me/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/metrics/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/metrics/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/credential/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/credential/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/test/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/test/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/models/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/archive/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/archive/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/restore/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/restore/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/sessions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/sessions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/events/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/events/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/feedback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/feedback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/interrupt/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/interrupt/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/revoke-tokens/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/revoke-tokens/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-connections/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-connections/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtimes/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtimes/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-blobs/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-blobs/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-entries/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-entries/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-streams/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-streams/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/subkeys/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/subkeys/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/transcript/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/transcript/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/runtime-detect/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/runtime-detect/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sharing-policies/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sharing-policies/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/[name]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/[name]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/tokens/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/tokens/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/users/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/users/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/messages/route.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/messages/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/sessions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/sessions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/try/page.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/try/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/widget.js/route.js +156 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/widget.js/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/setup/page.js +1 -0
- package/dist/web/.next-embedded/server/app/setup/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/setup.html +1 -0
- package/dist/web/.next-embedded/server/app/setup.meta +26 -0
- package/dist/web/.next-embedded/server/app/setup.rsc +16 -0
- package/dist/web/.next-embedded/server/app/setup.segments/_full.segment.rsc +16 -0
- package/dist/web/.next-embedded/server/app/setup.segments/_tree.segment.rsc +2 -0
- package/dist/web/.next-embedded/server/app/setup.segments/setup/__PAGE__.segment.rsc +22 -0
- package/dist/web/.next-embedded/server/app/signin/page.js +2 -0
- package/dist/web/.next-embedded/server/app/signin/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app-paths-manifest.json +108 -0
- package/dist/web/.next-embedded/server/chunks/1117.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1173.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1190.js +1 -0
- package/dist/web/.next-embedded/server/chunks/121.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1231.js +8 -0
- package/dist/web/.next-embedded/server/chunks/1252.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1328.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1503.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1519.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1610.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1614.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1794.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1804.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1924.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1947.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1998.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2026.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2030.js +39 -0
- package/dist/web/.next-embedded/server/chunks/2049.js +12 -0
- package/dist/web/.next-embedded/server/chunks/2192.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2208.js +3 -0
- package/dist/web/.next-embedded/server/chunks/2239.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2250.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2294.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2300.js +1 -0
- package/dist/web/.next-embedded/server/chunks/235.js +1 -0
- package/dist/web/.next-embedded/server/chunks/240.js +2 -0
- package/dist/web/.next-embedded/server/chunks/2400.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2438.js +2 -0
- package/dist/web/.next-embedded/server/chunks/2448.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2502.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2580.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2587.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2610.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2670.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2780.js +165 -0
- package/dist/web/.next-embedded/server/chunks/2792.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2857.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2884.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2895.js +19 -0
- package/dist/web/.next-embedded/server/chunks/2961.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3171.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3222.js +2 -0
- package/dist/web/.next-embedded/server/chunks/3351.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3381.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3520.js +8 -0
- package/dist/web/.next-embedded/server/chunks/364.js +1 -0
- package/dist/web/.next-embedded/server/chunks/411.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4119.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4128.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4191.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4200.js +1 -0
- package/dist/web/.next-embedded/server/chunks/434.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4368.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4463.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4467.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4543.js +8 -0
- package/dist/web/.next-embedded/server/chunks/468.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4741.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4755.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4758.js +21 -0
- package/dist/web/.next-embedded/server/chunks/4870.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4877.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4888.js +1 -0
- package/dist/web/.next-embedded/server/chunks/491.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4911.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5036.js +27 -0
- package/dist/web/.next-embedded/server/chunks/5052.js +134 -0
- package/dist/web/.next-embedded/server/chunks/5057.js +55 -0
- package/dist/web/.next-embedded/server/chunks/5126.js +8 -0
- package/dist/web/.next-embedded/server/chunks/5133.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5173.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5225.js +2 -0
- package/dist/web/.next-embedded/server/chunks/5277.js +324 -0
- package/dist/web/.next-embedded/server/chunks/5398.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5568.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5576.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5634.js +19 -0
- package/dist/web/.next-embedded/server/chunks/5645.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5684.js +5 -0
- package/dist/web/.next-embedded/server/chunks/5699.js +1 -0
- package/dist/web/.next-embedded/server/chunks/57.js +2 -0
- package/dist/web/.next-embedded/server/chunks/5734.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5787.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5796.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5933.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5945.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5961.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6445.js +55 -0
- package/dist/web/.next-embedded/server/chunks/6511.js +18 -0
- package/dist/web/.next-embedded/server/chunks/6518.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6572.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6672.js +2 -0
- package/dist/web/.next-embedded/server/chunks/6773.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6821.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6926.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7090.js +25 -0
- package/dist/web/.next-embedded/server/chunks/7206.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7269.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7380.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7395.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7466.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7571.js +1 -0
- package/dist/web/.next-embedded/server/chunks/769.js +1 -0
- package/dist/web/.next-embedded/server/chunks/784.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7861.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7944.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8020.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8061.js +2 -0
- package/dist/web/.next-embedded/server/chunks/822.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8302.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8336.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8376.js +1 -0
- package/dist/web/.next-embedded/server/chunks/841.js +2 -0
- package/dist/web/.next-embedded/server/chunks/8430.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8563.js +2 -0
- package/dist/web/.next-embedded/server/chunks/8576.js +193 -0
- package/dist/web/.next-embedded/server/chunks/8656.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8726.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8935.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9260.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9314.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9332.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9380.js +13 -0
- package/dist/web/.next-embedded/server/chunks/951.js +2 -0
- package/dist/web/.next-embedded/server/chunks/9537.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9840.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9913.js +1 -0
- package/dist/web/.next-embedded/server/functions-config-manifest.json +97 -0
- package/dist/web/.next-embedded/server/instrumentation.js +1 -0
- package/dist/web/.next-embedded/server/interception-route-rewrite-manifest.js +1 -0
- package/dist/web/.next-embedded/server/middleware-build-manifest.js +1 -0
- package/dist/web/.next-embedded/server/middleware-manifest.json +6 -0
- package/dist/web/.next-embedded/server/middleware-react-loadable-manifest.js +1 -0
- package/dist/web/.next-embedded/server/middleware.js +217 -0
- package/dist/web/.next-embedded/server/next-font-manifest.js +1 -0
- package/dist/web/.next-embedded/server/next-font-manifest.json +1 -0
- package/dist/web/.next-embedded/server/pages/404.html +1 -0
- package/dist/web/.next-embedded/server/pages/500.html +1 -0
- package/dist/web/.next-embedded/server/pages-manifest.json +4 -0
- package/dist/web/.next-embedded/server/prefetch-hints.json +44 -0
- package/dist/web/.next-embedded/server/server-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/server-reference-manifest.json +1 -0
- package/dist/web/.next-embedded/server/webpack-runtime.js +1 -0
- package/dist/web/.next-embedded/static/DkxmcmiDAUutpm9e7G9xn/_buildManifest.js +1 -0
- package/dist/web/.next-embedded/static/DkxmcmiDAUutpm9e7G9xn/_ssgManifest.js +1 -0
- package/dist/web/.next-embedded/static/chunks/1000-501917027865ec48.js +52 -0
- package/dist/web/.next-embedded/static/chunks/1435-55acf1390b3a2da1.js +1 -0
- package/dist/web/.next-embedded/static/chunks/2349-3254a65053329135.js +1 -0
- package/dist/web/.next-embedded/static/chunks/2378-4ca744bf47c3dabb.js +1 -0
- package/dist/web/.next-embedded/static/chunks/2685-42c2a4f17fb6adb1.js +18 -0
- package/dist/web/.next-embedded/static/chunks/5633-9a07d4830813ece7.js +1 -0
- package/dist/web/.next-embedded/static/chunks/6365-04af34ae5b1497e3.js +1 -0
- package/dist/web/.next-embedded/static/chunks/6482-ecc9c62a178ba724.js +1 -0
- package/dist/web/.next-embedded/static/chunks/7413-3a721e7c495f89fb.js +55 -0
- package/dist/web/.next-embedded/static/chunks/9595-fea797909cd07d91.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/api-keys/page-5fe6d7717b0565f1.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/new/page-875800e6afa2dac3.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/page-7c39ee3c51034f12.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/runtimes/page-d51caeefc8b5ed98.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/settings/page-7f1874c14b33856a.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/shares/page-c194edfd7701dc77.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/users/page-463489ca2ebf664f.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/[id]/page-febe3b0582c996ae.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/new/page-a5ba72c5bc40b6e1.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/page-89d6af2961318db8.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/new/page-b7ab59a7697ce004.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/page-be6a19d14cc78f0f.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/files/page-63febed6b4433238.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/layout-4667e8f589776bbe.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/page-2cd836e518729ee6.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/[id]/page-e6bc2217623b8939.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/page-3db56f853165c53c.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/runs/page-fe28919e456c3966.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/skills/[name]/page-69390975e9417783.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/skills/page-1e756149864de860.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/workspaces/page-47afb61daed3bbb2.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/_global-error/page-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/_not-found/page-1e20f0faf42b5dab.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/evaluations/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/feedback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/grants/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/pointers/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/policy/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/promote/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/resources/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/rollback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/runs/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/versions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/api-keys/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/api-keys/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/audit-events/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/callback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-device/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-token/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-verify/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-workspace/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/login/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/workspace/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/connectors/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/connectors/[id]/test-connection/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/connectors/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/engines/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/files/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/files/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/accept/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/resend/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/me/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/memberships/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/memberships/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/metrics/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/credential/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/test/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/models/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/archive/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/restore/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/sessions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/events/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/feedback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/interrupt/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/revoke-tokens/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtime-connections/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtime-profiles/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtime-profiles/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtimes/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/secrets/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/secrets/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-blobs/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-entries/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-streams/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/subkeys/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/transcript/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/setup/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/setup/runtime-detect/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/shares/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/shares/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sharing-policies/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/skills/[name]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/skills/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/tokens/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/users/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/workspaces/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/workspaces/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/layout-2f33ac5af1408328.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/[token]/layout-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/[token]/messages/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/[token]/page-6cd5f2bd228d80dc.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/page-3bbe19f3f8fa0cd8.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/sessions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/try/layout-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/try/page-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/widget.js/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/setup/page-1ffa2012b2226832.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/signin/layout-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/signin/page-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/b7e071c5-1178abcc3dcc97b7.js +1 -0
- package/dist/web/.next-embedded/static/chunks/framework-bd8f371b90cbf524.js +1 -0
- package/dist/web/.next-embedded/static/chunks/main-5f1d9db627247614.js +5 -0
- package/dist/web/.next-embedded/static/chunks/main-app-736eb94d950bf794.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/app-error-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/forbidden-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/global-error-bcd4657bc775688d.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/not-found-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/unauthorized-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/web/.next-embedded/static/chunks/webpack-e654bfe3f030a510.js +1 -0
- package/dist/web/.next-embedded/static/css/85d72f669bcd1172.css +1 -0
- package/dist/web/next.config.mjs +1 -0
- package/package.json +51 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9595],{1035:(e,n,t)=>{t.d(n,{Ig:()=>y,J1:()=>d,KI:()=>h,LG:()=>f,O:()=>s,PQ:()=>a,Uu:()=>g,Vt:()=>i,ZO:()=>p,ff:()=>v,oO:()=>m,sQ:()=>l,v1:()=>c,vK:()=>b});let i=[{id:"anthropic",label:"Anthropic",description:"Claude models through the native Anthropic Messages API."},{id:"anthropic-compatible",label:"Anthropic-compatible endpoint",description:"A configurable endpoint that speaks the Anthropic Messages API."},{id:"azure-openai",label:"Microsoft Azure OpenAI",description:"An Azure deployment translated by the internal gateway."},{id:"openai",label:"OpenAI",description:"OpenAI Responses API models translated by the internal gateway."},{id:"openai-compatible",label:"OpenAI-compatible endpoint",description:"A configurable endpoint such as vLLM, Ollama, or a vendor gateway."}];function o(e){return"object"!=typeof e||null===e||Array.isArray(e)?null:e}let r=new Set(i.map(e=>e.id));function a(e){let n=o(e);if(null===n||!Array.isArray(n.models))throw Error("The models response has no list.");return n.models.map((e,n)=>{let t,i=o(e);if(null===i||"string"!=typeof i.id||"string"!=typeof i.name||"string"!=typeof i.provider||!r.has(i.provider)||"boolean"!=typeof i.hasCredential)throw Error(`Model connection ${String(n)} is invalid.`);return{id:i.id,name:i.name,provider:i.provider,config:null===(t=o(i.config))?{}:{..."string"==typeof t.baseUrl?{baseUrl:t.baseUrl}:{},..."string"==typeof t.deployment?{deployment:t.deployment}:{},..."string"==typeof t.apiVersion?{apiVersion:t.apiVersion}:{}},hasCredential:i.hasCredential,ready:"boolean"==typeof i.ready&&i.ready}})}function l(e){return i.find(n=>n.id===e)?.label??e}function d(e){return e.hasCredential?e.ready?{text:"Ready",tone:"ok"}:{text:"Configuration incomplete",tone:"warn"}:{text:"Credential missing",tone:"danger"}}function s(e){let n=[l(e.provider)];return void 0!==e.config.baseUrl&&n.push(e.config.baseUrl),void 0!==e.config.deployment&&n.push(`deployment ${e.config.deployment}`),void 0!==e.config.apiVersion&&n.push(`API version ${e.config.apiVersion}`),n.join(" \xb7 ")}function c(e){let n={};return""!==e.baseUrl.trim()&&(n.baseUrl=e.baseUrl.trim()),""!==e.deployment.trim()&&(n.deployment=e.deployment.trim()),""!==e.apiVersion.trim()&&(n.apiVersion=e.apiVersion.trim()),{name:e.name.trim(),provider:e.provider,apiKey:e.apiKey,config:n}}function p(e){return""!==e.name.trim()&&""!==e.apiKey&&("azure-openai"===e.provider?""!==e.baseUrl.trim()&&""!==e.deployment.trim()&&""!==e.apiVersion.trim():"openai-compatible"!==e.provider||""!==e.baseUrl.trim())}let u={anthropic:{required:[]},"anthropic-compatible":{required:[]},openai:{required:[]},"openai-compatible":{required:["baseUrl"]},"azure-openai":{required:["baseUrl","deployment","apiVersion"]}};function m(e){return"azure-openai"===e?["baseUrl","deployment","apiVersion"]:["baseUrl"]}function f(e,n){return""!==e.name.trim()&&u[n].required.every(n=>""!==e[n].trim())}function y(e,n){let t={};for(let i of m(n))""!==e[i].trim()&&(t[i]=e[i].trim());return{name:e.name.trim(),config:t}}function h(e){let n=o(e),t=null===n?null:o(n.error),i=null!==t&&"string"==typeof t.message?t.message:null,r=(null!==t&&Array.isArray(t.details)?t.details:[]).filter(e=>"string"==typeof e).join(" ");return null!==i&&""!==r?`${i} ${r}`:null!==i?i:""!==r?r:"The request failed."}function g(e){let n=o(e);if(null===n||!Array.isArray(n.agents))return[];let t=[];for(let e of n.agents){let n=o(e);if(null===n||"string"!=typeof n.id||"string"!=typeof n.name)continue;let i="string"==typeof n.modelConnectionId?n.modelConnectionId:null;t.push({id:n.id,name:n.name,modelConnectionId:i})}return t}function b(e,n){return e.filter(e=>e.modelConnectionId===n).map(e=>({agentId:e.id,agentName:e.name}))}function v(e,n){return e===n}},1485:(e,n,t)=>{t.d(n,{_G:()=>l,bg:()=>a,uM:()=>r,wQ:()=>d});var i=t(1035);function o(e){return"object"!=typeof e||null===e||Array.isArray(e)?null:e}function r(e,n){let{rows:t,unavailable:r}=function(e){let n=o(e),t=null===n?null:n.models;if(!Array.isArray(t))throw Error("The discovered-models response has no list.");let i=t.map((e,n)=>{let t,i,r=o(e);if(null===r||"string"!=typeof r.connectionId||"string"!=typeof r.providerModelId||"string"!=typeof r.displayName)throw Error(`Discovered model ${String(n)} has no connectionId, providerModelId, or displayName.`);return{connectionId:r.connectionId,providerModelId:r.providerModelId,displayName:r.displayName,capabilities:(t=o(r.capabilities),{streaming:(i=e=>null!==t&&!0===t[e])("streaming"),toolUse:i("toolUse"),thinking:i("thinking"),promptCaching:i("promptCaching"),structuredOutput:i("structuredOutput"),contextManagement:i("contextManagement"),webSearch:i("webSearch"),tokenCounting:i("tokenCounting")})}}),r=null===n?void 0:n.unavailable,a=[];if(Array.isArray(r))for(let e of r){let n=o(e);null!==n&&"string"==typeof n.connectionId&&"string"==typeof n.connectionName&&"string"==typeof n.reason&&a.push({connectionId:n.connectionId,connectionName:n.connectionName,reason:n.reason})}return{rows:i,unavailable:a}}(e),a=(0,i.PQ)(n),l=new Map(a.map(e=>[e.id,e])),d=[];for(let e of t){let n=l.get(e.connectionId);void 0!==n&&d.push({connectionId:e.connectionId,connectionName:n.name,provider:n.provider,providerModelId:e.providerModelId,displayName:e.displayName,capabilities:e.capabilities})}let s=[...r],c=new Set(s.map(e=>e.connectionId));for(let e of a)e.ready||c.has(e.id)||s.push({connectionId:e.id,connectionName:e.name,reason:(0,i.J1)(e).text});return{models:d,unavailable:s}}function a(e,n){if(null!==n)return e.find(e=>e.connectionId===n.connectionId&&e.providerModelId===n.model)}function l(e,n,t){if(null===n)return`${e} → not set`;let o=a(t,n),r=void 0===o?`${n.model} (connection ${n.connectionId} is no longer available)`:`${(0,i.sQ)(o.provider)} / ${o.displayName}`;return`${e} → ${r}`}let d="⚠ This model does not fully support Claude prompt caching.\nThe agent can still run, but behavior may differ."},9595:(e,n,t)=>{t.d(n,{Bd:()=>d,Ks:()=>s,c7:()=>a});var i=t(126),o=t(3310),r=t(1485);function a(){let[e,n]=(0,o.useState)({kind:"loading"});return(0,o.useEffect)(()=>{let e=!0,t=e=>e.ok?e.json():Promise.resolve({models:[]});return Promise.all([fetch("/api/models",{headers:{accept:"application/json"}}),fetch("/api/model-connections",{headers:{accept:"application/json"}})]).then(([e,n])=>Promise.all([t(e),t(n)])).then(([t,i])=>{e&&n({kind:"ready",catalog:(0,r.uM)(t,i)})}).catch(t=>{e&&n({kind:"failed",reason:`Models could not be loaded: ${t instanceof Error?t.message:String(t)}`})}),()=>{e=!1}},[]),e}function l(e){return`${e.connectionId}::${e.providerModelId}`}function d({id:e,label:n,models:t,value:o,onChange:r,inheritLabel:a,disabled:s=!1,ariaDescribedBy:c}){let p=new Map;for(let e of t){let n=p.get(e.connectionId);void 0===n?p.set(e.connectionId,{name:e.connectionName,entries:[e]}):n.entries.push(e)}let u=null===o?"":l({connectionId:o.connectionId,providerModelId:o.model});return(0,i.jsxs)("label",{className:"inline-flex items-center gap-1.5",htmlFor:e,children:[(0,i.jsx)("span",{className:"text-[12.5px] text-text-2",children:n}),(0,i.jsxs)("select",{id:e,className:"h-[27px] rounded-[999px] border border-border-strong bg-surface px-2.5 text-[12.5px] text-text-2 disabled:opacity-60",value:u,disabled:s||0===t.length,"aria-describedby":c,onChange:e=>r(function(e){if(""===e)return null;let n=e.indexOf("::");return n<0?null:{connectionId:e.slice(0,n),model:e.slice(n+2)}}(e.target.value)),children:[void 0===a?null:(0,i.jsx)("option",{value:"",children:a}),0===t.length&&void 0===a?(0,i.jsx)("option",{value:"",children:"No models available"}):null,[...p.entries()].map(([e,n])=>(0,i.jsx)("optgroup",{label:n.name,children:n.entries.map(e=>(0,i.jsx)("option",{value:l(e),children:e.displayName},l(e)))},e))]})]})}function s({unavailable:e}){return 0===e.length?null:(0,i.jsx)("ul",{role:"status","data-testid":"model-unavailable-notice",className:"mt-1.5 text-[11.5px] text-warn",children:e.map(e=>(0,i.jsxs)("li",{children:[e.connectionName,": ",e.reason]},e.connectionName))})}}}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/api-keys/page-5fe6d7717b0565f1.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4746],{395:(e,s,_)=>{Promise.resolve().then(_.bind(_,2685))}},e=>{e.O(0,[7413,6365,2685,3881,1e3,7358],()=>e(e.s=395)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/new/page-875800e6afa2dac3.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4590],{210:(e,r,t)=>{Promise.resolve().then(t.bind(t,5238))},1035:(e,r,t)=>{"use strict";t.d(r,{Ig:()=>f,J1:()=>l,KI:()=>h,LG:()=>b,O:()=>d,PQ:()=>i,Uu:()=>x,Vt:()=>n,ZO:()=>c,ff:()=>y,oO:()=>m,sQ:()=>s,v1:()=>p,vK:()=>g});let n=[{id:"anthropic",label:"Anthropic",description:"Claude models through the native Anthropic Messages API."},{id:"anthropic-compatible",label:"Anthropic-compatible endpoint",description:"A configurable endpoint that speaks the Anthropic Messages API."},{id:"azure-openai",label:"Microsoft Azure OpenAI",description:"An Azure deployment translated by the internal gateway."},{id:"openai",label:"OpenAI",description:"OpenAI Responses API models translated by the internal gateway."},{id:"openai-compatible",label:"OpenAI-compatible endpoint",description:"A configurable endpoint such as vLLM, Ollama, or a vendor gateway."}];function a(e){return"object"!=typeof e||null===e||Array.isArray(e)?null:e}let o=new Set(n.map(e=>e.id));function i(e){let r=a(e);if(null===r||!Array.isArray(r.models))throw Error("The models response has no list.");return r.models.map((e,r)=>{let t,n=a(e);if(null===n||"string"!=typeof n.id||"string"!=typeof n.name||"string"!=typeof n.provider||!o.has(n.provider)||"boolean"!=typeof n.hasCredential)throw Error(`Model connection ${String(r)} is invalid.`);return{id:n.id,name:n.name,provider:n.provider,config:null===(t=a(n.config))?{}:{..."string"==typeof t.baseUrl?{baseUrl:t.baseUrl}:{},..."string"==typeof t.deployment?{deployment:t.deployment}:{},..."string"==typeof t.apiVersion?{apiVersion:t.apiVersion}:{}},hasCredential:n.hasCredential,ready:"boolean"==typeof n.ready&&n.ready}})}function s(e){return n.find(r=>r.id===e)?.label??e}function l(e){return e.hasCredential?e.ready?{text:"Ready",tone:"ok"}:{text:"Configuration incomplete",tone:"warn"}:{text:"Credential missing",tone:"danger"}}function d(e){let r=[s(e.provider)];return void 0!==e.config.baseUrl&&r.push(e.config.baseUrl),void 0!==e.config.deployment&&r.push(`deployment ${e.config.deployment}`),void 0!==e.config.apiVersion&&r.push(`API version ${e.config.apiVersion}`),r.join(" \xb7 ")}function p(e){let r={};return""!==e.baseUrl.trim()&&(r.baseUrl=e.baseUrl.trim()),""!==e.deployment.trim()&&(r.deployment=e.deployment.trim()),""!==e.apiVersion.trim()&&(r.apiVersion=e.apiVersion.trim()),{name:e.name.trim(),provider:e.provider,apiKey:e.apiKey,config:r}}function c(e){return""!==e.name.trim()&&""!==e.apiKey&&("azure-openai"===e.provider?""!==e.baseUrl.trim()&&""!==e.deployment.trim()&&""!==e.apiVersion.trim():"openai-compatible"!==e.provider||""!==e.baseUrl.trim())}let u={anthropic:{required:[]},"anthropic-compatible":{required:[]},openai:{required:[]},"openai-compatible":{required:["baseUrl"]},"azure-openai":{required:["baseUrl","deployment","apiVersion"]}};function m(e){return"azure-openai"===e?["baseUrl","deployment","apiVersion"]:["baseUrl"]}function b(e,r){return""!==e.name.trim()&&u[r].required.every(r=>""!==e[r].trim())}function f(e,r){let t={};for(let n of m(r))""!==e[n].trim()&&(t[n]=e[n].trim());return{name:e.name.trim(),config:t}}function h(e){let r=a(e),t=null===r?null:a(r.error),n=null!==t&&"string"==typeof t.message?t.message:null,o=(null!==t&&Array.isArray(t.details)?t.details:[]).filter(e=>"string"==typeof e).join(" ");return null!==n&&""!==o?`${n} ${o}`:null!==n?n:""!==o?o:"The request failed."}function x(e){let r=a(e);if(null===r||!Array.isArray(r.agents))return[];let t=[];for(let e of r.agents){let r=a(e);if(null===r||"string"!=typeof r.id||"string"!=typeof r.name)continue;let n="string"==typeof r.modelConnectionId?r.modelConnectionId:null;t.push({id:r.id,name:r.name,modelConnectionId:n})}return t}function g(e,r){return e.filter(e=>e.modelConnectionId===r).map(e=>({agentId:e.id,agentName:e.name}))}function y(e,r){return e===r}},5238:(e,r,t)=>{"use strict";t.d(r,{AddProviderScreen:()=>b});var n=t(126),a=t(6365),o=t.n(a),i=t(7662),s=t(3310),l=t(7844),d=t(1035);let p="rounded-(--radius) border border-border bg-surface shadow-(--shadow)",c="inline-flex h-8 items-center justify-center rounded-(--radius-sm) border border-border-strong px-[13px] text-[13px] font-medium disabled:cursor-not-allowed disabled:opacity-50",u="w-full rounded-(--radius-sm) border border-border-strong bg-surface px-2.5 py-[7px] text-[13.5px] text-text focus:border-accent focus:outline-2 focus:-outline-offset-1 focus:outline-accent",m={name:"",provider:"anthropic",apiKey:"",baseUrl:"",deployment:"",apiVersion:""};function b(){let e=(0,i.useRouter)(),[r,t]=(0,s.useState)(m),[a,b]=(0,s.useState)(!1),[f,h]=(0,s.useState)(null),x=(0,d.ZO)(r)&&!a;function g(e,r){t(t=>({...t,[e]:r}))}let y="azure-openai"===r.provider||"openai-compatible"===r.provider;return(0,n.jsxs)("main",{className:"w-full max-w-[760px] px-8 pt-[26px] pb-[90px]",children:[(0,n.jsxs)("div",{className:"mb-[22px]",children:[(0,n.jsx)("h1",{className:"text-[21px]",children:"Add Provider"}),(0,n.jsx)("p",{className:"mt-[3px] text-[13px] text-muted",children:"Choose a provider, then answer only the questions that provider actually needs."})]}),(0,n.jsxs)("form",{onSubmit:function(n){n.preventDefault(),x&&(b(!0),h(null),fetch("/api/model-connections",{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify((0,d.v1)(r))}).then(async r=>{if(!r.ok){let e=await r.json();throw Error("string"==typeof e.error?.message?e.error.message:`Provider request returned ${r.status}.`)}t(e=>({...e,apiKey:""})),e.push("/admin/models")}).catch(e=>{b(!1),h(e instanceof Error?e.message:String(e))}))},children:[(0,n.jsx)("h2",{className:"mb-3 text-[15px] font-semibold",children:"Choose provider"}),(0,n.jsx)("div",{className:p,children:d.Vt.map(e=>(0,n.jsxs)("button",{type:"button","aria-pressed":r.provider===e.id,onClick:()=>{var r;return r=e.id,void t(e=>({...e,provider:r}))},className:`flex w-full items-start gap-3 border-b border-border p-[14px] text-left last:border-b-0 ${r.provider===e.id?"bg-accent-soft":"bg-surface"}`,children:[(0,n.jsx)("span",{"aria-hidden":"true",className:`mt-1 size-3.5 flex-none rounded-full border ${r.provider===e.id?"border-[4px] border-accent":"border-border-strong"}`}),(0,n.jsxs)("span",{children:[(0,n.jsxs)("span",{className:"block text-[13.5px] font-semibold",children:[e.label,"anthropic"===e.id?(0,n.jsx)("span",{className:"ml-2 rounded-full bg-accent-soft px-2 py-0.5 text-[10px] text-accent",children:"Recommended"}):null]}),(0,n.jsx)("span",{className:"mt-0.5 block text-[12px] text-muted",children:e.description})]})]},e.id))}),(0,n.jsx)("h2",{className:"mt-6 mb-3 text-[15px] font-semibold",children:d.Vt.find(e=>e.id===r.provider)?.label}),(0,n.jsxs)("div",{className:`${p} space-y-4 p-4`,children:[y?(0,n.jsxs)("label",{className:"block text-[13px] font-semibold",children:["azure-openai"===r.provider?"Endpoint":"Base URL",(0,n.jsx)("input",{className:`${u} mt-1 font-mono`,type:"url",value:r.baseUrl,onChange:e=>g("baseUrl",e.target.value),placeholder:"azure-openai"===r.provider?"https://company.openai.azure.com":"https://models.example.com/v1"})]}):null,(0,n.jsxs)("label",{className:"block text-[13px] font-semibold",children:["API Key",(0,n.jsx)("input",{className:`${u} mt-1 font-mono`,type:"password",...l.Q,value:r.apiKey,onChange:e=>g("apiKey",e.target.value)}),(0,n.jsx)("span",{className:"mt-1 block text-[11.5px] font-normal text-muted",children:"Stored encrypted. After saving, this secret is write-only and is never displayed again."})]}),"azure-openai"===r.provider?(0,n.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,n.jsxs)("label",{className:"block text-[13px] font-semibold",children:["Deployment",(0,n.jsx)("input",{className:`${u} mt-1 font-mono`,value:r.deployment,onChange:e=>g("deployment",e.target.value)})]}),(0,n.jsxs)("label",{className:"block text-[13px] font-semibold",children:["API Version",(0,n.jsx)("input",{className:`${u} mt-1 font-mono`,value:r.apiVersion,onChange:e=>g("apiVersion",e.target.value)})]})]}):null,(0,n.jsxs)("label",{className:"block text-[13px] font-semibold",children:["Display name",(0,n.jsx)("input",{className:`${u} mt-1`,value:r.name,onChange:e=>g("name",e.target.value),placeholder:"What people choose in the agent editor"})]})]}),"azure-openai"===r.provider||"openai-compatible"===r.provider?(0,n.jsx)("div",{className:"mt-4 rounded-(--radius) border border-warn bg-warn-soft p-4 text-[13px] text-warn",children:"Compatibility varies by endpoint. The agent editor shows capability warnings before an agent is saved."}):null,null===f?null:(0,n.jsx)("div",{role:"alert",className:"mt-4 rounded-(--radius) border border-danger bg-danger-soft p-4 text-[13px] text-danger",children:f}),(0,n.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,n.jsx)(o(),{href:"/admin/models",className:`${c} bg-surface no-underline`,children:"Cancel"}),(0,n.jsx)("button",{type:"submit",disabled:!x,className:`${c} border-accent bg-accent text-white`,children:a?"Saving…":"Save"})]})]})]})}},7662:(e,r,t)=>{"use strict";var n=t(2898);t.o(n,"usePathname")&&t.d(r,{usePathname:function(){return n.usePathname}}),t.o(n,"useRouter")&&t.d(r,{useRouter:function(){return n.useRouter}}),t.o(n,"useSearchParams")&&t.d(r,{useSearchParams:function(){return n.useSearchParams}})},7844:(e,r,t)=>{"use strict";t.d(r,{Q:()=>n,n:()=>a});let n={autoComplete:"off","data-1p-ignore":"true","data-lpignore":"true"},a={autoComplete:"one-time-code","data-1p-ignore":"true","data-lpignore":"true"}}},e=>{e.O(0,[6365,3881,1e3,7358],()=>e(e.s=210)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/page-7c39ee3c51034f12.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8635],{1035:(e,t,n)=>{"use strict";n.d(t,{Ig:()=>h,J1:()=>l,KI:()=>f,LG:()=>x,O:()=>d,PQ:()=>i,Uu:()=>b,Vt:()=>r,ZO:()=>p,ff:()=>y,oO:()=>u,sQ:()=>o,v1:()=>c,vK:()=>g});let r=[{id:"anthropic",label:"Anthropic",description:"Claude models through the native Anthropic Messages API."},{id:"anthropic-compatible",label:"Anthropic-compatible endpoint",description:"A configurable endpoint that speaks the Anthropic Messages API."},{id:"azure-openai",label:"Microsoft Azure OpenAI",description:"An Azure deployment translated by the internal gateway."},{id:"openai",label:"OpenAI",description:"OpenAI Responses API models translated by the internal gateway."},{id:"openai-compatible",label:"OpenAI-compatible endpoint",description:"A configurable endpoint such as vLLM, Ollama, or a vendor gateway."}];function a(e){return"object"!=typeof e||null===e||Array.isArray(e)?null:e}let s=new Set(r.map(e=>e.id));function i(e){let t=a(e);if(null===t||!Array.isArray(t.models))throw Error("The models response has no list.");return t.models.map((e,t)=>{let n,r=a(e);if(null===r||"string"!=typeof r.id||"string"!=typeof r.name||"string"!=typeof r.provider||!s.has(r.provider)||"boolean"!=typeof r.hasCredential)throw Error(`Model connection ${String(t)} is invalid.`);return{id:r.id,name:r.name,provider:r.provider,config:null===(n=a(r.config))?{}:{..."string"==typeof n.baseUrl?{baseUrl:n.baseUrl}:{},..."string"==typeof n.deployment?{deployment:n.deployment}:{},..."string"==typeof n.apiVersion?{apiVersion:n.apiVersion}:{}},hasCredential:r.hasCredential,ready:"boolean"==typeof r.ready&&r.ready}})}function o(e){return r.find(t=>t.id===e)?.label??e}function l(e){return e.hasCredential?e.ready?{text:"Ready",tone:"ok"}:{text:"Configuration incomplete",tone:"warn"}:{text:"Credential missing",tone:"danger"}}function d(e){let t=[o(e.provider)];return void 0!==e.config.baseUrl&&t.push(e.config.baseUrl),void 0!==e.config.deployment&&t.push(`deployment ${e.config.deployment}`),void 0!==e.config.apiVersion&&t.push(`API version ${e.config.apiVersion}`),t.join(" \xb7 ")}function c(e){let t={};return""!==e.baseUrl.trim()&&(t.baseUrl=e.baseUrl.trim()),""!==e.deployment.trim()&&(t.deployment=e.deployment.trim()),""!==e.apiVersion.trim()&&(t.apiVersion=e.apiVersion.trim()),{name:e.name.trim(),provider:e.provider,apiKey:e.apiKey,config:t}}function p(e){return""!==e.name.trim()&&""!==e.apiKey&&("azure-openai"===e.provider?""!==e.baseUrl.trim()&&""!==e.deployment.trim()&&""!==e.apiVersion.trim():"openai-compatible"!==e.provider||""!==e.baseUrl.trim())}let m={anthropic:{required:[]},"anthropic-compatible":{required:[]},openai:{required:[]},"openai-compatible":{required:["baseUrl"]},"azure-openai":{required:["baseUrl","deployment","apiVersion"]}};function u(e){return"azure-openai"===e?["baseUrl","deployment","apiVersion"]:["baseUrl"]}function x(e,t){return""!==e.name.trim()&&m[t].required.every(t=>""!==e[t].trim())}function h(e,t){let n={};for(let r of u(t))""!==e[r].trim()&&(n[r]=e[r].trim());return{name:e.name.trim(),config:n}}function f(e){let t=a(e),n=null===t?null:a(t.error),r=null!==n&&"string"==typeof n.message?n.message:null,s=(null!==n&&Array.isArray(n.details)?n.details:[]).filter(e=>"string"==typeof e).join(" ");return null!==r&&""!==s?`${r} ${s}`:null!==r?r:""!==s?s:"The request failed."}function b(e){let t=a(e);if(null===t||!Array.isArray(t.agents))return[];let n=[];for(let e of t.agents){let t=a(e);if(null===t||"string"!=typeof t.id||"string"!=typeof t.name)continue;let r="string"==typeof t.modelConnectionId?t.modelConnectionId:null;n.push({id:t.id,name:t.name,modelConnectionId:r})}return n}function g(e,t){return e.filter(e=>e.modelConnectionId===t).map(e=>({agentId:e.id,agentName:e.name}))}function y(e,t){return e===t}},3113:(e,t,n)=>{Promise.resolve().then(n.bind(n,8375))},7844:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r,n:()=>a});let r={autoComplete:"off","data-1p-ignore":"true","data-lpignore":"true"},a={autoComplete:"one-time-code","data-1p-ignore":"true","data-lpignore":"true"}},8375:(e,t,n)=>{"use strict";n.d(t,{ModelsScreen:()=>v});var r=n(126),a=n(6365),s=n.n(a),i=n(3310),o=n(1035),l=n(7844);let d={baseUrl:"Base URL",deployment:"Deployment",apiVersion:"API version"},c="rounded-(--radius-sm) border border-border-strong bg-surface-2 p-4",p="w-full rounded-(--radius-sm) border border-border-strong bg-surface px-2.5 py-[7px] text-[13.5px] text-text focus:border-accent focus:outline-2 focus:-outline-offset-1 focus:outline-accent",m="inline-flex h-8 items-center justify-center rounded-(--radius-sm) border border-border-strong px-[13px] text-[13px] font-medium disabled:cursor-not-allowed disabled:opacity-50",u="rounded-(--radius-sm) border border-danger bg-danger-soft p-2.5 text-[12.5px] text-danger",x="rounded-(--radius-sm) border border-border bg-surface p-2.5 text-[12.5px] text-muted";async function h(e){try{return await e.json()}catch{return null}}function f({connection:e,onUpdated:t,onRemoved:n,onClose:a}){let[s,b]=(0,i.useState)(()=>({name:e.name,baseUrl:e.config.baseUrl??"",deployment:e.config.deployment??"",apiVersion:e.config.apiVersion??""})),[g,y]=(0,i.useState)(!1),[j,v]=(0,i.useState)(null),[N,w]=(0,i.useState)(""),[k,$]=(0,i.useState)(!1),[C,S]=(0,i.useState)(null),[A,U]=(0,i.useState)(null),[E,I]=(0,i.useState)(!1),[P,T]=(0,i.useState)(""),[O,V]=(0,i.useState)({kind:"loading"}),[R,K]=(0,i.useState)(!1),[M,q]=(0,i.useState)(null);function L(e,t){b(n=>({...n,[e]:t}))}let Q=(0,o.J1)(e),z=(0,o.oO)(e.provider),_=(0,o.ff)(P,e.name);return(0,r.jsxs)("div",{className:"space-y-4 border-t border-border bg-surface-2 p-4",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("h2",{className:"text-[14px] font-semibold",children:[e.name," ",(0,r.jsxs)("span",{className:"font-normal text-muted",children:["\xb7 ",(0,o.sQ)(e.provider)]})]}),(0,r.jsx)("button",{type:"button",className:m,onClick:a,children:"Close"})]}),(0,r.jsxs)("form",{onSubmit:function(n){n.preventDefault(),(0,o.LG)(s,e.provider)&&(y(!0),v(null),fetch(`/api/model-connections/${e.id}`,{method:"PATCH",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify((0,o.Ig)(s,e.provider))}).then(async e=>{let n=await h(e);if(!e.ok)throw Error((0,o.KI)(n));let[r]=(0,o.PQ)({models:[n]});void 0!==r&&t(r)}).catch(e=>v(e instanceof Error?e.message:String(e))).finally(()=>y(!1)))},className:`${c} space-y-3`,children:[(0,r.jsx)("h3",{className:"text-[13px] font-semibold",children:"Connection settings"}),(0,r.jsxs)("label",{htmlFor:`name-${e.id}`,className:"block text-[13px] font-semibold",children:["Display name",(0,r.jsx)("input",{id:`name-${e.id}`,className:`${p} mt-1`,value:s.name,onChange:e=>L("name",e.target.value)})]}),z.map(t=>(0,r.jsxs)("label",{htmlFor:`${t}-${e.id}`,className:"block text-[13px] font-semibold",children:[d[t],(0,r.jsx)("input",{id:`${t}-${e.id}`,className:`${p} mt-1 font-mono`,value:s[t],onChange:e=>L(t,e.target.value)})]},t)),null===j?null:(0,r.jsx)("p",{role:"alert",className:u,children:j}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("button",{type:"submit",disabled:g||!(0,o.LG)(s,e.provider),className:`${m} border-accent bg-accent text-white`,children:g?"Saving…":"Save changes"})})]}),(0,r.jsxs)("form",{onSubmit:function(t){t.preventDefault(),""!==N&&($(!0),S(null),U(null),fetch(`/api/model-connections/${e.id}/credential`,{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({apiKey:N})}).then(async t=>{if(!t.ok)throw Error((0,o.KI)(await h(t)));return w(""),U("Credential rotated. Testing the connection…"),fetch(`/api/model-connections/${e.id}/test`,{method:"POST",headers:{accept:"application/json"}})}).then(async e=>{let t=await h(e),n="string"==typeof t?.message?t.message:`HTTP ${String(e.status)}`;U(e.ok?`Credential rotated. ${n}`:`Credential rotated. Test failed: ${n}`)}).catch(e=>S(e instanceof Error?e.message:String(e))).finally(()=>$(!1)))},className:`${c} space-y-3`,children:[(0,r.jsxs)("h3",{className:"text-[13px] font-semibold",children:["Rotate credential"," ",(0,r.jsx)("span",{className:`ml-1 rounded-full px-2 py-0.5 text-[10px] ${"ok"===Q.tone?"bg-ok-soft text-ok":"warn"===Q.tone?"bg-warn-soft text-warn":"bg-danger-soft text-danger"}`,children:Q.text})]}),(0,r.jsxs)("label",{htmlFor:`rotate-${e.id}`,className:"block text-[13px] font-semibold",children:["New API key",(0,r.jsx)("input",{id:`rotate-${e.id}`,type:"password",...l.Q,className:`${p} mt-1 font-mono`,value:N,onChange:e=>w(e.target.value)}),(0,r.jsx)("span",{className:"mt-1 block text-[11.5px] font-normal text-muted",children:"The current key is never shown. Saving replaces it and retests the connection immediately."})]}),null===C?null:(0,r.jsx)("p",{role:"alert",className:u,children:C}),null===A?null:(0,r.jsx)("p",{role:"status",className:x,children:A}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("button",{type:"submit",disabled:k||""===N,className:`${m} border-accent bg-accent text-white`,children:k?"Rotating…":"Rotate credential"})})]}),(0,r.jsxs)("div",{className:`${c} space-y-3`,children:[(0,r.jsx)("h3",{className:"text-[13px] font-semibold text-danger",children:"Remove connection"}),E?(0,r.jsxs)("div",{className:"space-y-3",children:["loading"===O.kind?(0,r.jsx)("p",{className:x,children:"Checking which agents use this connection…"}):"error"===O.kind?(0,r.jsx)("p",{role:"alert",className:u,children:"Could not check which agents use this connection. The removal will still report it."}):0===O.referencing.length?(0,r.jsx)("p",{className:x,children:"No agent currently uses this connection."}):(0,r.jsxs)("div",{role:"alert",className:u,children:["This connection is used by ",O.referencing.length," agent",1===O.referencing.length?"":"s",":"," ",O.referencing.map(e=>e.agentName).join(", "),". Removing it falls those agents back to the workspace default model."]}),(0,r.jsxs)("label",{htmlFor:`confirm-${e.id}`,className:"block text-[13px] font-semibold",children:["Type ",(0,r.jsx)("span",{className:"font-mono",children:e.name})," to confirm",(0,r.jsx)("input",{id:`confirm-${e.id}`,className:`${p} mt-1`,value:P,onChange:e=>T(e.target.value)})]}),null===M?null:(0,r.jsx)("p",{role:"alert",className:u,children:M}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",className:m,onClick:()=>{I(!1),T(""),q(null)},children:"Cancel"}),(0,r.jsx)("button",{type:"button",disabled:!_||R,className:`${m} border-danger bg-danger text-white`,onClick:function(){(0,o.ff)(P,e.name)&&(K(!0),q(null),fetch(`/api/model-connections/${e.id}`,{method:"DELETE",headers:{accept:"application/json"}}).then(async t=>{if(!t.ok)throw Error((0,o.KI)(await h(t)));n(e.id)}).catch(e=>q(e instanceof Error?e.message:String(e))).finally(()=>K(!1)))},children:R?"Removing…":"Remove connection"})]})]}):(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("button",{type:"button",className:`${m} border-danger text-danger`,onClick:function(){I(!0),T(""),q(null),V({kind:"loading"}),fetch("/api/agents",{headers:{accept:"application/json"}}).then(async e=>{if(!e.ok)throw Error(`HTTP ${String(e.status)}`);return e.json()}).then(t=>{V({kind:"loaded",referencing:(0,o.vK)((0,o.Uu)(t),e.id)})}).catch(()=>V({kind:"error"}))},children:"Remove connection…"})})]})]})}let b="overflow-hidden rounded-(--radius) border border-border bg-surface shadow-(--shadow)",g="inline-flex h-8 items-center justify-center rounded-(--radius-sm) border border-border-strong px-[13px] text-[13px] font-medium",y={ok:"bg-ok-soft text-ok",warn:"bg-warn-soft text-warn",danger:"bg-danger-soft text-danger"};function j({models:e,onChange:t}){let[n,a]=(0,i.useState)(null),[s,l]=(0,i.useState)(null);return 0===e.length?(0,r.jsx)("div",{className:`${b} p-5 text-[13px] text-muted`,children:"No providers are configured yet. Add one to make a model available to agents."}):(0,r.jsxs)("div",{className:b,children:[e.map(n=>{let i=(0,o.J1)(n);return(0,r.jsxs)("div",{className:"border-b border-border last:border-b-0",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-4 px-4 py-[14px]",children:[(0,r.jsxs)("div",{className:"min-w-[260px] flex-1",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-[13.5px] font-semibold",children:[n.name,(0,r.jsx)("span",{className:`rounded-full px-2 py-0.5 text-[10px] ${y[i.tone]}`,children:i.text})]}),(0,r.jsx)("div",{className:"mt-0.5 text-[12px] text-muted",children:(0,o.O)(n)}),n.hasCredential?(0,r.jsx)("div",{className:"mt-1 text-[11px] text-muted",children:"Credential stored securely \xb7 write-only"}):null]}),(0,r.jsx)("button",{type:"button",className:g,onClick:()=>{a(`Testing ${n.name}…`),fetch(`/api/model-connections/${n.id}/test`,{method:"POST",headers:{accept:"application/json"}}).then(async e=>{let t=await e.json();if(!e.ok)throw Error(`Connection test returned ${e.status}.`);a("string"==typeof t.message?t.message:`${n.name} is connected.`)}).catch(e=>a(e instanceof Error?e.message:String(e)))},children:"Test"}),(0,r.jsx)("button",{type:"button",className:g,"aria-expanded":s===n.id,onClick:()=>l(s===n.id?null:n.id),children:s===n.id?"Hide":"Manage"})]}),s===n.id?(0,r.jsx)(f,{connection:n,onClose:()=>l(null),onUpdated:n=>t(e.map(e=>e.id===n.id?n:e)),onRemoved:n=>{l(null),t(e.filter(e=>e.id!==n))}}):null]},n.id)}),null===n?null:(0,r.jsx)("div",{role:"status",className:"border-t border-border bg-surface-2 px-4 py-2 text-[12px]",children:n})]})}function v(){let[e,t]=(0,i.useState)(null),[n,a]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let e=!0;return fetch("/api/model-connections",{headers:{accept:"application/json"}}).then(async e=>{if(!e.ok)throw Error(`Model connections request returned ${e.status}.`);return e.json()}).then(n=>{e&&t((0,o.PQ)(n))}).catch(t=>{e&&a(t instanceof Error?t.message:String(t))}),()=>{e=!1}},[]),(0,r.jsxs)("main",{className:"w-full max-w-[980px] px-8 pt-[26px] pb-[90px]",children:[(0,r.jsxs)("div",{className:"mb-[22px] flex flex-wrap items-start gap-4",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("h1",{className:"text-[21px]",children:"Models"}),(0,r.jsx)("p",{className:"mt-[3px] text-[13px] text-muted",children:"Providers behind the internal gateway. Agents select a model; they never see provider credentials."})]}),(0,r.jsx)(s(),{className:`${g} border-accent bg-accent text-white no-underline`,href:"/admin/models/new",children:"+ Add Provider"})]}),(0,r.jsxs)("div",{className:"mb-4 flex gap-5 border-b border-border text-[13px] font-medium",children:[(0,r.jsx)("span",{className:"border-b-2 border-accent px-1 pb-2 text-accent",children:"Providers"}),(0,r.jsx)("span",{className:"px-1 pb-2 text-muted",children:"Compatibility"}),(0,r.jsx)("span",{className:"px-1 pb-2 text-muted",children:"Gateway"})]}),null!==n?(0,r.jsx)("div",{role:"alert",className:"rounded-(--radius) border border-danger bg-danger-soft p-4 text-[13px] text-danger",children:n}):null===e?(0,r.jsx)("div",{className:"text-[13px] text-muted",children:"Loading model connections…"}):(0,r.jsx)(j,{models:e,onChange:t})]})}}},e=>{e.O(0,[6365,3881,1e3,7358],()=>e(e.s=3113)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/runtimes/page-d51caeefc8b5ed98.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9556],{1207:(e,r,n)=>{"use strict";n.d(r,{RuntimesScreen:()=>m});var t=n(126),s=n(3310);let i=[{id:"local",label:"This machine",description:"Development only. The agent runs as a child process of the runner, as the same user.",side:"no isolation",managed:!1},{id:"sandbox-runtime",label:"Sandboxed process",description:"bubblewrap on Linux, Seatbelt on macOS. Filesystem and network allowlists without a container.",side:"npx, no Docker",managed:!1},{id:"docker",label:"Docker",description:"One container per session, capabilities dropped, read-only root, egress network limited to the gateway.",side:"recommended for self-hosting",managed:!1},{id:"kubernetes",label:"Kubernetes",description:"One Pod per runtime \xb7 namespace agent-sandboxes \xb7 default-deny NetworkPolicy \xb7 optional gVisor RuntimeClass",side:"portable enterprise",managed:!1},{id:"aca-sessions",label:"Azure Container Apps dynamic sessions",description:"Pool registered \xb7 Hyper-V per session \xb7 network policy fixed when the pool is created, reported by the registry",managed:!0},{id:"aws-agentcore",label:"Amazon Bedrock AgentCore Runtime",description:"Managed Firecracker microVM runtime.",managed:!0,defaultReason:"Image not published to ECR for this account (arm64 required)."},{id:"aws-ecs",label:"Amazon ECS on Fargate",description:"VM-isolated Fargate task.",managed:!0,defaultReason:"Not configured — no task definition registered."},{id:"cloud-run-sandbox",label:"Google Cloud Run sandboxes",description:"Managed Cloud Run sandbox.",managed:!0,defaultReason:"Not configured — no runner deployed with --sandbox-launcher."},{id:"cloud-run-service",label:"Google Cloud Run (per-session service)",description:"One private Cloud Run v2 service per session, deployed by the runner manager. Used in place of the unimplemented cloud-run-sandbox driver — see docs/adr/ADR-cloud-run-service-driver.md.",managed:!0,defaultReason:"Not configured — the runner manager is not set to this driver."},{id:"gke-agent-sandbox",label:"GKE Agent Sandbox",description:"Managed GKE Agent Sandbox runtime.",managed:!0,defaultReason:"Not configured — cluster does not expose the Sandbox CRDs."},{id:"external",label:"External provider",description:"E2B, Daytona, Modal, Vercel Sandbox, Cloudflare Sandboxes. None registered.",managed:!1}],a=["⚠ Domain allowlist is not supported on this runtime.",'"Restricted" will become all-or-nothing egress.'],d=["✕ This agent uses a local command connector (Filesystem MCP).","This runtime has no outbound network for package downloads.","Bundle the connector into the runtime image, or switch it to a remote URL."];async function o(e,r){let n=await e("/api/runtimes/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({driver:r,echo:"agent-workspace runtime test"})});if(!n.ok)throw Error(`Test Runtime failed with HTTP ${String(n.status)}.`);let t=await n.json();if(!Array.isArray(t.transcript)||"string"!=typeof t.driverId)throw Error("Test Runtime returned an invalid transcript.");return{driverId:t.driverId,transcript:t.transcript,destroyed:!0===t.destroyed}}function l(e){if("object"!=typeof e||null===e||Array.isArray(e))return[];let r=e.runtimeProfiles;return Array.isArray(r)?r.filter(e=>!("object"!=typeof e||null===e||Array.isArray(e))&&"string"==typeof e.id&&"string"==typeof e.name&&"string"==typeof e.driver&&"string"==typeof e.networkPolicy&&"string"==typeof e.filesystem):[]}async function c(e,r){let n=await e("/api/runtime-profiles",{cache:"no-store"});if(!n.ok)throw Error(`Loading runtime profiles failed with HTTP ${String(n.status)}.`);let t=l(await n.json()).find(e=>e.driver===r.driver),s=await e(void 0===t?"/api/runtime-profiles":`/api/runtime-profiles/${t.id}`,{method:void 0===t?"POST":"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),i=await s.json();if(!s.ok){let e="object"!=typeof i||null===i||Array.isArray(i)?void 0:i.error?.message;throw Error("string"==typeof e?e:`Saving the runtime profile failed with HTTP ${String(s.status)}.`)}let a=l({runtimeProfiles:[i]})[0];if(void 0===a)throw Error("Saving the runtime profile returned an invalid resource.");return a}let p="rounded-(--radius) border border-border bg-surface shadow-(--shadow)",u="inline-flex h-8 items-center justify-center rounded-(--radius-sm) border border-border-strong px-[13px] text-[13px] font-medium disabled:cursor-not-allowed disabled:opacity-50";function m({entries:e}){let r=(0,s.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]),n=i.map(e=>{let n=r.get(e.id);return{option:e,entry:n??{id:e.id,label:e.label,connectionExists:!1,imageReachable:!1,testPassed:!1,state:"disabled",reason:e.defaultReason??"Not configured — this runtime is not registered.",networkPolicies:null}}}),[l,x]=(0,s.useState)(()=>n.find(({entry:e})=>!0===e.connectionExists&&!0===e.imageReachable)?.option.id??"local"),[b,g]=(0,s.useState)({kind:"idle"}),[h,f]=(0,s.useState)({kind:"idle"}),y=n.find(({option:e})=>e.id===l)?.entry,w=({option:e,entry:r})=>(0,t.jsxs)("button",{type:"button",disabled:"disabled"===r.state,"aria-pressed":l===e.id,onClick:()=>{x(e.id),g({kind:"idle"}),f({kind:"idle"})},className:`flex w-full items-start gap-3 border-b border-border px-[14px] py-3 text-left last:border-b-0 ${l===e.id?"bg-accent-soft":"bg-surface"} disabled:bg-surface-2`,children:[(0,t.jsx)("span",{"aria-hidden":"true",className:`mt-1 size-3.5 flex-none rounded-full border ${l===e.id?"border-[4px] border-accent":"border-border-strong"}`}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("span",{className:"flex flex-wrap items-center gap-2 text-[13.5px] font-semibold",children:[e.label,r.testPassed?null:(0,t.jsx)("span",{className:"rounded-full bg-warn-soft px-2 py-0.5 text-[10px] font-semibold text-warn",children:"Unverified"}),"local"===e.id?(0,t.jsx)("span",{className:"rounded-full bg-danger-soft px-2 py-0.5 text-[10px] text-danger",children:"No isolation"}):null,"docker"===e.id?(0,t.jsx)("span",{className:"rounded-full bg-accent-soft px-2 py-0.5 text-[10px] text-accent",children:"Recommended"}):null]}),(0,t.jsx)("span",{className:"mt-0.5 block text-[12px] leading-5 text-muted",children:"disabled"===r.state?r.reason:e.description})]}),void 0===e.side?null:(0,t.jsx)("span",{className:"pt-0.5 text-[11px] whitespace-nowrap text-muted",children:e.side})]},e.id);return(0,t.jsxs)("main",{className:"w-full max-w-[980px] px-8 pt-[26px] pb-[90px]",children:[(0,t.jsxs)("div",{className:"mb-[22px]",children:[(0,t.jsx)("h1",{className:"text-[21px]",children:"Runtimes"}),(0,t.jsx)("p",{className:"mt-[3px] text-[13px] text-muted",children:"Select where agent sessions run and verify the sandbox before use."})]}),(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:"mb-3 flex items-end gap-4",children:[(0,t.jsx)("h2",{className:"text-[15px] font-semibold",children:"Runtime"}),(0,t.jsx)("p",{className:"ml-auto max-w-[560px] text-right text-[12px] text-muted",children:"A driver is selectable only when a connection exists, the image is reachable, and a test has passed."})]}),(0,t.jsxs)("div",{className:p,children:[n.filter(({option:e})=>!e.managed&&"external"!==e.id).map(w),(0,t.jsxs)("div",{className:"border-b border-border bg-surface px-[14px] py-3",children:[(0,t.jsx)("div",{className:"mb-2 text-[13.5px] font-semibold",children:"Managed sandbox"}),(0,t.jsx)("div",{className:"overflow-hidden rounded-(--radius-sm) border border-border",children:n.filter(({option:e})=>e.managed).map(w)})]}),n.filter(({option:e})=>"external"===e.id).map(w)]}),(0,t.jsxs)("div",{className:"mt-4 flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",className:u,disabled:y?.connectionExists!==!0||!0!==y.imageReachable||"running"===b.kind,onClick:()=>{g({kind:"running"}),o(fetch,l).then(e=>g({kind:"done",driverId:e.driverId,lines:e.transcript})).catch(e=>g({kind:"error",message:e instanceof Error?e.message:String(e)}))},children:"running"===b.kind?"Testing…":"Test Runtime"}),(0,t.jsx)("button",{type:"button",className:`${u} border-accent bg-accent text-white`,disabled:"done"!==b.kind||b.driverId!==l||"saving"===h.kind,onClick:()=>{var e;f({kind:"saving"}),c(fetch,(e=y??{id:l,networkPolicies:null},{name:`${e.id} default`,driver:e.id,networkPolicy:function(e,r){let n="local"===e?"open":"kubernetes"===e?"restricted":"none";if(null===r)return n;let t=r[0];return void 0===t||r.includes(n)?n:t}(e.id,e.networkPolicies),filesystem:"read-write"})).then(e=>f({kind:"done",message:`${e.name} is ready to use.`})).catch(e=>f({kind:"error",message:e instanceof Error?e.message:String(e)}))},children:"saving"===h.kind?"Saving…":"Save"})]}),"done"===b.kind?(0,t.jsx)("pre",{className:"mt-3 overflow-auto rounded-(--radius-sm) bg-surface-2 p-3 text-[12px]",children:b.lines.join("\n")}):null,"error"===b.kind?(0,t.jsx)("p",{className:"mt-3 text-[12px] text-danger",children:b.message}):null,"done"===h.kind?(0,t.jsx)("p",{className:"mt-3 text-[12px] text-success",children:h.message}):null,"error"===h.kind?(0,t.jsx)("p",{className:"mt-3 text-[12px] text-danger",children:h.message}):null,(0,t.jsxs)("div",{className:"mt-4 rounded-(--radius) border border-border bg-surface-2 p-[14px] text-[12.5px] text-muted",children:["A driver that is not usable here is shown ",(0,t.jsx)("b",{children:"disabled with the reason"}),", never hidden. The control plane registers and selects runtimes — it does not build images, create session pools or provision clusters."]})]}),(0,t.jsxs)("section",{className:"mt-7",children:[(0,t.jsx)("h2",{className:"mb-3 text-[15px] font-semibold",children:"Runtime switch comparison"}),(0,t.jsxs)("div",{className:p,children:[(0,t.jsx)("div",{className:"border-b border-border px-4 py-3 text-[13px] font-semibold",children:"Changing runtime: Docker → Azure Container Apps dynamic sessions"}),(0,t.jsx)("div",{className:"space-y-1 border-b border-border bg-warn-soft px-4 py-3 text-[12.5px] text-warn",children:a.map(e=>(0,t.jsx)("p",{children:e},e))}),(0,t.jsx)("div",{className:"space-y-1 bg-danger-soft px-4 py-3 text-[12.5px] text-danger",children:d.map(e=>(0,t.jsx)("p",{children:e},e))})]})]})]})}},5036:(e,r,n)=>{Promise.resolve().then(n.bind(n,1207))}},e=>{e.O(0,[3881,1e3,7358],()=>e(e.s=5036)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/settings/page-7f1874c14b33856a.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6568],{3125:(e,t,a)=>{"use strict";a.d(t,{WorkspaceModelDefaultCard:()=>s});var r=a(126);function s(){return(0,r.jsxs)("section",{className:"rounded-(--radius) border border-border bg-surface p-4","aria-labelledby":"workspace-model-default-heading",children:[(0,r.jsx)("h2",{id:"workspace-model-default-heading",className:"mb-1 text-[15px] font-semibold",children:"Workspace default model"}),(0,r.jsxs)("p",{className:"text-[13px] text-muted",children:["The last rung of the resolution ladder, below the project default and the agent override. Setting it from this screen is not available yet — this deployment has no API route to change it, only to read it during a run. Until one lands, unset it stays"," ",(0,r.jsx)("code",{children:"not set"}),", and a run with no project or agent default configured is refused with the reason named at the layer that failed, rather than silently guessing."]})]})}},8759:(e,t,a)=>{Promise.resolve().then(a.bind(a,3125)),Promise.resolve().then(a.bind(a,2685))}},e=>{e.O(0,[7413,6365,2685,3881,1e3,7358],()=>e(e.s=8759)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/shares/page-c194edfd7701dc77.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5381],{3140:(e,s,t)=>{Promise.resolve().then(t.bind(t,8202))},8202:(e,s,t)=>{"use strict";t.d(s,{SharedLinksScreen:()=>n});var a=t(126),i=t(3310);function n(){let[e,s]=(0,i.useState)(null),[t,n]=(0,i.useState)(!0),[r,d]=(0,i.useState)(null),l=(0,i.useCallback)(async()=>{try{let[e,t]=await Promise.all([fetch("/api/shares"),fetch("/api/sharing-policies")]);if(!e.ok||!t.ok)throw Error(`Sharing request returned ${e.status}/${t.status}`);s((await e.json()).shares),n((await t.json()).publicSharing)}catch(e){d(e instanceof Error?e.message:String(e))}},[]);async function c(e){await fetch(`/api/shares/${e}`,{method:"DELETE"}),await l()}async function o(){let e=!t,s=await fetch("/api/sharing-policies",{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({publicSharing:e})});s.ok?(n(e),await l()):d(`Policy update returned ${s.status}`)}return(0,i.useEffect)(()=>{l()},[l]),(0,a.jsxs)("main",{className:"w-full max-w-[1120px] px-8 pt-[26px] pb-[90px]",children:[(0,a.jsxs)("div",{className:"mb-5 flex items-start justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-[21px]",children:"Shared links"}),(0,a.jsx)("p",{className:"text-[13px] text-muted",children:"Every definition, snapshot and runnable link in this workspace."})]}),(0,a.jsxs)("label",{className:"flex items-center gap-2 text-[13px]",children:[(0,a.jsx)("input",{type:"checkbox",checked:t,onChange:()=>void o()}),"Public sharing"]})]}),r?(0,a.jsx)("p",{role:"alert",className:"text-danger",children:r}):null,(0,a.jsxs)("div",{className:"overflow-hidden rounded-(--radius) border border-border bg-surface",children:[e?.map(e=>(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3 border-b border-border px-4 py-3 last:border-0",children:[(0,a.jsxs)("div",{className:"min-w-[240px] flex-1",children:[(0,a.jsx)("div",{className:"font-semibold",children:e.subjectLabel}),(0,a.jsxs)("div",{className:"text-[12px] text-muted",children:[e.subjectType," \xb7 ",e.mode??e.visibility," \xb7 ",e.viewCount," views",e.budgetCapUsd?` \xb7 $${e.spentUsd} of $${e.budgetCapUsd}`:""]})]}),(0,a.jsx)("span",{className:"rounded-full bg-surface-2 px-2 py-1 text-[11px]",children:e.revokedAt?"Revoked":e.suspendedAt?"Suspended":e.stopped?"Stopped":"Active"}),e.revokedAt?(0,a.jsx)("span",{}):(0,a.jsx)("button",{type:"button",onClick:()=>void c(e.id),className:"rounded border border-border-strong px-3 py-1.5 text-[12px]",children:"runnable"===e.mode?"Stop":"Revoke"})]},e.id)),e?.length===0?(0,a.jsx)("div",{className:"p-5 text-[13px] text-muted",children:"No links have been shared."}):null,null===e?(0,a.jsx)("div",{className:"p-5 text-[13px] text-muted",children:"Loading…"}):null]})]})}}},e=>{e.O(0,[3881,1e3,7358],()=>e(e.s=3140)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/users/page-463489ca2ebf664f.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2251],{868:(e,t,n)=>{Promise.resolve().then(n.bind(n,9833))},1841:(e,t,n)=>{"use strict";n.d(t,{EH:()=>r,VC:()=>i});var s=n(7413),a=n(51);let i=s.YjP().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,"must be a UUID"),r=a.G1(s.You,void 0)},3701:(e,t,n)=>{"use strict";n.d(t,{DF:()=>c,Gv:()=>l,JH:()=>i,gR:()=>m,nG:()=>r,nT:()=>o,w4:()=>u});var s=n(7413),a=n(1841);let i=["owner","admin","builder","viewer"],r=s.Ikc({principalId:s.YjP().min(1),kind:s.k5n(["membership","api-key"]),role:s.k5n(i),workspaceId:s.YjP().min(1),userId:s.YjP().min(1).nullable(),label:s.YjP().min(1)}).strict(),l=s.Ikc({id:s.YjP().min(1),principalId:a.VC,userId:s.YjP().min(1),email:s.YjP().min(1),name:s.YjP().min(1),role:s.k5n(i),createdAt:a.EH}).strict(),o=s.Ikc({memberships:s.YOg(l)}).strict(),c=s.Ikc({membership:l}).strict(),d=s.Ikc({id:s.YjP().min(1),email:s.YjP().min(1),name:s.YjP().min(1),createdAt:a.EH}).strict(),u=s.Ikc({users:s.YOg(d)}).strict(),m=s.Ikc({user:d,membership:l}).strict()},4188:(e,t,n)=>{"use strict";n.d(t,{Sp:()=>o,W$:()=>l,Z1:()=>c,lt:()=>d});var s=n(7413),a=n(1841),i=n(3701);let r=s.Ikc({id:s.YjP().min(1),email:s.YjP().min(1),role:s.k5n(i.JH),invitedBy:s.YjP().min(1).nullable(),expiresAt:a.EH,acceptedAt:a.EH.nullable(),revokedAt:a.EH.nullable(),createdAt:a.EH}).strict(),l=s.Ikc({invitations:s.YOg(r)}).strict(),o=s.Ikc({invitation:r}).strict(),c=s.Ikc({invitation:r,token:s.YjP().min(1),link:s.YjP().min(1),warning:s.YjP().min(1)}).strict(),d=s.Ikc({workspaceId:s.YjP().min(1),membership:i.Gv}).strict()},9833:(e,t,n)=>{"use strict";n.d(t,{TeamScreen:()=>z});var s=n(126),a=n(3310),i=n(4188);let r={canListInvitations:!1,canCreateInvitation:!1,canResendInvitation:!1,canRevokeInvitation:!1,invitableRoles:[]};var l=n(3701);let o={canListMembers:!1,canChangeRole:!1,canRemoveMember:!1,conferrableRoles:[],viewerUserId:null};var c=n(1435);let d={owner:"Owner",admin:"Admin",builder:"Builder",viewer:"Viewer"};function u(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}function m(e,t,n,s){let a=function(e,t){if("object"!=typeof e||null===e||Array.isArray(e))return null;let n=e[t];if(!Array.isArray(n))return null;let s=[];for(let e of n){if("object"!=typeof e||null===e||Array.isArray(e))return null;s.push(e)}return s}(e,t);if(null===a)return null;let i=0;for(let e of a){let t=e[n];if(null!==t&&"string"!=typeof t)return null;t===s&&(i+=1)}return i}function h(e,t,n){return 1===e?`1 ${t}`:`${String(e)} ${n}`}function p(e,t){if("api"===e.kind)return e.message;let n=t.impact?.sessions??0;return 500===t.status&&n>0?`${e.reason} This member still owns ${h(n,"session","sessions")} in this workspace, and a workspace may not hold a session owned by someone who is not a member. Delete or reassign those sessions first, or leave the membership in place.`:e.reason}let x={pending:"Pending",expired:"Expired",accepted:"Accepted",revoked:"Revoked"},b={email:"",role:null};function f(e){let t=e.email.trim();return 0!==t.length&&t.includes("@")?null===e.role?null:{email:t,role:e.role}:null}function v(e){return"api"!==e.kind?e.reason:"no_such_invitation"===e.code?`${e.message} The list on this screen is out of date; reload it.`:e.message}let j="h-8 rounded-(--radius-sm) border border-border-strong bg-surface px-2 text-[13px] text-text",g="invite-email",w="invite-role";function k({capability:e,draft:t,sending:n,problem:a,onChange:i,onSubmit:r}){if(!e.canCreateInvitation)return null;let l=null!==f(t)&&!n;return(0,s.jsxs)("form",{className:"mb-4 rounded-(--radius) border border-border bg-surface p-5 shadow-(--shadow)",onSubmit:e=>{e.preventDefault(),l&&r()},children:[(0,s.jsx)("h3",{className:"text-[14px] font-semibold text-text",children:"Invite someone to this workspace"}),(0,s.jsx)("p",{className:"mt-1 text-[12.5px] text-muted",children:"They receive no email. The link appears once, here, for you to relay."}),(0,s.jsxs)("div",{className:"mt-4 flex flex-wrap items-end gap-3",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("label",{className:"text-[12px] font-semibold text-muted",htmlFor:g,children:"Email"}),(0,s.jsx)("input",{id:g,className:`${j} w-[260px]`,type:"email",autoComplete:"off",disabled:n,value:t.email,onChange:e=>i({...t,email:e.target.value})})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("label",{className:"text-[12px] font-semibold text-muted",htmlFor:w,children:"Role"}),(0,s.jsxs)("select",{id:w,className:j,disabled:n,value:t.role??"",onChange:n=>{var s,a;return i({...t,role:(s=e,a=n.target.value,s.invitableRoles.find(e=>e===a)??null)})},children:[(0,s.jsx)("option",{value:"",disabled:!0,children:"Choose a role"}),e.invitableRoles.map(e=>(0,s.jsx)("option",{value:e,children:d[e]},e))]})]}),(0,s.jsx)("button",{type:"submit",className:`inline-flex h-8 items-center rounded-(--radius-sm) border px-[13px] text-[13px] font-medium border-border-strong bg-surface text-text ${l?"":"pointer-events-none opacity-[.45]"}`,disabled:!l,children:n?"Sending…":"Send invitation"})]}),null===a?null:(0,s.jsx)("p",{className:"mt-3 text-[13px] text-danger",role:"alert",children:a})]})}let y="inline-flex h-8 items-center rounded-(--radius-sm) border px-[13px] text-[13px] font-medium",N="border-border-strong bg-surface text-text";function R({revealed:e,copyState:t,onCopy:n,onDismiss:i}){let r=(0,a.useRef)(null);(0,a.useEffect)(()=>{r.current?.focus()},[e.link]);let l=function(e){switch(e){case"untouched":return null;case"copied":return"Link copied. Send it to the person you invited; it is not shown again.";case"unavailable":return"This browser would not give the page the clipboard. Select the link above and copy it before leaving this screen.";default:throw Error(`unhandled copy state ${JSON.stringify(e)}`)}}(t);return(0,s.jsxs)("div",{"data-invitation-reveal":!0,role:"status",className:"mb-4 rounded-(--radius) border border-border-strong bg-surface p-5 shadow-(--shadow)",children:[(0,s.jsxs)("h3",{className:"text-[14px] font-semibold text-text",children:["Invitation link for ",e.email]}),(0,s.jsx)("p",{className:"mt-1 text-[12.5px] text-danger",children:e.warning}),(0,s.jsx)("p",{className:"mt-3 text-[12.5px] text-muted",children:"This deployment sends no email, so relay this link yourself. It is not stored anywhere and leaving this screen loses it."}),(0,s.jsx)("code",{className:"mt-3 block rounded-(--radius-sm) border border-border bg-surface-2 p-3 text-[12.5px] break-all text-text",children:e.link}),(0,s.jsxs)("div",{className:"mt-4 flex items-center gap-2",children:[(0,s.jsx)("button",{ref:r,type:"button","aria-label":`Copy the invitation link for ${e.email}`,className:`${y} ${N}`,onClick:n,children:"Copy link"}),(0,s.jsx)("button",{type:"button","aria-label":`Dismiss the invitation link for ${e.email}`,className:`${y} ${N}`,onClick:i,children:"Dismiss"})]}),null===l?null:(0,s.jsx)("p",{className:"mt-3 text-[12.5px] text-text-2",children:l})]})}let I="rounded-(--radius) border border-border bg-surface shadow-(--shadow)",$="border-b border-border px-4 py-3 text-[13px] align-top",E="border-b border-border px-4 py-2 text-left text-[12px] font-semibold text-muted",A="inline-flex h-8 items-center rounded-(--radius-sm) border px-[13px] text-[13px] font-medium",C="pointer-events-none opacity-[.45]";function S({state:e,capability:t,busyInvitationId:n,actionProblem:a,onResend:i,onRevoke:r}){switch(e.kind){case"loading":return(0,s.jsx)("p",{className:`${I} p-5 text-[13px] text-muted`,role:"status",children:"Loading invitations…"});case"refused":return(0,s.jsx)("p",{className:`${I} p-5 text-[13px] text-text-2`,role:"status",children:"Inviting people is not part of your role in this workspace, so its invitations are not shown here. Ask an Owner or an Admin if someone needs access."});case"failed":return(0,s.jsx)("p",{className:`${I} p-5 text-[13px] text-danger`,role:"alert",children:e.message});case"ready":break;default:throw Error(`unhandled invitations table state ${JSON.stringify(e)}`)}if(0===e.invitations.length)return(0,s.jsx)("p",{className:`${I} p-5 text-[13px] text-muted`,children:"No invitations have been sent from this workspace."});let l=t.canResendInvitation||t.canRevokeInvitation;return(0,s.jsxs)(s.Fragment,{children:[null===a?null:(0,s.jsx)("p",{className:"mb-4 text-[13px] text-danger",role:"alert",children:a}),(0,s.jsx)("div",{className:I,children:(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full border-collapse",children:[(0,s.jsx)("caption",{className:"px-4 py-3 text-left text-[12.5px] text-muted",children:"Invitations this workspace has sent, and what became of each one."}),(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{className:E,scope:"col",children:"Invitee"}),(0,s.jsx)("th",{className:E,scope:"col",children:"Role"}),(0,s.jsx)("th",{className:E,scope:"col",children:"Status"}),l?(0,s.jsx)("th",{className:E,scope:"col",children:"Actions"}):null]})}),(0,s.jsx)("tbody",{children:e.invitations.map(a=>(0,s.jsx)(T,{invitation:a,capability:t,nowMs:e.nowMs,showActions:l,busy:n===a.id,onResend:i,onRevoke:r},a.id))})]})})})]})}function T({invitation:e,capability:t,nowMs:n,showActions:a,busy:i,onResend:r,onRevoke:l}){let o=null!==e.revokedAt?"revoked":null!==e.acceptedAt?"accepted":new Date(e.expiresAt).getTime()<=n?"expired":"pending",c=!!t.canResendInvitation&&("pending"===o||"expired"===o),m=!!t.canRevokeInvitation&&("pending"===o||"expired"===o),h=t.canResendInvitation||t.canRevokeInvitation?"accepted"===o?"Accepted. Manage this person in the members table above.":"revoked"===o?"Revoked. Send a new invitation if they still need access.":null:null;return(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:$,children:(0,s.jsx)("div",{className:"font-semibold text-text",children:e.email})}),(0,s.jsx)("td",{className:$,children:d[e.role]}),(0,s.jsxs)("td",{className:$,children:[(0,s.jsx)("div",{className:"text-text",children:x[o]}),(0,s.jsx)("div",{className:"text-muted",children:function(e,t){switch(t){case"revoked":return null===e.revokedAt?"":`Revoked ${u(e.revokedAt)}`;case"accepted":return null===e.acceptedAt?"":`Accepted ${u(e.acceptedAt)}`;case"expired":return`Expired ${u(e.expiresAt)}`;case"pending":return`Expires ${u(e.expiresAt)}`;default:throw Error(`unhandled invitation state ${JSON.stringify(t)}`)}}(e,o)})]}),a?(0,s.jsx)("td",{className:$,children:(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[c?(0,s.jsx)("button",{type:"button","aria-label":`Resend the invitation for ${e.email}`,className:`${A} border-border-strong bg-surface text-text ${i?C:""}`,disabled:i,onClick:()=>r(e),children:"Resend"}):null,m?(0,s.jsx)("button",{type:"button","aria-label":`Revoke the invitation for ${e.email}`,className:`${A} border-danger bg-surface text-danger ${i?C:""}`,disabled:i,onClick:()=>l(e),children:"Revoke"}):null,null===h?null:(0,s.jsx)("span",{className:"text-[12.5px] text-muted",children:h})]})}):null]})}let P={cache:"no-store",headers:{accept:"application/json"}},O={"content-type":"application/json",accept:"application/json"},Y="team-invitations-heading";function L(e){return`/api/invitations/${encodeURIComponent(e)}`}function M({capability:e=r}){let[t,n]=(0,a.useState)(e.canListInvitations?{kind:"loading"}:{kind:"refused"}),[l,o]=(0,a.useState)(b),[d,u]=(0,a.useState)(!1),[m,h]=(0,a.useState)(null),[p,x]=(0,a.useState)(null),[j,g]=(0,a.useState)(null),[w,y]=(0,a.useState)(null),[N,I]=(0,a.useState)("untouched"),$=(0,a.useRef)(null),E=(0,a.useCallback)(()=>{let e=document.activeElement;null!==e&&document.querySelector("[data-invitation-reveal]")?.contains(e)&&$.current?.focus(),y(null),I("untouched")},[]),A=(0,a.useCallback)(async()=>{var t;let s,a;if(!e.canListInvitations)return void n({kind:"refused"});try{s=await fetch("/api/invitations",P)}catch(e){n({kind:"failed",message:v((0,c.EB)(e))});return}if(!s.ok)return void n({kind:"failed",message:v(await (0,c.Tp)(s,()=>s.json()))});let r=(t=await s.json().catch(()=>null),(a=i.W$.safeParse(t)).success?a.data.invitations:null);n(null===r?{kind:"failed",message:"The invitation list came back in a shape this screen cannot read, so nothing is shown rather than a partial list. Reload to try again."}:{kind:"ready",invitations:r,nowMs:Date.now()})},[e.canListInvitations]);function C(e){let t=function(e,t){let n,s=i.Z1.safeParse(e);if(!s.success)return null;let{invitation:a,link:r,warning:l}=s.data;try{n=new URL(r,t).toString()}catch{return null}return{email:a.email,link:n,warning:l}}(e,window.location.origin);return null!==t&&(y(t),I("untouched"),!0)}async function T(){let e,t=f(l);if(null!==t){E(),h(null),g(null),u(!0);try{e=await fetch("/api/invitations",{method:"POST",headers:O,body:JSON.stringify(t)})}catch(e){u(!1),h(v((0,c.EB)(e)));return}if(u(!1),!e.ok)return void h(v(await (0,c.Tp)(e,()=>e.json())));C(await e.json().catch(()=>null))||h("The invitation was created, but the response carrying its link could not be read, so the link is gone. Revoke the invitation below and send a new one."),o(b),await A()}}async function D(e){let t;E(),g(null),h(null),x(e.id);try{t=await fetch(`${L(e.id)}/resend`,{method:"POST",headers:{accept:"application/json"}})}catch(e){x(null),g(v((0,c.EB)(e)));return}(x(null),t.ok)?(C(await t.json().catch(()=>null))||g("The invitation was resent, but the response carrying its new link could not be read, so the link is gone. Resend it again to get a fresh one."),await A()):g(v(await (0,c.Tp)(t,()=>t.json())))}async function H(e){let t;E(),g(null),h(null),x(e.id);try{t=await fetch(L(e.id),{method:"DELETE",headers:{accept:"application/json"}})}catch(e){x(null),g(v((0,c.EB)(e)));return}(x(null),t.ok)?await A():g(v(await (0,c.Tp)(t,()=>t.json())))}async function B(){if(null!==w)try{await navigator.clipboard.writeText(w.link),I("copied")}catch{I("unavailable")}}return(0,a.useEffect)(()=>{A()},[A]),(0,a.useEffect)(()=>(window.addEventListener("pagehide",E),()=>window.removeEventListener("pagehide",E)),[E]),(0,s.jsxs)("section",{"aria-labelledby":Y,className:"mt-10",children:[(0,s.jsx)("h2",{ref:$,tabIndex:-1,id:Y,className:"text-[18px] font-semibold text-text",children:"Invitations"}),(0,s.jsx)("p",{className:"mt-1 mb-4 text-sm text-muted",children:"People invited to this workspace, and what became of each invitation."}),(0,s.jsx)(k,{capability:e,draft:l,sending:d,problem:m,onChange:o,onSubmit:()=>void T()}),null===w?null:(0,s.jsx)(R,{revealed:w,copyState:N,onCopy:()=>void B(),onDismiss:E}),(0,s.jsx)(S,{state:t,capability:e,busyInvitationId:p,actionProblem:j,onResend:e=>void D(e),onRevoke:e=>void H(e)})]})}let D="rounded-(--radius) border border-border bg-surface shadow-(--shadow)",H="border-b border-border px-4 py-3 text-[13px] align-top",B="border-b border-border px-4 py-2 text-left text-[12px] font-semibold text-muted";function J({state:e,capability:t,busyMembershipId:n,roleProblem:a,onChangeRole:i,onRemove:r}){let l;switch(e.kind){case"loading":return(0,s.jsx)("p",{className:`${D} p-5 text-[13px] text-muted`,role:"status",children:"Loading members…"});case"refused":return(0,s.jsx)("p",{className:`${D} p-5 text-[13px] text-text-2`,role:"status",children:"Managing members is not part of your role in this workspace, so its member list is not shown here. Ask an Owner or an Admin if you need a change made."});case"failed":return(0,s.jsx)("p",{className:`${D} p-5 text-[13px] text-danger`,role:"alert",children:e.message});case"ready":break;default:throw Error(`unhandled members table state ${JSON.stringify(e)}`)}if(0===e.members.length)return(0,s.jsx)("p",{className:`${D} p-5 text-[13px] text-muted`,children:"This workspace has no members yet. Members join by accepting an invitation."});let o=1===(l=e.members.filter(e=>"owner"===e.role)).length?l[0]?.userId??null:null,c=t.canChangeRole||t.canRemoveMember;return(0,s.jsxs)(s.Fragment,{children:[null===a?null:(0,s.jsx)("p",{className:"mb-4 text-[13px] text-danger",role:"alert",children:a}),(0,s.jsx)("div",{className:D,children:(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full border-collapse",children:[(0,s.jsx)("caption",{className:"px-4 py-3 text-left text-[12.5px] text-muted",children:"Active members of this workspace and the role each one holds."}),(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{className:B,scope:"col",children:"Member"}),(0,s.jsx)("th",{className:B,scope:"col",children:"Role"}),(0,s.jsx)("th",{className:B,scope:"col",children:"Joined"}),c?(0,s.jsx)("th",{className:B,scope:"col",children:"Actions"}):null]})}),(0,s.jsx)("tbody",{children:e.members.map(e=>(0,s.jsx)(U,{member:e,capability:t,soleOwner:o,showActions:c,busy:n===e.id,onChangeRole:i,onRemove:r},e.id))})]})})})]})}function U({member:e,capability:t,soleOwner:n,showActions:a,busy:i,onChangeRole:r,onRemove:l}){let o=t.canChangeRole&&e.userId!==n?t.conferrableRoles.filter(t=>t!==e.role):[],c=t.canRemoveMember&&e.userId!==n,m=(t.canChangeRole||t.canRemoveMember)&&e.userId===n?t.conferrableRoles.includes("owner")?"Last Owner. Promote another member to Owner before changing or removing this one.":"Last Owner. Only an Owner can promote another member to Owner, so ask one before this member can be changed or removed.":null;return(0,s.jsxs)("tr",{children:[(0,s.jsxs)("td",{className:H,children:[(0,s.jsxs)("div",{className:"font-semibold text-text",children:[e.name,null!==t.viewerUserId&&e.userId===t.viewerUserId?(0,s.jsx)("span",{className:"ml-2 rounded-(--radius-sm) border border-border-strong px-1.5 py-0.5 text-[11px] font-normal text-muted",children:"You"}):null]}),(0,s.jsx)("div",{className:"text-muted",children:e.email})]}),(0,s.jsx)("td",{className:H,children:d[e.role]}),(0,s.jsx)("td",{className:H,children:u(e.createdAt)}),a?(0,s.jsx)("td",{className:H,children:(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[0===o.length?null:(0,s.jsxs)("select",{"aria-label":`Role for ${e.name}`,className:"h-8 rounded-(--radius-sm) border border-border-strong bg-surface px-2 text-[13px] text-text",disabled:i,value:e.role,onChange:t=>{let n=o.find(e=>e===t.target.value);void 0!==n&&r(e,n)},children:[(0,s.jsx)("option",{value:e.role,children:d[e.role]}),o.map(e=>(0,s.jsx)("option",{value:e,children:d[e]},e))]}),c?(0,s.jsx)("button",{type:"button","aria-label":`Remove ${e.name}`,className:`inline-flex h-8 items-center rounded-(--radius-sm) border border-danger bg-surface px-[13px] text-[13px] font-medium text-danger ${i?"pointer-events-none opacity-[.45]":""}`,disabled:i,onClick:()=>l(e),children:"Remove"}):null,null===m?null:(0,s.jsx)("span",{className:"text-[12.5px] text-muted",children:m})]})}):null]})}let _="inline-flex h-8 items-center rounded-(--radius-sm) border px-[13px] text-[13px] font-medium",F="pointer-events-none opacity-[.45]",G="team-remove-dialog-title";function K({member:e,state:t,returnFocusTo:n,onCancel:i,onConfirm:r}){let l=(0,a.useRef)(null),o=(0,a.useRef)(null),c="submitting"===t.kind;return(0,a.useEffect)(()=>()=>n?.current?.focus(),[n]),(0,a.useEffect)(()=>{c||o.current?.focus()},[c]),(0,s.jsx)("div",{role:"dialog","aria-modal":"true","aria-labelledby":G,onKeyDown:function(e){if(c)return;if("Escape"===e.key){e.preventDefault(),i();return}if("Tab"!==e.key)return;let t=[...l.current?.querySelectorAll("button:not(:disabled)")??[]],n=e.shiftKey?t.at(0):t.at(-1);void 0!==n&&document.activeElement===n&&(e.preventDefault(),(e.shiftKey?t.at(-1):t.at(0))?.focus())},className:"fixed inset-0 z-50 grid place-items-center bg-black/40 p-4",children:(0,s.jsxs)("div",{ref:l,className:"w-full max-w-[520px] rounded-(--radius) border border-border bg-surface p-5 shadow-xl",children:[(0,s.jsxs)("h2",{id:G,className:"text-[18px]",children:["Remove ",e.name," from this workspace?"]}),(0,s.jsx)("p",{className:"mt-1 text-[12.5px] text-muted",children:e.email}),(0,s.jsx)(V,{state:t}),"failed"===t.kind?(0,s.jsx)("p",{className:"mt-3 text-[13px] text-danger",role:"alert",children:t.message}):null,(0,s.jsxs)("div",{className:"mt-5 flex justify-end gap-2",children:[(0,s.jsx)("button",{ref:o,type:"button",className:`${_} border-border-strong bg-surface text-text ${c?F:""}`,disabled:c,onClick:i,children:"Cancel"}),(0,s.jsx)("button",{type:"button","aria-label":`Remove ${e.name} from this workspace`,className:`${_} border-danger bg-surface text-danger ${c?F:""}`,disabled:c,onClick:r,children:c?"Removing…":"Remove member"})]})]})})}function V({state:e}){switch(e.kind){case"counting":return(0,s.jsx)("p",{className:"mt-3 text-[13px] text-muted",role:"status",children:"Counting the sessions and projects this member owns…"});case"counted":return(0,s.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:function(e){if(0===e.sessions&&0===e.projects)return"This member owns no sessions and no projects in this workspace. Removing them ends their access here; nothing already run is deleted.";let t=h(e.sessions,"session","sessions"),n=h(e.projects,"project","projects"),s=`${t} and ${n} stay in this workspace and keep naming this member. Removing them ends their access; no history is deleted.`;return`${s} A member who still owns a session or project cannot be removed until those resources are deleted or reassigned, so this removal may be refused.`}(e.impact)});case"impact-unavailable":return(0,s.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:"What this member owns could not be counted, so this summary is incomplete. Removing a member ends their access here and deletes no history."});case"submitting":case"failed":return(0,s.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:"Removing a member ends their access to this workspace. Completed sessions and the projects they created stay where they are."});default:throw Error(`unhandled member dialog state ${JSON.stringify(e)}`)}}let W={cache:"no-store",headers:{accept:"application/json"}};function q(e){return`/api/memberships/${encodeURIComponent(e)}`}async function Z(e){let[t,n]=await Promise.all([fetch("/api/sessions",W).then(async t=>t.ok?m(await t.json(),"sessions","userId",e):null).catch(()=>null),fetch("/api/projects?archived=all",W).then(async t=>t.ok?m(await t.json(),"projects","createdBy",e):null).catch(()=>null)]);return null===t||null===n?null:{sessions:t,projects:n}}function z({capability:e=o,invitationCapability:t=r}){let[n,i]=(0,a.useState)(e.canListMembers?{kind:"loading"}:{kind:"refused"}),[d,u]=(0,a.useState)(null),[m,h]=(0,a.useState)(null),[x,b]=(0,a.useState)(null),f=(0,a.useRef)(null),v=(0,a.useRef)(null),j=(0,a.useCallback)(async()=>{var t;let n,s;if(!e.canListMembers)return void i({kind:"refused"});try{n=await fetch("/api/memberships",W)}catch(e){i({kind:"failed",message:p((0,c.EB)(e),{status:null,impact:null})});return}if(!n.ok)return void i({kind:"failed",message:p(await (0,c.Tp)(n,()=>n.json()),{status:n.status,impact:null})});let a=(t=await n.json().catch(()=>null),(s=l.nT.safeParse(t)).success?s.data.memberships:null);i(null===a?{kind:"failed",message:"The member list came back in a shape this screen cannot read, so nothing is shown rather than a partial list. Reload to try again."}:{kind:"ready",members:a})},[e.canListMembers]);async function g(e,t){let n;h(e.id),b(null);try{n=await fetch(q(e.id),{method:"PATCH",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({role:t})})}catch(e){h(null),b(p((0,c.EB)(e),{status:null,impact:null}));return}(h(null),n.ok)?await j():b(p(await (0,c.Tp)(n,()=>n.json()),{status:n.status,impact:null}))}async function w(){let e;if(null===d)return;let t="counted"===d.state.kind?d.state.impact:null;u({member:d.member,state:{kind:"submitting"}});try{e=await fetch(q(d.member.id),{method:"DELETE",headers:{accept:"application/json"}})}catch(e){u({member:d.member,state:{kind:"failed",message:p((0,c.EB)(e),{status:null,impact:t})}});return}if(!e.ok){let n=await (0,c.Tp)(e,()=>e.json());u({member:d.member,state:{kind:"failed",message:p(n,{status:e.status,impact:t})}});return}f.current=v.current,u(null),await j()}return(0,a.useEffect)(()=>{j()},[j]),(0,s.jsxs)("main",{className:"w-full max-w-[980px] px-8 pt-[26px] pb-[90px]",children:[(0,s.jsxs)("div",{className:"mb-6",children:[(0,s.jsx)("h1",{ref:v,tabIndex:-1,className:"text-2xl font-semibold text-text",children:"Users"}),(0,s.jsx)("p",{className:"mt-1 text-sm text-muted",children:"Active members of this workspace, their roles, who may change them, and who has been invited."})]}),(0,s.jsx)(J,{state:n,capability:e,busyMembershipId:m,roleProblem:x,onChangeRole:(e,t)=>void g(e,t),onRemove:function(e){b(null),f.current=document.activeElement instanceof HTMLElement?document.activeElement:null,u({member:e,state:{kind:"counting"}}),Z(e.userId).then(t=>{u(n=>n?.member.id===e.id&&"counting"===n.state.kind?{member:e,state:null===t?{kind:"impact-unavailable"}:{kind:"counted",impact:t}}:n)})}}),(0,s.jsx)(M,{capability:t}),null===d?null:(0,s.jsx)(K,{member:d.member,state:d.state,returnFocusTo:f,onCancel:()=>u(null),onConfirm:()=>void w()})]})}}},e=>{e.O(0,[7413,1435,3881,1e3,7358],()=>e(e.s=868)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/[id]/page-febe3b0582c996ae.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9351],{202:(e,t,n)=>{"use strict";n.d(t,{LD:()=>l,ce:()=>i,ne:()=>d,ow:()=>r});var s=n(7413),a=n(1841);let l=s.Ikc({id:s.YjP().min(1),workspaceId:s.YjP().min(1),name:s.YjP().min(1),instructions:s.YjP().nullable(),defaultAgentId:s.YjP().nullable(),defaultModelConnectionId:s.YjP().nullable(),defaultModel:s.YjP().nullable(),visibility:s.k5n(["private","workspace","public"]),createdBy:s.YjP().min(1).nullable(),ownerPrincipalId:s.YjP().min(1),archivedAt:a.EH.nullable(),createdAt:a.EH,updatedAt:a.EH,fileIds:s.YOg(s.YjP()),mcpServerIds:s.YOg(s.YjP())}).strict(),i=s.Ikc({projects:s.YOg(l)}).strict(),r=s.Ikc({id:s.YjP().min(1),projectId:s.YjP().min(1),agentId:s.YjP().min(1)}).strict().readonly(),d=s.Ikc({projectId:s.YjP().min(1),sessionId:s.YjP().min(1)}).strict().readonly()},828:(e,t,n)=>{"use strict";n.d(t,{AgentDetailScreen:()=>I});var s=n(126),a=n(6365),l=n.n(a),i=n(3310),r=n(1435),d=n(202),o=n(2685);let c="rounded-(--radius) border border-border bg-surface p-4",u="rounded-(--radius-sm) border border-border-strong bg-surface px-2 py-1 text-[12.5px] text-text focus:border-accent focus:outline-2 focus:-outline-offset-1 focus:outline-accent",m="flex flex-wrap items-center gap-2 border-b border-border py-2 text-[13px] last:border-b-0",p="rounded-full border border-danger bg-danger-soft px-2 py-0.5 text-[11px] font-medium text-danger",x="rounded-(--radius-sm) border border-border-strong bg-surface px-2 py-1 text-[12px] font-medium text-text disabled:pointer-events-none disabled:opacity-45";function h({files:e,catalog:t,writeFilesAllowed:n,onChange:a}){let[l,d]=(0,i.useState)(!1),[g,f]=(0,i.useState)([]),b=(0,r.kc)(e,t);return(0,s.jsxs)("fieldset",{className:c,"aria-labelledby":"agent-files-heading",children:[(0,s.jsx)("legend",{id:"agent-files-heading",className:"px-1 text-[13px] font-semibold",children:"Files and folders"}),0===b.length?(0,s.jsx)("p",{className:"py-1 text-[12.5px] text-muted",children:"No files or folders assigned."}):(0,s.jsx)("ul",{children:b.map(t=>(0,s.jsxs)("li",{className:m,children:[(0,s.jsx)("span",{className:"min-w-0 flex-1 truncate",children:t.path??`Unresolved file (${t.fileId})`}),t.missing?(0,s.jsx)("span",{className:p,children:"Missing"}):null,(0,s.jsxs)("select",{"aria-label":`Access for ${t.path??t.fileId}`,className:u,value:t.access,onChange:n=>{var s,l;return s=t.fileId,l=n.target.value,void a(e.map(e=>e.fileId===s?{...e,access:l}:e))},children:[(0,s.jsx)("option",{value:"read",children:"Read"}),(0,s.jsx)("option",{value:"read-write",children:"Read/write"})]}),(0,s.jsx)("button",{type:"button",className:x,onClick:()=>{var n;return n=t.fileId,void a(e.filter(e=>e.fileId!==n))},children:"Remove"}),"read-write"!==t.access||n?null:(0,s.jsx)("p",{role:"alert",className:"w-full text-[12px] text-warn",children:"This agent’s Write files permission is off, so this read/write grant will be saved and enforced as read-only until Write files is turned on."})]},t.fileId))}),(0,s.jsxs)("div",{className:"mt-3",children:[(0,s.jsx)("button",{type:"button",className:x,onClick:()=>{d(e=>!e),f([])},children:l?"Close browser":"Add files or folders"}),l?(0,s.jsxs)("div",{className:"mt-3 rounded border border-border p-3",children:[(0,s.jsx)(o.Nk,{onChange:f}),(0,s.jsxs)("button",{type:"button",className:`${x} mt-2`,disabled:0===g.length,onClick:()=>{let t=new Set(e.map(e=>e.fileId));a([...e,...g.filter(e=>!t.has(e.id)).map(e=>({fileId:e.id,access:"read"}))]),f([]),d(!1)},children:["Add ",g.length," selected"]})]}):null]})]})}function g({heading:e,ids:t,catalog:n,onChange:a}){let[l,d]=(0,i.useState)(""),o=(0,r.u$)(t,n),h=null===n?[]:[...n.entries()].filter(([e])=>!t.includes(e)),f=`agent-${e.toLowerCase()}-heading`;return(0,s.jsxs)("fieldset",{className:c,"aria-labelledby":f,children:[(0,s.jsx)("legend",{id:f,className:"px-1 text-[13px] font-semibold",children:e}),0===o.length?(0,s.jsxs)("p",{className:"py-1 text-[12.5px] text-muted",children:["No ",e.toLowerCase()," assigned."]}):(0,s.jsx)("ul",{children:o.map(e=>(0,s.jsxs)("li",{className:m,children:[(0,s.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.name??`Unresolved (${e.id})`}),e.missing?(0,s.jsx)("span",{className:p,children:"Missing"}):!1===e.enabled?(0,s.jsx)("span",{className:"rounded-full border border-border-strong bg-surface px-2 py-0.5 text-[11px] font-medium text-muted",children:"Disabled"}):null,(0,s.jsx)("button",{type:"button",className:x,onClick:()=>{let n;return n=e.id,a(t.filter(e=>e!==n))},children:"Remove"})]},e.id))}),0===h.length?null:(0,s.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,s.jsxs)("select",{"aria-label":`Add a ${e.toLowerCase().replace(/s$/u,"")}`,className:u,value:l,onChange:e=>d(e.target.value),children:[(0,s.jsx)("option",{value:"",children:"Choose one…"}),h.map(([e,t])=>(0,s.jsx)("option",{value:e,children:t.name},e))]}),(0,s.jsx)("button",{type:"button",className:x,disabled:""===l,onClick:()=>{""!==l&&(a([...t,l]),d(""))},children:"Add"})]})]})}function f({agentId:e,projectsState:t,files:n,connectors:a}){if("loading"===t.kind)return null;if("failed"===t.kind)return(0,s.jsx)("p",{className:"text-[12px] text-muted",role:"status",children:t.reason});let l=(0,r.Hn)(t.projects,e,n,a);return 0===l.length?null:(0,s.jsxs)("section",{className:c,"aria-labelledby":"project-resources-heading",children:[(0,s.jsx)("h3",{id:"project-resources-heading",className:"mb-1 text-[13px] font-semibold",children:"Project-provided (read-only)"}),(0,s.jsx)("p",{className:"mb-3 text-[12px] text-muted",children:"Added to every run of this agent that starts from one of these projects (this agent is their default agent). Edit these on the project, not here."}),l.map(e=>(0,s.jsxs)("div",{className:"border-t border-border pt-2 first:border-t-0 first:pt-0",children:[(0,s.jsx)("p",{className:"text-[12.5px] font-semibold",children:e.projectName}),0===e.files.length&&0===e.connectors.length?(0,s.jsx)("p",{className:"text-[12px] text-muted",children:"No files or connectors."}):(0,s.jsxs)("ul",{className:"text-[12.5px] text-muted",children:[e.files.map(e=>(0,s.jsxs)("li",{children:[e.path??`Unresolved file (${e.id})`,e.missing?(0,s.jsx)("span",{className:`${p} ml-2`,children:"Missing"}):null]},e.id)),e.connectors.map(e=>(0,s.jsxs)("li",{children:[e.name??`Unresolved connector (${e.id})`,e.missing?(0,s.jsx)("span",{className:`${p} ml-2`,children:"Missing"}):null]},e.id))]})]},e.projectId))]})}function b({agentId:e,assignments:t,permissions:n,catalogsState:a,projectsState:l,onChange:i}){let{files:r,skills:d,connectors:o}="ready"===a.kind?{files:a.files,skills:a.skills,connectors:a.connectors}:{files:null,skills:null,connectors:null};return(0,s.jsxs)("section",{className:"space-y-4","aria-labelledby":"resources-heading",children:[(0,s.jsx)("h2",{id:"resources-heading",className:"text-[15px] font-semibold",children:"Assigned resources"}),"failed"===a.kind?(0,s.jsx)("p",{className:"text-[13px] text-danger",role:"alert",children:a.reason}):null,(0,s.jsx)(h,{files:t.files,catalog:r,writeFilesAllowed:n.writeFiles,onChange:e=>i({...t,files:e})}),(0,s.jsx)(g,{heading:"Skills",ids:t.skillIds,catalog:d,onChange:e=>i({...t,skillIds:e})}),(0,s.jsx)(g,{heading:"Connectors",ids:t.connectorIds,catalog:o,onChange:e=>i({...t,connectorIds:e})}),(0,s.jsx)(f,{agentId:e,projectsState:l,files:r,connectors:o})]})}var j=n(1485),N=n(9595);let k="w-full rounded-(--radius-sm) border border-border-strong bg-surface px-2.5 py-[7px] text-[13.5px] text-text focus:border-accent focus:outline-2 focus:-outline-offset-1 focus:outline-accent";function v({catalogState:e,value:t,onChange:n}){let a="ready"===e.kind?e.catalog.models:[],l="ready"===e.kind?e.catalog.unavailable:[];return(0,s.jsxs)("section",{className:"rounded-(--radius) border border-border bg-surface p-4","aria-labelledby":"model-heading",children:[(0,s.jsx)("h2",{id:"model-heading",className:"mb-1 text-[15px] font-semibold",children:"Model"}),(0,s.jsx)("p",{className:"mb-3 text-[12.5px] text-muted",children:"Overrides the project and workspace default for every run of this agent."}),"loading"===e.kind?(0,s.jsx)("p",{className:"text-[13px] text-muted",children:"Loading model connections…"}):"failed"===e.kind?(0,s.jsx)("p",{className:"text-[13px] text-danger",role:"alert",children:e.reason}):(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)(N.Bd,{id:"agent-detail-model",label:"Override",models:a,value:t,onChange:n,inheritLabel:"No override",ariaDescribedBy:"model-inheritance-line"}),(0,s.jsx)("button",{type:"button",className:"text-[12px] text-accent underline disabled:pointer-events-none disabled:opacity-45",disabled:null===t,onClick:()=>n(null),children:"Clear override"})]}),(0,s.jsx)("p",{id:"model-inheritance-line",className:"mt-1.5 text-[12px] text-muted",children:null===t?"Agent override → not set — resolves to the project default when run in a project, otherwise the workspace default.":(0,j._G)("Agent override",t,a)}),(0,s.jsx)(N.Ks,{unavailable:l})]})}function y({catalog:e}){let t="ready"===e.kind?e.engines.filter(e=>e.installed):[];return(0,s.jsxs)("section",{className:"rounded-(--radius) border border-border bg-surface p-4","aria-labelledby":"engine-heading",children:[(0,s.jsx)("h2",{id:"engine-heading",className:"mb-1 text-[15px] font-semibold",children:"Engine"}),(0,s.jsx)("p",{className:"mb-3 text-[12.5px] text-muted",children:"The harness that runs this agent’s loop. Not the model provider."}),"loading"===e.kind?(0,s.jsx)("p",{className:"text-[13px] text-muted",children:"Loading engines…"}):"failed"===e.kind?(0,s.jsx)("p",{className:"text-[13px] text-danger",role:"alert",children:e.reason}):0===t.length?(0,s.jsx)("p",{className:"text-[13px] text-danger",role:"alert",children:"This deployment installs no engine, so no agent can run. Ask an administrator which engine adapter the runtime image should carry."}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("ul",{className:"text-[13px] text-text",children:t.map(e=>(0,s.jsxs)("li",{children:[e.displayName," ",(0,s.jsxs)("span",{className:"text-muted",children:["(",e.id,")"]}),", version"," ",e.version,e.capabilities.skills?null:(0,s.jsx)("span",{className:"text-muted",children:" — skills unavailable on this engine"}),e.capabilities.mcp?null:(0,s.jsx)("span",{className:"text-muted",children:" — connectors unavailable on this engine"})]},e.id))}),(0,s.jsxs)("p",{className:"mt-2 text-[12.5px] text-muted",children:["Read-only here: an agent’s engine is the discriminant of its policy. Set it with"," ",(0,s.jsx)("code",{children:"aw agents update --engine"}),"."]})]})]})}function w(e){return"api"===e.kind?e.message:e.reason}function I({agentId:e}){let[t,n]=(0,i.useState)(null),[a,c]=(0,i.useState)(null),[u,m]=(0,i.useState)(null),[p,x]=(0,i.useState)(null),[h,g]=(0,i.useState)(!1);(0,i.useEffect)(()=>{let t=!0;return Promise.all([fetch(`/api/agents/${e}`,{headers:{accept:"application/json"}}),fetch(`/api/agents/${e}/resources`,{headers:{accept:"application/json"}})]).then(async([e,s])=>{if(!e.ok||!s.ok){let n=e.ok?s:e,a=await (0,r.Tp)(n,()=>n.json());t&&m(a);return}let a=await e.json(),l=await s.json();t&&(n({agent:a,assignments:l.assignments}),c(l.assignments))}),()=>{t=!1}},[e]);let f=(0,N.c7)(),j=function(){let[e,t]=(0,i.useState)({kind:"loading"});return(0,i.useEffect)(()=>{let e=!0;return(async()=>{try{let n=await (0,r.ay)(async e=>{let t=await fetch(`/api/files?path=${encodeURIComponent(e)}`,{headers:{accept:"application/json"}});return t.ok?(0,o.ZR)(await t.json()):[]}),[s,a]=await Promise.all([fetch("/api/skills",{headers:{accept:"application/json"}}),fetch("/api/connectors",{headers:{accept:"application/json"}})]),l=(0,r.Xr)(s.ok?await s.json():{skills:[]},"skills"),i=(0,r.Xr)(a.ok?await a.json():{connectors:[]},"connectors");e&&t({kind:"ready",files:n,skills:l,connectors:i})}catch(n){e&&t({kind:"failed",reason:`Resource names could not be loaded: ${n instanceof Error?n.message:String(n)}`})}})(),()=>{e=!1}},[]),e}(),C=function(){let[e,t]=(0,i.useState)({kind:"loading"});return(0,i.useEffect)(()=>{let e=!0;return fetch("/api/projects",{headers:{accept:"application/json"}}).then(async e=>{if(!e.ok)throw Error(`GET /api/projects returned ${String(e.status)}.`);let t=d.ce.safeParse(await e.json());if(!t.success)throw Error("The projects response did not match its schema.");return t.data.projects}).then(n=>{e&&t({kind:"ready",projects:n})}).catch(n=>{e&&t({kind:"failed",reason:`Project associations could not be loaded: ${n instanceof Error?n.message:String(n)}`})}),()=>{e=!1}},[]),e}(),P=function(){let[e,t]=(0,i.useState)({kind:"loading"});return(0,i.useEffect)(()=>{let e=!0;return(async()=>{let n;try{n=await fetch("/api/engines",{headers:{accept:"application/json"}})}catch(n){e&&t({kind:"failed",reason:w((0,r.EB)(n))});return}if(!n.ok){let s=await (0,r.Tp)(n,()=>n.json());e&&t({kind:"failed",reason:w(s)});return}try{let s=(0,r.kC)(await n.json());e&&t({kind:"ready",engines:s})}catch(n){e&&t({kind:"failed",reason:n instanceof Error?n.message:String(n)})}})(),()=>{e=!1}},[]),e}(),S=e=>{n(t=>null===t?null:{...t,agent:{...t.agent,...e}})};async function E(s){let l,i;if(s.preventDefault(),null===t||null===a||h)return;g(!0),m(null),x(null);try{l=await fetch(`/api/agents/${e}`,{method:"PATCH",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({name:t.agent.name,instructions:t.agent.instructions,modelConnectionId:t.agent.modelConnectionId,model:t.agent.model,runtimeProfileId:t.agent.runtimeProfileId,permissions:t.agent.permissions})})}catch(e){$({kind:"definition-failed",problem:(0,r.EB)(e)}),g(!1);return}if(!l.ok){$({kind:"definition-failed",problem:await (0,r.Tp)(l,()=>l.json())}),g(!1);return}let d=await l.json();n(e=>null===e?null:{...e,agent:d});try{i=await fetch(`/api/agents/${e}/resources`,{method:"PUT",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify(a)})}catch(e){$({kind:"assignments-failed",problem:(0,r.EB)(e)}),g(!1);return}if(!i.ok){$({kind:"assignments-failed",problem:await (0,r.Tp)(i,()=>i.json())}),g(!1);return}$({kind:"both-saved",persistedAssignments:(await i.json()).assignments}),g(!1)}function $(e){let{report:t,persistedAssignments:s}=(0,r.K3)(e);x(t),null!==s&&(n(e=>null===e?null:{...e,assignments:s}),c(s))}return null!==u&&null===t?(0,s.jsx)("main",{className:"w-full max-w-[760px] px-8 pt-[26px]",role:"alert",children:"api"===u.kind?u.message:u.reason}):null===t?(0,s.jsx)("main",{className:"px-8 pt-[26px] text-muted",children:"Loading agent…"}):(0,s.jsxs)("main",{className:"w-full max-w-[760px] px-8 pt-[26px] pb-[90px]",children:[(0,s.jsxs)("div",{className:"mb-5 flex items-center gap-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-[21px]",children:t.agent.name}),(0,s.jsx)("p",{className:"mt-1 text-[13px] text-muted",children:"Agent configuration and explicit permissions"})]}),(0,s.jsx)(l(),{className:"ml-auto text-[13px] text-accent",href:"/agents",children:"Back to agents"})]}),(0,s.jsxs)("form",{className:"space-y-5",onSubmit:e=>{E(e)},children:[(0,s.jsxs)("section",{className:"rounded-(--radius) border border-border bg-surface p-4","aria-labelledby":"definition-heading",children:[(0,s.jsx)("h2",{id:"definition-heading",className:"mb-4 text-[15px] font-semibold",children:"Definition"}),(0,s.jsxs)("label",{className:"mb-4 block text-[13px] font-semibold",htmlFor:"agent-detail-name",children:["Name",(0,s.jsx)("input",{id:"agent-detail-name",className:`${k} mt-1`,value:t.agent.name,onChange:e=>S({name:e.target.value})})]}),(0,s.jsxs)("label",{className:"block text-[13px] font-semibold",htmlFor:"agent-detail-instructions",children:["Instructions",(0,i.createElement)("textarea",{id:"agent-detail-instructions",rows:8,className:`${k} mt-1 min-h-[110px] resize-y`,value:t.agent.instructions,onChange:e=>S({instructions:e.target.value})})]})]}),(0,s.jsx)(v,{catalogState:f,value:null===t.agent.modelConnectionId||null===t.agent.model?null:{connectionId:t.agent.modelConnectionId,model:t.agent.model},onChange:e=>{S({modelConnectionId:null===e?null:e.connectionId,model:null===e?null:e.model})}}),(0,s.jsx)(y,{catalog:P}),(0,s.jsxs)("fieldset",{className:"rounded-(--radius) border border-border bg-surface p-4",children:[(0,s.jsx)("legend",{className:"px-1 text-[15px] font-semibold",children:"Permissions"}),(0,s.jsx)("p",{className:"mb-3 text-[12px] text-muted",children:"Every capability is explicit. Network and command access default off."}),[["readFiles","Read assigned files and folders"],["writeFiles","Write to read/write assignments"],["runCommands","Run commands in the selected runtime"],["unrestrictedNetwork","Use unrestricted network access"]].map(([e,n])=>(0,s.jsxs)("label",{className:"flex items-center gap-2 py-1.5 text-[13px]",children:[(0,s.jsx)("input",{type:"checkbox",checked:t.agent.permissions[e],onChange:n=>{var s;return s=n.target.checked,void(null!==t&&S({permissions:{...t.agent.permissions,[e]:s}}))}}),n]},e))]}),null===a?(0,s.jsx)("p",{className:"text-[13px] text-muted",children:"Loading resource assignments…"}):(0,s.jsx)(b,{agentId:e,assignments:a,permissions:t.agent.permissions,catalogsState:j,projectsState:C,onChange:c}),null===u?null:(0,s.jsx)("div",{role:"alert",className:"rounded border border-danger bg-danger-soft p-3 text-[13px] text-danger",children:"api"===u.kind?u.message:u.reason}),null===p?null:(0,s.jsxs)("div",{role:"alert",className:`rounded border p-3 text-[13px] ${"saved"===p.definition&&"saved"===p.assignments?"border-border bg-surface text-text":"border-danger bg-danger-soft text-danger"}`,children:[(0,s.jsx)("p",{children:(0,r.vD)("Definition",p.definition,p.definitionProblem)}),(0,s.jsx)("p",{children:(0,r.vD)("Resource assignments",p.assignments,p.assignmentsProblem)})]}),(0,s.jsx)("div",{className:"flex justify-end",children:(0,s.jsx)("button",{className:"rounded bg-accent px-4 py-2 text-[13px] font-semibold text-white disabled:opacity-50",disabled:h||""===t.agent.name.trim()||null===a,type:"submit",children:h?"Saving…":"Save changes"})})]})]})}},4909:(e,t,n)=>{Promise.resolve().then(n.bind(n,828))}},e=>{e.O(0,[7413,6365,2685,1435,9595,3881,1e3,7358],()=>e(e.s=4909)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8674],{5286:(e,t,s)=>{"use strict";s.d(t,{NewAgentScreen:()=>j});var n=s(126),a=s(6365),l=s.n(a),r=s(7662),i=s(3310),d=s(1435),c=s(1485),o=s(9595);let x="inline-flex h-8 items-center justify-center gap-[7px] whitespace-nowrap rounded-(--radius-sm) border px-[13px] text-[13px] font-medium no-underline",u="rounded-(--radius) border border-border bg-surface shadow-(--shadow)",m="mb-[5px] block text-[13px] font-semibold",p="w-full rounded-(--radius-sm) border border-border-strong bg-surface px-2.5 py-[7px] text-[13.5px] text-text focus:border-accent focus:outline-2 focus:-outline-offset-1 focus:outline-accent";function h({models:e,unavailable:t,value:s,onSelect:a}){let l=(0,c.bg)(e,s);return(0,n.jsxs)("section",{className:"mt-4","aria-labelledby":"model-heading",children:[(0,n.jsx)("h2",{id:"model-heading",className:"mb-3 text-[15px]",children:"Which model should this agent use?"}),0===e.length?(0,n.jsx)("div",{className:`${u} p-4 text-[13px] text-muted`,children:"No model connections are configured. Add a provider on the Models screen before creating an agent."}):(0,n.jsx)("div",{className:`${u} p-4`,children:(0,n.jsx)(o.Bd,{id:"agent-model",label:"Model",models:e,value:s,onChange:a})}),(0,n.jsx)(o.Ks,{unavailable:t}),void 0===l||l.capabilities.promptCaching?null:(0,n.jsx)("div",{role:"alert",className:"mt-3 whitespace-pre-line rounded-(--radius) border border-warn bg-warn-soft p-[14px] text-[13px] text-warn",children:c.wQ})]})}function b({profiles:e,selectedId:t,onSelect:s}){return(0,n.jsxs)("section",{className:"mt-4","aria-labelledby":"runtime-profile-heading",children:[(0,n.jsx)("h2",{id:"runtime-profile-heading",className:"mb-3 text-[15px]",children:"Step 5 \xb7 Runtime"}),0===e.length?(0,n.jsx)("div",{className:`${u} p-4 text-[13px] text-muted`,children:"No runtime profiles are configured. Create one on the Runtimes screen before creating an agent."}):(0,n.jsx)("div",{className:u,children:e.map(e=>(0,n.jsx)("button",{type:"button","aria-pressed":t===e.id,onClick:()=>s(e.id),className:`flex w-full items-start gap-3 border-b border-border p-3 text-left last:border-b-0 ${t===e.id?"bg-accent-soft":"bg-surface"}`,children:(0,n.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,n.jsx)("span",{className:"block text-[13.5px] font-semibold",children:e.name}),(0,n.jsx)("span",{className:"mt-0.5 block text-[12px] text-muted",children:e.driver})]})},e.id))})]})}function f({options:e,fileAccess:t,selectedSkills:s,selectedConnectors:a,onFile:l,onSkill:r,onConnector:i}){let d=(e,t,s,a)=>(0,n.jsxs)("fieldset",{className:"rounded border border-border p-3",children:[(0,n.jsx)("legend",{className:"px-1 text-[13px] font-semibold",children:e}),0===t.length?(0,n.jsx)("p",{className:"text-[12px] text-muted",children:"None configured."}):t.map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-2 py-1 text-[13px]",children:[(0,n.jsx)("input",{checked:s.has(e.id),onChange:t=>a(e.id,t.target.checked),type:"checkbox"}),e.label]},e.id))]});return(0,n.jsxs)("section",{"aria-labelledby":"resources-heading",className:"mt-4",children:[(0,n.jsx)("h2",{className:"mb-3 text-[15px]",id:"resources-heading",children:"Step 3 \xb7 Resources"}),(0,n.jsxs)("div",{className:`${u} grid gap-3 p-4 md:grid-cols-3`,children:[(0,n.jsxs)("fieldset",{className:"rounded border border-border p-3",children:[(0,n.jsx)("legend",{className:"px-1 text-[13px] font-semibold",children:"Files and folders"}),0===e.files.length?(0,n.jsx)("p",{className:"text-[12px] text-muted",children:"None configured."}):e.files.map(e=>(0,n.jsxs)("div",{className:"flex items-center gap-2 py-1",children:[(0,n.jsxs)("label",{className:"flex min-w-0 flex-1 items-center gap-2 text-[13px]",children:[(0,n.jsx)("input",{checked:void 0!==t[e.id],onChange:t=>l(e.id,t.target.checked?"read":null),type:"checkbox"}),(0,n.jsx)("span",{className:"truncate",children:e.label})]}),void 0===t[e.id]?null:(0,n.jsxs)("select",{"aria-label":`Access for ${e.label}`,className:p,onChange:t=>l(e.id,t.target.value),value:t[e.id],children:[(0,n.jsx)("option",{value:"read",children:"Read"}),(0,n.jsx)("option",{value:"read-write",children:"Read/write"})]})]},e.id))]}),d("Skills",e.skills,s,r),d("Connectors",e.connectors,a,i)]})]})}function g({permissions:e,onChange:t}){return(0,n.jsxs)("fieldset",{className:`${u} mt-4 p-4`,children:[(0,n.jsx)("legend",{className:"px-1 text-[15px] font-semibold",children:"Step 4 \xb7 Permissions"}),(0,n.jsx)("p",{className:"mb-3 text-[12px] text-muted",children:"Choose each capability explicitly. High-risk capabilities start disabled."}),[["readFiles","Read files","Read only the files and folders assigned above."],["writeFiles","Write files","Modify only resources explicitly assigned read/write."],["runCommands","Run commands","Execute commands inside the selected runtime."],["unrestrictedNetwork","Unrestricted network","Allow network destinations beyond the runtime policy."]].map(([s,a,l])=>(0,n.jsxs)("label",{className:"flex items-start gap-3 border-b border-border py-2 last:border-b-0",children:[(0,n.jsx)("input",{className:"mt-1",type:"checkbox",checked:e[s],onChange:e=>t(s,e.target.checked)}),(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{className:"block text-[13px] font-semibold",children:a}),(0,n.jsx)("span",{className:"block text-[12px] text-muted",children:l})]})]},s))]})}function j(){let e=(0,r.useRouter)(),[t,s]=(0,i.useState)(""),[a,c]=(0,i.useState)(""),[j,N]=(0,i.useState)(!1),[v,k]=(0,i.useState)(null),[w,S]=(0,i.useState)(null),y=(0,o.c7)(),[C,R]=(0,i.useState)(null),[$,P]=(0,i.useState)(null),[E,F]=(0,i.useState)(!1),[I,A]=(0,i.useState)(null),[T,_]=(0,i.useState)({}),[O,L]=(0,i.useState)(new Set),[M,q]=(0,i.useState)(new Set),[W,z]=(0,i.useState)({readFiles:!0,writeFiles:!1,runCommands:!1,unrestrictedNetwork:!1});(0,i.useEffect)(()=>{let e=!0;return Promise.all([fetch("/api/runtime-profiles",{headers:{accept:"application/json"}}),fetch("/api/files",{headers:{accept:"application/json"}}),fetch("/api/skills",{headers:{accept:"application/json"}}),fetch("/api/connectors",{headers:{accept:"application/json"}})]).then(async([e,t,s,n])=>{if(!e.ok)throw Error(`Runtime profiles request returned ${String(e.status)}.`);let a=(e,t)=>e.ok?e.json():Promise.resolve({[t]:[]});return Promise.all([e.json(),a(t,"files"),a(s,"skills"),a(n,"connectors")])}).then(([t,s,n,a])=>{if(!e)return;let l=(0,d.St)(t);S(l),R(l[0]?.id??null),A((0,d.uI)(s,n,a))}).catch(t=>{e&&(S([]),A({files:[],skills:[],connectors:[]}),k({kind:"transport",reason:`Runtime profiles could not be loaded: ${t instanceof Error?t.message:String(t)}`}))}),()=>{e=!1}},[]);let B="ready"===y.kind?y.catalog.models:[],D="ready"===y.kind?y.catalog.unavailable:[];(0,i.useEffect)(()=>{let e=B[0];E||void 0===e||(F(!0),P({connectionId:e.connectionId,model:e.providerModelId}))},[E,B]);let H=(0,d.LT)(t)&&null!==C&&null!==$&&!j;return(0,n.jsxs)("main",{className:"w-full max-w-[760px] px-8 pt-[26px] pb-[90px]",children:[(0,n.jsx)("div",{className:"mb-[22px]",children:(0,n.jsx)("h1",{className:"text-[21px]",children:"New Agent"})}),(0,n.jsxs)("form",{onSubmit:function(s){s.preventDefault(),H&&null!==C&&null!==$&&(N(!0),k(null),(async()=>{let s;try{s=await fetch("/api/agents",{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({agent:(0,d.e0)(t,a,C,$,W),assignments:{files:Object.entries(T).map(([e,t])=>({fileId:e,access:t})),skillIds:[...O],connectorIds:[...M]}})})}catch(e){N(!1),k({kind:"transport",reason:`The request to create this agent failed: ${e instanceof Error?e.message:String(e)}`});return}if(!s.ok){let e=await (0,d.Tp)(s,()=>s.json());N(!1),k(e);return}let n=await s.json(),l=n.agent?.id;if("string"!=typeof l){N(!1),k({kind:"transport",reason:"The created agent response had no id."});return}e.push(`/agents/${l}`)})())},children:[(0,n.jsx)("div",{className:u,children:(0,n.jsxs)("div",{className:"p-4",children:[(0,n.jsxs)("div",{className:"mb-[18px]",children:[(0,n.jsx)("label",{className:m,htmlFor:"agent-name",children:"Name"}),(0,n.jsx)("input",{id:"agent-name",type:"text",className:p,placeholder:"e.g. Contract Review",value:t,onChange:e=>{s(e.target.value)}})]}),(0,n.jsxs)("div",{className:"mb-0",children:[(0,n.jsx)("label",{className:m,htmlFor:"agent-instructions",children:"Instructions"}),(0,i.createElement)("textarea",{id:"agent-instructions",rows:8,className:`${p} min-h-[96px] resize-y leading-[1.6]`,value:a,onChange:e=>{c(e.target.value)}}),(0,n.jsx)("div",{className:"mt-[5px] text-[12.5px] text-muted",children:"This becomes the agent’s system prompt. Plain language works better than instructions written for a developer."})]})]})}),"loading"===y.kind?(0,n.jsx)("div",{className:"mt-4 text-[13px] text-muted",children:"Loading model connections…"}):"failed"===y.kind?(0,n.jsx)("div",{className:"mt-4 text-[13px] text-danger",role:"alert",children:y.reason}):(0,n.jsx)(h,{models:B,unavailable:D,value:$,onSelect:P}),null===w?(0,n.jsx)("div",{className:"mt-4 text-[13px] text-muted",children:"Loading runtime profiles…"}):(0,n.jsx)(b,{profiles:w,selectedId:C,onSelect:R}),null===I?(0,n.jsx)("div",{className:"mt-4 text-[13px] text-muted",children:"Loading files, skills, and connectors…"}):(0,n.jsx)(f,{options:I,fileAccess:T,selectedSkills:O,selectedConnectors:M,onFile:(e,t)=>_(s=>{let n={...s};return null===t?delete n[e]:n[e]=t,n}),onSkill:(e,t)=>L(s=>{let n=new Set(s);return t?n.add(e):n.delete(e),n}),onConnector:(e,t)=>q(s=>{let n=new Set(s);return t?n.add(e):n.delete(e),n})}),(0,n.jsx)(g,{permissions:W,onChange:(e,t)=>z(s=>({...s,[e]:t}))}),null===v?null:(0,n.jsxs)("div",{className:"mt-4 flex items-start gap-[11px] rounded-(--radius) border border-danger bg-danger-soft p-[14px] text-[13px] text-danger",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"flex-none text-[14px] leading-[1.4]",children:"!"}),(0,n.jsx)("div",{className:"min-w-0 flex-1",children:"api"===v.kind?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("b",{className:"font-semibold",children:[v.status," ",v.code]}),(0,n.jsx)("div",{children:v.message})]}):(0,n.jsx)("div",{children:v.reason})})]}),(0,n.jsxs)("div",{className:"mt-4 flex items-center justify-end gap-2",children:[(0,n.jsx)(l(),{href:"/agents",className:`${x} border-border-strong bg-surface text-text`,children:"Cancel"}),(0,n.jsx)("button",{type:"submit",disabled:!H,className:`${x} border-accent bg-accent text-white dark:text-[#10131c] ${H?"":"pointer-events-none opacity-[.45]"}`,children:j?"Creating…":"Create Agent"})]})]})]})}},7662:(e,t,s)=>{"use strict";var n=s(2898);s.o(n,"usePathname")&&s.d(t,{usePathname:function(){return n.usePathname}}),s.o(n,"useRouter")&&s.d(t,{useRouter:function(){return n.useRouter}}),s.o(n,"useSearchParams")&&s.d(t,{useSearchParams:function(){return n.useSearchParams}})},9123:(e,t,s)=>{Promise.resolve().then(s.bind(s,5286))}},e=>{e.O(0,[7413,6365,1435,9595,3881,1e3,7358],()=>e(e.s=9123)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4671],{147:(e,t,s)=>{"use strict";s.d(t,{AgentsListScreen:()=>c});var r=s(126),a=s(6365),n=s.n(a),l=s(3310),d=s(4448),i=s(1435);function o(){return(0,r.jsxs)("svg",{viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,"aria-hidden":"true",className:"size-[14px] flex-none text-muted",children:[(0,r.jsx)("circle",{cx:"7",cy:"7",r:"4.2"}),(0,r.jsx)("path",{d:"m10.2 10.2 3 3"})]})}function c(){let[e,t]=(0,l.useState)({kind:"loading"}),[s,a]=(0,l.useState)("");(0,l.useEffect)(()=>{let e=!1;return(async()=>{let s,r;try{s=await fetch("/api/agents",{headers:{accept:"application/json"}})}catch(s){e||t({kind:"problem",problem:{kind:"transport",reason:`The request to load agents failed: ${s instanceof Error?s.message:String(s)}`}});return}if(!s.ok){let r=await (0,i.Tp)(s,()=>s.json());e||t({kind:"problem",problem:r});return}try{r=await s.json()}catch{e||t({kind:"problem",problem:{kind:"transport",reason:"The server answered 200 with a body that was not JSON."}});return}let a=r.agents;e||t(Array.isArray(a)?{kind:"loaded",agents:a}:{kind:"problem",problem:{kind:"transport",reason:'The server answered 200 without an "agents" array.'}})})(),()=>{e=!0}},[]);let c="loaded"===e.kind?e.agents.length:null,x="loaded"===e.kind?(0,i.HM)(e.agents,s):[];return(0,r.jsxs)("main",{className:"w-full max-w-[1120px] px-8 pt-[26px] pb-[90px]",children:[(0,r.jsxs)("div",{className:"mb-[22px] flex items-start gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-[21px]",children:"Agents"}),null===c?null:(0,r.jsx)("div",{className:"mt-[3px] text-[13px] text-muted",children:1===c?"1 agent":`${String(c)} agents`})]}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,r.jsxs)("label",{className:"flex h-8 min-w-[220px] items-center gap-2 rounded-(--radius-sm) border border-border-strong bg-surface px-2.5",children:[(0,r.jsx)(o,{}),(0,r.jsx)("input",{type:"search",placeholder:"Search agents",value:s,onChange:e=>{a(e.target.value)},className:"h-auto border-0 bg-transparent p-0 text-[13.5px] text-text focus:outline-none"})]}),(0,r.jsx)(n(),{href:"/agents/new",className:"inline-flex h-8 items-center justify-center gap-[7px] whitespace-nowrap rounded-(--radius-sm) border px-[13px] text-[13px] font-medium no-underline border-accent bg-accent text-white dark:text-[#10131c]",children:"New Agent"})]})]}),"loading"===e.kind?(0,r.jsx)("p",{className:"text-[13px] text-muted",children:"Loading…"}):null,"problem"===e.kind?(0,r.jsxs)("div",{className:"flex items-start gap-[11px] rounded-(--radius) border border-danger bg-danger-soft p-[14px] text-[13px] text-danger",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"flex-none text-[14px] leading-[1.4]",children:"!"}),(0,r.jsx)("div",{className:"min-w-0 flex-1",children:"api"===e.problem.kind?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("b",{className:"font-semibold",children:[e.problem.status," ",e.problem.code]}),(0,r.jsx)("div",{children:e.problem.message})]}):(0,r.jsx)("div",{children:e.problem.reason})})]}):null,"loaded"===e.kind&&0===e.agents.length?(0,r.jsx)("p",{className:"text-[13px] text-muted",children:"This workspace has no agents yet."}):null,"loaded"===e.kind&&e.agents.length>0?(0,r.jsx)("div",{className:"rounded-(--radius) border border-border bg-surface shadow-(--shadow)",children:(0,r.jsx)("div",{className:"overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full border-collapse text-[13px]",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"border-b border-border bg-surface-2 px-4 py-[9px] text-left text-[11.5px] font-semibold tracking-[.04em] whitespace-nowrap text-muted uppercase",children:"Agent"}),(0,r.jsx)("th",{className:"border-b border-border bg-surface-2 px-4 py-[9px] text-left text-[11.5px] font-semibold tracking-[.04em] whitespace-nowrap text-muted uppercase",children:"Model"}),(0,r.jsx)("th",{className:"border-b border-border bg-surface-2 px-4 py-[9px] text-left text-[11.5px] font-semibold tracking-[.04em] whitespace-nowrap text-muted uppercase",children:"Created"})]})}),(0,r.jsxs)("tbody",{children:[x.map(e=>{let t=(0,i.S2)(e.instructions);return(0,r.jsxs)("tr",{className:"hover:bg-surface-2",children:[(0,r.jsxs)("td",{className:"border-b border-border px-4 py-[11px] align-middle",children:[(0,r.jsx)("div",{className:"font-semibold",children:(0,r.jsx)(n(),{className:"text-accent no-underline hover:underline",href:`/agents/${e.id}`,children:e.name})}),(0,r.jsx)("div",{className:"mt-2",children:(0,r.jsx)(d.G,{subject:{type:"agent",id:e.id,label:e.name}})}),""===t?null:(0,r.jsx)("div",{className:"text-[12px] text-muted",children:t})]}),(0,r.jsx)("td",{className:"border-b border-border px-4 py-[11px] align-middle",children:(0,i.Vy)(e.model)}),(0,r.jsx)("td",{className:"border-b border-border px-4 py-[11px] align-middle whitespace-nowrap",children:(0,i.zO)(e.createdAt)})]},e.id)}),0===x.length?(0,r.jsx)("tr",{children:(0,r.jsxs)("td",{colSpan:3,className:"px-4 py-[11px] text-muted",children:["No agent matches “",s,"”."]})}):null]})]})})}):null]})}},2921:(e,t,s)=>{Promise.resolve().then(s.bind(s,147))},4448:(e,t,s)=>{"use strict";s.d(t,{G:()=>n});var r=s(126),a=s(3310);function n({subject:e,triggerLabel:t="Share",transcript:s}){let[l,d]=(0,a.useState)(!1),[i,o]=(0,a.useState)("workspace"),[c,x]=(0,a.useState)("never"),[p,h]=(0,a.useState)(""),[u,b]=(0,a.useState)(null);async function m(){let t=await fetch("/api/shares",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({subjectType:e.type,subjectId:e.id,subjectLabel:e.label,visibility:i,..."agent"===e.type?{mode:"definition"}:{},expiry:c,...p?{passphrase:p}:{},..."session"===e.type&&void 0!==s?{transcript:s}:{}})}),r=await t.json(),a="string"==typeof r.error?.message?r.error.message:`Share failed (${t.status})`;b(t.ok&&"string"==typeof r.url?r.url:a)}return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>d(!0),className:"rounded-(--radius-sm) border border-border-strong px-3 py-1.5 text-[13px]",children:t}),l?(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":`Share ${e.label}`,className:"fixed inset-0 z-50 grid place-items-center bg-black/40 p-4",children:(0,r.jsxs)("div",{className:"w-full max-w-[520px] rounded-(--radius) border border-border bg-surface p-5 shadow-xl",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("h2",{className:"text-[18px]",children:["Share “",e.label,"”"]}),(0,r.jsxs)("p",{className:"mt-1 text-[12px] text-muted",children:["Choose who can see this ",e.type,"."]})]}),(0,r.jsx)("button",{type:"button",onClick:()=>d(!1),"aria-label":"Close",children:"\xd7"})]}),(0,r.jsxs)("label",{className:"mt-4 block text-[12px] font-semibold",children:["Who can see this",(0,r.jsxs)("select",{value:i,onChange:e=>o(e.target.value),className:"mt-1 block w-full rounded border border-border bg-surface p-2",children:[(0,r.jsx)("option",{value:"private",children:"Only me"}),(0,r.jsx)("option",{value:"workspace",children:"Everyone in this workspace"}),(0,r.jsx)("option",{value:"public",children:"Anyone with the link"})]})]}),(0,r.jsxs)("label",{className:"mt-3 block text-[12px] font-semibold",children:["Expiry",(0,r.jsxs)("select",{value:c,onChange:e=>x(e.target.value),className:"mt-1 block w-full rounded border border-border bg-surface p-2",children:[(0,r.jsx)("option",{children:"24 h"}),(0,r.jsx)("option",{children:"7 days"}),(0,r.jsx)("option",{children:"30 days"}),(0,r.jsx)("option",{children:"never"})]})]}),(0,r.jsxs)("label",{className:"mt-3 block text-[12px] font-semibold",children:["Passphrase (optional)",(0,r.jsx)("input",{type:"password",value:p,onChange:e=>h(e.target.value),className:"mt-1 block w-full rounded border border-border bg-surface p-2"})]}),u?(0,r.jsx)("p",{role:"status",className:"mt-3 break-all rounded bg-surface-2 p-2 text-[12px]",children:u}):null,(0,r.jsxs)("div",{className:"mt-5 flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>d(!1),className:"px-3 py-2 text-[13px]",children:"Cancel"}),(0,r.jsx)("button",{type:"button",onClick:()=>void m(),className:"rounded bg-accent px-3 py-2 text-[13px] text-white",children:"Copy link"})]})]})}):null]})}}},e=>{e.O(0,[7413,6365,1435,3881,1e3,7358],()=>e(e.s=2921)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/new/page-b7ab59a7697ce004.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5236],{5122:(e,s,_)=>{Promise.resolve().then(_.bind(_,2685))}},e=>{e.O(0,[7413,6365,2685,3881,1e3,7358],()=>e(e.s=5122)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5981],{4325:(e,s,_)=>{Promise.resolve().then(_.bind(_,2685))}},e=>{e.O(0,[7413,6365,2685,3881,1e3,7358],()=>e(e.s=4325)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9904],{7380:(e,s,_)=>{Promise.resolve().then(_.bind(_,2685))}},e=>{e.O(0,[7413,6365,2685,3881,1e3,7358],()=>e(e.s=7380)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6399],{214:(e,t,n)=>{"use strict";n.d(t,{$U:()=>r,$t:()=>l,SI:()=>a});let r=[{label:null,items:[{id:"home",label:"New chat",icon:"chat",href:"/"},{id:"projects",label:"Projects",icon:"projects",href:"/projects"},{id:"agents",label:"Agents",icon:"agents",href:"/agents"},{id:"files",label:"Files",icon:"files",href:"/files"},{id:"skills",label:"Skills",icon:"skills",href:"/skills"},{id:"connectors",label:"Connectors",icon:"connectors",href:"/connectors"},{id:"runs",label:"Runs",icon:"runs",href:"/runs"}]},{label:"Administration",items:[{id:"models",label:"Models",icon:"models",href:"/admin/models"},{id:"users",label:"Users",icon:"users",href:"/admin/users"},{id:"apikeys",label:"API Keys",icon:"keys",href:"/admin/api-keys"},{id:"runtimes",label:"Runtimes",icon:"runtimes",href:"/admin/runtimes"},{id:"shares",label:"Shared links",icon:"share",href:"/admin/shares"},{id:"settings",label:"Settings",icon:"settings",href:"/admin/settings"}]}];function s(e){if("string"!=typeof e||!e.startsWith("/"))return null;let t=e.split(/[?#]/u)[0]??"";if("/"===t)return"/";let n=t.replace(/\/+$/u,"");return""===n?"/":n}function l(e){let t=s(e);if(null===t)return null;for(let e of r)for(let n of e.items)if(null!==n.href&&n.href===t)return n.id;return null}function a(e){let t=s(e);if(null===t)return[];for(let e of r)for(let n of e.items)if(null!==n.href&&n.href===t)return null===e.label?[n.label]:[e.label,n.label];return[]}},2596:(e,t,n)=>{"use strict";n.d(t,{AS:()=>g,EB:()=>v,KS:()=>y,Ts:()=>k,mU:()=>j,ts:()=>b,yn:()=>w});let r=new Set(["owner","admin","builder","viewer"]),s=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,l=/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d\.\d{3}Z$/u,a=["id","slug","name","archivedAt","publicSharingEnabled","createdAt","updatedAt"],i=[...a,"role"],o=["workspaces"],c=["workspace"],d=["error"],u=["code","message","detail"],x=["code","detail"];function p(e,t){let n="object"!=typeof e||null===e||Array.isArray(e)?null:e;return null!==n&&Object.keys(n).length===t.length&&t.every(e=>Object.hasOwn(n,e))?n:null}function h(e){if("string"!=typeof e||!l.test(e))return!1;let t=Number(e.slice(0,4)),n=Number(e.slice(5,7)),r=Number(e.slice(8,10)),s=31;return 2===n?s=t%4==0&&(t%100!=0||t%400==0)?29:28:(4===n||6===n||9===n||11===n)&&(s=30),r<=s}function f(e){var t;return"string"==typeof(t=e.id)&&s.test(t)&&"string"==typeof e.slug&&"string"==typeof e.name&&(null===e.archivedAt||h(e.archivedAt))&&"boolean"==typeof e.publicSharingEnabled&&h(e.createdAt)&&h(e.updatedAt)?{id:e.id,slug:e.slug,name:e.name,archivedAt:e.archivedAt,publicSharingEnabled:e.publicSharingEnabled,createdAt:e.createdAt,updatedAt:e.updatedAt}:null}function m(e){var t;let n=p(e,i);if(null===n||!("string"==typeof(t=n.role)&&r.has(t)))return null;let s=f(n);return null===s?null:{...s,role:n.role}}function b(e){let t=p(e,o);if(null===t||!Array.isArray(t.workspaces))return null;let n=[];for(let e of t.workspaces){let t=m(e);if(null===t)return null;n.push(t)}return n}function w(e){let t=p(e,c);return null===t?null:m(t.workspace)}function g(e){let t,n=p(e,c);return null===n||null===(t=p(n.workspace,a))?null:f(t)}async function j(e,t){let n;try{n=await t()}catch{return{kind:"transport",reason:`The server answered ${String(e.status)} with a body that was not JSON.`}}let r=function(e){let t=p(e,d);if(null===t)return null;let n=p(t.error,u);if(null!==n)return"string"==typeof n.code&&"string"==typeof n.message&&"string"==typeof n.detail?{code:n.code,detail:n.message}:null;let r=p(t.error,x);return null!==r&&"string"==typeof r.code&&"string"==typeof r.detail?{code:r.code,detail:r.detail}:null}(n);return null!==r?{kind:"api",status:e.status,code:r.code,detail:r.detail}:{kind:"transport",reason:`The server answered ${String(e.status)} without the usual error envelope.`}}function v(e){return{kind:"transport",reason:`The request failed before the server could answer: ${e instanceof Error?e.message:String(e)}`}}function y(e){return"owner"===e.role}function k(e,t){return e.find(e=>e.slug===t)}},3602:(e,t,n)=>{"use strict";n.d(t,{Topbar:()=>i});var r=n(126),s=n(7662),l=n(214);let a="inline-flex min-w-0 max-w-full items-center justify-center gap-[7px] whitespace-normal rounded-[999px] border px-[9px] py-1 text-center text-[12px] leading-tight no-underline sm:whitespace-nowrap";function i({runtime:e}){let t=(0,l.SI)((0,s.usePathname)());return(0,r.jsxs)("header",{className:"sticky top-0 z-20 flex min-h-[52px] min-w-0 flex-col items-stretch gap-2 border-b border-border bg-bg px-4 py-2 sm:h-[52px] sm:flex-row sm:items-center sm:gap-3 sm:px-6 sm:py-0",children:[(0,r.jsx)("div",{className:"flex min-w-0 max-w-full flex-wrap items-center gap-[7px] text-[13px] text-muted",children:t.map((e,n)=>(0,r.jsxs)("span",{className:"flex items-center gap-[7px]",children:[0===n?null:(0,r.jsx)("span",{className:"opacity-50",children:"/"}),n===t.length-1?(0,r.jsx)("b",{className:"font-semibold text-text",children:e}):(0,r.jsx)("span",{children:e})]},e))}),(0,r.jsx)("div",{className:"hidden flex-1 sm:block"}),(0,r.jsx)(o,{runtime:e})]})}function o({runtime:e}){let t=e.warn?"border-warn bg-warn-soft text-warn":"border-border-strong bg-surface text-text-2",n=`size-[7px] flex-none rounded-[50%] ${e.warn?"bg-warn":"bg-ok"}`,s="Runtime driver in force for this workspace";return null===e.href?(0,r.jsxs)("span",{className:`${a} ${t}`,title:s,children:[(0,r.jsx)("span",{className:n}),"Runtime: ",e.label]}):(0,r.jsxs)("a",{className:`${a} ${t} hover:no-underline`,href:e.href,title:s,children:[(0,r.jsx)("span",{className:n}),"Runtime: ",e.label]})}},3734:(e,t,n)=>{"use strict";n.d(t,{SidebarNav:()=>x});var r=n(126),s=n(6365),l=n.n(s),a=n(7662);let i={chat:(0,r.jsx)("path",{d:"M13.5 8.6c0 2.5-2.5 4.5-5.5 4.5-.7 0-1.4-.1-2-.3L2.5 13.5l.8-2.6A4.3 4.3 0 0 1 2.5 8.6C2.5 6.1 5 4.1 8 4.1s5.5 2 5.5 4.5"}),projects:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("path",{d:"M2.5 4.6A1.1 1.1 0 0 1 3.6 3.5h2.6l1.1 1.5h5.1a1.1 1.1 0 0 1 1.1 1.1v5.3a1.1 1.1 0 0 1-1.1 1.1H3.6a1.1 1.1 0 0 1-1.1-1.1z"}),(0,r.jsx)("path",{d:"M2.5 7.6h11"})]}),agents:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("rect",{x:"2.5",y:"4.5",width:"11",height:"8",rx:"2"}),(0,r.jsx)("path",{d:"M8 2.5v2M5.5 8h.01M10.5 8h.01"})]}),files:(0,r.jsx)("path",{d:"M2.5 4.2A1.2 1.2 0 0 1 3.7 3h2.4l1.2 1.6h4.9A1.2 1.2 0 0 1 13.4 5.8v6A1.2 1.2 0 0 1 12.2 13H3.7a1.2 1.2 0 0 1-1.2-1.2z"}),skills:(0,r.jsx)("path",{d:"M8 2.2 9.7 6l4 .4-3 2.7.9 3.9L8 11l-3.6 2 .9-3.9-3-2.7 4-.4z"}),connectors:(0,r.jsx)("path",{d:"M6.2 9.8 4.6 11.4a2.3 2.3 0 0 1-3.2-3.2L3 6.6M9.8 6.2l1.6-1.6a2.3 2.3 0 0 1 3.2 3.2L13 9.4M6 10l4-4"}),runs:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,r.jsx)("path",{d:"M8 5v3.2l2 1.2"})]}),models:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("path",{d:"M8 2.5 13.5 5.6v4.8L8 13.5 2.5 10.4V5.6z"}),(0,r.jsx)("path",{d:"M8 8 13.5 5.6M8 8v5.5M8 8 2.5 5.6"})]}),users:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:"6",cy:"6",r:"2.4"}),(0,r.jsx)("path",{d:"M1.8 13c.4-2.3 2.2-3.6 4.2-3.6S9.8 10.7 10.2 13"}),(0,r.jsx)("path",{d:"M10.6 4.2a2.2 2.2 0 0 1 0 4.1M11.5 13c-.1-1.2-.4-2.2-1-3"})]}),keys:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:"5.4",cy:"8",r:"2.6"}),(0,r.jsx)("path",{d:"M8 8h6M12 8v2.4M10.2 8v1.8"})]}),runtimes:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("rect",{x:"2",y:"3",width:"12",height:"4.2",rx:"1"}),(0,r.jsx)("rect",{x:"2",y:"8.8",width:"12",height:"4.2",rx:"1"}),(0,r.jsx)("path",{d:"M4.4 5.1h.01M4.4 10.9h.01"})]}),share:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:"12",cy:"4",r:"1.8"}),(0,r.jsx)("circle",{cx:"4",cy:"8",r:"1.8"}),(0,r.jsx)("circle",{cx:"12",cy:"12",r:"1.8"}),(0,r.jsx)("path",{d:"m5.6 7.1 4.8-2.2M5.6 8.9l4.8 2.2"})]}),settings:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("circle",{cx:"8",cy:"8",r:"2.1"}),(0,r.jsx)("path",{d:"M8 1.8v1.6M8 12.6v1.6M14.2 8h-1.6M3.4 8H1.8M12.4 3.6l-1.1 1.1M4.7 11.3l-1.1 1.1M12.4 12.4l-1.1-1.1M4.7 4.7 3.6 3.6"})]})};function o({name:e,className:t}){return(0,r.jsx)("svg",{viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",className:t,children:i[e]})}var c=n(214);let d="mb-px flex items-center gap-[9px] rounded-(--radius-sm) px-2 py-1.5 text-[13.5px]",u="size-[15px] flex-none opacity-75";function x(){let e=(0,c.$t)((0,a.usePathname)());return(0,r.jsx)("nav",{className:"flex-1 overflow-y-auto px-2.5 py-3",children:c.$U.map((t,n)=>(0,r.jsxs)("div",{className:0===n?"mt-0":"mt-[18px]",children:[null===t.label?null:(0,r.jsx)("div",{className:"px-2 pb-1.5 text-[11px] font-semibold tracking-[.06em] text-muted uppercase",children:t.label}),t.items.map(t=>null===t.href?(0,r.jsxs)("span",{"aria-disabled":"true",className:`${d} cursor-not-allowed text-text-2 opacity-[.62]`,children:[(0,r.jsx)(o,{name:t.icon,className:u}),(0,r.jsx)("span",{children:t.label})]},t.id):(0,r.jsxs)(l(),{href:t.href,"aria-current":t.id===e?"page":void 0,className:t.id===e?`${d} bg-surface font-semibold text-text no-underline shadow-(--shadow) hover:no-underline`:`${d} text-text-2 no-underline hover:bg-surface-3 hover:text-text hover:no-underline`,children:[(0,r.jsx)(o,{name:t.icon,className:u}),(0,r.jsx)("span",{children:t.label})]},t.id))]},t.label??"main"))})}},4574:(e,t,n)=>{"use strict";n.d(t,{WorkspaceSwitcher:()=>x});var r=n(126),s=n(6365),l=n.n(s),a=n(3310),i=n(2596),o=n(6214),c=n(8068);let d="flex w-full items-center gap-2 rounded-(--radius-sm) px-2.5 py-[7px] text-left text-[13px] no-underline focus:outline-2 focus:-outline-offset-1 focus:outline-accent";function u({problem:e}){let t="api"===e.kind?e.detail:e.reason;return(0,r.jsxs)("div",{role:"alert",className:"space-y-2 px-3 py-3 text-[12.5px] text-danger",children:[(0,r.jsx)("p",{className:"m-0",children:t}),(0,r.jsx)("a",{href:"/signin",className:"font-medium text-accent underline",children:"Sign in again"})]})}function x({currentSlug:e,currentName:t,currentDetail:n}){let[s,p]=(0,a.useState)(!1),[h,f]=(0,a.useState)({kind:"idle"}),[m,b]=(0,a.useState)(0),[w,g]=(0,a.useState)(0),j=(0,a.useId)(),v=(0,a.useId)(),y=(0,a.useRef)(null),k=(0,a.useRef)(null),N=(0,a.useRef)([]),A="loaded"===h.kind?h.items:[],M=(0,i.Ts)(A,e),S=A.length+1;return(0,a.useEffect)(()=>{let e=!1;return f(e=>"idle"===e.kind?{kind:"loading"}:e),fetch("/api/workspaces",{headers:{accept:"application/json"}}).then(async t=>{let n;if(e)return;if(!t.ok){let e=await (0,i.mU)(t,()=>t.json());if((0,c.Q3)(e,{clearTenantState:()=>{p(!1),f({kind:"idle"})},concealTenantDocument:()=>(0,o.vm)(document),navigate:e=>window.location.assign(e)}))return;f({kind:"problem",problem:e});return}try{n=await t.json()}catch{f({kind:"problem",problem:{kind:"transport",reason:"The server answered with a body that was not JSON."}});return}let r=(0,i.ts)(n);null===r?f({kind:"problem",problem:{kind:"transport",reason:"The server answered without the usual workspaces list."}}):f({kind:"loaded",items:r})}).catch(t=>{e||f({kind:"problem",problem:(0,i.EB)(t)})}),()=>{e=!0}},[s,w]),(0,a.useEffect)(()=>{function e(){g(e=>e+1)}return window.addEventListener(o.c2,e),()=>window.removeEventListener(o.c2,e)},[]),(0,a.useEffect)(()=>{function e(e){(0,o.Um)(e)&&window.location.reload()}return window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[]),(0,a.useEffect)(()=>{s&&b(e=>(S<=0?null:e<0?0:e>=S?S-1:e)??0)},[s,S]),(0,a.useEffect)(()=>{s&&N.current[m]?.focus()},[s,m,S]),(0,a.useEffect)(()=>{if(s)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){let t=e.target;t instanceof Node&&k.current?.contains(t)||t instanceof Node&&y.current?.contains(t)||p(!1)}},[s]),(0,r.jsxs)("div",{className:"relative border-b border-border",children:[(0,r.jsxs)("button",{ref:y,type:"button","aria-haspopup":"menu","aria-expanded":s,"aria-controls":j,onClick:()=>p(e=>!e),onKeyDown:function(e){("ArrowDown"===e.key||"Enter"===e.key||" "===e.key)&&(e.preventDefault(),p(!0))},className:"flex w-full items-center gap-2.5 px-4 pt-4 pb-3.5 text-left focus:outline-2 focus:-outline-offset-2 focus:outline-accent",children:[(0,r.jsx)("div",{className:"grid size-[26px] flex-none place-items-center rounded-[7px] bg-text text-[13px] font-bold text-surface",children:t.slice(0,1).toUpperCase()}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("b",{className:"block truncate text-[13px] font-semibold",children:t}),(0,r.jsx)("span",{className:"block truncate text-[11.5px] text-muted",children:n})]}),(0,r.jsx)("svg",{"aria-hidden":"true",viewBox:"0 0 16 16",className:`size-[13px] flex-none text-muted transition-transform ${s?"rotate-180":""}`,fill:"none",stroke:"currentColor",strokeWidth:1.6,children:(0,r.jsx)("path",{d:"m4.5 6.5 3.5 3.5 3.5-3.5"})})]}),M?.archivedAt!=null?(0,r.jsxs)("div",{className:"border-t border-warn bg-warn-soft px-4 py-2 text-[11.5px] text-warn",children:["This workspace is archived."," ",(0,r.jsx)(l(),{href:"/workspaces",className:"font-medium underline",children:"Browse workspaces"})," ","to switch or restore it."]}):null,s?(0,r.jsx)("div",{className:"absolute inset-x-2 top-full z-30 mt-1 rounded-(--radius) border border-border bg-surface p-1.5 shadow-(--shadow)",children:(0,r.jsxs)("div",{id:j,ref:k,role:"menu","aria-label":"Switch workspace",onKeyDown:function(e){var t;let n="ArrowDown"===(t=e.key)||"ArrowUp"===t||"Home"===t||"End"===t?t:null;if(null!==n){e.preventDefault();let t=function(e,t,n){if(n<=0)return null;switch(t){case"ArrowDown":return(e+1)%n;case"ArrowUp":return(e-1+n)%n;case"Home":return 0;case"End":return n-1;default:throw Error(`nextMenuIndex: unhandled key ${JSON.stringify(t)}`)}}(m,n,S);null!==t&&b(t);return}if("Escape"===e.key){e.preventDefault(),p(!1),y.current?.focus();return}"Tab"===e.key&&p(!1)},className:"max-h-[320px] overflow-y-auto",children:["loading"===h.kind||"idle"===h.kind?(0,r.jsx)("p",{className:"px-3 py-3 text-[12.5px] text-muted",children:"Loading workspaces…"}):null,"problem"===h.kind?(0,r.jsx)(u,{problem:h.problem}):null,"loaded"===h.kind&&0===A.length?(0,r.jsx)("p",{className:"px-3 py-3 text-[12.5px] text-muted",children:"You do not currently belong to any workspace."}):null,"loaded"===h.kind?A.map((t,n)=>(0,r.jsxs)("button",{ref:e=>{N.current[n]=e},type:"submit",form:v,name:"workspace",value:t.slug,role:"menuitem",tabIndex:n===m?0:-1,"aria-current":t.slug===e?"true":void 0,className:`${d} ${t.slug===e?"bg-surface-3 font-semibold":"hover:bg-surface-3"}`,children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate",children:t.name}),null!==t.archivedAt?(0,r.jsx)("span",{className:"flex-none rounded-[999px] bg-warn-soft px-1.5 py-px text-[10.5px] text-warn",children:"Archived"}):null,(0,r.jsx)("span",{className:"flex-none text-[11px] text-muted capitalize",children:t.role}),t.slug===e?(0,r.jsx)("span",{className:"flex-none text-[11px] text-accent",children:"Current"}):null]},t.id)):null,(0,r.jsx)("div",{className:"my-1 border-t border-border"}),(0,r.jsx)(l(),{href:"/workspaces",role:"menuitem",tabIndex:m===A.length?0:-1,ref:e=>{N.current[A.length]=e},className:`${d} text-muted hover:bg-surface-3 hover:text-text`,children:"Manage workspaces…"})]})}):null,(0,r.jsx)("form",{id:v,method:"post",action:"/api/auth/workspace",className:"hidden",onSubmit:()=>(0,o.vm)(document)})]})}},6214:(e,t,n)=>{"use strict";n.d(t,{Um:()=>l,c2:()=>r,uA:()=>a,vm:()=>s});let r="aw:workspace-directory-changed";function s(e){e.body.setAttribute("aria-busy","true"),e.body.style.visibility="hidden"}function l(e){return e.persisted}function a(e){e.dispatchEvent(new Event(r))}},6376:(e,t,n)=>{Promise.resolve().then(n.bind(n,3734)),Promise.resolve().then(n.bind(n,3602)),Promise.resolve().then(n.bind(n,4574))},7662:(e,t,n)=>{"use strict";var r=n(2898);n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},8068:(e,t,n)=>{"use strict";function r(e,t){return"api"===e.kind&&(401===e.status||500===e.status&&"authorisation_undecidable"===e.code)&&(t.clearTenantState(),t.concealTenantDocument(),t.navigate("/signin?error=session_expired"),!0)}n.d(t,{Q3:()=>r})}},e=>{e.O(0,[6365,3881,1e3,7358],()=>e(e.s=6376)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[188],{1467:(e,t,n)=>{"use strict";n.d(t,{HomeChat:()=>R});var r=n(126),a=n(3310),s=n(8157),l=n(2782),o=n(5976);function i(e){return e instanceof Error?e.message:String(e)}function d(e){if("object"==typeof e&&null!==e){let t=e.error;if("object"==typeof t&&null!==t){let e=t.code,n=t.message;if("string"==typeof e&&"string"==typeof n)return{code:e,message:n}}}return{code:"unrecognised_error_body",message:"the server did not explain why in the usual shape."}}async function c(e,t,n=null,r=null){let a,s;try{a=await fetch(`/api/agents/${encodeURIComponent(e)}/runs`,{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({prompt:t,sessionId:r,modelConnectionId:n?.connectionId??null,model:n?.model??null})})}catch(e){return{kind:"transport-error",message:`the request to start this run failed: ${i(e)}`}}try{s=await a.json()}catch{s=null}if(!a.ok){let e=d(s);return{kind:"rejected",status:a.status,code:e.code,message:e.message}}if("object"!=typeof s||null===s)return{kind:"transport-error",message:"the server accepted the run but its response body is not an object."};let l=s,o=l.events;if("string"!=typeof o||""===o)return{kind:"transport-error",message:"the server accepted the run but named no events URL."};let u=l.run;return{kind:"started",status:"object"==typeof u&&null!==u?u.status:void 0,eventsUrl:o,sessionId:"object"==typeof u&&null!==u&&"string"==typeof u.sessionId?u.sessionId:null}}async function u(e,t){let n,r;try{n=await fetch(`/api/projects/${encodeURIComponent(e)}/sessions`,{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify({agentId:t})})}catch(e){return{kind:"transport-error",message:`the request to start a session in this project failed: ${i(e)}`}}try{r=await n.json()}catch{r=null}if(!n.ok){let e=d(r);return{kind:"rejected",status:n.status,...e}}if("object"!=typeof r||null===r)return{kind:"transport-error",message:"the server created a project session but its response body is not an object."};let a=r.id;return"string"!=typeof a||""===a?{kind:"transport-error",message:"the server created a project session but returned no session id."}:{kind:"started",sessionId:a}}async function p(e,t,n,r){if(null===r)return c(e,t,n,null);let a=await u(r,e);return"started"!==a.kind?a:c(e,t,n,a.sessionId)}var f=n(6482),m=n(2378);function x(e,t){switch(t){case"files":return e.files;case"connectors":return e.connectors;default:throw TypeError(`no picker of kind ${JSON.stringify(t)} exists`)}}function g(e,t){switch(t){case"files":return e.files;case"connectors":return e.connectors;default:throw TypeError(`no picker of kind ${JSON.stringify(t)} exists`)}}function h(e,t){if("string"!=typeof t||""===t)return null;for(let n of e)if(n.id===t)return n;return null}function b(e,t){return{key:t,agentId:e.id,files:[],connectors:[]}}function v(e){return"runnable"===e.runTarget.kind}function k(e,t,n=null){let r=h(e,t);if(null!==r&&v(r))return r;let a=h(e,n);return null!==a&&v(a)?a:e.find(e=>"runnable"===e.runTarget.kind&&"agent"===e.runTarget.source)??e.find(v)??r??a??e[0]??null}function y(e,t){return(null===t?void 0:e.runTargetByProject?.[t])??e.runTarget}function w(e){return"unrunnable"===e.kind&&"agent_runtime_profile_missing"===e.code}let j={agent:"the agent’s model",project:"the project default",workspace:"the workspace default",deployment:"the deployment default"},N=/^claude-(?:instant|2|3-(?!7-))/u,$=/(?:^|[-_./:])(?:(?:text)?embed(?:ding)?s?\d*|embedding\w*|tts|whisper|chirp|dall-e|davinci|babbage|moderation|image|imagen|imagegeneration|veo|audio|realtime|transcribe|search)(?:$|[-_./:@])/u;var C=n(9595);let S="inline-flex h-[27px] items-center justify-center gap-[7px] whitespace-nowrap rounded-(--radius-sm) border px-[9px] text-[12.5px] font-medium no-underline",I="px-2 py-1.5 text-[11.5px] tracking-[.05em] text-muted uppercase",E="flex w-full items-start gap-2.5 rounded-(--radius-sm) p-2 text-left text-[13px] hover:bg-surface-2",O="mt-1.5 border-t border-border px-2 pt-2 pb-1 text-[12.5px] text-muted",T="inline-flex items-center gap-[5px] rounded-[999px] px-2 py-0.5 text-[11.5px] font-semibold whitespace-nowrap",A="flex items-center gap-3.5 border-b border-border px-4 py-[13px] text-inherit no-underline last:border-b-0",z={ok:"bg-ok-soft text-ok",warn:"bg-warn-soft text-warn",danger:"bg-danger-soft text-danger",info:"bg-accent-soft text-accent",muted:"bg-surface-3 text-muted"},P=0;function D(e){return P+=1,`${e}-${String(P)}`}function L(e){return{initials:e.trim().split(/\s+/u).slice(0,2).map(e=>Array.from(e)[0]??"").join("").toUpperCase()||"AI",name:e}}function M(e,t,n,r,a,d,u,m,x){(async()=>{var g,h;let b,v=await (null===r?p(e,t,n,a):c(e,t,n,r));if("transport-error"===v.kind)return u(e=>(0,f.LZ)((0,f.yA)((0,f.zC)(e,{label:"Could not start",tone:"danger",dot:!1}),(0,f.dM)(v.message)),(0,f.fd)(D("start-transport-error"),(0,f.dB)(new Date),"transport.error",v.message)));if("rejected"===v.kind)return u(e=>(0,f.LZ)((0,f.yA)((0,f.zC)(e,{label:`${String(v.status)} ${v.code}`,tone:"danger",dot:!1}),(0,f.dM)(v.message,v.code)),(0,f.fd)(D("start-rejected"),(0,f.dB)(new Date),"http.error",v.message)));u(e=>(0,f.zC)(e,(0,f.gO)(v.status))),null!==v.sessionId&&x(v.sessionId);let k=!1;m((g=v.eventsUrl,h={onFrame:e=>{if("run-failed"===e.event){let t=(0,f.ef)(e.data);k=!0,u(n=>(0,f.LZ)((0,f.yA)((0,f.zC)(n,(0,f.i_)(t.status)),"cancelled"===t.status?null:(0,f.dM)(t.message)),(0,f.fd)(e.id??D("run-failed"),(0,f.dB)(new Date),e.event,t.message)));return}if("stream-reset"===e.event)return void u(t=>(0,f.LZ)(t,(0,f.fd)(e.id??D("stream-reset"),(0,f.dB)(new Date),e.event,e.data)));if(e.event===f.Yb){let t=(0,f.Np)(e.data),n=null===t.error?(0,f.gO)(t.status):(0,f.i_)(String(t.status));null!==t.error&&(k=!0),u(r=>(0,f.LZ)((0,f.yA)((0,f.zC)(r,n),"failed"===t.status&&null!==t.error?(0,f.dM)(t.error):r.failure),(0,f.fd)(e.id??D("run-status"),(0,f.dB)(new Date),e.event,e.data)));return}let t=function(e){try{let t=(0,s.l)((0,l.Z)(e));if(null!==t)return{kind:"event",event:t};return{kind:"unreadable",message:`the frame "${e.event}" is not one this build can read as an agent event`}}catch(e){return{kind:"unreadable",message:e instanceof Error?e.message:String(e)}}}(e);if("unreadable"===t.kind)return void u(n=>(0,f.LZ)(n,(0,f.fd)(e.id??D("agent-frame-unreadable"),(0,f.dB)(new Date),"frame.unreadable",t.message)));let n=(0,f.VD)(t.event);u(r=>{let a=(0,f.Ld)(r,(0,f.fd)(e.id??D("agent-frame"),(0,f.dB)(new Date),e.event,t.event.raw));return null===n?a:(0,f.cr)(a,d,n)})},onDone:()=>{k||u(e=>(0,f.zC)(e,{label:"Completed",tone:"ok",dot:!1}))},onTransportError:e=>{u(t=>(0,f.LZ)((0,f.zC)(t,{label:"Disconnected",tone:"danger",dot:!1}),(0,f.fd)(D("stream-transport-error"),(0,f.dB)(new Date),"transport.error",e)))}},b=new AbortController,(async()=>{let e;try{e=await fetch(g,{headers:{accept:"text/event-stream"},signal:b.signal})}catch(e){if(b.signal.aborted)return;h.onTransportError(`the request for this run's events failed: ${i(e)}`);return}if(!e.ok||null===e.body)return h.onTransportError(`the events endpoint answered ${String(e.status)} instead of opening a stream`);let t=e.body.getReader(),n=new TextDecoder("utf-8"),r="";try{for(;;){let{done:e,value:a}=await t.read();if(e)break;r+=n.decode(a,{stream:!0});let s=(0,o.ad)(r);for(let e of(r=s.rest,s.frames)){let t=(0,o.Cn)(e);if(null!==t){if("done"===t.event)return void h.onDone();h.onFrame(t)}}}}catch(e){if(b.signal.aborted)return;h.onTransportError(`this run's event stream ended unexpectedly: ${i(e)}`);return}h.onTransportError('this run\'s event stream ended before a "done" frame arrived')})(),()=>{b.abort()}))})()}function R({agents:e,recent:t,run:n=null,user:s=null}){var l,o,i,d,c;let u,p="agents"===e.kind?e.agents:[],v="agents"===e.kind?e.setupAgentId??null:null,T="agents"===e.kind?e.viewer??null:null,[A,z]=(0,a.useState)(()=>(function(e,t=null,n=null){let r=k(e,t,n);return null===r?null:b(r,0)})(p,null,v)),P=null===s||null===T?null:(l=T.workspaceId,o=T.userId,`agent-workspace.composer.last-agent:${l}:${o}`);(0,a.useEffect)(()=>{let e;if(null===P)return;try{e=window.localStorage.getItem(P)}catch{return}let t=k(p,e,v);z(e=>null===e||0!==e.key||null===t||t.id===e.agentId?e:b(t,1))},[p,P,v]);let[Z,F]=(0,a.useState)(""),[U,q]=(0,a.useState)(null),[W,H]=(0,a.useState)(n),[K,V]=(0,a.useState)(null),X=(0,C.c7)(),G="ready"===X.kind?X.catalog.models:[],Q="ready"===X.kind?X.catalog.unavailable:[],[ee,et]=(0,a.useState)([]),[en,er]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=!0;return fetch("/api/projects",{headers:{accept:"application/json"}}).then(e=>e.ok?e.json():Promise.resolve({projects:[]})).then(t=>{e&&et(function(e){if("object"!=typeof e||null===e||Array.isArray(e))throw Error("The projects response was not an object.");let t=e.projects;if(!Array.isArray(t))throw Error("The projects response has no list.");return t.map((e,t)=>{if("object"!=typeof e||null===e||Array.isArray(e))throw Error(`Project ${String(t)} was not an object.`);if("string"!=typeof e.id||"string"!=typeof e.name)throw Error(`Project ${String(t)} has no id or name.`);return{id:e.id,name:e.name}})}(t))}).catch(()=>{e&&et([])}),()=>{e=!1}},[]);let ea=(0,a.useRef)(null),es=(0,a.useRef)(null),[el,eo]=(0,a.useState)(null);(0,a.useEffect)(()=>()=>{ea.current?.()},[]);let ei=(0,a.useCallback)(e=>{H(t=>null===t?t:e(t))},[]);(0,a.useEffect)(()=>{if(null===U)return;let e=e=>{let t=e.target;t instanceof Element&&null!==t.closest("[data-picker]")||q(null)};return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[U]);let ed=null===A?null:h(p,A.agentId),ec=(0,a.useCallback)(e=>{if(null===ed||null===s)return;let t=L(ed.name);ei(t=>(0,f.yA)((0,f.zC)((0,f.EB)(t,(0,f.Rq)(D("user-follow-up"),s,e)),null),null)),ea.current?.(),ea.current=null,M(ed.id,e,K,es.current,en,t,ei,e=>{ea.current=e},e=>{es.current=e,eo(e)})},[ed,ei,K,en,s]),eu=(0,a.useCallback)(e=>{z(t=>{let n;if(null===t)return t;let r=null===(n=h(p,e))?{ok:!1,reason:`no agent with id ${JSON.stringify(e)} is available to this workspace`}:n.id===t.agentId?{ok:!0,session:t,newSession:!1}:{ok:!0,session:b(n,t.key+1),newSession:!0};return r.ok?r.session:t}),q(null),V(null)},[p]),ep=(0,a.useCallback)((e,t)=>{z(n=>{if(null===n)return n;let r=h(p,n.agentId);if(null===r)return n;let a=function(e,t,n,r){if(e.id!==t.agentId)return{ok:!1,reason:`session runs as ${JSON.stringify(t.agentId)} but was narrowed against ${JSON.stringify(e.id)}`};if("string"!=typeof r||""===r)return{ok:!1,reason:`${JSON.stringify(r)} is not an option id`};if(!x(e,n).some(e=>e.id===r))return{ok:!1,reason:`agent ${JSON.stringify(e.name)} does not permit the ${n} option ${JSON.stringify(r)}`};let a=g(t,n),s=a.includes(r)?a.filter(e=>e!==r):[...a,r];return{ok:!0,session:"files"===n?{...t,files:s}:{...t,connectors:s},newSession:!1}}(r,n,e,t);return a.ok?a.session:n})},[p]),ef="no-agents"===e.kind?e.reason:"",em=null===ed||null===A?[]:function(e,t){if(e.id!==t.agentId)return[];let n=[];for(let r of["files","connectors"]){let a=g(t,r);for(let t of x(e,r))a.includes(t.id)&&n.push(t)}return n}(ed,A),ex=null!==ed&&null!==s&&""!==Z.trim(),eg=null===ed?[]:(i=ed.drivableProviders,u=new Set(i),G.filter(e=>{var t;let n;return u.has(e.provider)&&(t=e.provider,n=e.providerModelId.toLowerCase(),!$.test(n)&&("anthropic"!==t||n.startsWith("claude-")&&!N.test(n)))})),eh=null===K?void 0:eg.find(e=>e.connectionId===K.connectionId&&e.providerModelId===K.model),eb=(0,f.Ef)(W);return"run"===eb.kind?(0,r.jsx)(m.Jj,{run:eb.run,sessionId:el,onFollowUp:ec}):(0,r.jsx)("main",{className:"w-full max-w-[1120px] px-8 pt-[26px] pb-[90px]",children:(0,r.jsxs)("div",{className:"mx-auto max-w-[720px] pt-[8vh]",children:[(0,r.jsx)("h1",{className:"text-center text-[26px] font-semibold tracking-[-.02em]",children:"What can I help with?"}),(0,r.jsx)("div",{className:"mt-2 mb-[26px] text-center text-[13.5px] text-muted",children:"Pick an agent, add files or connectors, and start. Everything runs in a sandbox."}),(0,r.jsxs)("div",{className:"flex flex-col gap-2 rounded-[12px] border border-border-strong bg-surface px-3.5 pt-3.5 pb-[11px] shadow-(--shadow)",children:[(0,r.jsx)("textarea",{autoFocus:!0,"data-testid":"composer-input","aria-label":"Ask anything",className:"min-h-[68px] w-full resize-y rounded-(--radius-sm) border-0 bg-transparent p-0 text-[15px] leading-[1.6] text-text placeholder:text-muted focus:outline-none",placeholder:"Ask anything…",value:Z,onChange:e=>F(e.target.value)}),0===em.length?null:(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-1.5",children:em.map(e=>(0,r.jsxs)("span",{className:"inline-flex h-6 items-center gap-1.5 rounded-[999px] bg-surface-3 px-[9px] text-[12px] text-text-2",children:[e.name,(0,r.jsx)("button",{type:"button","aria-label":`Remove ${e.name}`,className:"cursor-pointer opacity-55 hover:opacity-100",title:"Remove",onClick:()=>{ep(null!==ed&&ed.files.some(t=>t.id===e.id)?"files":"connectors",e.id)},children:"✕"})]},e.id))}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[0===eg.length?null:(0,r.jsx)(C.Bd,{id:"composer-model-override",label:"Model",models:eg,value:K,onChange:V,inheritLabel:"Agent default",ariaDescribedBy:"composer-model-inheritance-line"}),0===ee.length?null:(0,r.jsxs)("label",{className:"inline-flex items-center gap-1.5 text-[12.5px] text-text-2",children:["Project",(0,r.jsxs)("select",{"aria-label":"Project",className:"h-[27px] rounded-[999px] border border-border-strong bg-surface px-2.5",value:en??"",onChange:e=>er(e.target.value||null),children:[(0,r.jsx)("option",{value:"",children:"No project"}),ee.map(e=>(0,r.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,r.jsxs)(B,{id:"agent",testId:"composer-agent-picker",label:`Agent: ${null===ed?"none":ed.name}`,open:U,setOpen:q,disabled:null===ed,children:[(0,r.jsx)("div",{className:I,children:"Run this message as"}),p.map(e=>{let t=y(e,en);return(0,r.jsx)("button",{type:"button","data-testid":"composer-agent-option","data-agent-id":e.id,"data-run-target":t.kind,className:`${E} ${e.id===ed?.id?"bg-accent-soft":""}`,onClick:()=>eu(e.id),children:(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:"block font-semibold",children:e.name}),(0,r.jsx)("span",{className:"block text-[12px] text-muted",children:e.detail}),"unrunnable"===t.kind?(0,r.jsxs)("span",{className:"block text-[12px] text-warn",children:["Cannot run yet \xb7 ",t.code]}):null]})},e.id)}),(0,r.jsxs)("div",{className:O,children:["Switching agent mid-conversation starts a new session."," ",(0,r.jsx)(_,{children:"Manage agents"})]})]}),(0,r.jsx)(J,{kind:"files",label:"+ Files",agent:ed,session:A,open:U,setOpen:q,onToggle:ep,footer:(0,r.jsxs)(r.Fragment,{children:["Only files this agent is permitted to read are listed. ",(0,r.jsx)(_,{children:"Upload"})]})}),(0,r.jsx)(J,{kind:"connectors",label:"+ Connectors",agent:ed,session:A,open:U,setOpen:q,onToggle:ep,footer:"Pickers narrow what the agent may use — they never grant new capability."}),(0,r.jsx)("span",{className:"flex-1"}),(0,r.jsx)("span",{className:"text-[12.5px] text-muted",children:null===ed?ef:ed.sandbox}),(0,r.jsx)("button",{type:"button","data-testid":"composer-send",disabled:!ex,onClick:()=>{if(null===ed||null===s)return;let e=Z.trim();if(""===e)return;let t={heading:{title:ed.name,subtitle:"",status:null,actions:[]},followUp:{placeholder:"Ask a follow-up. The session is resumed, so the agent still has the context above.",actions:[],status:ed.sandbox}};if(H((0,f.Te)(t,(0,f.Rq)(`m${null===A?0:A.key}-1`,s,e))),F(""),null!==P)try{window.localStorage.setItem(P,ed.id)}catch{}ea.current?.(),ea.current=null,es.current=null,eo(null);let n=function(e,t,n){if(null===t)return null;let r=y(e,t);return"unrunnable"!==r.kind||n&&!w(r)?null:{code:r.code,reason:r.reason}}(ed,en,null!==K);null!==n?ei(e=>(0,f.yA)((0,f.zC)(e,{label:`Cannot run \xb7 ${n.code}`,tone:"danger",dot:!1}),(0,f.dM)(n.reason,n.code))):M(ed.id,e,K,null,en,L(ed.name),ei,e=>{ea.current=e},e=>{es.current=e,eo(e)})},className:`${S} border-accent bg-accent text-white dark:text-[#10131c] ${ex?"cursor-pointer hover:border-accent-hover hover:bg-accent-hover":"pointer-events-none opacity-[.45]"}`,children:"Send"})]}),null===ed?null:(0,r.jsx)("p",{id:"composer-model-inheritance-line","data-testid":"composer-run-target","data-agent-id":ed.id,"data-run-target":y(ed,en).kind,className:`text-[12px] ${(d=y(ed,en),c=void 0!==eh,"unrunnable"===d.kind&&(!c||w(d)))?"text-warn":"text-muted"}`,children:function(e,t,n=null){let r=y(e,n);if(null!==t&&!w(r))return`Runs as ${e.name} on ${t.model} (${t.connectionName}, this message only).`;switch(r.kind){case"runnable":return`Runs as ${e.name} on ${r.model}${"deployment"===r.source?" or its newest dated release":""} (${r.connectionName}, ${j[r.source]}).`;case"unrunnable":return`${e.name} cannot run yet — ${r.reason}`;case"unknown":return`Runs as ${e.name}.`;default:throw TypeError(`no run target of kind ${JSON.stringify(r)}`)}}(ed,void 0===eh?null:{connectionName:eh.connectionName,model:eh.displayName},en)}),(0,r.jsx)(C.Ks,{unavailable:Q})]}),0===t.length?null:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mt-[30px] mb-3 flex items-center gap-3",children:[(0,r.jsx)("h2",{className:"text-[15px] font-semibold",children:"Recent"}),(0,r.jsx)("div",{className:"ml-auto flex gap-2",children:(0,r.jsx)("span",{className:`${S} border-transparent bg-transparent text-text-2 cursor-not-allowed opacity-[.62]`,"aria-disabled":"true",children:"See all"})})]}),(0,r.jsx)("div",{className:"overflow-hidden rounded-(--radius) border border-border bg-surface shadow-(--shadow)",children:t.map(e=>(0,r.jsx)(Y,{run:e},e.id))})]})]})})}function _({children:e}){return(0,r.jsx)("span",{"aria-disabled":"true",className:"cursor-not-allowed opacity-[.62]",children:e})}function B({id:e,testId:t,label:n,open:a,setOpen:s,disabled:l,children:o}){let i=a===e&&!l;return(0,r.jsxs)("details",{className:"group relative inline-block","data-picker":e,"data-testid":t,open:i,children:[(0,r.jsxs)("summary",{"aria-disabled":l?"true":void 0,className:`inline-flex h-[27px] cursor-pointer list-none items-center gap-1.5 rounded-[999px] border border-border-strong bg-surface px-2.5 text-[12.5px] whitespace-nowrap text-text-2 [&::-webkit-details-marker]:hidden hover:bg-surface-2 hover:text-text group-open:border-accent group-open:text-accent group-open:hover:border-accent group-open:hover:text-accent ${l?"cursor-not-allowed opacity-[.62]":""}`,onClick:t=>{t.preventDefault(),l||s(i?null:e)},children:[n," ",(0,r.jsx)("span",{className:"text-[9px] opacity-60",children:"▾"})]}),(0,r.jsx)("div",{className:"absolute bottom-[calc(100%+8px)] left-0 z-40 max-h-[340px] w-[330px] overflow-auto rounded-[10px] border border-border bg-surface p-2 shadow-(--shadow-lg)",children:o})]})}function J({kind:e,label:t,agent:n,session:a,open:s,setOpen:l,onToggle:o,footer:i}){let d=null===n?[]:x(n,e),c=null===a?[]:g(a,e);return(0,r.jsxs)(B,{id:e,label:t,open:s,setOpen:l,disabled:null===n,children:[(0,r.jsx)("div",{className:I,children:"Available to this agent"}),d.map(t=>{let n=c.includes(t.id);return(0,r.jsxs)("button",{type:"button","aria-pressed":n,className:`${E} ${n?"bg-accent-soft":""}`,onClick:()=>o(e,t.id),children:[(0,r.jsx)("span",{className:`mt-0.5 grid size-4 flex-none place-items-center rounded-[4px] border-[1.5px] text-[11px] leading-none ${n?"border-accent bg-accent font-bold text-white dark:text-[#10131c]":"border-border-strong bg-surface"}`,children:n?"✓":""}),(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:"block font-semibold",children:t.name}),(0,r.jsx)("span",{className:"block text-[12px] text-muted",children:t.detail})]})]},t.id)}),(0,r.jsx)("div",{className:O,children:i})]})}function Y({run:e}){let t=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-[13.5px] font-semibold",children:[e.title,e.titleBadges.map(e=>(0,r.jsx)("span",{className:`${T} ${z[e.tone]}`,children:e.label},e.label))]}),(0,r.jsx)("div",{className:"mt-0.5 text-[12.5px] text-muted",children:e.meta})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3.5 text-[12.5px] whitespace-nowrap text-muted",children:[(0,r.jsx)("span",{className:`${T} ${z[e.status.tone]}`,children:e.status.label}),null===e.cost?null:(0,r.jsx)("span",{children:e.cost})]})]});return null===e.href?(0,r.jsx)("div",{className:A,children:t}):(0,r.jsx)("a",{className:`${A} hover:bg-surface-2 hover:no-underline`,href:e.href,children:t})}},2782:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var r=n(1233),a=n(1360);function s(e,t){throw new a.m0({operation:`runs.events(${e.event})`,status:200,issues:t.map(e=>e.message)})}function l(e){switch(e.event){case"done":return{kind:"done"};case"run-failed":{let t=r.z4.safeParse(e.data);return t.success?{kind:"run-failed",data:t.data}:s(e,t.error.issues)}case"stream-reset":{let t=r.C1.safeParse(e.data);return t.success?{kind:"stream-reset",data:t.data}:s(e,t.error.issues)}case r.mL:{let t=r.D4.safeParse(e.data);return t.success?{kind:"run-status",id:e.id,data:t.data}:s(e,t.error.issues)}default:return{kind:"runtime",id:e.id,name:e.event,data:e.data}}}},5976:(e,t,n)=>{"use strict";function r(e){let t=null,n=null,r=[];for(let a of e.split("\n")){if(""===a||a.startsWith(":"))continue;let e=a.indexOf(":"),s=-1===e?a:a.slice(0,e),l=-1===e?"":a.slice(e+1).replace(/^ /u,"");switch(s){case"event":t=l;break;case"id":n=l;break;case"data":r.push(l)}}if(null===t)return null;let a=r.join("\n");if(""===a)return{event:t,id:n,data:null};try{return{event:t,id:n,data:JSON.parse(a)}}catch{return{event:t,id:n,data:a}}}function a(e,t){let n=!t&&e.endsWith("\r"),r=(n?e.slice(0,-1):e).replace(/\r\n?|\n/gu,"\n").split("\n\n"),a=(r.pop()??"")+(n?"\r":"");return{frames:r,rest:a}}function s(e){return a(e,!1)}async function*l(e,t){let n=e.getReader(),l=new TextDecoder("utf-8"),o="",i=!1,d=()=>{n.cancel().catch(()=>void 0)};t?.aborted===!0?d():t?.addEventListener("abort",d,{once:!0});try{for(;;){let{done:e,value:t}=await n.read();if(e){i=!0;break}o+=l.decode(t,{stream:!0});let a=s(o);for(let e of(o=a.rest,a.frames)){let t=r(e);null!==t&&(yield t)}}if(t?.aborted!==!0)for(let e of a(o+l.decode(),!0).frames){let t=r(e);null!==t&&(yield t)}}finally{if(t?.removeEventListener("abort",d),!i)try{await n.cancel()}catch{}n.releaseLock()}}n.d(t,{Cn:()=>r,ad:()=>s,cn:()=>l})},6491:(e,t,n)=>{Promise.resolve().then(n.bind(n,1467))},8031:(e,t,n)=>{"use strict";n.d(t,{CX:()=>a,FE:()=>s,Zf:()=>u});var r=n(7413);let a=["claude-agent-sdk","openai-agents","pi","mastra"],s=r.k5n(a),l=r.k5n(["anthropic-messages","openai-responses","openai-chat-completions"]),o=r.k5n(["native","adapter"]),i=r.k5n(["native","adapter","none"]),d=r.Ikc({mcp:r.zMY(),skills:r.zMY(),resume:r.zMY(),fork:r.zMY(),interrupt:r.zMY(),streamingText:r.zMY(),reasoning:r.zMY(),maxTurns:o,maxBudget:i,wireProtocols:r.YOg(l).min(1).readonly()}).strict().readonly(),c=r.Ikc({id:s,displayName:r.YjP().min(1),version:r.YjP().min(1),capabilities:d,installed:r.zMY()}).strict().readonly();r.k5n(["mcp","skills"]);let u=r.Ikc({engines:r.YOg(c).readonly()}).strict().readonly()}},e=>{e.O(0,[7413,9595,6482,2378,3881,1e3,7358],()=>e(e.s=6491)),_N_E=e.O()}]);
|
package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/[id]/page-e6bc2217623b8939.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5919],{205:(e,t,s)=>{Promise.resolve().then(s.bind(s,523))},523:(e,t,s)=>{"use strict";s.d(t,{ProjectDetail:()=>f});var n=s(126),r=s(6365),a=s.n(r),l=s(3310),i=s(202),o=s(4448),c=s(8635),d=s(6706);let u="border-danger bg-surface text-danger";function p({project:e,capability:t,dialog:s,onOpen:r,onCancel:a,onConfirm:i}){let o=(0,l.useRef)(null);if(!(0,c._H)(t,e))return null;let x=(0,c.WC)(e);return(0,n.jsxs)("section",{className:"mt-4 rounded-(--radius) border border-border bg-surface p-4","aria-labelledby":"project-lifecycle-heading",children:[(0,n.jsx)("h2",{id:"project-lifecycle-heading",className:"mb-1 text-[15px] font-semibold",children:"Project lifecycle"}),(0,n.jsx)("p",{className:"mb-3 text-[12.5px] text-muted",children:x?"This project is archived. Restoring it lets new sessions and runs start in it again.":"Archiving keeps every completed session and run readable, and stops new ones from starting in this project."}),(0,n.jsx)("button",{ref:o,type:"button",className:`${d.N9} ${x?d.HT:u}`,onClick:r,children:x?"Restore project":"Archive project"}),null===s?null:(0,n.jsx)(h,{project:e,transition:x?"restore":"archive",state:s,returnFocusTo:o,onCancel:a,onConfirm:i})]})}function h({project:e,transition:t,state:s,returnFocusTo:r,onCancel:a,onConfirm:i}){let o=(0,l.useRef)(null),c=(0,l.useRef)(null);(0,l.useEffect)(()=>{c.current?.focus();let e=r?.current??null;return()=>e?.focus()},[r]);let p=(0,l.useRef)(!1);(0,l.useEffect)(()=>{p.current&&"submitting"!==s.kind&&c.current?.focus(),p.current="submitting"===s.kind},[s.kind]);let m="submitting"===s.kind,b="archive"===t,f="project-lifecycle-dialog-title";return(0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-labelledby":f,onKeyDown:function(e){if("Escape"===e.key&&!m){e.preventDefault(),a();return}if("Tab"!==e.key)return;let t=o.current?.querySelectorAll("button:not(:disabled)");if(void 0===t||0===t.length)return;let s=t[0],n=t[t.length-1];void 0!==s&&void 0!==n&&(e.shiftKey&&document.activeElement===s?(e.preventDefault(),n.focus()):e.shiftKey||document.activeElement!==n||(e.preventDefault(),s.focus()))},className:"fixed inset-0 z-50 grid place-items-center bg-black/40 p-4",children:(0,n.jsxs)("div",{ref:o,className:"w-full max-w-[520px] rounded-(--radius) border border-border bg-surface p-5 shadow-xl",children:[(0,n.jsxs)("h2",{id:f,className:"text-[18px]",children:[b?"Archive":"Restore"," “",e.name,"”?"]}),b?(0,n.jsx)(x,{state:s}):(0,n.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:"New sessions and runs will be able to start in this project again. Nothing that already ran changes."}),"failed"===s.kind?(0,n.jsx)(d.rT,{problem:s.problem}):null,(0,n.jsxs)("div",{className:"mt-5 flex justify-end gap-2",children:[(0,n.jsx)("button",{ref:c,type:"button",className:`${d.N9} ${d.HT} ${m?d.O8:""}`,disabled:m,onClick:a,children:"Cancel"}),(0,n.jsx)("button",{type:"button",className:`${d.N9} ${b?u:d.oE} ${m?d.O8:""}`,disabled:m,onClick:i,children:m?b?"Archiving…":"Restoring…":b?"Archive project":"Restore project"})]})]})})}function x({state:e}){switch(e.kind){case"counting":return(0,n.jsx)("p",{className:"mt-3 text-[13px] text-muted",role:"status",children:"Counting the sessions and runs this affects…"});case"counted":return(0,n.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:(0,c.zb)(e.impact)});case"count-unavailable":return(0,n.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:"The sessions and runs this affects could not be counted, so this summary is incomplete. Archiving still keeps completed work readable and stops new work from starting."});case"confirming":case"submitting":case"failed":return(0,n.jsx)("p",{className:"mt-3 text-[13px] text-text-2",children:"Completed sessions and runs stay readable. No new sessions or runs can start in this project."});default:throw Error(`unhandled archive dialog state ${JSON.stringify(e)}`)}}let m={canArchiveOwn:!1,canArchiveOther:!1,viewerPrincipalId:null};async function b(e){let t={headers:{accept:"application/json"}},[s,n]=await Promise.all([fetch("/api/sessions",t).then(async t=>t.ok?(0,c.SL)(await t.json()).filter(t=>t===e):null).catch(()=>null),fetch(`/api/runs?project=${encodeURIComponent(e)}&limit=${String(c.uj)}`,t).then(async e=>e.ok?(0,c.xk)(await e.json()):null).catch(()=>null)]);return(0,c.Q7)(s,n)}function f({id:e,capability:t=m}){let[s,r]=(0,l.useState)(null),[u,h]=(0,l.useState)(null),[x,g]=(0,l.useState)(null),[v,y]=(0,l.useState)(null),[k,N]=(0,l.useState)(null),[w,C]=(0,l.useState)(!1),[S,$]=(0,l.useState)(null),T=(0,d.Jc)();(0,l.useEffect)(()=>{let t=!0;return fetch(`/api/projects/${encodeURIComponent(e)}`,{headers:{accept:"application/json"}}).then(async e=>{if(!t)return;if(!e.ok)return void y(await (0,c.Tp)(e,()=>e.json()));let s=i.LD.parse(await e.json());r(s),h((0,c.vr)(s)),g((0,c.vr)(s))}).catch(e=>{t&&y({kind:"transport",reason:`The project could not be loaded: ${e instanceof Error?e.message:String(e)}`})}),()=>{t=!1}},[e]);let E=null!==u&&null!==x&&(0,c.ce)(u,x);(0,d.lm)(E);let O=(0,n.jsx)(a(),{className:"ml-auto text-[13px] text-accent",href:"/projects",onClick:e=>{(0,d.L2)(E)||e.preventDefault()},children:"Back to projects"});if(null!==v)return(0,n.jsx)("main",{className:"w-full max-w-[980px] px-8 pt-[26px]",role:"alert",children:"api"===v.kind?v.message:v.reason});if(null===s||null===x||null===u)return(0,n.jsx)("main",{className:"px-8 pt-[26px] text-muted",children:"Loading project…"});let P="ready"===T.kind?T.catalogs:{agents:[],files:[],connectors:[]},A=(0,c.ft)(s.fileIds,P.files),R=(0,c.ft)(s.mcpServerIds,P.connectors),D=(0,c.WC)(s),I=(0,c.FE)(x.name)&&E&&!w&&!D;async function L(){let t;if(null===s)return;let n=(0,c.WC)(s)?"restore":"archive";$({kind:"submitting"});try{t=await fetch(`/api/projects/${encodeURIComponent(e)}/${n}`,{method:"POST",headers:{accept:"application/json"}})}catch(e){$({kind:"failed",problem:{kind:"transport",reason:`The request to ${n} this project failed: ${e instanceof Error?e.message:String(e)}`}});return}if(!t.ok){let e=await (0,c.Tp)(t,()=>t.json());$({kind:"failed",problem:(0,c.w2)(e)});return}let a=i.LD.safeParse(await t.json().catch(()=>null));a.success?(r(a.data),h((0,c.vr)(a.data)),g((0,c.vr)(a.data)),N(null),$(null)):$({kind:"failed",problem:{kind:"transport",reason:"The server returned an invalid project."}})}async function _(){let t,s;if(null===x||!I)return;C(!0),N(null);try{t=await fetch(`/api/projects/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify((0,c.aV)(x))})}catch(e){C(!1),N({kind:"transport",reason:`The request to save this project failed: ${e instanceof Error?e.message:String(e)}`});return}if(!t.ok){N(await (0,c.Tp)(t,()=>t.json())),C(!1);return}try{s=await t.json()}catch{N({kind:"transport",reason:"The server returned invalid JSON."}),C(!1);return}let n=i.LD.safeParse(s);if(!n.success){N({kind:"transport",reason:"The server returned an invalid project."}),C(!1);return}let a=n.data,l=(0,c.wP)(x.defaultModel,a);r(a),h((0,c.vr)(a)),g((0,c.vr)(a)),N(l?null:{kind:"transport",reason:"Every other change saved, but the default model did not match the server response. It has been reverted to what is actually saved."}),C(!1)}return(0,n.jsxs)("main",{className:"w-full max-w-[980px] px-8 pt-[26px] pb-[90px]",children:[(0,n.jsxs)("div",{className:"mb-5 flex items-center gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-[21px]",children:s.name}),(0,n.jsx)("p",{className:"text-[13px] text-muted",children:"Project settings"})]}),(0,n.jsx)(o.G,{subject:{type:"project",id:s.id,label:s.name}}),O]}),D?(0,n.jsxs)("p",{role:"status",className:"mb-4 rounded-(--radius) border border-border bg-surface-2 p-3 text-[13px] text-text-2",children:["Archived on ",(0,c.dx)(s)??"an unknown date",". Its settings are read-only and no new sessions or runs can start in it. Completed work stays in history."]}):null,(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault(),_()},children:[(0,n.jsx)("fieldset",{disabled:D,className:"m-0 min-w-0 border-0 p-0",children:(0,n.jsx)(d.JL,{draft:x,catalogs:P,onChange:e=>g(t=>null===t?t:{...t,...e}),idPrefix:"project-detail"})}),(0,n.jsxs)("section",{className:"mt-4 rounded-(--radius) border border-border bg-surface p-4","aria-labelledby":"project-resources-heading",children:[(0,n.jsx)("h2",{id:"project-resources-heading",className:"mb-3 text-[15px] font-semibold",children:"Assigned resources"}),(0,n.jsx)(j,{heading:"Files and folders",resources:A}),(0,n.jsx)(j,{heading:"Connectors",resources:R})]}),(0,n.jsx)(d.rT,{problem:k}),(0,n.jsxs)("div",{className:"mt-4 flex items-center justify-end gap-2",children:[(0,n.jsx)("button",{type:"button",className:`${d.N9} ${d.HT}`,disabled:!E,onClick:()=>{(0,d.L2)(E)&&g(u)},children:"Cancel"}),(0,n.jsx)("button",{type:"submit",disabled:!I,className:`${d.N9} ${d.oE} ${I?"":d.O8}`,children:w?"Saving…":"Save changes"})]})]}),(0,n.jsx)(p,{project:s,capability:t,dialog:S,onOpen:function(){if(null!==s){if((0,c.WC)(s))return void $({kind:"confirming"});$({kind:"counting"}),b(e).then(e=>{$(t=>t?.kind==="counting"?null===e?{kind:"count-unavailable"}:{kind:"counted",impact:e}:t)})}},onCancel:()=>$(null),onConfirm:()=>void L()})]})}function j({heading:e,resources:t}){return(0,n.jsxs)("div",{className:"mb-3 last:mb-0",children:[(0,n.jsx)("h3",{className:"mb-1 text-[12.5px] font-semibold text-text-2",children:e}),0===t.length?(0,n.jsx)("p",{className:"text-[12.5px] text-muted",children:"None assigned."}):(0,n.jsx)("ul",{className:"text-[13px]",children:t.map(e=>(0,n.jsx)("li",{className:"py-0.5",children:null===e.label?(0,n.jsxs)("span",{className:"text-danger",children:["Deleted resource (",e.id,")"]}):e.label},e.id))})]})}},4448:(e,t,s)=>{"use strict";s.d(t,{G:()=>a});var n=s(126),r=s(3310);function a({subject:e,triggerLabel:t="Share",transcript:s}){let[l,i]=(0,r.useState)(!1),[o,c]=(0,r.useState)("workspace"),[d,u]=(0,r.useState)("never"),[p,h]=(0,r.useState)(""),[x,m]=(0,r.useState)(null);async function b(){let t=await fetch("/api/shares",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({subjectType:e.type,subjectId:e.id,subjectLabel:e.label,visibility:o,..."agent"===e.type?{mode:"definition"}:{},expiry:d,...p?{passphrase:p}:{},..."session"===e.type&&void 0!==s?{transcript:s}:{}})}),n=await t.json(),r="string"==typeof n.error?.message?n.error.message:`Share failed (${t.status})`;m(t.ok&&"string"==typeof n.url?n.url:r)}return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>i(!0),className:"rounded-(--radius-sm) border border-border-strong px-3 py-1.5 text-[13px]",children:t}),l?(0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":`Share ${e.label}`,className:"fixed inset-0 z-50 grid place-items-center bg-black/40 p-4",children:(0,n.jsxs)("div",{className:"w-full max-w-[520px] rounded-(--radius) border border-border bg-surface p-5 shadow-xl",children:[(0,n.jsxs)("div",{className:"flex items-start justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("h2",{className:"text-[18px]",children:["Share “",e.label,"”"]}),(0,n.jsxs)("p",{className:"mt-1 text-[12px] text-muted",children:["Choose who can see this ",e.type,"."]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>i(!1),"aria-label":"Close",children:"\xd7"})]}),(0,n.jsxs)("label",{className:"mt-4 block text-[12px] font-semibold",children:["Who can see this",(0,n.jsxs)("select",{value:o,onChange:e=>c(e.target.value),className:"mt-1 block w-full rounded border border-border bg-surface p-2",children:[(0,n.jsx)("option",{value:"private",children:"Only me"}),(0,n.jsx)("option",{value:"workspace",children:"Everyone in this workspace"}),(0,n.jsx)("option",{value:"public",children:"Anyone with the link"})]})]}),(0,n.jsxs)("label",{className:"mt-3 block text-[12px] font-semibold",children:["Expiry",(0,n.jsxs)("select",{value:d,onChange:e=>u(e.target.value),className:"mt-1 block w-full rounded border border-border bg-surface p-2",children:[(0,n.jsx)("option",{children:"24 h"}),(0,n.jsx)("option",{children:"7 days"}),(0,n.jsx)("option",{children:"30 days"}),(0,n.jsx)("option",{children:"never"})]})]}),(0,n.jsxs)("label",{className:"mt-3 block text-[12px] font-semibold",children:["Passphrase (optional)",(0,n.jsx)("input",{type:"password",value:p,onChange:e=>h(e.target.value),className:"mt-1 block w-full rounded border border-border bg-surface p-2"})]}),x?(0,n.jsx)("p",{role:"status",className:"mt-3 break-all rounded bg-surface-2 p-2 text-[12px]",children:x}):null,(0,n.jsxs)("div",{className:"mt-5 flex justify-end gap-2",children:[(0,n.jsx)("button",{type:"button",onClick:()=>i(!1),className:"px-3 py-2 text-[13px]",children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>void b(),className:"rounded bg-accent px-3 py-2 text-[13px] text-white",children:"Copy link"})]})]})}):null]})}}},e=>{e.O(0,[7413,6365,1435,9595,5633,3881,1e3,7358],()=>e(e.s=205)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4343],{954:(e,t,r)=>{"use strict";r.d(t,{ProjectsScreen:()=>j});var n=r(126),s=r(6365),a=r.n(s),l=r(7662),i=r(3310),c=r(202),o=r(6068);async function u(e,t,r){let n=new Headers(r?.headers);n.set(o.hm,o.t3);let s=await fetch(e,{...r,headers:n}),a=await s.json().catch(()=>null);if(!s.ok)throw Error(function(e,t){if("object"==typeof t&&null!==t&&!Array.isArray(t)){let e=t.error;if("object"==typeof e&&null!==e&&!Array.isArray(e)){let t=e.message??e.detail;if("string"==typeof t&&""!==t.trim())return t}if("string"==typeof e&&""!==e.trim())return e}return`Request returned ${String(e)}`}(s.status,a));let l=t.safeParse(a);if(!l.success)throw Error(`The server returned an invalid response: ${l.error.message}`);return l.data}var d=r(8635),p=r(6706);let m={name:"",instructions:"",visibility:"private",defaultAgentId:null,defaultModel:null,fileIds:[],mcpServerIds:[]},h={private:"Private",workspace:"Workspace",public:"Public"};function x({project:e,agents:t}){let r=null===e.defaultAgentId?null:t.find(t=>t.id===e.defaultAgentId)??null;return(0,n.jsxs)(a(),{href:`/projects/${e.id}`,className:"rounded-(--radius) border border-border bg-surface p-4 no-underline shadow-(--shadow)",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"font-semibold text-text",children:e.name}),(0,n.jsx)("span",{className:"inline-flex items-center rounded-[999px] bg-surface-3 px-2 py-0.5 text-[11px] text-text-2",children:h[e.visibility]}),(0,d.WC)(e)?(0,n.jsx)("span",{className:"inline-flex items-center rounded-[999px] border border-border-strong px-2 py-0.5 text-[11px] text-muted",children:"Archived"}):null]}),(0,n.jsxs)("div",{className:"mt-1 text-[12px] text-muted",children:[null===e.defaultAgentId?"No default agent":`Default agent: ${r?.label??"deleted agent"}`," ","\xb7 ",e.fileIds.length," files \xb7 ",e.mcpServerIds.length," connectors \xb7"," ",e.instructions?"Project instructions":"No extra instructions"]})]})}let f={active:"Active",archived:"Archived",all:"All"};function j(){let e=(0,l.usePathname)(),t=(0,l.useRouter)(),r=(0,l.useSearchParams)(),s=(0,d.B9)(r.get("archived")),[a,o]=(0,i.useState)(null),[m,h]=(0,i.useState)(null),[j,b]=(0,i.useState)([]),[v,N]=(0,i.useState)(!1),y=()=>{o(null),h(null),u((0,d.Bo)(s),c.ce,{headers:{accept:"application/json"}}).then(e=>o(e.projects)).catch(e=>h(e instanceof Error?e.message:String(e)))};return(0,i.useEffect)(y,[s]),(0,i.useEffect)(()=>{fetch("/api/agents",{headers:{accept:"application/json"}}).then(e=>e.ok?e.json():Promise.resolve({agents:[]})).then(e=>b((0,d.y4)(e))).catch(()=>b([]))},[]),(0,n.jsxs)("main",{className:"w-full max-w-[1120px] px-8 pt-[26px] pb-[90px]",children:[(0,n.jsxs)("div",{className:"mb-5 flex items-start justify-between gap-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-[21px]",children:"Projects"}),(0,n.jsx)("p",{className:"text-[13px] text-muted",children:"Reusable instructions, files, connectors and a default agent."})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("label",{className:"text-[12px] text-muted",htmlFor:"projects-archived-filter",children:"Show"}),(0,n.jsx)("select",{id:"projects-archived-filter",value:s,onChange:n=>{let s=new URLSearchParams(r.toString());s.set("archived",(0,d.B9)(n.target.value)),t.replace(`${e}?${s.toString()}`)},className:"h-8 rounded-(--radius-sm) border border-border-strong bg-surface px-2 text-[13px] text-text",children:d.Q2.map(e=>(0,n.jsx)("option",{value:e,children:f[e]},e))}),v?null:(0,n.jsx)("button",{type:"button",className:`${p.N9} ${p.oE}`,onClick:()=>N(!0),children:"New project"})]})]}),v?(0,n.jsx)(g,{onCancel:()=>N(!1),onCreated:()=>{N(!1),y()}}):null,m?(0,n.jsx)("p",{role:"alert",className:"text-danger",children:m}):null===a?(0,n.jsx)("p",{children:"Loading…"}):(0,n.jsxs)("div",{className:"mt-5 grid gap-3",children:[a.map(e=>(0,n.jsx)(x,{project:e,agents:j},e.id)),0!==a.length||v?null:(0,n.jsx)("div",{className:"rounded border border-border p-5 text-muted",children:(0,d.w_)(s)})]})]})}function g({onCancel:e,onCreated:t}){let r=(0,p.Jc)(),[s,a]=(0,i.useState)(m),[l,c]=(0,i.useState)(!1),[o,u]=(0,i.useState)(null),h=(0,d.FE)(s.name)&&!l;return(0,n.jsxs)("form",{className:"mb-5",onSubmit:function(e){e.preventDefault(),h&&(c(!0),u(null),(async()=>{let e;try{e=await fetch("/api/projects",{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify((0,d.sN)(s))})}catch(e){c(!1),u({kind:"transport",reason:`The request to create this project failed: ${e instanceof Error?e.message:String(e)}`});return}if(!e.ok){u(await (0,d.Tp)(e,()=>e.json())),c(!1);return}c(!1),t()})())},"aria-label":"New project",children:["failed"===r.kind?(0,n.jsx)("p",{className:"mb-4 text-[13px] text-danger",role:"alert",children:r.reason}):null,(0,n.jsx)(p.JL,{draft:s,catalogs:"ready"===r.kind?r.catalogs:{agents:[],files:[],connectors:[]},onChange:e=>a(t=>({...t,...e})),idPrefix:"project-new"}),(0,n.jsx)(p.rT,{problem:o}),(0,n.jsxs)("div",{className:"mt-4 flex items-center justify-end gap-2",children:[(0,n.jsx)("button",{type:"button",className:`${p.N9} ${p.HT}`,onClick:()=>{let t=""!==s.name||""!==s.instructions;(0,p.L2)(t)&&e()},children:"Cancel"}),(0,n.jsx)("button",{type:"submit",disabled:!h,className:`${p.N9} ${p.oE} ${h?"":p.O8}`,children:l?"Creating…":"Create project"})]})]})}},6068:(e,t,r)=>{"use strict";r.d(t,{Jm:()=>i,LD:()=>o,Qx:()=>a,hm:()=>s,t3:()=>n});let n="0.3.0",s="x-agent-workspace-contracts",a="x-agent-workspace-contracts-minimum",l=/^(0|[1-9]\d{0,8})\.(0|[1-9]\d{0,8})\.(0|[1-9]\d{0,8})$/u;function i(e){let t=l.exec(e);if(null===t)return null;let[,r,n,s]=t;return void 0===r||void 0===n||void 0===s?null:{major:Number(r),minor:Number(n),patch:Number(s)}}function c(e,t){return e.major===t.major?e.minor-t.minor:e.major-t.major}function o(e,t){return 0>c(e,t.minimum)?{kind:"unsupported",upgrade:"client"}:c(e,t.current)>0?{kind:"unsupported",upgrade:"server"}:{kind:"served"}}},7169:(e,t,r)=>{Promise.resolve().then(r.bind(r,954))},7662:(e,t,r)=>{"use strict";var n=r(2898);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})}},e=>{e.O(0,[7413,6365,1435,9595,5633,3881,1e3,7358],()=>e(e.s=7169)),_N_E=e.O()}]);
|