



  

<!DOCTYPE html>
<html
  lang="en"
  
  data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true"
  
  >




  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">

<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
<meta name="react-profiling" content="0" data-turbo-transient="true" />
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />

  


  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-0f910d8806d5761b.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-a7abd4d4c49ac593.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-5fc4c4a9cb41e596.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-ed0cee9214dedabd.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-78a2491d538dab5a.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-c26b63d7c532d0a2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-a6f60cea68c08405.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-f66faf28b2ea18b6.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-6701f6218c53cf5b.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-7037fa46ae124d97.css" />

  <style type="text/css">
    :root {
      --tab-size-preference: 4;
    }

    pre, code {
      tab-size: var(--tab-size-preference);
    }
  </style>

    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-97df7784617ce1ea.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-9be9fe6313f476af.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-62747e27e61258dc.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-7a418ea859d1654d.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-72bd7d974b5ac1cc.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-4c5c0895f723f870.css" />

  

  <script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_caches_react_shell","actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","actions_runners_react_shell","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","async_conversion_coverage_enabled","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automation_repo_mcp_servers","copilot_automations_pagination","copilot_base_model_policy_row","copilot_chat_auto_mode_v2","copilot_chat_clear_model_selection_for_default_change","copilot_chat_early_task_provisioning","copilot_chat_persist_session_drafts","copilot_chat_vision_dotcom_chat_ga_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_hide_hovercard","copilot_immersive_task_hyperlinking","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_awps_batching","copilot_mission_control_early_stop","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_discussion_comment_trigger","copilot_swe_agent_discussion_opened_trigger","copilot_swe_agent_discussion_updated_trigger","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_assigned_trigger","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_issue_labeled_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_assigned_trigger","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_labeled_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_ready_for_review_trigger","copilot_swe_agent_pull_request_review_requested_trigger","copilot_swe_agent_pull_request_review_submitted_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_sub_issue_added_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset_redirect","dashboard_agents_module_auth_token_check","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","fgpat_permissions_selector_redesign","glc_code_quality_repo_settings_workflow_config","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_ubb_individual_budget_banner","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_team_vs_personal","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_index_data_router","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_cookie_consent_banner","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_header_feedback","milestone_closed_issues_prioritization","milestone_show_data_router","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_copilot_attribution_header","pull_request_overview_merge_control","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_navigation_shortcuts","pull_request_virtualization_image_estimate","pull_request_virtualization_loader_batching","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_logged_out_repository_header","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_turbo","repo_issues_sidebar_layout","repo_pulls_dashboard_declutter","repo_pulls_dashboard_ga","repo_pulls_dashboard_persistence","repo_pulls_dashboard_sidebar_links","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_nav_spark_models_removed","speculation_rules_ui_service","suggest_custom_property_values_copilot","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","update_issue_suggestions","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workstream_plugin_bootstrap"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-b752d992928a526c.js"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-9f688730c8670bcd.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-2f08c823163591a8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-633ad94fa06c334b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-0fb4c544a797ec0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-7c872b58ac9f1b39.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tp-7e9817cf5c068979.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-d5ac5c6c0ff82dad.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.bef03fb24bb03be8.module.css" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-52ed81112a548e10.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e8810f64c443fb9b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-0417f617ad744a0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by-9da36843ba9d191d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-9a1160b939f2cd52.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3h-55903cf2303047ad.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hk-f1498fec45311acd.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7aa1ff0a0e750f41.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-1d800d09e9a8720a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-9697c1c8f5cbf523.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-82cb199fd0cf6516.js" defer="defer"></script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-9bf553744fe18335.js" defer="defer"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-5e0b3ae3c4036207.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-524a06aa946df6fc.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-b1ee53c2200b172a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-7bf7b9d689fe3d10.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a9-ca3bc10b816bcc1f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-21ec1e439ee2d87c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-4c39f7195fc42cc8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pb-53cfff089eaac51b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6n-afcf86ccabc4cad2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zj-4d9cf83cf08e1643.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-6991af5b3829ffe8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nfv-a6c14301d3ea6d67.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b5-a2fde30ce0c692b9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sw-9d0489dbf9a9c942.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ttf-7d5abe1b447ced2c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sj-c7a44023ee90d468.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0pd-c46d8dfae89c2b64.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-2198390a7f5cea63.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.255cab819a92f7e1.module.css" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-menu-cea7728cfd2f3d62.js" defer="defer"></script>
  
  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-8503588299651923.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ncx-66e64888bc4615bb.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qmp-c7cfba40cf5a93b0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j6-148a74299e5a01ab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-a9404625ec30bbc7.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4u-8f9f1d6be01d6a22.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/s0-68d09e5e8a80cb94.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/y5-0cb3f75cec297941.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n4u-cd9039ad946274ad.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j8s-00bd469c4017a543.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/la-27679061f16e1495.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/iu-2d03f5e6d4fdd54d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gru-2b0fac8887ff8c57.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a0-234e967e7c6d22ce.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gz3-5bdfbfceac967bb6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/15m-64f3034430471048.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/1e-c15441bdb94d54ae.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gzu-6ad9a0527a5d7afd.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi-3a42b8714e06c4d0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tu1-37e16844272ddefa.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b1-ac66ededed061993.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gmn-1e5497c041b66231.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0l5-d1b2a63015b5eb6d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/c2-e85522be441acf73.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/f9-baf0a4193779952e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sp-87dce99c82a27004.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zkm-116b01b8485bbe3f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/og-518d12c9e011601d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b9-947db365ea875cfa.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/14-8c7b4ad3c845664c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dsj-2e7d883cb843e9e6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ec-38012819307fd539.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/du-6607da3b8b579202.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/20-f43eb09c2be69457.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ql0-107312645ac2b72d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-fa7cdc0f7656d876.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p0l-fe491d943adf7508.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/v1e-d099d9fd21ad25e5.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fn-7b298a45c55fb6fb.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7cw-6e493a20eaaa04b5.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ok-290e4b9465ba9c5b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6d-ca6d584a0fd6368c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/y8-e2f18f5a24733f3b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xc-3fd4a2e7dcbad8e2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/vjg-2874f95f389c4d3f.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-view-2743729837dcb46b.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.501e99879e15a48e.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/xc.de2b1dde0494f261.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-view.11c24ad1d0aa48bd.module.css" />


  <title>opencode/V2_HTTP_API_AUDIT.md at v2 · anomalyco/opencode · GitHub</title>



  <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient>
  <meta name="route-controller" content="blob" data-turbo-transient>
  <meta name="route-action" content="show" data-turbo-transient>
  <meta name="fetch-nonce" content="v2:0ab6c1a0-7060-16a8-e34f-142d21d06244">

    
  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="DBF6:18457:C2E9FD:B92F30:6AC776EC" data-pjax-transient="true"/><meta name="html-safe-nonce" content="084b1b4efcd0652e3159e63a75b21c3a7b05a443d9dd0fe33af561794863daf9" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQkY2OjE4NDU3OkMyRTlGRDpCOTJGMzA6NkFDNzc2RUMiLCJ2aXNpdG9yX2lkIjoiNjkzMjg1MzY3NDYwODEyOTc3MiIsInJlZ2lvbl9lZGdlIjoiZnJhIiwicmVnaW9uX3JlbmRlciI6ImZyYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="faf665bf0e9ac49a2a1ec58e3a16575459fdd0d711f6e6302c15f3585205901f" data-pjax-transient="true"/>


    <meta name="hovercard-subject-tag" content="repository:975734319" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="repository,source-code,file-tree,copilot" data-turbo-transient="true" />
  

  <meta name="selected-link" value="repo_source" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

    <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

<meta name="octolytics-url" content="https://collector.github.com/github/collect" />





  <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-turbo-transient="true" />

  




    <meta name="user-login" content="">

  

    <meta name="viewport" content="width=device-width">

    

      <meta name="description" content="The open source coding agent. Contribute to anomalyco/opencode development by creating an account on GitHub.">

      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md" />

      <meta name="twitter:image" content="https://repository-images.githubusercontent.com/975734319/2c2c3389-c647-405c-a499-f80e4d521277" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="opencode/V2_HTTP_API_AUDIT.md at v2 · anomalyco/opencode" /><meta name="twitter:description" content="The open source coding agent. Contribute to anomalyco/opencode development by creating an account on GitHub." />
  <meta property="og:image" content="https://repository-images.githubusercontent.com/975734319/2c2c3389-c647-405c-a499-f80e4d521277" /><meta property="og:image:alt" content="The open source coding agent. Contribute to anomalyco/opencode development by creating an account on GitHub." /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="opencode/V2_HTTP_API_AUDIT.md at v2 · anomalyco/opencode" /><meta property="og:url" content="https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md" /><meta property="og:description" content="The open source coding agent. Contribute to anomalyco/opencode development by creating an account on GitHub." />
  




      <meta name="hostname" content="github.com">



        <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="e522098cd81ce3951f93d525f1bab680d96d458ceaa79f4334f1a1acbd31325a" data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="c4a65e47b0c850e1157ae8e66298070851d7e3b558038de5a3b4ff7a93e630ed" data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="1ff3f1d4e1abd61f6f135b47d3b815e2f7169f8dd418f0118c6b1cf4de6cbc86" data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="df1876f47a5ef2fa7fbfc80778d9090e7c16f6a2e8185c3ff473153a18e2b7c0" data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

      <meta name="turbo-cache-control" content="no-cache" data-turbo-transient>

    <meta data-hydrostats="publish">

  <meta name="go-import" content="github.com/anomalyco/opencode git https://github.com/anomalyco/opencode.git">

  <meta name="octolytics-dimension-user_id" content="66570915" /><meta name="octolytics-dimension-user_login" content="anomalyco" /><meta name="octolytics-dimension-repository_id" content="975734319" /><meta name="octolytics-dimension-repository_nwo" content="anomalyco/opencode" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="975734319" /><meta name="octolytics-dimension-repository_network_root_nwo" content="anomalyco/opencode" />
  



    

    <meta name="turbo-body-classes" content="logged-out env-production page-responsive">
  <meta name="disable-turbo" content="false">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">


  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <meta name="release" content="1d3d325175b005a7dd92cb845d32b422a23095f3" data-turbo-track="reload">
  <meta name="ui-target" content="full">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
    <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
      <div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
      

    <div class="position-relative header-wrapper js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
    <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>      
      <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qc-1bbbe8787ea1cd4b.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-f8c407e82ebe6fc9.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.81950090fc5b508a.module.css" />

<react-partial
  partial-name="keyboard-shortcuts-dialog"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>





      

          <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-install-banner-partial-1dd5a92ada6adeee.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-install-banner-partial.2ba9251ec6f3a018.module.css" />

<react-partial
  partial-name="app-install-banner-partial"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>


          

                <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2l-e468179ba7123a2e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/rwd-069fc3d9814ff9fe.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz-e662bc3745e171e7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jag-3559ee48016881a2.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-7f22b36f29a9dd94.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-4998592d21eb16f7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/8i-756d611a52e5f265.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-fa45fa8444a09065.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.05b219cdb8e80c43.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/8i.779dd52a6bc5b0b6.module.css" />

<react-partial
  partial-name="marketing-header"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Fanomalyco%2Fopencode%2Fblob%2Fv2%2FV2_HTTP_API_AUDIT.md","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow\u0026source=header-repo\u0026source_repo=anomalyco%2Fopencode","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md\",\"user_id\":null}}","auth_hydro_click_hmac":"681c0b09d89dcc815cb77ee4efdf68039bf5b557fc575a1b290b02aa66c4bf70","overlay":false,"fixed":false}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{&quot;action&quot;:&quot;homepage&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;logo&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;homepage_link_logo_header&quot;}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fanomalyco%2Fopencode%2Fblob%2Fv2%2FV2_HTTP_API_AUDIT.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="681c0b09d89dcc815cb77ee4efdf68039bf5b557fc575a1b290b02aa66c4bf70"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events &amp; webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks &amp; reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT &amp; SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{&quot;action&quot;:&quot;searchbar&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;context&quot;:&quot;global&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fanomalyco%2Fopencode%2Fblob%2Fv2%2FV2_HTTP_API_AUDIT.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="681c0b09d89dcc815cb77ee4efdf68039bf5b557fc575a1b290b02aa66c4bf70"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=anomalyco%2Fopencode" data-analytics-event="{&quot;action&quot;:&quot;sign_up&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_up_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="681c0b09d89dcc815cb77ee4efdf68039bf5b557fc575a1b290b02aa66c4bf70"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
</react-partial>



      <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
  
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

    <button id="icon-button-bb25ca60-f9fe-42c2-9029-cf0ad3f67f54" aria-labelledby="tooltip-730148b7-c872-4723-8956-02905cf632b0" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button><tool-tip id="tooltip-730148b7-c872-4723-8956-02905cf632b0" for="icon-button-bb25ca60-f9fe-42c2-9029-cf0ad3f67f54" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>


  
</div>
    </div>

  <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>






  <template class="js-flash-template">
    
<div class="flash flash-full   {{ className }}">
  <div >
    <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    <div aria-atomic="true" role="alert" class="js-flash-alert">
      
      <div>{{ message }}</div>

    </div>
  </div>
</div>
  </template>
</div>


    






  <div
    class="application-main "
    data-commit-hovercards-enabled
    data-discussion-hovercards-enabled
    data-issue-and-pr-hovercards-enabled
    data-project-hovercards-enabled
  >
        <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
    <main id="js-repo-pjax-container" >
      
      
    


    








  

    <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ym-1a7ce813a378e1f7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mn-bb458474353a279e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t5-26d19272bbf73ca3.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2d5-9abb2f6ba5c935d0.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/24-b11e1c4108322883.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mrn-12afac2ecd2be980.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dgq-bbf7670f9cdba2e0.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7w-740b4e942974ccba.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/we-c9f93392098ad6c9.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/775-5adcc74216a7c5ae.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bn-fcef0645a47703fc.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xgw-6c6cb7b2ed77f52e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ge-ca1c0ba8656f9680.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9f-e543bc691db8262e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/global-nav-bar-ce0c7963290f892b.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.501e99879e15a48e.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-nav-bar.f20205647191e018.module.css" />

<react-partial
  partial-name="global-nav-bar"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"contextRegion":{"crumbs":[{"crumb_type":"organization","label":"anomalyco","is_root":false,"href":"/anomalyco"},{"crumb_type":"repository","label":"opencode","is_root":false,"href":"/anomalyco/opencode"}],"localNavigation":[{"id":"code","icon":"code","label":"Code","href":"/anomalyco/opencode","selectedLinks":["repo_source","repo_downloads","repo_commits","repo_releases","repo_tags","repo_branches","repo_packages","repo_deployments","repo_attestations"],"popoverTarget":false,"commandId":"repositories:go-to-code","reactNav":{"appTarget":"code-view","anchor":"code-view-repo-link"},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"issues","icon":"issue-opened","label":"Issues","href":"/anomalyco/opencode/issues","selectedLinks":["repo_issues","repo_labels","repo_milestones"],"count":4590,"popoverTarget":false,"commandId":"repositories:go-to-issues","reactNav":{"appTarget":"repo","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"pull-requests","icon":"git-pull-request","label":"Pull requests","href":"/anomalyco/opencode/pulls","selectedLinks":["repo_pulls","checks"],"count":1638,"popoverTarget":false,"commandId":"repositories:go-to-pull-requests","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"actions","icon":"play","label":"Actions","href":"/anomalyco/opencode/actions","selectedLinks":["repo_actions"],"popoverTarget":false,"commandId":"repositories:go-to-actions","reactNav":{"appTarget":"actions-workflows","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"projects","icon":"table","label":"Projects","href":"/anomalyco/opencode/projects","selectedLinks":["repo_projects","new_repo_project","repo_project"],"popoverTarget":false,"commandId":"repositories:go-to-projects","reactNav":{"appTarget":"repo","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"security-and-quality","icon":"shield","label":"Security and quality","href":"/anomalyco/opencode/security","selectedLinks":["security","overview","alerts","policy","token_scanning","code_scanning"],"count":3,"popoverTarget":false,"commandId":"repositories:go-to-security","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"insights","icon":"graph","label":"Insights","href":"/anomalyco/opencode/pulse","selectedLinks":["repo_graphs","repo_contributors","dependency_graph","dependabot_updates","pulse","people","community"],"popoverTarget":false,"commandId":"repositories:go-to-insights","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}}],"localNavigationUpdateChannel":null,"selectedLink":"repo_source"},"owner":null,"headerLogo":{"href":"/","aria-label":"Homepage "},"notifications":{"indicatorMode":"disabled","websocketChannel":null,"fetchIndicatorSrc":"/notifications/indicator","fetchIndicatorEnabled":false},"issues":{"href":"/issues"},"pulls":{"href":"/pulls"},"contributedRepos":{"href":"/repos"},"copilot":{"show":false,"showAgentsButton":false,"showRelaunchAnnouncement":false,"copilotChatUrl":null,"copilotApiUrl":"https://api.githubcopilot.com"},"search":{"show":true,"showCommandPalette":false,"isSearchPage":false,"isJumpToSearch":false,"searchContext":{"scope":"repo:anomalyco/opencode","current_repo_name":"opencode","current_repo_nwo":"anomalyco/opencode","current_repo_org":"anomalyco","user_id":"anomalyco"}},"commandPalette":null,"enterpriseBar":{"show":false},"globalTransactionalMessage":[],"payloadsUrl":"/_global-navigation/payloads.json?can_toggle_site_admin_and_employee_status=0\u0026is_admin_mode_on=0\u0026is_ui_opted_out=0\u0026show_ui_opt_out=0\u0026v=6","contextRegionUrl":"/_global-navigation/context-region.json"}}</script>
  <div data-target="react-partial.reactRoot"><header aria-label="Global navigation menu" data-component="Stack" class="GlobalNav styles-module__appHeader__YzYWk prc-Stack-Stack-UQ9k6" data-gap="none" data-direction="vertical" data-align="stretch" data-wrap="nowrap" data-justify="start" data-padding="none"><div data-component="Stack" class="prc-Stack-Stack-UQ9k6" data-direction="horizontal" data-align="center" data-wrap="nowrap" data-justify="center" data-padding="none"><div data-testid="top-nav-center" data-component="Stack" class="styles-module__center__R3QRv styles-module__withLocalNavigation__rjTJ_ GlobalNavBar-module__loggedOut__Jv1rk prc-Stack-Stack-UQ9k6" data-gap="condensed" data-direction="horizontal" data-align="stretch" data-wrap="nowrap" data-justify="start" data-padding="normal"><nav class="styles-module__contextRegion__VbSp2 prc-Breadcrumbs-BreadcrumbsBase-3Gb-B" aria-label="Breadcrumbs" data-overflow="menu" data-variant="normal" data-component="Breadcrumbs"><ol class="prc-Breadcrumbs-BreadcrumbsList-BKjpe"><li class="prc-Breadcrumbs-ItemWrapper-k0NLn"><a class="styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ" data-component="Breadcrumbs.Item" href="/anomalyco" data-discover="true"><span class="">anomalyco</span></a></li><li class="prc-Breadcrumbs-ItemWrapper-k0NLn"><a class="styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ" data-component="Breadcrumbs.Item" href="/anomalyco/opencode" data-discover="true"><span class="styles-module__contextCrumbLast__tI2e3">opencode</span></a></li></ol></nav></div><div data-testid="top-nav-right" data-component="Stack" class="styles-module__right__mlBQg styles-module__withLocalNavigation__rjTJ_ styles-module__rightWithResponsiveCreateButton__SKn2W prc-Stack-Stack-UQ9k6" data-gap="condensed" data-direction="horizontal" data-align="center" data-wrap="nowrap" data-justify="start" data-padding="normal"></div></div><h2 class="prc-src-InternalVisuallyHidden-2YaI6">Repository navigation</h2><nav class="prc-components-UnderlineWrapper-eT-Yj prc-UnderlineNav-UnderlineWrapper-GWONT LocalNavigation-module__LocalNavigation__b0Xc0" aria-label="Repository" data-variant="inset" data-overflow-mode="wrap" data-hide-icons-breakpoint="medium"><ul class="prc-UnderlineNav-ItemsList-oj8gN prc-components-UnderlineItemList-xKlKC" role="list"><li role="presentation" aria-hidden="true" class="prc-UnderlineNav-WrapSpacer--aLgz"></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a aria-current="page" data-tab-item="code" data-react-nav="code-view" data-react-nav-anchor="code-view-repo-link" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" data-content="Code">Code</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="issues" data-react-nav="repo" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode/issues" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg></span><span data-component="text" data-content="Issues">Issues</span><span data-component="counter"><span aria-hidden="true" data-variant="secondary" data-component="CounterLabel" class="prc-CounterLabel-CounterLabel-X-kRU">4.6k</span><span class="prc-VisuallyHidden-VisuallyHidden-Q0qSB"> (<!-- -->4.6k<!-- -->)</span></span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="pull-requests" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode/pulls" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-pull-request" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg></span><span data-component="text" data-content="Pull requests">Pull requests</span><span data-component="counter"><span aria-hidden="true" data-variant="secondary" data-component="CounterLabel" class="prc-CounterLabel-CounterLabel-X-kRU">1.6k</span><span class="prc-VisuallyHidden-VisuallyHidden-Q0qSB"> (<!-- -->1.6k<!-- -->)</span></span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="actions" data-react-nav="actions-workflows" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode/actions" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-play" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg></span><span data-component="text" data-content="Actions">Actions</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="projects" data-react-nav="repo" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode/projects" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-table" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path></svg></span><span data-component="text" data-content="Projects">Projects</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="security-and-quality" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode/security" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg></span><span data-component="text" data-content="Security and quality">Security and quality</span><span data-component="counter"><span aria-hidden="true" data-variant="secondary" data-component="CounterLabel" class="prc-CounterLabel-CounterLabel-X-kRU">3</span><span class="prc-VisuallyHidden-VisuallyHidden-Q0qSB"> (<!-- -->3<!-- -->)</span></span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="insights" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/anomalyco/opencode/pulse" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-graph" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg></span><span data-component="text" data-content="Insights">Insights</span></a></li></ul><div class="prc-UnderlineNav-MoreButtonContainer-Dnrq6"><div class="prc-UnderlineNav-MoreButtonDivider-dN0a-"></div><button data-component="overflow-menu-button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk prc-UnderlineNav-MoreButton-Y8soj" data-loading="false" data-size="medium" data-variant="invisible" id="_R_2ktl_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3"><span>More<span class="prc-src-InternalVisuallyHidden-2YaI6"> items</span></span></span></span><span data-component="trailingAction" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div></nav><div class="d-none"></div></header></div>
</react-partial>


  



<turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
    <div id="repo-content-pjax-container" class="repository-content " >
    



    
      
    








<react-app
  app-name="code-view"
  initial-path="/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md"
  style="display: block; min-height: calc(100vh - 64px);"
  data-attempted-ssr="true"
  data-ssr="true"
  data-lazy="false"
  data-alternate="false"
  data-data-router-enabled="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-app.embeddedData">{"payload":{"codeViewBlobRoute":{"csv":null,"csvError":null,"headerInfo":{"toc":[{"level":1,"text":"V2 HTTP API audit checklist","anchor":"v2-http-api-audit-checklist","htmlText":"V2 HTTP API audit checklist"},{"level":2,"text":"How to use this checklist","anchor":"how-to-use-this-checklist","htmlText":"How to use this checklist"},{"level":3,"text":"Review criteria","anchor":"review-criteria","htmlText":"Review criteria"},{"level":3,"text":"Disposition legend","anchor":"disposition-legend","htmlText":"Disposition legend"},{"level":2,"text":"Progress","anchor":"progress","htmlText":"Progress"},{"level":2,"text":"Resolved during audit","anchor":"resolved-during-audit","htmlText":"Resolved during audit"},{"level":3,"text":"[x] POST /api/plugin/await-activation","anchor":"x-post-apipluginawait-activation","htmlText":"[x] POST /api/plugin/await-activation"},{"level":3,"text":"[x] Location response wrappers","anchor":"x-location-response-wrappers","htmlText":"[x] Location response wrappers"},{"level":3,"text":"[x] GET /api/health and GET /api/server","anchor":"x-get-apihealth-and-get-apiserver","htmlText":"[x] GET /api/health and GET /api/server"},{"level":3,"text":"[x] GET /api/project/current","anchor":"x-get-apiprojectcurrent","htmlText":"[x] GET /api/project/current"},{"level":3,"text":"[x] POST /api/workspace and DELETE /api/workspace/{workspaceID}","anchor":"x-post-apiworkspace-and-delete-apiworkspaceworkspaceid","htmlText":"[x] POST /api/workspace and DELETE /api/workspace/{workspaceID}"},{"level":2,"text":"Group 1: Foundation and placement","anchor":"group-1-foundation-and-placement","htmlText":"Group 1: Foundation and placement"},{"level":2,"text":"Group 2: Configuration and capability catalogs","anchor":"group-2-configuration-and-capability-catalogs","htmlText":"Group 2: Configuration and capability catalogs"},{"level":2,"text":"Group 3: Credentials, integrations, MCP, and web search","anchor":"group-3-credentials-integrations-mcp-and-web-search","htmlText":"Group 3: Credentials, integrations, MCP, and web search"},{"level":2,"text":"Group 4: Session lifecycle","anchor":"group-4-session-lifecycle","htmlText":"Group 4: Session lifecycle"},{"level":2,"text":"Group 5: Session execution and inputs","anchor":"group-5-session-execution-and-inputs","htmlText":"Group 5: Session execution and inputs"},{"level":2,"text":"Group 6: Session history and recovery","anchor":"group-6-session-history-and-recovery","htmlText":"Group 6: Session history and recovery"},{"level":2,"text":"Group 7: Inbox, permissions, and forms","anchor":"group-7-inbox-permissions-and-forms","htmlText":"Group 7: Inbox, permissions, and forms"},{"level":2,"text":"Group 8: Filesystem, worktrees, and VCS","anchor":"group-8-filesystem-worktrees-and-vcs","htmlText":"Group 8: Filesystem, worktrees, and VCS"},{"level":2,"text":"Group 9: PTYs, persistent terminals, and shells","anchor":"group-9-ptys-persistent-terminals-and-shells","htmlText":"Group 9: PTYs, persistent terminals, and shells"},{"level":2,"text":"Group 10: Events, RPC, and experimental operations","anchor":"group-10-events-rpc-and-experimental-operations","htmlText":"Group 10: Events, RPC, and experimental operations"}]},"issueTemplate":null,"discussionTemplate":null,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eV2 HTTP API audit checklist\u003c/h1\u003e\u003ca id=\"user-content-v2-http-api-audit-checklist\" class=\"anchor\" aria-label=\"Permalink: V2 HTTP API audit checklist\" href=\"#v2-http-api-audit-checklist\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSource:\u003c/strong\u003e \u003ccode\u003epackages/protocol/openapi.json\u003c/code\u003e\u003cbr\u003e\n\u003cstrong\u003eCurrent endpoint count:\u003c/strong\u003e 139\n\u003cstrong\u003eLast regenerated:\u003c/strong\u003e 2026-09-13\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHow to use this checklist\u003c/h2\u003e\u003ca id=\"user-content-how-to-use-this-checklist\" class=\"anchor\" aria-label=\"Permalink: How to use this checklist\" href=\"#how-to-use-this-checklist\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReview endpoints in document order. For each endpoint, select one disposition and capture rationale or follow-up work in Notes. Mark \u003cstrong\u003eReviewed\u003c/strong\u003e only after the disposition is agreed.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReview criteria\u003c/h3\u003e\u003ca id=\"user-content-review-criteria\" class=\"anchor\" aria-label=\"Permalink: Review criteria\" href=\"#review-criteria\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eResource and operation naming\u003c/li\u003e\n\u003cli\u003eHTTP method and idempotency\u003c/li\u003e\n\u003cli\u003eRequest parameters and location scope\u003c/li\u003e\n\u003cli\u003eResponse shape and error taxonomy\u003c/li\u003e\n\u003cli\u003eAuthentication and authorization\u003c/li\u003e\n\u003cli\u003eCurrent production consumers\u003c/li\u003e\n\u003cli\u003eStability level: public, experimental, or internal\u003c/li\u003e\n\u003cli\u003eWhether the generated client API is intuitive\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDisposition legend\u003c/h3\u003e\u003ca id=\"user-content-disposition-legend\" class=\"anchor\" aria-label=\"Permalink: Disposition legend\" href=\"#disposition-legend\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eKeep:\u003c/strong\u003e ship unchanged as a supported V2 API\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChange:\u003c/strong\u003e retain after a defined contract change\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRemove:\u003c/strong\u003e exclude from the official V2 API\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExperimental-only:\u003c/strong\u003e retain outside the stable API commitment\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eProgress\u003c/h2\u003e\u003ca id=\"user-content-progress\" class=\"anchor\" aria-label=\"Permalink: Progress\" href=\"#progress\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul class=\"contains-task-list\"\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 1: Foundation and placement (4)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 2: Configuration and capability catalogs (16)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 3: Credentials, integrations, MCP, and web search (22)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 4: Session lifecycle (12)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 5: Session execution and inputs (11)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 6: Session history and recovery (13)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 7: Inbox, permissions, and forms (19)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 8: Filesystem, worktrees, and VCS (12)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 9: PTYs, persistent terminals, and shells (24)\u003c/li\u003e\n\u003cli class=\"task-list-item\"\u003e\u003cinput type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"\u003e Group 10: Events, RPC, and experimental operations (6)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eResolved during audit\u003c/h2\u003e\u003ca id=\"user-content-resolved-during-audit\" class=\"anchor\" aria-label=\"Permalink: Resolved during audit\" href=\"#resolved-during-audit\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e[x] \u003ccode\u003ePOST /api/plugin/await-activation\u003c/code\u003e\u003c/h3\u003e\u003ca id=\"user-content-x-post-apipluginawait-activation\" class=\"anchor\" aria-label=\"Permalink: [x] POST /api/plugin/await-activation\" href=\"#x-post-apipluginawait-activation\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eDecision:\u003c/strong\u003e Remove\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e Activation timing is an internal server concern. Catalog reads remain non-blocking.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e[x] Location response wrappers\u003c/h3\u003e\u003ca id=\"user-content-x-location-response-wrappers\" class=\"anchor\" aria-label=\"Permalink: [x] Location response wrappers\" href=\"#x-location-response-wrappers\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eDecision:\u003c/strong\u003e Reduce generic endpoint response locations to \u003ccode\u003e{ directory }\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e Full project metadata remains available from \u003ccode\u003eGET /api/location\u003c/code\u003e; no consumers used it from wrapped responses.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e[x] \u003ccode\u003eGET /api/health\u003c/code\u003e and \u003ccode\u003eGET /api/server\u003c/code\u003e\u003c/h3\u003e\u003ca id=\"user-content-x-get-apihealth-and-get-apiserver\" class=\"anchor\" aria-label=\"Permalink: [x] GET /api/health and GET /api/server\" href=\"#x-get-apihealth-and-get-apiserver\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eDecision:\u003c/strong\u003e Merge and rename\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReplacement:\u003c/strong\u003e \u003ccode\u003eGET /api/info\u003c/code\u003e with operation ID \u003ccode\u003eserver.info\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e Returns \u003ccode\u003eversion\u003c/code\u003e, \u003ccode\u003epid\u003c/code\u003e, and connection \u003ccode\u003eurls\u003c/code\u003e; readiness is conveyed by HTTP status.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e[x] \u003ccode\u003eGET /api/project/current\u003c/code\u003e\u003c/h3\u003e\u003ca id=\"user-content-x-get-apiprojectcurrent\" class=\"anchor\" aria-label=\"Permalink: [x] GET /api/project/current\" href=\"#x-get-apiprojectcurrent\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eDecision:\u003c/strong\u003e Remove\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReplacement:\u003c/strong\u003e \u003ccode\u003eGET /api/location\u003c/code\u003e, using \u003ccode\u003eproject\u003c/code\u003e from the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e The endpoint duplicated \u003ccode\u003eLocation.Info.project\u003c/code\u003e; production callers were migrated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e[x] \u003ccode\u003ePOST /api/workspace\u003c/code\u003e and \u003ccode\u003eDELETE /api/workspace/{workspaceID}\u003c/code\u003e\u003c/h3\u003e\u003ca id=\"user-content-x-post-apiworkspace-and-delete-apiworkspaceworkspaceid\" class=\"anchor\" aria-label=\"Permalink: [x] POST /api/workspace and DELETE /api/workspace/{workspaceID}\" href=\"#x-post-apiworkspace-and-delete-apiworkspaceworkspaceid\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eDecision:\u003c/strong\u003e Remove\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e Provider-backed workspaces are not part of the V2 HTTP contract and can be introduced later. Core and the embedded SDK retain internal workspace support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 1: Foundation and placement\u003c/h2\u003e\u003ca id=\"user-content-group-1-foundation-and-placement\" class=\"anchor\" aria-label=\"Permalink: Group 1: Foundation and placement\" href=\"#group-1-foundation-and-placement\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 4\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 001–002\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReplaces the former health and server endpoints.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 003\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/location\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003elocation.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eWorkspace selectors and response fields removed until workspace support ships.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 004\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/project\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eproject.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRemoved unused \u003ccode\u003etime.initialized\u003c/code\u003e; the database column remains for migration data.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 005\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePATCH\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/project/{projectID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eproject.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 2: Configuration and capability catalogs\u003c/h2\u003e\u003ca id=\"user-content-group-2-configuration-and-capability-catalogs\" class=\"anchor\" aria-label=\"Permalink: Group 2: Configuration and capability catalogs\" href=\"#group-2-configuration-and-capability-catalogs\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 16\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 008\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/agent\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eagent.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 009\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/agent/{agentID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eagent.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest, response, and not-found error accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 010\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/plugin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eplugin.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 012\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/plugin/check\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eplugin.check\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 013\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/plugin/update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eplugin.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and errors accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 014\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/model\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003emodel.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 015\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/model/default\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003emodel.default\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and nullable response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 016\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/provider\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eprovider.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 017\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/provider/{providerID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eprovider.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest, response, and not-found error accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 018\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ecommand.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequest and response accepted as-is.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 019\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/skill\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eskill.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRenamed \u003ccode\u003elocation\u003c/code\u003e to \u003ccode\u003epath\u003c/code\u003e; removed the skill-specific \u003ccode\u003eslash\u003c/code\u003e flag and slash-command behavior.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 020\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/reference\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ereference.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRemoved duplicate \u003ccode\u003edescription\u003c/code\u003e and \u003ccode\u003ehidden\u003c/code\u003e fields from nested \u003ccode\u003esource\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 021\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/config\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003econfig.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eCompatibility entries removed; response now contains only documents and OpenCode directories.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 022\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/config/preferences\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003econfig.preferences\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eRemove\u003c/td\u003e\n\u003ctd\u003eRedundant special projection of global config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 023\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePATCH\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/config/preferences\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003econfig.updatePreferences\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eRemove\u003c/td\u003e\n\u003ctd\u003eRedundant field-specific config mutation API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 024\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/config/shell\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003econfig.shells\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRequired by the server Terminal shell setting.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 024a\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePATCH\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/config\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.config.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eExperimental global config mutation; initially accepts only \u003ccode\u003eshell\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 3: Credentials, integrations, MCP, and web search\u003c/h2\u003e\u003ca id=\"user-content-group-3-credentials-integrations-mcp-and-web-search\" class=\"anchor\" aria-label=\"Permalink: Group 3: Credentials, integrations, MCP, and web search\" href=\"#group-3-credentials-integrations-mcp-and-web-search\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 22\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 025\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eFull integration inventory is consumed by authentication and integration-selection clients.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 026\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eMissing integration now returns typed \u003ccode\u003e404\u003c/code\u003e instead of optional data.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 027\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/integration/wellknown\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.integration.wellknown.add\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 028\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/key\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.connect.key\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eMissing integration returns typed \u003ccode\u003e404\u003c/code\u003e; key form answers retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 029\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/oauth\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.oauth.connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eOAuth connection start contract retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 030\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/oauth/{attemptID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.oauth.status\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eMissing integration or OAuth attempt returns typed \u003ccode\u003e404\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 031\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/oauth/{attemptID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.oauth.cancel\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eIdempotent cancellation remains a no-op for unavailable or terminal attempts.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 032\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/oauth/{attemptID}/complete\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.oauth.complete\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eMissing integration or OAuth attempt returns typed \u003ccode\u003e404\u003c/code\u003e; code remains mode-dependent.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 033\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.command.connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eMissing integration or command method returns typed \u003ccode\u003e404\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 034\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/command/{attemptID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.command.status\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eMissing integration or command attempt returns typed \u003ccode\u003e404\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 035\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/integration/{integrationID}/connect/command/{attemptID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eintegration.command.cancel\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eIdempotent cancellation remains a no-op for unavailable or terminal attempts.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 036\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/mcp\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003emcp.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eMCP inventory and connection status retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 037\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/mcp/{server}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.mcp.add\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRuntime-only MCP override; does not persist configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 038\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/mcp/{server}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.mcp.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRuntime removal override; missing server returns \u003ccode\u003e404\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 039\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/mcp/{server}/connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.mcp.connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRuntime connection override retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 040\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/mcp/{server}/disconnect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.mcp.disconnect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRuntime disconnection override retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 041\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/mcp/resource\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003emcp.resource.catalog\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReviewed separately by coworker.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 042\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePATCH\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/credential/{credentialID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ecredential.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRemoved redundant location query; credentials and events are global.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 043\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/credential/{credentialID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ecredential.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRemoved redundant location query; credentials and events are global.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 044\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/credential/{credentialID}/activate\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ecredential.activate\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRemoved redundant location query; credentials and events are global.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 045\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/websearch/provider\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ewebsearch.providers\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eProvider availability remains location-scoped; singular resource path retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 046\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/websearch\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ewebsearch.query\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eUnknown provider remains an invalid request; published time documented as Unix epoch milliseconds.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 4: Session lifecycle\u003c/h2\u003e\u003ca id=\"user-content-group-4-session-lifecycle\" class=\"anchor\" aria-label=\"Permalink: Group 4: Session lifecycle\" href=\"#group-4-session-lifecycle\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 12\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 047\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting filtering, ordering, and cursor contract retained for now.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 048\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting creation contract retained; model reference includes optional variant.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 049\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/stats\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.stats\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eSession analytics retained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 050\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/active\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.active\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eStatus record retained for future active-state expansion.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 051\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eSpecific session read and typed \u003ccode\u003e404\u003c/code\u003e retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 052\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eSession and child deletion with typed \u003ccode\u003e404\u003c/code\u003e retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 053\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/fork\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.fork\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRequest now accepts optional branded \u003ccode\u003ebefore\u003c/code\u003e message ID; omission copies full history.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 054\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/agent\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.switchAgent\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eSubsequent-execution agent selection retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 055\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/model\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.switchModel\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eSubsequent-execution model and optional variant selection retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 056\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePATCH\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eGeneral session patch updates title and permissions; rules emit \u003ccode\u003esession.permissions\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 057\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/move\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.move\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRemoved inaccurate local-change transfer claim; delivery behavior retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 058\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/background\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.background\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eBackgroundable foreground tools transition to background observation; idle requests remain no-ops.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 5: Session execution and inputs\u003c/h2\u003e\u003ca id=\"user-content-group-5-session-execution-and-inputs\" class=\"anchor\" aria-label=\"Permalink: Group 5: Session execution and inputs\" href=\"#group-5-session-execution-and-inputs\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 11\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 059\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/prompt\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.prompt\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eDurable admission, delivery mode, and admit-only resume control retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 060\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRenamed request field from \u003ccode\u003ecommand\u003c/code\u003e to \u003ccode\u003ename\u003c/code\u003e; \u003ccode\u003e204\u003c/code\u003e retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 061\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/skill\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.skill\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eSkill ID is now the \u003ccode\u003eid\u003c/code\u003e field; standalone activation remains experimental.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 062\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/synthetic\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.synthetic\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eDurable synthetic admission and delivery controls retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 063\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/shell\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.shell\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eCaller ID is now the optimistic shell message ID; server derives its event ID.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 064\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/compact\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.compact\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eDurable compaction admission and delivery controls retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 065\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/wait\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.wait\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRace-free idle barrier retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 066\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/generate\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.generate\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eTransient generation from session context retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 067\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/interrupt\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.interrupt\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRenamed \u003ccode\u003econtinue\u003c/code\u003e to \u003ccode\u003eresume\u003c/code\u003e across public and internal interruption APIs.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 068\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/environment\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.environment\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eProcess-local environment replacement retained in the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 069\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/view\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.view\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eIdle watermark now uses the standard epoch-millisecond timestamp schema.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 6: Session history and recovery\u003c/h2\u003e\u003ca id=\"user-content-group-6-session-history-and-recovery\" class=\"anchor\" aria-label=\"Permalink: Group 6: Session history and recovery\" href=\"#group-6-session-history-and-recovery\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 13\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 070\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/import\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.import\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eExisting projected transcript import contract retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 071\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/export\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.export\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eExisting projected transcript export contract retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 072\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/revert/stage\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.revert.stage\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting staged history and optional file restoration behavior retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 073\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/revert\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.revert.clear\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eClearing staged revert now deletes the session revert resource.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 074\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/revert/commit\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.revert.commit\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExplicit staged-revert commit action retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 075\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/context\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.context\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eActive model-context projection retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 076\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/diff\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.diff\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eTurn-range structured diff contract retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 077\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/instructions/entries\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.instructions.entry.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eAPI-managed durable context entries retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 078\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/instructions/entries/{key}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.instructions.entry.put\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eAPI-managed durable context entries retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 079\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/instructions/entries/{key}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.session.instructions.entry.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eAPI-managed durable context entries retained outside the stable API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 080\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/log\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.log\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 081\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/message/{messageID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.message.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eNormalized specific-message operation ID.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 082\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/message\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.message.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eNormalized session-scoped message-list operation ID.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 7: Inbox, permissions, and forms\u003c/h2\u003e\u003ca id=\"user-content-group-7-inbox-permissions-and-forms\" class=\"anchor\" aria-label=\"Permalink: Group 7: Inbox, permissions, and forms\" href=\"#group-7-inbox-permissions-and-forms\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 19\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 083\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/inbox\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.inbox.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eInbox timestamps now use the standard nested \u003ccode\u003etime.created\u003c/code\u003e shape.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 084\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/inbox/{inboxID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.inbox.cancel\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eCancellation is idempotent and returns \u003ccode\u003e204\u003c/code\u003e when the session exists.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 085\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePATCH\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/inbox/{inboxID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.inbox.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eConsolidated delivery mutation with `delivery: \"steer\"\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 086\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003eRemove\u003c/td\u003e\n\u003ctd\u003eReplaced by \u003ccode\u003esession.inbox.update\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 087\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/form\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eform.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRemoved redundant \u003ccode\u003erequest\u003c/code\u003e path and operation namespace.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 088\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/form\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.form.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePending session form list retained with temporary MCP sentinel compatibility.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 089\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/form\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.form.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExternal form creation and temporary MCP sentinel ownership retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 090\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/form/{formID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.form.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eForm definition and lifecycle state are now returned together.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 091\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003eRemove\u003c/td\u003e\n\u003ctd\u003eState is included by \u003ccode\u003esession.form.get\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 092\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/form/{formID}/reply\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.form.reply\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eOne-shot validated form reply retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 093\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/form/{formID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.form.cancel\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eForm cancellation now deletes the pending form resource.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 094\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/permission/request\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epermission.request.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePending-request namespace retained alongside saved permissions.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 095\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/permission/saved\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epermission.saved.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eAdded persisted creation and update timestamps under \u003ccode\u003etime\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 096\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/permission/saved/{id}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epermission.saved.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eIdempotent saved-permission deletion retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 097\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/permission\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.permission.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eNon-blocking permission evaluation and pending-request creation retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 098\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/permission\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.permission.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePending session permission list retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 099\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/permission/{requestID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.permission.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eSpecific pending permission read with ownership validation retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 100\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/session/{sessionID}/permission/{requestID}/reply\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003esession.permission.reply\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eRenamed request field from \u003ccode\u003ereply\u003c/code\u003e to \u003ccode\u003edecision\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 101\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003eRemove\u003c/td\u003e\n\u003ctd\u003ePermission rules are updated through \u003ccode\u003esession.update\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 8: Filesystem, worktrees, and VCS\u003c/h2\u003e\u003ca id=\"user-content-group-8-filesystem-worktrees-and-vcs\" class=\"anchor\" aria-label=\"Permalink: Group 8: Filesystem, worktrees, and VCS\" href=\"#group-8-filesystem-worktrees-and-vcs\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 12\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 102\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/fs/read/*\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003efs.read\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eRelative wildcard file reads and raw byte responses retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 103\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/fs/list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003efs.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting path scope and minimal entry metadata retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 104\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/fs/find\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003efs.find\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting ranked filesystem search retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 105\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/worktree\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eworktree.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReviewed separately by coworker.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 106\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/worktree\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eworktree.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReviewed separately by coworker.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 107\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/worktree\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eworktree.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReviewed separately by coworker.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 108\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/worktree/refresh\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eworktree.refresh\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReviewed separately by coworker.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 109\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/vcs\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003evcs.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003ePreserved branch nesting and added selected VCS provider ID.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 110\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/vcs/base\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003evcs.base\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eReview-base inference and nullable unavailable state retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 111\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/vcs/status\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003evcs.status\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting working-copy status shape retained for now.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 112\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/vcs/branch\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003evcs.branch.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eSingular collection path and normalized operation ID.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 113\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/vcs/diff\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003evcs.diff\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting working, branch, and committed comparison modes retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 9: PTYs, persistent terminals, and shells\u003c/h2\u003e\u003ca id=\"user-content-group-9-ptys-persistent-terminals-and-shells\" class=\"anchor\" aria-label=\"Permalink: Group 9: PTYs, persistent terminals, and shells\" href=\"#group-9-ptys-persistent-terminals-and-shells\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 24\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 114\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 115\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 116\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty/{ptyID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 117\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty/{ptyID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 118\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty/{ptyID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 119\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty/{ptyID}/connect-token\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.connect.token\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 120\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/pty/{ptyID}/connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epty.connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003ePTY endpoints reviewed together and retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 121\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/terminal/read\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.read\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 122\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/terminal\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 123\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/session/{sessionID}/terminal\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 124\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/shutdown\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.shutdown\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 125\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/handoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.handoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 126\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/{ptyID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 127\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePUT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/{ptyID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.update\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 128\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/{ptyID}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 129\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/{ptyID}/snapshot\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.snapshot\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 130\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/{ptyID}/connect-token\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eserver.experimental.persistentPty.connectToken\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 131\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/persistent-pty/{ptyID}/connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epersistentPty.connect\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 132\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/shell\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eshell.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eStable shell inventory retained; numeric timestamps documented as epoch milliseconds.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 133\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/shell\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eshell.create\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eTimeout is optional and defaults to zero; caller metadata retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 134\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/shell/{id}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eshell.get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eSpecific running or retained shell read retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 135\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/shell/{id}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eshell.remove\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eChange\u003c/td\u003e\n\u003ctd\u003eShell deletion is idempotent and returns \u003ccode\u003e204\u003c/code\u003e when already absent.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 136\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003e—\u003c/td\u003e\n\u003ctd\u003eRemove\u003c/td\u003e\n\u003ctd\u003eTimeout mutation remains an internal Core shell operation.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 137\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/shell/{id}/output\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eshell.output\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eExisting byte-cursor text output paging retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGroup 10: Events, RPC, and experimental operations\u003c/h2\u003e\u003ca id=\"user-content-group-10-events-rpc-and-experimental-operations\" class=\"anchor\" aria-label=\"Permalink: Group 10: Events, RPC, and experimental operations\" href=\"#group-10-events-rpc-and-experimental-operations\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eEndpoints:\u003c/strong\u003e 6\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDone\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePath\u003c/th\u003e\n\u003cth\u003eOperation ID\u003c/th\u003e\n\u003cth\u003eDecision\u003c/th\u003e\n\u003cth\u003eNotes\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 138\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/generate\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.generate.text\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eStateless generation retained alongside session generation.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 139\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePOST\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/rpc/{rpcID}/{method}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003erpc.call\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eGeneric typed-error plugin RPC transport retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 140\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/event\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eevent.subscribe\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eUnified native and dynamic plugin event stream retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 141\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/debug/location\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edebug.location.list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eLoaded-location debug inventory retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 142\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eDELETE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/debug/location\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003edebug.location.evict\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eKeep\u003c/td\u003e\n\u003ctd\u003eIdempotent loaded-location eviction retained.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e[x] 143\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eGET\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e/api/experimental/migration/v1\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eexperimental.migration.v1.status\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eExperimental-only\u003c/td\u003e\n\u003ctd\u003eRetained outside the stable API commitment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003c/article\u003e","richTextTruncated":false,"renderedFileInfo":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"V2 HTTP API audit checklist","fully_qualified_name":"V2 HTTP API audit checklist","kind":"section_1","ident_start":2,"ident_end":29,"extent_start":0,"extent_end":24734,"ident_utf16":{"start":{"line_number":0,"utf16_col":2},"end":{"line_number":0,"utf16_col":29}},"extent_utf16":{"start":{"line_number":0,"utf16_col":0},"end":{"line_number":279,"utf16_col":0}}},{"name":"How to use this checklist","fully_qualified_name":"How to use this checklist","kind":"section_2","ident_start":147,"ident_end":172,"extent_start":144,"extent_end":926,"ident_utf16":{"start":{"line_number":6,"utf16_col":3},"end":{"line_number":6,"utf16_col":28}},"extent_utf16":{"start":{"line_number":6,"utf16_col":0},"end":{"line_number":28,"utf16_col":0}}},{"name":"Review criteria","fully_qualified_name":"Review criteria","kind":"section_3","ident_start":363,"ident_end":378,"extent_start":359,"extent_end":686,"ident_utf16":{"start":{"line_number":10,"utf16_col":4},"end":{"line_number":10,"utf16_col":19}},"extent_utf16":{"start":{"line_number":10,"utf16_col":0},"end":{"line_number":21,"utf16_col":0}}},{"name":"Disposition legend","fully_qualified_name":"Disposition legend","kind":"section_3","ident_start":690,"ident_end":708,"extent_start":686,"extent_end":926,"ident_utf16":{"start":{"line_number":21,"utf16_col":4},"end":{"line_number":21,"utf16_col":22}},"extent_utf16":{"start":{"line_number":21,"utf16_col":0},"end":{"line_number":28,"utf16_col":0}}},{"name":"Progress","fully_qualified_name":"Progress","kind":"section_2","ident_start":929,"ident_end":937,"extent_start":926,"extent_end":1466,"ident_utf16":{"start":{"line_number":28,"utf16_col":3},"end":{"line_number":28,"utf16_col":11}},"extent_utf16":{"start":{"line_number":28,"utf16_col":0},"end":{"line_number":41,"utf16_col":0}}},{"name":"Resolved during audit","fully_qualified_name":"Resolved during audit","kind":"section_2","ident_start":1469,"ident_end":1490,"extent_start":1466,"extent_end":2644,"ident_utf16":{"start":{"line_number":41,"utf16_col":3},"end":{"line_number":41,"utf16_col":24}},"extent_utf16":{"start":{"line_number":41,"utf16_col":0},"end":{"line_number":70,"utf16_col":0}}},{"name":"[x] `POST /api/plugin/await-activation`","fully_qualified_name":"[x] `POST /api/plugin/await-activation`","kind":"section_3","ident_start":1496,"ident_end":1535,"extent_start":1492,"extent_end":1658,"ident_utf16":{"start":{"line_number":43,"utf16_col":4},"end":{"line_number":43,"utf16_col":43}},"extent_utf16":{"start":{"line_number":43,"utf16_col":0},"end":{"line_number":48,"utf16_col":0}}},{"name":"[x] Location response wrappers","fully_qualified_name":"[x] Location response wrappers","kind":"section_3","ident_start":1662,"ident_end":1692,"extent_start":1658,"extent_end":1898,"ident_utf16":{"start":{"line_number":48,"utf16_col":4},"end":{"line_number":48,"utf16_col":34}},"extent_utf16":{"start":{"line_number":48,"utf16_col":0},"end":{"line_number":53,"utf16_col":0}}},{"name":"[x] `GET /api/health` and `GET /api/server`","fully_qualified_name":"[x] `GET /api/health` and `GET /api/server`","kind":"section_3","ident_start":1902,"ident_end":1945,"extent_start":1898,"extent_end":2149,"ident_utf16":{"start":{"line_number":53,"utf16_col":4},"end":{"line_number":53,"utf16_col":47}},"extent_utf16":{"start":{"line_number":53,"utf16_col":0},"end":{"line_number":59,"utf16_col":0}}},{"name":"[x] `GET /api/project/current`","fully_qualified_name":"[x] `GET /api/project/current`","kind":"section_3","ident_start":2153,"ident_end":2183,"extent_start":2149,"extent_end":2380,"ident_utf16":{"start":{"line_number":59,"utf16_col":4},"end":{"line_number":59,"utf16_col":34}},"extent_utf16":{"start":{"line_number":59,"utf16_col":0},"end":{"line_number":65,"utf16_col":0}}},{"name":"[x] `POST /api/workspace` and `DELETE /api/workspace/{workspaceID}`","fully_qualified_name":"[x] `POST /api/workspace` and `DELETE /api/workspace/{workspaceID}`","kind":"section_3","ident_start":2384,"ident_end":2451,"extent_start":2380,"extent_end":2644,"ident_utf16":{"start":{"line_number":65,"utf16_col":4},"end":{"line_number":65,"utf16_col":71}},"extent_utf16":{"start":{"line_number":65,"utf16_col":0},"end":{"line_number":70,"utf16_col":0}}},{"name":"Group 1: Foundation and placement","fully_qualified_name":"Group 1: Foundation and placement","kind":"section_2","ident_start":2647,"ident_end":2680,"extent_start":2644,"extent_end":3305,"ident_utf16":{"start":{"line_number":70,"utf16_col":3},"end":{"line_number":70,"utf16_col":36}},"extent_utf16":{"start":{"line_number":70,"utf16_col":0},"end":{"line_number":81,"utf16_col":0}}},{"name":"Group 2: Configuration and capability catalogs","fully_qualified_name":"Group 2: Configuration and capability catalogs","kind":"section_2","ident_start":3308,"ident_end":3354,"extent_start":3305,"extent_end":5532,"ident_utf16":{"start":{"line_number":81,"utf16_col":3},"end":{"line_number":81,"utf16_col":49}},"extent_utf16":{"start":{"line_number":81,"utf16_col":0},"end":{"line_number":105,"utf16_col":0}}},{"name":"Group 3: Credentials, integrations, MCP, and web search","fully_qualified_name":"Group 3: Credentials, integrations, MCP, and web search","kind":"section_2","ident_start":5535,"ident_end":5590,"extent_start":5532,"extent_end":9409,"ident_utf16":{"start":{"line_number":105,"utf16_col":3},"end":{"line_number":105,"utf16_col":58}},"extent_utf16":{"start":{"line_number":105,"utf16_col":0},"end":{"line_number":134,"utf16_col":0}}},{"name":"Group 4: Session lifecycle","fully_qualified_name":"Group 4: Session lifecycle","kind":"section_2","ident_start":9412,"ident_end":9438,"extent_start":9409,"extent_end":11362,"ident_utf16":{"start":{"line_number":134,"utf16_col":3},"end":{"line_number":134,"utf16_col":29}},"extent_utf16":{"start":{"line_number":134,"utf16_col":0},"end":{"line_number":153,"utf16_col":0}}},{"name":"Group 5: Session execution and inputs","fully_qualified_name":"Group 5: Session execution and inputs","kind":"section_2","ident_start":11365,"ident_end":11402,"extent_start":11362,"extent_end":13285,"ident_utf16":{"start":{"line_number":153,"utf16_col":3},"end":{"line_number":153,"utf16_col":40}},"extent_utf16":{"start":{"line_number":153,"utf16_col":0},"end":{"line_number":171,"utf16_col":0}}},{"name":"Group 6: Session history and recovery","fully_qualified_name":"Group 6: Session history and recovery","kind":"section_2","ident_start":13288,"ident_end":13325,"extent_start":13285,"extent_end":15679,"ident_utf16":{"start":{"line_number":171,"utf16_col":3},"end":{"line_number":171,"utf16_col":40}},"extent_utf16":{"start":{"line_number":171,"utf16_col":0},"end":{"line_number":191,"utf16_col":0}}},{"name":"Group 7: Inbox, permissions, and forms","fully_qualified_name":"Group 7: Inbox, permissions, and forms","kind":"section_2","ident_start":15682,"ident_end":15720,"extent_start":15679,"extent_end":18568,"ident_utf16":{"start":{"line_number":191,"utf16_col":3},"end":{"line_number":191,"utf16_col":41}},"extent_utf16":{"start":{"line_number":191,"utf16_col":0},"end":{"line_number":217,"utf16_col":0}}},{"name":"Group 8: Filesystem, worktrees, and VCS","fully_qualified_name":"Group 8: Filesystem, worktrees, and VCS","kind":"section_2","ident_start":18571,"ident_end":18610,"extent_start":18568,"extent_end":20077,"ident_utf16":{"start":{"line_number":217,"utf16_col":3},"end":{"line_number":217,"utf16_col":42}},"extent_utf16":{"start":{"line_number":217,"utf16_col":0},"end":{"line_number":236,"utf16_col":0}}},{"name":"Group 9: PTYs, persistent terminals, and shells","fully_qualified_name":"Group 9: PTYs, persistent terminals, and shells","kind":"section_2","ident_start":20080,"ident_end":20127,"extent_start":20077,"extent_end":23762,"ident_utf16":{"start":{"line_number":236,"utf16_col":3},"end":{"line_number":236,"utf16_col":50}},"extent_utf16":{"start":{"line_number":236,"utf16_col":0},"end":{"line_number":267,"utf16_col":0}}},{"name":"Group 10: Events, RPC, and experimental operations","fully_qualified_name":"Group 10: Events, RPC, and experimental operations","kind":"section_2","ident_start":23765,"ident_end":23815,"extent_start":23762,"extent_end":24734,"ident_utf16":{"start":{"line_number":267,"utf16_col":3},"end":{"line_number":267,"utf16_col":53}},"extent_utf16":{"start":{"line_number":267,"utf16_col":0},"end":{"line_number":279,"utf16_col":0}}}]}},"codeViewLayoutRoute":{"repo":{"id":975734319,"defaultBranch":"dev","name":"opencode","ownerLogin":"anomalyco","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2025-04-30T20:08:00.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/66570915?v=4","public":true,"private":false,"isOrgOwned":true,"isArchived":false},"currentUser":null,"uploadToken":"tl1AkIFHcsX5TA5aIyP8f8cPYbJs5yX-44nZ3XdDtVOdomX_WMF77FjIq5rNMFEOi6iiVw3aBwfR35ilneuzOg","allShortcutsEnabled":false,"treeExpanded":true,"path":"V2_HTTP_API_AUDIT.md","symbolsExpanded":false,"refInfo":{"name":"v2","listCacheKey":"v0:1791451987.0","canEdit":false,"currentOid":"0621ea9d9fe0916b1f4fca5941d5d1932641537f"},"helpUrl":"https://docs.github.com","githubDevUrl":null},"codeViewFileTreeLayoutRoute":{"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":".husky","path":".husky","contentType":"directory"},{"name":".opencode","path":".opencode","contentType":"directory"},{"name":".vscode","path":".vscode","contentType":"directory"},{"name":".zed","path":".zed","contentType":"directory"},{"name":"github","path":"github","contentType":"directory"},{"name":"infra","path":"infra","contentType":"directory"},{"name":"nix","path":"nix","contentType":"directory"},{"name":"packages","path":"packages","contentType":"directory"},{"name":"patches","path":"patches","contentType":"directory"},{"name":"perf","path":"perf","contentType":"directory"},{"name":"script","path":"script","contentType":"directory"},{"name":"sdks","path":"sdks","contentType":"directory"},{"name":"services","path":"services","contentType":"directory"},{"name":"specs","path":"specs","contentType":"directory"},{"name":".dockerignore","path":".dockerignore","contentType":"file"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitattributes","path":".gitattributes","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".gitleaksignore","path":".gitleaksignore","contentType":"file"},{"name":".oxlintrc.json","path":".oxlintrc.json","contentType":"file"},{"name":".prettierignore","path":".prettierignore","contentType":"file"},{"name":"AGENTS.md","path":"AGENTS.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.ar.md","path":"README.ar.md","contentType":"file"},{"name":"README.bn.md","path":"README.bn.md","contentType":"file"},{"name":"README.br.md","path":"README.br.md","contentType":"file"},{"name":"README.bs.md","path":"README.bs.md","contentType":"file"},{"name":"README.da.md","path":"README.da.md","contentType":"file"},{"name":"README.de.md","path":"README.de.md","contentType":"file"},{"name":"README.es.md","path":"README.es.md","contentType":"file"},{"name":"README.fr.md","path":"README.fr.md","contentType":"file"},{"name":"README.gr.md","path":"README.gr.md","contentType":"file"},{"name":"README.it.md","path":"README.it.md","contentType":"file"},{"name":"README.ja.md","path":"README.ja.md","contentType":"file"},{"name":"README.ko.md","path":"README.ko.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"README.no.md","path":"README.no.md","contentType":"file"},{"name":"README.pl.md","path":"README.pl.md","contentType":"file"},{"name":"README.ru.md","path":"README.ru.md","contentType":"file"},{"name":"README.th.md","path":"README.th.md","contentType":"file"},{"name":"README.tr.md","path":"README.tr.md","contentType":"file"},{"name":"README.uk.md","path":"README.uk.md","contentType":"file"},{"name":"README.vi.md","path":"README.vi.md","contentType":"file"},{"name":"README.zh.md","path":"README.zh.md","contentType":"file"},{"name":"README.zht.md","path":"README.zht.md","contentType":"file"},{"name":"SECURITY.md","path":"SECURITY.md","contentType":"file"},{"name":"STATS.md","path":"STATS.md","contentType":"file"},{"name":"V2_HTTP_API_AUDIT.md","path":"V2_HTTP_API_AUDIT.md","contentType":"file"},{"name":"bun.lock","path":"bun.lock","contentType":"file"},{"name":"bunfig.toml","path":"bunfig.toml","contentType":"file"},{"name":"flake.lock","path":"flake.lock","contentType":"file"},{"name":"flake.nix","path":"flake.nix","contentType":"file"},{"name":"install","path":"install","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"screenshot-uk.png","path":"screenshot-uk.png","contentType":"file"},{"name":"sst-env.d.ts","path":"sst-env.d.ts","contentType":"file"},{"name":"sst.config.ts","path":"sst.config.ts","contentType":"file"},{"name":"tsconfig.json","path":"tsconfig.json","contentType":"file"},{"name":"turbo.json","path":"turbo.json","contentType":"file"}],"totalCount":61}},"fileTreeProcessingTime":23.659191999999997,"foldersToFetch":[]},"codeViewBlobLayoutRoute":{"codeLineWrapEnabled":false,"refInfo":{"name":"v2","listCacheKey":"v0:1791451987.0","canEdit":false,"refType":"branch","currentOid":"0621ea9d9fe0916b1f4fca5941d5d1932641537f","canEditOnDefaultBranch":false,"fileExistsOnDefault":false},"path":"V2_HTTP_API_AUDIT.md","blob":{"copilotSWEAgentEnabled":false,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/anomalyco/opencode/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"V2_HTTP_API_AUDIT.md","displayUrl":"https://github.com/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md?raw=true","headerInfo":{"blobSize":"24.2 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"ab850f8","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fanomalyco%2Fopencode%2Fblob%2Fv2%2FV2_HTTP_API_AUDIT.md","isCSV":false,"isRichtext":true,"lineInfo":{"truncatedLoc":"279","truncatedSloc":"229"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"isIssueTemplate":false,"isDiscussionTemplate":false,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/anomalyco/opencode/blob/v2/V2_HTTP_API_AUDIT.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/anomalyco/opencode/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/anomalyco/opencode/raw/refs/heads/v2/V2_HTTP_API_AUDIT.md","renderImageOrRaw":false,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null},"copilotInfo":null,"copilotAccessAllowed":false,"copilotSpacesEnabled":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"isMarketplaceEnabled":true},"codeViewBlobLayoutRoute.StyledBlob":{"rawLines":["# V2 HTTP API audit checklist","","**Source:** `packages/protocol/openapi.json`  ","**Current endpoint count:** 139","**Last regenerated:** 2026-09-13","","## How to use this checklist","","Review endpoints in document order. For each endpoint, select one disposition and capture rationale or follow-up work in Notes. Mark **Reviewed** only after the disposition is agreed.","","### Review criteria","","- Resource and operation naming","- HTTP method and idempotency","- Request parameters and location scope","- Response shape and error taxonomy","- Authentication and authorization","- Current production consumers","- Stability level: public, experimental, or internal","- Whether the generated client API is intuitive","","### Disposition legend","","- **Keep:** ship unchanged as a supported V2 API","- **Change:** retain after a defined contract change","- **Remove:** exclude from the official V2 API","- **Experimental-only:** retain outside the stable API commitment","","## Progress","","- [x] Group 1: Foundation and placement (4)","- [x] Group 2: Configuration and capability catalogs (16)","- [x] Group 3: Credentials, integrations, MCP, and web search (22)","- [x] Group 4: Session lifecycle (12)","- [x] Group 5: Session execution and inputs (11)","- [x] Group 6: Session history and recovery (13)","- [x] Group 7: Inbox, permissions, and forms (19)","- [x] Group 8: Filesystem, worktrees, and VCS (12)","- [x] Group 9: PTYs, persistent terminals, and shells (24)","- [x] Group 10: Events, RPC, and experimental operations (6)","","## Resolved during audit","","### [x] `POST /api/plugin/await-activation`","","- **Decision:** Remove","- **Notes:** Activation timing is an internal server concern. Catalog reads remain non-blocking.","","### [x] Location response wrappers","","- **Decision:** Reduce generic endpoint response locations to `{ directory }`.","- **Notes:** Full project metadata remains available from `GET /api/location`; no consumers used it from wrapped responses.","","### [x] `GET /api/health` and `GET /api/server`","","- **Decision:** Merge and rename","- **Replacement:** `GET /api/info` with operation ID `server.info`.","- **Notes:** Returns `version`, `pid`, and connection `urls`; readiness is conveyed by HTTP status.","","### [x] `GET /api/project/current`","","- **Decision:** Remove","- **Replacement:** `GET /api/location`, using `project` from the response.","- **Notes:** The endpoint duplicated `Location.Info.project`; production callers were migrated.","","### [x] `POST /api/workspace` and `DELETE /api/workspace/{workspaceID}`","","- **Decision:** Remove","- **Notes:** Provider-backed workspaces are not part of the V2 HTTP contract and can be introduced later. Core and the embedded SDK retain internal workspace support.","","## Group 1: Foundation and placement","","**Endpoints:** 4","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 001–002 | `GET` | `/api/info` | `server.info` | Keep | Replaces the former health and server endpoints. |","| [x] 003 | `GET` | `/api/location` | `location.get` | Keep | Workspace selectors and response fields removed until workspace support ships. |","| [x] 004 | `GET` | `/api/project` | `project.list` | Keep | Removed unused `time.initialized`; the database column remains for migration data. |","| [x] 005 | `PATCH` | `/api/project/{projectID}` | `project.update` | Keep | Request and response accepted as-is. |","","## Group 2: Configuration and capability catalogs","","**Endpoints:** 16","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 008 | `GET` | `/api/agent` | `agent.list` | Keep | Request and response accepted as-is. |","| [x] 009 | `GET` | `/api/agent/{agentID}` | `agent.get` | Keep | Request, response, and not-found error accepted as-is. |","| [x] 010 | `GET` | `/api/plugin` | `plugin.list` | Keep | Request and response accepted as-is. |","| [x] 012 | `POST` | `/api/plugin/check` | `plugin.check` | Keep | Request and response accepted as-is. |","| [x] 013 | `POST` | `/api/plugin/update` | `plugin.update` | Keep | Request and errors accepted as-is. |","| [x] 014 | `GET` | `/api/model` | `model.list` | Keep | Request and response accepted as-is. |","| [x] 015 | `GET` | `/api/model/default` | `model.default` | Keep | Request and nullable response accepted as-is. |","| [x] 016 | `GET` | `/api/provider` | `provider.list` | Keep | Request and response accepted as-is. |","| [x] 017 | `GET` | `/api/provider/{providerID}` | `provider.get` | Keep | Request, response, and not-found error accepted as-is. |","| [x] 018 | `GET` | `/api/command` | `command.list` | Keep | Request and response accepted as-is. |","| [x] 019 | `GET` | `/api/skill` | `skill.list` | Keep | Renamed `location` to `path`; removed the skill-specific `slash` flag and slash-command behavior. |","| [x] 020 | `GET` | `/api/reference` | `reference.list` | Keep | Removed duplicate `description` and `hidden` fields from nested `source`. |","| [x] 021 | `GET` | `/api/config` | `config.get` | Keep | Compatibility entries removed; response now contains only documents and OpenCode directories. |","| [x] 022 | `GET` | `/api/config/preferences` | `config.preferences` | Remove | Redundant special projection of global config. |","| [x] 023 | `PATCH` | `/api/config/preferences` | `config.updatePreferences` | Remove | Redundant field-specific config mutation API. |","| [x] 024 | `GET` | `/api/config/shell` | `config.shells` | Keep | Required by the server Terminal shell setting. |","| [x] 024a | `PATCH` | `/api/experimental/config` | `experimental.config.update` | Change | Experimental global config mutation; initially accepts only `shell`. |","","## Group 3: Credentials, integrations, MCP, and web search","","**Endpoints:** 22","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 025 | `GET` | `/api/integration` | `integration.list` | Keep | Full integration inventory is consumed by authentication and integration-selection clients. |","| [x] 026 | `GET` | `/api/integration/{integrationID}` | `integration.get` | Change | Missing integration now returns typed `404` instead of optional data. |","| [x] 027 | `POST` | `/api/experimental/integration/wellknown` | `experimental.integration.wellknown.add` | Experimental-only | Retained outside the stable API commitment. |","| [x] 028 | `POST` | `/api/integration/{integrationID}/connect/key` | `integration.connect.key` | Change | Missing integration returns typed `404`; key form answers retained. |","| [x] 029 | `POST` | `/api/integration/{integrationID}/connect/oauth` | `integration.oauth.connect` | Keep | OAuth connection start contract retained. |","| [x] 030 | `GET` | `/api/integration/{integrationID}/connect/oauth/{attemptID}` | `integration.oauth.status` | Change | Missing integration or OAuth attempt returns typed `404`. |","| [x] 031 | `DELETE` | `/api/integration/{integrationID}/connect/oauth/{attemptID}` | `integration.oauth.cancel` | Keep | Idempotent cancellation remains a no-op for unavailable or terminal attempts. |","| [x] 032 | `POST` | `/api/integration/{integrationID}/connect/oauth/{attemptID}/complete` | `integration.oauth.complete` | Change | Missing integration or OAuth attempt returns typed `404`; code remains mode-dependent. |","| [x] 033 | `POST` | `/api/integration/{integrationID}/connect/command` | `integration.command.connect` | Change | Missing integration or command method returns typed `404`. |","| [x] 034 | `GET` | `/api/integration/{integrationID}/connect/command/{attemptID}` | `integration.command.status` | Change | Missing integration or command attempt returns typed `404`. |","| [x] 035 | `DELETE` | `/api/integration/{integrationID}/connect/command/{attemptID}` | `integration.command.cancel` | Keep | Idempotent cancellation remains a no-op for unavailable or terminal attempts. |","| [x] 036 | `GET` | `/api/mcp` | `mcp.list` | Keep | MCP inventory and connection status retained. |","| [x] 037 | `PUT` | `/api/experimental/mcp/{server}` | `experimental.mcp.add` | Experimental-only | Runtime-only MCP override; does not persist configuration. |","| [x] 038 | `DELETE` | `/api/experimental/mcp/{server}` | `experimental.mcp.remove` | Experimental-only | Runtime removal override; missing server returns `404`. |","| [x] 039 | `POST` | `/api/experimental/mcp/{server}/connect` | `experimental.mcp.connect` | Experimental-only | Runtime connection override retained outside the stable API. |","| [x] 040 | `POST` | `/api/experimental/mcp/{server}/disconnect` | `experimental.mcp.disconnect` | Experimental-only | Runtime disconnection override retained outside the stable API. |","| [x] 041 | `GET` | `/api/mcp/resource` | `mcp.resource.catalog` | Keep | Reviewed separately by coworker. |","| [x] 042 | `PATCH` | `/api/credential/{credentialID}` | `credential.update` | Change | Removed redundant location query; credentials and events are global. |","| [x] 043 | `DELETE` | `/api/credential/{credentialID}` | `credential.remove` | Change | Removed redundant location query; credentials and events are global. |","| [x] 044 | `POST` | `/api/credential/{credentialID}/activate` | `credential.activate` | Change | Removed redundant location query; credentials and events are global. |","| [x] 045 | `GET` | `/api/websearch/provider` | `websearch.providers` | Keep | Provider availability remains location-scoped; singular resource path retained. |","| [x] 046 | `POST` | `/api/websearch` | `websearch.query` | Keep | Unknown provider remains an invalid request; published time documented as Unix epoch milliseconds. |","","## Group 4: Session lifecycle","","**Endpoints:** 12","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 047 | `GET` | `/api/session` | `session.list` | Keep | Existing filtering, ordering, and cursor contract retained for now. |","| [x] 048 | `POST` | `/api/session` | `session.create` | Keep | Existing creation contract retained; model reference includes optional variant. |","| [x] 049 | `GET` | `/api/experimental/session/stats` | `experimental.session.stats` | Experimental-only | Session analytics retained outside the stable API commitment. |","| [x] 050 | `GET` | `/api/session/active` | `session.active` | Keep | Status record retained for future active-state expansion. |","| [x] 051 | `GET` | `/api/session/{sessionID}` | `session.get` | Keep | Specific session read and typed `404` retained. |","| [x] 052 | `DELETE` | `/api/session/{sessionID}` | `session.remove` | Keep | Session and child deletion with typed `404` retained. |","| [x] 053 | `POST` | `/api/session/{sessionID}/fork` | `session.fork` | Change | Request now accepts optional branded `before` message ID; omission copies full history. |","| [x] 054 | `POST` | `/api/session/{sessionID}/agent` | `session.switchAgent` | Keep | Subsequent-execution agent selection retained. |","| [x] 055 | `POST` | `/api/session/{sessionID}/model` | `session.switchModel` | Keep | Subsequent-execution model and optional variant selection retained. |","| [x] 056 | `PATCH` | `/api/session/{sessionID}` | `session.update` | Change | General session patch updates title and permissions; rules emit `session.permissions`. |","| [x] 057 | `POST` | `/api/session/{sessionID}/move` | `session.move` | Change | Removed inaccurate local-change transfer claim; delivery behavior retained. |","| [x] 058 | `POST` | `/api/session/{sessionID}/background` | `session.background` | Keep | Backgroundable foreground tools transition to background observation; idle requests remain no-ops. |","","## Group 5: Session execution and inputs","","**Endpoints:** 11","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 059 | `POST` | `/api/session/{sessionID}/prompt` | `session.prompt` | Keep | Durable admission, delivery mode, and admit-only resume control retained. |","| [x] 060 | `POST` | `/api/session/{sessionID}/command` | `session.command` | Change | Renamed request field from `command` to `name`; `204` retained. |","| [x] 061 | `POST` | `/api/experimental/session/{sessionID}/skill` | `experimental.session.skill` | Experimental-only | Skill ID is now the `id` field; standalone activation remains experimental. |","| [x] 062 | `POST` | `/api/session/{sessionID}/synthetic` | `session.synthetic` | Keep | Durable synthetic admission and delivery controls retained. |","| [x] 063 | `POST` | `/api/session/{sessionID}/shell` | `session.shell` | Change | Caller ID is now the optimistic shell message ID; server derives its event ID. |","| [x] 064 | `POST` | `/api/session/{sessionID}/compact` | `session.compact` | Keep | Durable compaction admission and delivery controls retained. |","| [x] 065 | `POST` | `/api/experimental/session/{sessionID}/wait` | `experimental.session.wait` | Experimental-only | Race-free idle barrier retained outside the stable API. |","| [x] 066 | `POST` | `/api/session/{sessionID}/generate` | `session.generate` | Keep | Transient generation from session context retained. |","| [x] 067 | `POST` | `/api/session/{sessionID}/interrupt` | `session.interrupt` | Change | Renamed `continue` to `resume` across public and internal interruption APIs. |","| [x] 068 | `PUT` | `/api/session/{sessionID}/environment` | `session.environment` | Keep | Process-local environment replacement retained in the stable API. |","| [x] 069 | `POST` | `/api/session/{sessionID}/view` | `session.view` | Change | Idle watermark now uses the standard epoch-millisecond timestamp schema. |","","## Group 6: Session history and recovery","","**Endpoints:** 13","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 070 | `POST` | `/api/experimental/session/import` | `experimental.session.import` | Experimental-only | Existing projected transcript import contract retained outside the stable API. |","| [x] 071 | `GET` | `/api/experimental/session/{sessionID}/export` | `experimental.session.export` | Experimental-only | Existing projected transcript export contract retained outside the stable API. |","| [x] 072 | `POST` | `/api/session/{sessionID}/revert/stage` | `session.revert.stage` | Keep | Existing staged history and optional file restoration behavior retained. |","| [x] 073 | `DELETE` | `/api/session/{sessionID}/revert` | `session.revert.clear` | Change | Clearing staged revert now deletes the session revert resource. |","| [x] 074 | `POST` | `/api/session/{sessionID}/revert/commit` | `session.revert.commit` | Keep | Explicit staged-revert commit action retained. |","| [x] 075 | `GET` | `/api/session/{sessionID}/context` | `session.context` | Keep | Active model-context projection retained. |","| [x] 076 | `GET` | `/api/session/{sessionID}/diff` | `session.diff` | Keep | Turn-range structured diff contract retained. |","| [x] 077 | `GET` | `/api/experimental/session/{sessionID}/instructions/entries` | `experimental.session.instructions.entry.list` | Experimental-only | API-managed durable context entries retained outside the stable API. |","| [x] 078 | `PUT` | `/api/experimental/session/{sessionID}/instructions/entries/{key}` | `experimental.session.instructions.entry.put` | Experimental-only | API-managed durable context entries retained outside the stable API. |","| [x] 079 | `DELETE` | `/api/experimental/session/{sessionID}/instructions/entries/{key}` | `experimental.session.instructions.entry.remove` | Experimental-only | API-managed durable context entries retained outside the stable API. |","| [x] 080 | `GET` | `/api/experimental/session/{sessionID}/log` | `session.log` | Experimental-only | Retained outside the stable API commitment. |","| [x] 081 | `GET` | `/api/session/{sessionID}/message/{messageID}` | `session.message.get` | Change | Normalized specific-message operation ID. |","| [x] 082 | `GET` | `/api/session/{sessionID}/message` | `session.message.list` | Change | Normalized session-scoped message-list operation ID. |","","## Group 7: Inbox, permissions, and forms","","**Endpoints:** 19","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 083 | `GET` | `/api/session/{sessionID}/inbox` | `session.inbox.list` | Change | Inbox timestamps now use the standard nested `time.created` shape. |","| [x] 084 | `DELETE` | `/api/session/{sessionID}/inbox/{inboxID}` | `session.inbox.cancel` | Change | Cancellation is idempotent and returns `204` when the session exists. |","| [x] 085 | `PATCH` | `/api/session/{sessionID}/inbox/{inboxID}` | `session.inbox.update` | Change | Consolidated delivery mutation with `delivery: \"steer\" | \"queue\"`. |","| [x] 086 | — | — | — | Remove | Replaced by `session.inbox.update`. |","| [x] 087 | `GET` | `/api/form` | `form.list` | Change | Removed redundant `request` path and operation namespace. |","| [x] 088 | `GET` | `/api/session/{sessionID}/form` | `session.form.list` | Keep | Pending session form list retained with temporary MCP sentinel compatibility. |","| [x] 089 | `POST` | `/api/session/{sessionID}/form` | `session.form.create` | Keep | External form creation and temporary MCP sentinel ownership retained. |","| [x] 090 | `GET` | `/api/session/{sessionID}/form/{formID}` | `session.form.get` | Change | Form definition and lifecycle state are now returned together. |","| [x] 091 | — | — | — | Remove | State is included by `session.form.get`. |","| [x] 092 | `POST` | `/api/session/{sessionID}/form/{formID}/reply` | `session.form.reply` | Keep | One-shot validated form reply retained. |","| [x] 093 | `DELETE` | `/api/session/{sessionID}/form/{formID}` | `session.form.cancel` | Change | Form cancellation now deletes the pending form resource. |","| [x] 094 | `GET` | `/api/permission/request` | `permission.request.list` | Keep | Pending-request namespace retained alongside saved permissions. |","| [x] 095 | `GET` | `/api/permission/saved` | `permission.saved.list` | Change | Added persisted creation and update timestamps under `time`. |","| [x] 096 | `DELETE` | `/api/permission/saved/{id}` | `permission.saved.remove` | Keep | Idempotent saved-permission deletion retained. |","| [x] 097 | `POST` | `/api/session/{sessionID}/permission` | `session.permission.create` | Keep | Non-blocking permission evaluation and pending-request creation retained. |","| [x] 098 | `GET` | `/api/session/{sessionID}/permission` | `session.permission.list` | Keep | Pending session permission list retained. |","| [x] 099 | `GET` | `/api/session/{sessionID}/permission/{requestID}` | `session.permission.get` | Keep | Specific pending permission read with ownership validation retained. |","| [x] 100 | `POST` | `/api/session/{sessionID}/permission/{requestID}/reply` | `session.permission.reply` | Change | Renamed request field from `reply` to `decision`. |","| [x] 101 | — | — | — | Remove | Permission rules are updated through `session.update`. |","","## Group 8: Filesystem, worktrees, and VCS","","**Endpoints:** 12","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 102 | `GET` | `/api/fs/read/*` | `fs.read` | Keep | Relative wildcard file reads and raw byte responses retained. |","| [x] 103 | `GET` | `/api/fs/list` | `fs.list` | Keep | Existing path scope and minimal entry metadata retained. |","| [x] 104 | `GET` | `/api/fs/find` | `fs.find` | Keep | Existing ranked filesystem search retained. |","| [x] 105 | `GET` | `/api/worktree` | `worktree.list` | Keep | Reviewed separately by coworker. |","| [x] 106 | `POST` | `/api/worktree` | `worktree.create` | Keep | Reviewed separately by coworker. |","| [x] 107 | `DELETE` | `/api/worktree` | `worktree.remove` | Keep | Reviewed separately by coworker. |","| [x] 108 | `POST` | `/api/worktree/refresh` | `worktree.refresh` | Keep | Reviewed separately by coworker. |","| [x] 109 | `GET` | `/api/vcs` | `vcs.get` | Change | Preserved branch nesting and added selected VCS provider ID. |","| [x] 110 | `GET` | `/api/vcs/base` | `vcs.base` | Keep | Review-base inference and nullable unavailable state retained. |","| [x] 111 | `GET` | `/api/vcs/status` | `vcs.status` | Keep | Existing working-copy status shape retained for now. |","| [x] 112 | `GET` | `/api/vcs/branch` | `vcs.branch.list` | Change | Singular collection path and normalized operation ID. |","| [x] 113 | `GET` | `/api/vcs/diff` | `vcs.diff` | Keep | Existing working, branch, and committed comparison modes retained. |","","## Group 9: PTYs, persistent terminals, and shells","","**Endpoints:** 24","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 114 | `GET` | `/api/pty` | `pty.list` | Keep | PTY endpoints reviewed together and retained. |","| [x] 115 | `POST` | `/api/pty` | `pty.create` | Keep | PTY endpoints reviewed together and retained. |","| [x] 116 | `GET` | `/api/pty/{ptyID}` | `pty.get` | Keep | PTY endpoints reviewed together and retained. |","| [x] 117 | `PUT` | `/api/pty/{ptyID}` | `pty.update` | Keep | PTY endpoints reviewed together and retained. |","| [x] 118 | `DELETE` | `/api/pty/{ptyID}` | `pty.remove` | Keep | PTY endpoints reviewed together and retained. |","| [x] 119 | `POST` | `/api/pty/{ptyID}/connect-token` | `pty.connect.token` | Keep | PTY endpoints reviewed together and retained. |","| [x] 120 | `GET` | `/api/pty/{ptyID}/connect` | `pty.connect` | Keep | PTY endpoints reviewed together and retained. |","| [x] 121 | `GET` | `/api/experimental/session/{sessionID}/terminal/read` | `server.experimental.persistentPty.read` | Experimental-only | Retained outside the stable API commitment. |","| [x] 122 | `GET` | `/api/experimental/session/{sessionID}/terminal` | `server.experimental.persistentPty.list` | Experimental-only | Retained outside the stable API commitment. |","| [x] 123 | `POST` | `/api/experimental/session/{sessionID}/terminal` | `server.experimental.persistentPty.create` | Experimental-only | Retained outside the stable API commitment. |","| [x] 124 | `POST` | `/api/experimental/persistent-pty/shutdown` | `server.experimental.persistentPty.shutdown` | Experimental-only | Retained outside the stable API commitment. |","| [x] 125 | `POST` | `/api/experimental/persistent-pty/handoff` | `server.experimental.persistentPty.handoff` | Experimental-only | Retained outside the stable API commitment. |","| [x] 126 | `GET` | `/api/experimental/persistent-pty/{ptyID}` | `server.experimental.persistentPty.get` | Experimental-only | Retained outside the stable API commitment. |","| [x] 127 | `PUT` | `/api/experimental/persistent-pty/{ptyID}` | `server.experimental.persistentPty.update` | Experimental-only | Retained outside the stable API commitment. |","| [x] 128 | `DELETE` | `/api/experimental/persistent-pty/{ptyID}` | `server.experimental.persistentPty.remove` | Experimental-only | Retained outside the stable API commitment. |","| [x] 129 | `GET` | `/api/experimental/persistent-pty/{ptyID}/snapshot` | `server.experimental.persistentPty.snapshot` | Experimental-only | Retained outside the stable API commitment. |","| [x] 130 | `POST` | `/api/experimental/persistent-pty/{ptyID}/connect-token` | `server.experimental.persistentPty.connectToken` | Experimental-only | Retained outside the stable API commitment. |","| [x] 131 | `GET` | `/api/experimental/persistent-pty/{ptyID}/connect` | `persistentPty.connect` | Experimental-only | Retained outside the stable API commitment. |","| [x] 132 | `GET` | `/api/shell` | `shell.list` | Change | Stable shell inventory retained; numeric timestamps documented as epoch milliseconds. |","| [x] 133 | `POST` | `/api/shell` | `shell.create` | Change | Timeout is optional and defaults to zero; caller metadata retained. |","| [x] 134 | `GET` | `/api/shell/{id}` | `shell.get` | Keep | Specific running or retained shell read retained. |","| [x] 135 | `DELETE` | `/api/shell/{id}` | `shell.remove` | Change | Shell deletion is idempotent and returns `204` when already absent. |","| [x] 136 | — | — | — | Remove | Timeout mutation remains an internal Core shell operation. |","| [x] 137 | `GET` | `/api/shell/{id}/output` | `shell.output` | Keep | Existing byte-cursor text output paging retained. |","","## Group 10: Events, RPC, and experimental operations","","**Endpoints:** 6","","| Done | Method | Path | Operation ID | Decision | Notes |","|---|---|---|---|---|---|","| [x] 138 | `POST` | `/api/experimental/generate` | `experimental.generate.text` | Experimental-only | Stateless generation retained alongside session generation. |","| [x] 139 | `POST` | `/api/rpc/{rpcID}/{method}` | `rpc.call` | Keep | Generic typed-error plugin RPC transport retained. |","| [x] 140 | `GET` | `/api/event` | `event.subscribe` | Keep | Unified native and dynamic plugin event stream retained. |","| [x] 141 | `GET` | `/api/debug/location` | `debug.location.list` | Keep | Loaded-location debug inventory retained. |","| [x] 142 | `DELETE` | `/api/debug/location` | `debug.location.evict` | Keep | Idempotent loaded-location eviction retained. |","| [x] 143 | `GET` | `/api/experimental/migration/v1` | `experimental.migration.v1.status` | Experimental-only | Retained outside the stable API commitment. |"],"stylingDirectives":[[[0,29,"pl-mh"],[2,29,"pl-en"]],[],[[0,2,"pl-s"],[9,11,"pl-s"],[12,13,"pl-s"],[13,43,"pl-c1"],[43,44,"pl-s"]],[[0,2,"pl-s"],[25,27,"pl-s"]],[[0,2,"pl-s"],[19,21,"pl-s"]],[],[[0,28,"pl-mh"],[3,28,"pl-en"]],[],[[133,135,"pl-s"],[143,145,"pl-s"]],[],[[0,19,"pl-mh"],[4,19,"pl-en"]],[],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[[0,1,"pl-v"]],[],[[0,22,"pl-mh"],[4,22,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[9,11,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[11,13,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[11,13,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[22,24,"pl-s"]],[],[[0,11,"pl-mh"],[3,11,"pl-en"]],[],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[[0,1,"pl-v"],[2,5,"pl-k"]],[],[[0,24,"pl-mh"],[3,24,"pl-en"]],[],[[0,43,"pl-mh"],[4,43,"pl-en"],[4,5,"pl-s"],[6,7,"pl-s"],[8,9,"pl-s"],[9,42,"pl-c1"],[42,43,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"]],[],[[0,34,"pl-mh"],[4,34,"pl-en"],[4,5,"pl-s"],[6,7,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"],[62,63,"pl-s"],[63,76,"pl-c1"],[76,77,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"],[58,59,"pl-s"],[59,76,"pl-c1"],[76,77,"pl-s"]],[],[[0,47,"pl-mh"],[4,47,"pl-en"],[4,5,"pl-s"],[6,7,"pl-s"],[8,9,"pl-s"],[9,24,"pl-c1"],[24,25,"pl-s"],[30,31,"pl-s"],[31,46,"pl-c1"],[46,47,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[16,18,"pl-s"],[19,20,"pl-s"],[20,33,"pl-c1"],[33,34,"pl-s"],[53,54,"pl-s"],[54,65,"pl-c1"],[65,66,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"],[21,22,"pl-s"],[22,29,"pl-c1"],[29,30,"pl-s"],[32,33,"pl-s"],[33,36,"pl-c1"],[36,37,"pl-s"],[54,55,"pl-s"],[55,59,"pl-c1"],[59,60,"pl-s"]],[],[[0,34,"pl-mh"],[4,34,"pl-en"],[4,5,"pl-s"],[6,7,"pl-s"],[8,9,"pl-s"],[9,33,"pl-c1"],[33,34,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[16,18,"pl-s"],[19,20,"pl-s"],[20,37,"pl-c1"],[37,38,"pl-s"],[46,47,"pl-s"],[47,54,"pl-c1"],[54,55,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"],[37,38,"pl-s"],[38,59,"pl-c1"],[59,60,"pl-s"]],[],[[0,71,"pl-mh"],[4,71,"pl-en"],[4,5,"pl-s"],[6,7,"pl-s"],[8,9,"pl-s"],[9,28,"pl-c1"],[28,29,"pl-s"],[34,35,"pl-s"],[35,70,"pl-c1"],[70,71,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"]],[],[[0,36,"pl-mh"],[3,36,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[14,15,"pl-ml"],[16,17,"pl-s"],[17,20,"pl-c1"],[20,21,"pl-s"],[22,23,"pl-ml"],[24,25,"pl-s"],[25,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[59,60,"pl-ml"],[110,111,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[60,61,"pl-ml"],[141,142,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,33,"pl-c1"],[33,34,"pl-s"],[35,36,"pl-ml"],[37,38,"pl-s"],[38,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[59,60,"pl-ml"],[76,77,"pl-s"],[77,93,"pl-c1"],[93,94,"pl-s"],[144,145,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,18,"pl-c1"],[18,19,"pl-s"],[20,21,"pl-ml"],[22,23,"pl-s"],[23,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[51,52,"pl-s"],[52,66,"pl-c1"],[66,67,"pl-s"],[68,69,"pl-ml"],[75,76,"pl-ml"],[114,115,"pl-ml"]],[],[[0,49,"pl-mh"],[3,49,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,31,"pl-c1"],[31,32,"pl-s"],[33,34,"pl-ml"],[35,36,"pl-s"],[36,46,"pl-c1"],[46,47,"pl-s"],[48,49,"pl-ml"],[55,56,"pl-ml"],[94,95,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,41,"pl-c1"],[41,42,"pl-s"],[43,44,"pl-ml"],[45,46,"pl-s"],[46,55,"pl-c1"],[55,56,"pl-s"],[57,58,"pl-ml"],[64,65,"pl-ml"],[121,122,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,32,"pl-c1"],[32,33,"pl-s"],[34,35,"pl-ml"],[36,37,"pl-s"],[37,48,"pl-c1"],[48,49,"pl-s"],[50,51,"pl-ml"],[57,58,"pl-ml"],[96,97,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,39,"pl-c1"],[39,40,"pl-s"],[41,42,"pl-ml"],[43,44,"pl-s"],[44,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[65,66,"pl-ml"],[104,105,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,40,"pl-c1"],[40,41,"pl-s"],[42,43,"pl-ml"],[44,45,"pl-s"],[45,58,"pl-c1"],[58,59,"pl-s"],[60,61,"pl-ml"],[67,68,"pl-ml"],[104,105,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,31,"pl-c1"],[31,32,"pl-s"],[33,34,"pl-ml"],[35,36,"pl-s"],[36,46,"pl-c1"],[46,47,"pl-s"],[48,49,"pl-ml"],[55,56,"pl-ml"],[94,95,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,39,"pl-c1"],[39,40,"pl-s"],[41,42,"pl-ml"],[43,44,"pl-s"],[44,57,"pl-c1"],[57,58,"pl-s"],[59,60,"pl-ml"],[66,67,"pl-ml"],[114,115,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[61,62,"pl-ml"],[100,101,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[51,52,"pl-s"],[52,64,"pl-c1"],[64,65,"pl-s"],[66,67,"pl-ml"],[73,74,"pl-ml"],[130,131,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,33,"pl-c1"],[33,34,"pl-s"],[35,36,"pl-ml"],[37,38,"pl-s"],[38,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[59,60,"pl-ml"],[98,99,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,31,"pl-c1"],[31,32,"pl-s"],[33,34,"pl-ml"],[35,36,"pl-s"],[36,46,"pl-c1"],[46,47,"pl-s"],[48,49,"pl-ml"],[55,56,"pl-ml"],[65,66,"pl-s"],[66,74,"pl-c1"],[74,75,"pl-s"],[79,80,"pl-s"],[80,84,"pl-c1"],[84,85,"pl-s"],[114,115,"pl-s"],[115,120,"pl-c1"],[120,121,"pl-s"],[155,156,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,35,"pl-c1"],[35,36,"pl-s"],[37,38,"pl-ml"],[39,40,"pl-s"],[40,54,"pl-c1"],[54,55,"pl-s"],[56,57,"pl-ml"],[63,64,"pl-ml"],[83,84,"pl-s"],[84,95,"pl-c1"],[95,96,"pl-s"],[101,102,"pl-s"],[102,108,"pl-c1"],[108,109,"pl-s"],[129,130,"pl-s"],[130,136,"pl-c1"],[136,137,"pl-s"],[139,140,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,32,"pl-c1"],[32,33,"pl-s"],[34,35,"pl-ml"],[36,37,"pl-s"],[37,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[56,57,"pl-ml"],[152,153,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,44,"pl-c1"],[44,45,"pl-s"],[46,47,"pl-ml"],[48,49,"pl-s"],[49,67,"pl-c1"],[67,68,"pl-s"],[69,70,"pl-ml"],[78,79,"pl-ml"],[127,128,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,18,"pl-c1"],[18,19,"pl-s"],[20,21,"pl-ml"],[22,23,"pl-s"],[23,46,"pl-c1"],[46,47,"pl-s"],[48,49,"pl-ml"],[50,51,"pl-s"],[51,75,"pl-c1"],[75,76,"pl-s"],[77,78,"pl-ml"],[86,87,"pl-ml"],[134,135,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,38,"pl-c1"],[38,39,"pl-s"],[40,41,"pl-ml"],[42,43,"pl-s"],[43,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[65,66,"pl-ml"],[114,115,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[11,12,"pl-ml"],[13,14,"pl-s"],[14,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,48,"pl-c1"],[48,49,"pl-s"],[50,51,"pl-ml"],[52,53,"pl-s"],[53,79,"pl-c1"],[79,80,"pl-s"],[81,82,"pl-ml"],[90,91,"pl-ml"],[152,153,"pl-s"],[153,158,"pl-c1"],[158,159,"pl-s"],[161,162,"pl-ml"]],[],[[0,58,"pl-mh"],[3,58,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,37,"pl-c1"],[37,38,"pl-s"],[39,40,"pl-ml"],[41,42,"pl-s"],[42,58,"pl-c1"],[58,59,"pl-s"],[60,61,"pl-ml"],[67,68,"pl-ml"],[161,162,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,53,"pl-c1"],[53,54,"pl-s"],[55,56,"pl-ml"],[57,58,"pl-s"],[58,73,"pl-c1"],[73,74,"pl-s"],[75,76,"pl-ml"],[84,85,"pl-ml"],[124,125,"pl-s"],[125,128,"pl-c1"],[128,129,"pl-s"],[156,157,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,61,"pl-c1"],[61,62,"pl-s"],[63,64,"pl-ml"],[65,66,"pl-s"],[66,104,"pl-c1"],[104,105,"pl-s"],[106,107,"pl-ml"],[126,127,"pl-ml"],[172,173,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,66,"pl-c1"],[66,67,"pl-s"],[68,69,"pl-ml"],[70,71,"pl-s"],[71,94,"pl-c1"],[94,95,"pl-s"],[96,97,"pl-ml"],[105,106,"pl-ml"],[141,142,"pl-s"],[142,145,"pl-c1"],[145,146,"pl-s"],[175,176,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[72,73,"pl-s"],[73,98,"pl-c1"],[98,99,"pl-s"],[100,101,"pl-ml"],[107,108,"pl-ml"],[151,152,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,79,"pl-c1"],[79,80,"pl-s"],[81,82,"pl-ml"],[83,84,"pl-s"],[84,108,"pl-c1"],[108,109,"pl-s"],[110,111,"pl-ml"],[119,120,"pl-ml"],[172,173,"pl-s"],[173,176,"pl-c1"],[176,177,"pl-s"],[179,180,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,82,"pl-c1"],[82,83,"pl-s"],[84,85,"pl-ml"],[86,87,"pl-s"],[87,111,"pl-c1"],[111,112,"pl-s"],[113,114,"pl-ml"],[120,121,"pl-ml"],[200,201,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,89,"pl-c1"],[89,90,"pl-s"],[91,92,"pl-ml"],[93,94,"pl-s"],[94,120,"pl-c1"],[120,121,"pl-s"],[122,123,"pl-ml"],[131,132,"pl-ml"],[184,185,"pl-s"],[185,188,"pl-c1"],[188,189,"pl-s"],[220,221,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,70,"pl-c1"],[70,71,"pl-s"],[72,73,"pl-ml"],[74,75,"pl-s"],[75,102,"pl-c1"],[102,103,"pl-s"],[104,105,"pl-ml"],[113,114,"pl-ml"],[167,168,"pl-s"],[168,171,"pl-c1"],[171,172,"pl-s"],[174,175,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,81,"pl-c1"],[81,82,"pl-s"],[83,84,"pl-ml"],[85,86,"pl-s"],[86,112,"pl-c1"],[112,113,"pl-s"],[114,115,"pl-ml"],[123,124,"pl-ml"],[178,179,"pl-s"],[179,182,"pl-c1"],[182,183,"pl-s"],[185,186,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,84,"pl-c1"],[84,85,"pl-s"],[86,87,"pl-ml"],[88,89,"pl-s"],[89,115,"pl-c1"],[115,116,"pl-s"],[117,118,"pl-ml"],[124,125,"pl-ml"],[204,205,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,29,"pl-c1"],[29,30,"pl-s"],[31,32,"pl-ml"],[33,34,"pl-s"],[34,42,"pl-c1"],[42,43,"pl-s"],[44,45,"pl-ml"],[51,52,"pl-ml"],[99,100,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,76,"pl-c1"],[76,77,"pl-s"],[78,79,"pl-ml"],[98,99,"pl-ml"],[159,160,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,54,"pl-c1"],[54,55,"pl-s"],[56,57,"pl-ml"],[58,59,"pl-s"],[59,82,"pl-c1"],[82,83,"pl-s"],[84,85,"pl-ml"],[104,105,"pl-ml"],[155,156,"pl-s"],[156,159,"pl-c1"],[159,160,"pl-s"],[162,163,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,60,"pl-c1"],[60,61,"pl-s"],[62,63,"pl-ml"],[64,65,"pl-s"],[65,89,"pl-c1"],[89,90,"pl-s"],[91,92,"pl-ml"],[111,112,"pl-ml"],[174,175,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,63,"pl-c1"],[63,64,"pl-s"],[65,66,"pl-ml"],[67,68,"pl-s"],[68,95,"pl-c1"],[95,96,"pl-s"],[97,98,"pl-ml"],[117,118,"pl-ml"],[183,184,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,38,"pl-c1"],[38,39,"pl-s"],[40,41,"pl-ml"],[42,43,"pl-s"],[43,63,"pl-c1"],[63,64,"pl-s"],[65,66,"pl-ml"],[72,73,"pl-ml"],[107,108,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,18,"pl-c1"],[18,19,"pl-s"],[20,21,"pl-ml"],[22,23,"pl-s"],[23,53,"pl-c1"],[53,54,"pl-s"],[55,56,"pl-ml"],[57,58,"pl-s"],[58,75,"pl-c1"],[75,76,"pl-s"],[77,78,"pl-ml"],[86,87,"pl-ml"],[157,158,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,54,"pl-c1"],[54,55,"pl-s"],[56,57,"pl-ml"],[58,59,"pl-s"],[59,76,"pl-c1"],[76,77,"pl-s"],[78,79,"pl-ml"],[87,88,"pl-ml"],[158,159,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,61,"pl-c1"],[61,62,"pl-s"],[63,64,"pl-ml"],[65,66,"pl-s"],[66,85,"pl-c1"],[85,86,"pl-s"],[87,88,"pl-ml"],[96,97,"pl-ml"],[167,168,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,44,"pl-c1"],[44,45,"pl-s"],[46,47,"pl-ml"],[48,49,"pl-s"],[49,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[77,78,"pl-ml"],[159,160,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,36,"pl-c1"],[36,37,"pl-s"],[38,39,"pl-ml"],[40,41,"pl-s"],[41,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[65,66,"pl-ml"],[166,167,"pl-ml"]],[],[[0,29,"pl-mh"],[3,29,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,33,"pl-c1"],[33,34,"pl-s"],[35,36,"pl-ml"],[37,38,"pl-s"],[38,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[59,60,"pl-ml"],[129,130,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,53,"pl-c1"],[53,54,"pl-s"],[55,56,"pl-ml"],[62,63,"pl-ml"],[144,145,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[56,57,"pl-s"],[57,83,"pl-c1"],[83,84,"pl-s"],[85,86,"pl-ml"],[105,106,"pl-ml"],[169,170,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,40,"pl-c1"],[40,41,"pl-s"],[42,43,"pl-ml"],[44,45,"pl-s"],[45,59,"pl-c1"],[59,60,"pl-s"],[61,62,"pl-ml"],[68,69,"pl-ml"],[128,129,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,45,"pl-c1"],[45,46,"pl-s"],[47,48,"pl-ml"],[49,50,"pl-s"],[50,61,"pl-c1"],[61,62,"pl-s"],[63,64,"pl-ml"],[70,71,"pl-ml"],[104,105,"pl-s"],[105,108,"pl-c1"],[108,109,"pl-s"],[120,121,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,48,"pl-c1"],[48,49,"pl-s"],[50,51,"pl-ml"],[52,53,"pl-s"],[53,67,"pl-c1"],[67,68,"pl-s"],[69,70,"pl-ml"],[76,77,"pl-ml"],[116,117,"pl-s"],[117,120,"pl-c1"],[120,121,"pl-s"],[132,133,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[79,80,"pl-ml"],[118,119,"pl-s"],[119,125,"pl-c1"],[125,126,"pl-s"],[169,170,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[56,57,"pl-s"],[57,76,"pl-c1"],[76,77,"pl-s"],[78,79,"pl-ml"],[85,86,"pl-ml"],[134,135,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[56,57,"pl-s"],[57,76,"pl-c1"],[76,77,"pl-s"],[78,79,"pl-ml"],[85,86,"pl-ml"],[155,156,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,18,"pl-c1"],[18,19,"pl-s"],[20,21,"pl-ml"],[22,23,"pl-s"],[23,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[51,52,"pl-s"],[52,66,"pl-c1"],[66,67,"pl-s"],[68,69,"pl-ml"],[77,78,"pl-ml"],[143,144,"pl-s"],[144,163,"pl-c1"],[163,164,"pl-s"],[166,167,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[79,80,"pl-ml"],[157,158,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,57,"pl-c1"],[57,58,"pl-s"],[59,60,"pl-ml"],[61,62,"pl-s"],[62,80,"pl-c1"],[80,81,"pl-s"],[82,83,"pl-ml"],[89,90,"pl-ml"],[190,191,"pl-ml"]],[],[[0,40,"pl-mh"],[3,40,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,53,"pl-c1"],[53,54,"pl-s"],[55,56,"pl-ml"],[57,58,"pl-s"],[58,72,"pl-c1"],[72,73,"pl-s"],[74,75,"pl-ml"],[81,82,"pl-ml"],[157,158,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,54,"pl-c1"],[54,55,"pl-s"],[56,57,"pl-ml"],[58,59,"pl-s"],[59,74,"pl-c1"],[74,75,"pl-s"],[76,77,"pl-ml"],[85,86,"pl-ml"],[114,115,"pl-s"],[115,122,"pl-c1"],[122,123,"pl-s"],[127,128,"pl-s"],[128,132,"pl-c1"],[132,133,"pl-s"],[135,136,"pl-s"],[136,139,"pl-c1"],[139,140,"pl-s"],[151,152,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,65,"pl-c1"],[65,66,"pl-s"],[67,68,"pl-ml"],[69,70,"pl-s"],[70,96,"pl-c1"],[96,97,"pl-s"],[98,99,"pl-ml"],[118,119,"pl-ml"],[140,141,"pl-s"],[141,143,"pl-c1"],[143,144,"pl-s"],[196,197,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[60,61,"pl-s"],[61,78,"pl-c1"],[78,79,"pl-s"],[80,81,"pl-ml"],[87,88,"pl-ml"],[149,150,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[56,57,"pl-s"],[57,70,"pl-c1"],[70,71,"pl-s"],[72,73,"pl-ml"],[81,82,"pl-ml"],[162,163,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,54,"pl-c1"],[54,55,"pl-s"],[56,57,"pl-ml"],[58,59,"pl-s"],[59,74,"pl-c1"],[74,75,"pl-s"],[76,77,"pl-ml"],[83,84,"pl-ml"],[146,147,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,64,"pl-c1"],[64,65,"pl-s"],[66,67,"pl-ml"],[68,69,"pl-s"],[69,94,"pl-c1"],[94,95,"pl-s"],[96,97,"pl-ml"],[116,117,"pl-ml"],[174,175,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,55,"pl-c1"],[55,56,"pl-s"],[57,58,"pl-ml"],[59,60,"pl-s"],[60,76,"pl-c1"],[76,77,"pl-s"],[78,79,"pl-ml"],[85,86,"pl-ml"],[139,140,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[60,61,"pl-s"],[61,78,"pl-c1"],[78,79,"pl-s"],[80,81,"pl-ml"],[89,90,"pl-ml"],[99,100,"pl-s"],[100,108,"pl-c1"],[108,109,"pl-s"],[113,114,"pl-s"],[114,120,"pl-c1"],[120,121,"pl-s"],[168,169,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,57,"pl-c1"],[57,58,"pl-s"],[59,60,"pl-ml"],[61,62,"pl-s"],[62,81,"pl-c1"],[81,82,"pl-s"],[83,84,"pl-ml"],[90,91,"pl-ml"],[158,159,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[79,80,"pl-ml"],[154,155,"pl-ml"]],[],[[0,40,"pl-mh"],[3,40,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,54,"pl-c1"],[54,55,"pl-s"],[56,57,"pl-ml"],[58,59,"pl-s"],[59,86,"pl-c1"],[86,87,"pl-s"],[88,89,"pl-ml"],[108,109,"pl-ml"],[189,190,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,65,"pl-c1"],[65,66,"pl-s"],[67,68,"pl-ml"],[69,70,"pl-s"],[70,97,"pl-c1"],[97,98,"pl-s"],[99,100,"pl-ml"],[119,120,"pl-ml"],[200,201,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,59,"pl-c1"],[59,60,"pl-s"],[61,62,"pl-ml"],[63,64,"pl-s"],[64,84,"pl-c1"],[84,85,"pl-s"],[86,87,"pl-ml"],[93,94,"pl-ml"],[168,169,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,55,"pl-c1"],[55,56,"pl-s"],[57,58,"pl-ml"],[59,60,"pl-s"],[60,80,"pl-c1"],[80,81,"pl-s"],[82,83,"pl-ml"],[91,92,"pl-ml"],[157,158,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,60,"pl-c1"],[60,61,"pl-s"],[62,63,"pl-ml"],[64,65,"pl-s"],[65,86,"pl-c1"],[86,87,"pl-s"],[88,89,"pl-ml"],[95,96,"pl-ml"],[144,145,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,53,"pl-c1"],[53,54,"pl-s"],[55,56,"pl-ml"],[57,58,"pl-s"],[58,73,"pl-c1"],[73,74,"pl-s"],[75,76,"pl-ml"],[82,83,"pl-ml"],[126,127,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[54,55,"pl-s"],[55,67,"pl-c1"],[67,68,"pl-s"],[69,70,"pl-ml"],[76,77,"pl-ml"],[124,125,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,79,"pl-c1"],[79,80,"pl-s"],[81,82,"pl-ml"],[83,84,"pl-s"],[84,128,"pl-c1"],[128,129,"pl-s"],[130,131,"pl-ml"],[150,151,"pl-ml"],[221,222,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,85,"pl-c1"],[85,86,"pl-s"],[87,88,"pl-ml"],[89,90,"pl-s"],[90,133,"pl-c1"],[133,134,"pl-s"],[135,136,"pl-ml"],[155,156,"pl-ml"],[226,227,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,88,"pl-c1"],[88,89,"pl-s"],[90,91,"pl-ml"],[92,93,"pl-s"],[93,139,"pl-c1"],[139,140,"pl-s"],[141,142,"pl-ml"],[161,162,"pl-ml"],[232,233,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,62,"pl-c1"],[62,63,"pl-s"],[64,65,"pl-ml"],[66,67,"pl-s"],[67,78,"pl-c1"],[78,79,"pl-s"],[80,81,"pl-ml"],[100,101,"pl-ml"],[146,147,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,65,"pl-c1"],[65,66,"pl-s"],[67,68,"pl-ml"],[69,70,"pl-s"],[70,89,"pl-c1"],[89,90,"pl-s"],[91,92,"pl-ml"],[100,101,"pl-ml"],[144,145,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,53,"pl-c1"],[53,54,"pl-s"],[55,56,"pl-ml"],[57,58,"pl-s"],[58,78,"pl-c1"],[78,79,"pl-s"],[80,81,"pl-ml"],[89,90,"pl-ml"],[144,145,"pl-ml"]],[],[[0,41,"pl-mh"],[3,41,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,74,"pl-c1"],[74,75,"pl-s"],[76,77,"pl-ml"],[85,86,"pl-ml"],[132,133,"pl-s"],[133,145,"pl-c1"],[145,146,"pl-s"],[154,155,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,64,"pl-c1"],[64,65,"pl-s"],[66,67,"pl-ml"],[68,69,"pl-s"],[69,89,"pl-c1"],[89,90,"pl-s"],[91,92,"pl-ml"],[100,101,"pl-ml"],[141,142,"pl-s"],[142,145,"pl-c1"],[145,146,"pl-s"],[172,173,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,18,"pl-c1"],[18,19,"pl-s"],[20,21,"pl-ml"],[22,23,"pl-s"],[23,63,"pl-c1"],[63,64,"pl-s"],[65,66,"pl-ml"],[67,68,"pl-s"],[68,88,"pl-c1"],[88,89,"pl-s"],[90,91,"pl-ml"],[99,100,"pl-ml"],[156,157,"pl-ml"],[168,169,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[14,15,"pl-ml"],[18,19,"pl-ml"],[22,23,"pl-ml"],[31,32,"pl-ml"],[45,46,"pl-s"],[46,66,"pl-c1"],[66,67,"pl-s"],[69,70,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,30,"pl-c1"],[30,31,"pl-s"],[32,33,"pl-ml"],[34,35,"pl-s"],[35,44,"pl-c1"],[44,45,"pl-s"],[46,47,"pl-ml"],[55,56,"pl-ml"],[75,76,"pl-s"],[76,83,"pl-c1"],[83,84,"pl-s"],[115,116,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[54,55,"pl-s"],[55,72,"pl-c1"],[72,73,"pl-s"],[74,75,"pl-ml"],[81,82,"pl-ml"],[161,162,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,75,"pl-c1"],[75,76,"pl-s"],[77,78,"pl-ml"],[84,85,"pl-ml"],[156,157,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,59,"pl-c1"],[59,60,"pl-s"],[61,62,"pl-ml"],[63,64,"pl-s"],[64,80,"pl-c1"],[80,81,"pl-s"],[82,83,"pl-ml"],[91,92,"pl-ml"],[156,157,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[14,15,"pl-ml"],[18,19,"pl-ml"],[22,23,"pl-ml"],[31,32,"pl-ml"],[54,55,"pl-s"],[55,71,"pl-c1"],[71,72,"pl-s"],[74,75,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,66,"pl-c1"],[66,67,"pl-s"],[68,69,"pl-ml"],[70,71,"pl-s"],[71,89,"pl-c1"],[89,90,"pl-s"],[91,92,"pl-ml"],[98,99,"pl-ml"],[140,141,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,62,"pl-c1"],[62,63,"pl-s"],[64,65,"pl-ml"],[66,67,"pl-s"],[67,86,"pl-c1"],[86,87,"pl-s"],[88,89,"pl-ml"],[97,98,"pl-ml"],[156,157,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,44,"pl-c1"],[44,45,"pl-s"],[46,47,"pl-ml"],[48,49,"pl-s"],[49,72,"pl-c1"],[72,73,"pl-s"],[74,75,"pl-ml"],[81,82,"pl-ml"],[147,148,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,42,"pl-c1"],[42,43,"pl-s"],[44,45,"pl-ml"],[46,47,"pl-s"],[47,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[79,80,"pl-ml"],[134,135,"pl-s"],[135,139,"pl-c1"],[139,140,"pl-s"],[142,143,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[54,55,"pl-s"],[55,78,"pl-c1"],[78,79,"pl-s"],[80,81,"pl-ml"],[87,88,"pl-ml"],[136,137,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,57,"pl-c1"],[57,58,"pl-s"],[59,60,"pl-ml"],[61,62,"pl-s"],[62,87,"pl-c1"],[87,88,"pl-s"],[89,90,"pl-ml"],[96,97,"pl-ml"],[172,173,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[60,61,"pl-s"],[61,84,"pl-c1"],[84,85,"pl-s"],[86,87,"pl-ml"],[93,94,"pl-ml"],[137,138,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[72,73,"pl-s"],[73,95,"pl-c1"],[95,96,"pl-s"],[97,98,"pl-ml"],[104,105,"pl-ml"],[175,176,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,75,"pl-c1"],[75,76,"pl-s"],[77,78,"pl-ml"],[79,80,"pl-s"],[80,104,"pl-c1"],[104,105,"pl-s"],[106,107,"pl-ml"],[115,116,"pl-ml"],[144,145,"pl-s"],[145,150,"pl-c1"],[150,151,"pl-s"],[155,156,"pl-s"],[156,164,"pl-c1"],[164,165,"pl-s"],[167,168,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[14,15,"pl-ml"],[18,19,"pl-ml"],[22,23,"pl-ml"],[31,32,"pl-ml"],[70,71,"pl-s"],[71,85,"pl-c1"],[85,86,"pl-s"],[88,89,"pl-ml"]],[],[[0,42,"pl-mh"],[3,42,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,35,"pl-c1"],[35,36,"pl-s"],[37,38,"pl-ml"],[39,40,"pl-s"],[40,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[56,57,"pl-ml"],[120,121,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,33,"pl-c1"],[33,34,"pl-s"],[35,36,"pl-ml"],[37,38,"pl-s"],[38,45,"pl-c1"],[45,46,"pl-s"],[47,48,"pl-ml"],[54,55,"pl-ml"],[113,114,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,33,"pl-c1"],[33,34,"pl-s"],[35,36,"pl-ml"],[37,38,"pl-s"],[38,45,"pl-c1"],[45,46,"pl-s"],[47,48,"pl-ml"],[54,55,"pl-ml"],[100,101,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[61,62,"pl-ml"],[96,97,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,35,"pl-c1"],[35,36,"pl-s"],[37,38,"pl-ml"],[39,40,"pl-s"],[40,55,"pl-c1"],[55,56,"pl-s"],[57,58,"pl-ml"],[64,65,"pl-ml"],[99,100,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,37,"pl-c1"],[37,38,"pl-s"],[39,40,"pl-ml"],[41,42,"pl-s"],[42,57,"pl-c1"],[57,58,"pl-s"],[59,60,"pl-ml"],[66,67,"pl-ml"],[101,102,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,43,"pl-c1"],[43,44,"pl-s"],[45,46,"pl-ml"],[47,48,"pl-s"],[48,64,"pl-c1"],[64,65,"pl-s"],[66,67,"pl-ml"],[73,74,"pl-ml"],[108,109,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,29,"pl-c1"],[29,30,"pl-s"],[31,32,"pl-ml"],[33,34,"pl-s"],[34,41,"pl-c1"],[41,42,"pl-s"],[43,44,"pl-ml"],[52,53,"pl-ml"],[115,116,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[56,57,"pl-ml"],[121,122,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,36,"pl-c1"],[36,37,"pl-s"],[38,39,"pl-ml"],[40,41,"pl-s"],[41,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[60,61,"pl-ml"],[115,116,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,36,"pl-c1"],[36,37,"pl-s"],[38,39,"pl-ml"],[40,41,"pl-s"],[41,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[67,68,"pl-ml"],[123,124,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,34,"pl-c1"],[34,35,"pl-s"],[36,37,"pl-ml"],[38,39,"pl-s"],[39,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[56,57,"pl-ml"],[125,126,"pl-ml"]],[],[[0,50,"pl-mh"],[3,50,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,29,"pl-c1"],[29,30,"pl-s"],[31,32,"pl-ml"],[33,34,"pl-s"],[34,42,"pl-c1"],[42,43,"pl-s"],[44,45,"pl-ml"],[51,52,"pl-ml"],[99,100,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,30,"pl-c1"],[30,31,"pl-s"],[32,33,"pl-ml"],[34,35,"pl-s"],[35,45,"pl-c1"],[45,46,"pl-s"],[47,48,"pl-ml"],[54,55,"pl-ml"],[102,103,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,37,"pl-c1"],[37,38,"pl-s"],[39,40,"pl-ml"],[41,42,"pl-s"],[42,49,"pl-c1"],[49,50,"pl-s"],[51,52,"pl-ml"],[58,59,"pl-ml"],[106,107,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,37,"pl-c1"],[37,38,"pl-s"],[39,40,"pl-ml"],[41,42,"pl-s"],[42,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[61,62,"pl-ml"],[109,110,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,40,"pl-c1"],[40,41,"pl-s"],[42,43,"pl-ml"],[44,45,"pl-s"],[45,55,"pl-c1"],[55,56,"pl-s"],[57,58,"pl-ml"],[64,65,"pl-ml"],[112,113,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,52,"pl-c1"],[52,53,"pl-s"],[54,55,"pl-ml"],[56,57,"pl-s"],[57,74,"pl-c1"],[74,75,"pl-s"],[76,77,"pl-ml"],[83,84,"pl-ml"],[131,132,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,45,"pl-c1"],[45,46,"pl-s"],[47,48,"pl-ml"],[49,50,"pl-s"],[50,61,"pl-c1"],[61,62,"pl-s"],[63,64,"pl-ml"],[70,71,"pl-ml"],[118,119,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,72,"pl-c1"],[72,73,"pl-s"],[74,75,"pl-ml"],[76,77,"pl-s"],[77,115,"pl-c1"],[115,116,"pl-s"],[117,118,"pl-ml"],[137,138,"pl-ml"],[183,184,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,67,"pl-c1"],[67,68,"pl-s"],[69,70,"pl-ml"],[71,72,"pl-s"],[72,110,"pl-c1"],[110,111,"pl-s"],[112,113,"pl-ml"],[132,133,"pl-ml"],[178,179,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[72,73,"pl-s"],[73,113,"pl-c1"],[113,114,"pl-s"],[115,116,"pl-ml"],[135,136,"pl-ml"],[181,182,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,63,"pl-c1"],[63,64,"pl-s"],[65,66,"pl-ml"],[67,68,"pl-s"],[68,110,"pl-c1"],[110,111,"pl-s"],[112,113,"pl-ml"],[132,133,"pl-ml"],[178,179,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,62,"pl-c1"],[62,63,"pl-s"],[64,65,"pl-ml"],[66,67,"pl-s"],[67,108,"pl-c1"],[108,109,"pl-s"],[110,111,"pl-ml"],[130,131,"pl-ml"],[176,177,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,61,"pl-c1"],[61,62,"pl-s"],[63,64,"pl-ml"],[65,66,"pl-s"],[66,103,"pl-c1"],[103,104,"pl-s"],[105,106,"pl-ml"],[125,126,"pl-ml"],[171,172,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,61,"pl-c1"],[61,62,"pl-s"],[63,64,"pl-ml"],[65,66,"pl-s"],[66,106,"pl-c1"],[106,107,"pl-s"],[108,109,"pl-ml"],[128,129,"pl-ml"],[174,175,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,64,"pl-c1"],[64,65,"pl-s"],[66,67,"pl-ml"],[68,69,"pl-s"],[69,109,"pl-c1"],[109,110,"pl-s"],[111,112,"pl-ml"],[131,132,"pl-ml"],[177,178,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,70,"pl-c1"],[70,71,"pl-s"],[72,73,"pl-ml"],[74,75,"pl-s"],[75,117,"pl-c1"],[117,118,"pl-s"],[119,120,"pl-ml"],[139,140,"pl-ml"],[185,186,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,76,"pl-c1"],[76,77,"pl-s"],[78,79,"pl-ml"],[80,81,"pl-s"],[81,127,"pl-c1"],[127,128,"pl-s"],[129,130,"pl-ml"],[149,150,"pl-ml"],[195,196,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,69,"pl-c1"],[69,70,"pl-s"],[71,72,"pl-ml"],[73,74,"pl-s"],[74,95,"pl-c1"],[95,96,"pl-s"],[97,98,"pl-ml"],[117,118,"pl-ml"],[163,164,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,31,"pl-c1"],[31,32,"pl-s"],[33,34,"pl-ml"],[35,36,"pl-s"],[36,46,"pl-c1"],[46,47,"pl-s"],[48,49,"pl-ml"],[57,58,"pl-ml"],[145,146,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,32,"pl-c1"],[32,33,"pl-s"],[34,35,"pl-ml"],[36,37,"pl-s"],[37,49,"pl-c1"],[49,50,"pl-s"],[51,52,"pl-ml"],[60,61,"pl-ml"],[130,131,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,36,"pl-c1"],[36,37,"pl-s"],[38,39,"pl-ml"],[40,41,"pl-s"],[41,50,"pl-c1"],[50,51,"pl-s"],[52,53,"pl-ml"],[59,60,"pl-ml"],[111,112,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,39,"pl-c1"],[39,40,"pl-s"],[41,42,"pl-ml"],[43,44,"pl-s"],[44,56,"pl-c1"],[56,57,"pl-s"],[58,59,"pl-ml"],[67,68,"pl-ml"],[110,111,"pl-s"],[111,114,"pl-c1"],[114,115,"pl-s"],[137,138,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[14,15,"pl-ml"],[18,19,"pl-ml"],[22,23,"pl-ml"],[31,32,"pl-ml"],[92,93,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,43,"pl-c1"],[43,44,"pl-s"],[45,46,"pl-ml"],[47,48,"pl-s"],[48,60,"pl-c1"],[60,61,"pl-s"],[62,63,"pl-ml"],[69,70,"pl-ml"],[121,122,"pl-ml"]],[],[[0,53,"pl-mh"],[3,53,"pl-en"]],[],[[0,2,"pl-s"],[12,14,"pl-s"]],[],[[0,1,"pl-ml"],[7,8,"pl-ml"],[16,17,"pl-ml"],[23,24,"pl-ml"],[38,39,"pl-ml"],[49,50,"pl-ml"],[57,58,"pl-ml"]],[[0,1,"pl-ml"],[4,5,"pl-ml"],[8,9,"pl-ml"],[12,13,"pl-ml"],[16,17,"pl-ml"],[20,21,"pl-ml"],[24,25,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,48,"pl-c1"],[48,49,"pl-s"],[50,51,"pl-ml"],[52,53,"pl-s"],[53,79,"pl-c1"],[79,80,"pl-s"],[81,82,"pl-ml"],[101,102,"pl-ml"],[163,164,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,17,"pl-c1"],[17,18,"pl-s"],[19,20,"pl-ml"],[21,22,"pl-s"],[22,47,"pl-c1"],[47,48,"pl-s"],[49,50,"pl-ml"],[51,52,"pl-s"],[52,60,"pl-c1"],[60,61,"pl-s"],[62,63,"pl-ml"],[69,70,"pl-ml"],[122,123,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,31,"pl-c1"],[31,32,"pl-s"],[33,34,"pl-ml"],[35,36,"pl-s"],[36,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[60,61,"pl-ml"],[119,120,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,40,"pl-c1"],[40,41,"pl-s"],[42,43,"pl-ml"],[44,45,"pl-s"],[45,64,"pl-c1"],[64,65,"pl-s"],[66,67,"pl-ml"],[73,74,"pl-ml"],[117,118,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,19,"pl-c1"],[19,20,"pl-s"],[21,22,"pl-ml"],[23,24,"pl-s"],[24,43,"pl-c1"],[43,44,"pl-s"],[45,46,"pl-ml"],[47,48,"pl-s"],[48,68,"pl-c1"],[68,69,"pl-s"],[70,71,"pl-ml"],[77,78,"pl-ml"],[125,126,"pl-ml"]],[[0,1,"pl-ml"],[2,3,"pl-s"],[4,5,"pl-s"],[10,11,"pl-ml"],[12,13,"pl-s"],[13,16,"pl-c1"],[16,17,"pl-s"],[18,19,"pl-ml"],[20,21,"pl-s"],[21,51,"pl-c1"],[51,52,"pl-s"],[53,54,"pl-ml"],[55,56,"pl-s"],[56,88,"pl-c1"],[88,89,"pl-s"],[90,91,"pl-ml"],[110,111,"pl-ml"],[156,157,"pl-ml"]]],"colorizedLines":null}},"title":"opencode/V2_HTTP_API_AUDIT.md at v2 · anomalyco/opencode","appPayload":{},"meta":{"title":"opencode/V2_HTTP_API_AUDIT.md at v2 · anomalyco/opencode"}}</script>
  <div data-target="react-app.reactRoot"><meta name="github-code-view-meta-stats" id="github-code-view-meta-stats" data-hydrostats="publish"/> <!-- --> <a hidden="" id="code-view-repo-link" href="/anomalyco/opencode" data-discover="true"></a> <div class="d-none"></div><div><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d" data-component="SplitPageLayout" data-has-sidebar="true"><div class="prc-PageLayout-SidebarWrapper-kLG4B CopilotSidePanelSidebar-module__SidePanel__L3O0C CopilotSidePanelSidebar-module__HiddenSidePanel__TBRGn" style="--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="end" data-sticky="true" data-responsive-variant="fullscreen"><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-SidebarVerticalDivider-0Rl0V" data-component="PageLayout.VerticalDivider" data-variant="line" data-position="end" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="450" aria-valuemax="768" aria-valuenow="544" aria-valuetext="Pane width 544 pixels" tabindex="0"></div></div><div class="prc-PageLayout-Sidebar-iciWg" data-component="SplitPageLayout.Sidebar" data-resizable="true" style="--spacing:var(--spacing-normal);--pane-min-width:450px;--pane-max-width:768px;--pane-width-custom:544px;--pane-width-size:var(--pane-width-custom);--pane-width:544px"><div class="height-full" data-testid="copilot-code-view-side-panel"><div id="copilot-side-panel-content" class="height-full"></div></div></div></div><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><div class="prc-PageLayout-PageLayoutContent-BneH9"><div id="repos-file-tree-sidebar" class="CodeViewFileTreeLayout-module__sidebar__n_Aau" tabindex="0"><div class="prc-PageLayout-PaneWrapper-pHPop ReposFileTreePane-module__Pane__rBZpI ReposFileTreePane-module__HideTree__AYZnm ReposFileTreePane-module__HidePane__VHAVt" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="start" data-sticky="true"><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-PaneHorizontalDivider-9tbnE" data-component="PageLayout.HorizontalDivider" data-variant-regular="none" data-variant-narrow="none" data-position="start" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="prc-PageLayout-Pane-AyzHK" data-component="SplitPageLayout.Pane" data-resizable="true" style="--spacing:var(--spacing-none);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"></div><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-PaneVerticalDivider-le57g" data-component="PageLayout.VerticalDivider" data-variant-narrow="none" data-variant-regular="line" data-variant-wide="line" data-position="start" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="256" aria-valuemax="600" aria-valuenow="320" aria-valuetext="Pane width 320 pixels" tabindex="0"></div></div></div></div><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG"><div class="prc-PageLayout-Content-xWL-A" data-width="full" style="--spacing:var(--spacing-none)"><div class="SharedPageLayout-module__content__IwGAp" data-selector="repos-split-pane-content" id="repos-split-pane-content" tabindex="0"> <!-- --> <div class="container CodeViewHeader-module__Box__JkPOb"><div class="CodeViewHeader-module__StickyHeader__Qn7UN" id="StickyHeader"><div class="CodeViewHeader-module__Box_1__SbNDV"><div class="CodeViewHeader-module__Box_2__TB46f"><div class="react-code-view-header-wrap--narrow CodeViewHeader-module__Box_3__q1zUL"><div class="CodeViewHeader-module__treeToggleWrapper__RQ__9"><h2 class="use-tree-pane-module__Heading__s4QbZ prc-Heading-Heading-MtWFE" data-component="Heading"><button data-component="Button" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="prc-Button-ButtonBase-9n-Xk ExpandFileTreeButton-module__Button_1__Svs95" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Files</span></span></button><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-controls="repos-file-tree" class="prc-Button-ButtonBase-9n-Xk position-relative ExpandFileTreeButton-module__expandButton__hDOcv ExpandFileTreeButton-module__filesButtonBreakpoint__zEvz3 fgColor-muted prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-labelledby="_R_4lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"></path><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25ZM11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="se" data-component="Tooltip" aria-hidden="true" id="_R_4lla9lik5_">Expand file tree</span><div class="d-none"></div></h2></div><div class="react-code-view-header-mb--narrow mr-2"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="v2 branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector-wide"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">v2</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="react-code-view-header-mb--narrow CodeViewHeader-module__Box_5__MQ0hL"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__lg__Rjz0A"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/anomalyco/opencode/tree/v2" data-discover="true">opencode</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__lg__Rjz0A" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__lg__Rjz0A prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="file-name-id">V2_HTTP_API_AUDIT.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lla9lik5_">Copy path</span></div></div></div><div class="react-code-view-header-element--wide"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><div><div class="CodeViewHeader-module__FileResultsList__JDzUy"><span class="d-flex FileResultsList-module__FilesSearchBox__ivVkc TextInput-wrapper prc-components-TextInputWrapper-Hpdqi prc-components-TextInputBaseWrapper-wY-n0" data-no-trailing-action="true" data-component="TextInput" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id="_R_1cpla9lik5_" aria-hidden="true" data-component="TextInput.LeadingVisual"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellCheck="false" placeholder="Go to file" aria-describedby="_R_1cpla9lik5_ _R_1cpla9lik5H1_" data-component="input" class="prc-components-Input-IwWrt" value=""/><span class="TextInput-icon" id="_R_1cpla9lik5H1_" aria-hidden="true" data-component="TextInput.TrailingVisual"></span></span></div><div class="d-none"></div></div><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-wide" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_7p9la9lik5_" id="_R_99la9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_7p9la9lik5_">More file actions</span></div></div></div><div class="react-code-view-header-element--narrow"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-narrow" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_7pdla9lik5_" id="_R_9dla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_7pdla9lik5_">More file actions</span></div></div></div></div></div></div></div><div class="CodeView-module__contentWrapper__cG2JH"><div class="react-code-view-bottom-padding"><div class="BlobTopBanners-module__Box__v_nvx"></div></div> <div class="d-none"></div><div class="d-flex flex-column border rounded-2 tmp-mb-3 pl-1"><div class="LatestCommit-module__Box__B25ZT"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">History</h2><a data-component="LinkButton" href="/anomalyco/opencode/commits/v2/V2_HTTP_API_AUDIT.md" class="prc-Button-ButtonBase-9n-Xk d-none d-lg-flex LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><span class="fgColor-default">History</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><a data-component="LinkButton" aria-label="View commit history for this file." href="/anomalyco/opencode/commits/v2/V2_HTTP_API_AUDIT.md" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby="_R_4mlala9lik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" role="tooltip" aria-hidden="true" id="_R_4mlala9lik5_">History</span></div></div></div></div></div><div class="d-flex flex-row"><div class="container BlobViewContent-module__blobContainer__DtH2d"><div class="react-code-size-details-banner BlobViewContent-module__codeSizeDetails__e5sUw"><div class="react-code-size-details-banner CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="24.2 KB" style="--truncate-max-width:100%"><span>279 lines (229 loc) · 24.2 KB</span></div></div></div></div><div class="react-blob-view-header-sticky BlobViewContent-module__stickyHeader__VwxB5" id="repos-sticky-header"><div class="BlobViewHeader-module__Box__yhm9u"><div class="react-blob-sticky-header"><div class="FileNameStickyHeader-module__outerWrapper__ZL4Xc FileNameStickyHeader-module__outerWrapperHidden__Zpynk"><div class="FileNameStickyHeader-module__Box_1__Hazu5"><div class="FileNameStickyHeader-module__Box_2__hoolP"><div class="FileNameStickyHeader-module__Box_3__MVKsk"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="v2 branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">v2</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="FileNameStickyHeader-module__Box_4__FLhtt"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__md__Wb1Gs"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/anomalyco/opencode/tree/v2" data-discover="true">opencode</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__md__Wb1Gs" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__md__Wb1Gs prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="sticky-file-name-id">V2_HTTP_API_AUDIT.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lcpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lcpala9lik5_">Copy path</span></div></div></div><button data-component="Button" type="button" class="prc-Button-ButtonBase-9n-Xk FileNameStickyHeader-module__Button__LSEU_ FileNameStickyHeader-module__GoToTopButton__nxAFn" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018L9 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Top</span></span></button></div></div></div><div class="BlobViewHeader-module__Box_1__VEmuQ"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">File metadata and controls</h2><div class="BlobViewHeader-module__Box_2__icUs2"><ul aria-label="File view" class="prc-SegmentedControl-SegmentedControl-lqIXp BlobTabButtons-module__SegmentedControl__jen2u" data-variant="default" data-size="small" data-component="SegmentedControl"><li class="prc-SegmentedControl-Item-tSCQh" data-selected="" data-component="SegmentedControl.Button"><button aria-pressed="true" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:transparent"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Preview">Preview</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Code">Code</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Blame">Blame</div></span></button></li></ul><div class="d-none"></div><div class="react-code-size-details-in-header CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="24.2 KB" style="--truncate-max-width:100%"><span>279 lines (229 loc) · 24.2 KB</span></div></div></div></div><div class="BlobViewHeader-module__Box_3__ng6v2"><div class="d-none"></div><div class="react-blob-header-edit-and-raw-actions BlobViewHeader-module__Box_4__J4Y4W"><div class="d-none"></div><div class="prc-ButtonGroup-ButtonGroup-vFUrY" data-component="ButtonGroup"><div class="prc-ButtonGroup-Item-PqvDl"><a data-component="LinkButton" href="https://github.com/anomalyco/opencode/raw/refs/heads/v2/V2_HTTP_API_AUDIT.md" data-testid="raw-button" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov BlobViewHeader-module__LinkButton__X9kx2" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Raw</span></span></a></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="copy-raw-button" class="prc-Button-ButtonBase-9n-Xk prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_qaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_qaucpala9lik5_">Copy raw file</span></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="download-raw-button" class="prc-Button-ButtonBase-9n-Xk BlobViewHeader-module__downloadButton__ef459 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_eaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_eaucpala9lik5_">Download raw file</span></div></div></div><button data-component="IconButton" type="button" aria-pressed="false" class="prc-Button-ButtonBase-9n-Xk tmp-mr-2 TableOfContents-module__IconButton__jrlNM prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_3ucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_3ucpala9lik5_">Outline</span><div class="react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" title="More file actions" data-testid="more-file-actions-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click BlobViewHeader-module__IconButton__XrMQY prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_fkecpala9lik5_" id="_R_kecpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_fkecpala9lik5_">Edit and raw actions</span></div></div></div></div><div></div></div><div class="BlobViewContent-module__blobContentWrapper__JS0W6"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="BlobContent-module__blobContentSection__VOgZq BlobContent-module__blobContentSectionMarkdown__mPLOK" style="margin-top:46px"><div class="js-snippet-clipboard-copy-unpositioned BlobContent-module__markdownBlob__T8jpG" data-hpc="true" containertiming="hpc"><article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">V2 HTTP API audit checklist</h1><a id="user-content-v2-http-api-audit-checklist" class="anchor" aria-label="Permalink: V2 HTTP API audit checklist" href="#v2-http-api-audit-checklist"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Source:</strong> <code>packages/protocol/openapi.json</code><br>
<strong>Current endpoint count:</strong> 139
<strong>Last regenerated:</strong> 2026-09-13</p>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">How to use this checklist</h2><a id="user-content-how-to-use-this-checklist" class="anchor" aria-label="Permalink: How to use this checklist" href="#how-to-use-this-checklist"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">Review endpoints in document order. For each endpoint, select one disposition and capture rationale or follow-up work in Notes. Mark <strong>Reviewed</strong> only after the disposition is agreed.</p>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Review criteria</h3><a id="user-content-review-criteria" class="anchor" aria-label="Permalink: Review criteria" href="#review-criteria"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Resource and operation naming</li>
<li>HTTP method and idempotency</li>
<li>Request parameters and location scope</li>
<li>Response shape and error taxonomy</li>
<li>Authentication and authorization</li>
<li>Current production consumers</li>
<li>Stability level: public, experimental, or internal</li>
<li>Whether the generated client API is intuitive</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Disposition legend</h3><a id="user-content-disposition-legend" class="anchor" aria-label="Permalink: Disposition legend" href="#disposition-legend"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Keep:</strong> ship unchanged as a supported V2 API</li>
<li><strong>Change:</strong> retain after a defined contract change</li>
<li><strong>Remove:</strong> exclude from the official V2 API</li>
<li><strong>Experimental-only:</strong> retain outside the stable API commitment</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Progress</h2><a id="user-content-progress" class="anchor" aria-label="Permalink: Progress" href="#progress"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 1: Foundation and placement (4)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 2: Configuration and capability catalogs (16)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 3: Credentials, integrations, MCP, and web search (22)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 4: Session lifecycle (12)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 5: Session execution and inputs (11)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 6: Session history and recovery (13)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 7: Inbox, permissions, and forms (19)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 8: Filesystem, worktrees, and VCS (12)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 9: PTYs, persistent terminals, and shells (24)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" aria-label="Completed task" checked=""> Group 10: Events, RPC, and experimental operations (6)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Resolved during audit</h2><a id="user-content-resolved-during-audit" class="anchor" aria-label="Permalink: Resolved during audit" href="#resolved-during-audit"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">[x] <code>POST /api/plugin/await-activation</code></h3><a id="user-content-x-post-apipluginawait-activation" class="anchor" aria-label="Permalink: [x] POST /api/plugin/await-activation" href="#x-post-apipluginawait-activation"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Decision:</strong> Remove</li>
<li><strong>Notes:</strong> Activation timing is an internal server concern. Catalog reads remain non-blocking.</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">[x] Location response wrappers</h3><a id="user-content-x-location-response-wrappers" class="anchor" aria-label="Permalink: [x] Location response wrappers" href="#x-location-response-wrappers"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Decision:</strong> Reduce generic endpoint response locations to <code>{ directory }</code>.</li>
<li><strong>Notes:</strong> Full project metadata remains available from <code>GET /api/location</code>; no consumers used it from wrapped responses.</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">[x] <code>GET /api/health</code> and <code>GET /api/server</code></h3><a id="user-content-x-get-apihealth-and-get-apiserver" class="anchor" aria-label="Permalink: [x] GET /api/health and GET /api/server" href="#x-get-apihealth-and-get-apiserver"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Decision:</strong> Merge and rename</li>
<li><strong>Replacement:</strong> <code>GET /api/info</code> with operation ID <code>server.info</code>.</li>
<li><strong>Notes:</strong> Returns <code>version</code>, <code>pid</code>, and connection <code>urls</code>; readiness is conveyed by HTTP status.</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">[x] <code>GET /api/project/current</code></h3><a id="user-content-x-get-apiprojectcurrent" class="anchor" aria-label="Permalink: [x] GET /api/project/current" href="#x-get-apiprojectcurrent"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Decision:</strong> Remove</li>
<li><strong>Replacement:</strong> <code>GET /api/location</code>, using <code>project</code> from the response.</li>
<li><strong>Notes:</strong> The endpoint duplicated <code>Location.Info.project</code>; production callers were migrated.</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">[x] <code>POST /api/workspace</code> and <code>DELETE /api/workspace/{workspaceID}</code></h3><a id="user-content-x-post-apiworkspace-and-delete-apiworkspaceworkspaceid" class="anchor" aria-label="Permalink: [x] POST /api/workspace and DELETE /api/workspace/{workspaceID}" href="#x-post-apiworkspace-and-delete-apiworkspaceworkspaceid"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Decision:</strong> Remove</li>
<li><strong>Notes:</strong> Provider-backed workspaces are not part of the V2 HTTP contract and can be introduced later. Core and the embedded SDK retain internal workspace support.</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 1: Foundation and placement</h2><a id="user-content-group-1-foundation-and-placement" class="anchor" aria-label="Permalink: Group 1: Foundation and placement" href="#group-1-foundation-and-placement"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 4</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 001–002</td>
<td><code>GET</code></td>
<td><code>/api/info</code></td>
<td><code>server.info</code></td>
<td>Keep</td>
<td>Replaces the former health and server endpoints.</td>
</tr>
<tr>
<td>[x] 003</td>
<td><code>GET</code></td>
<td><code>/api/location</code></td>
<td><code>location.get</code></td>
<td>Keep</td>
<td>Workspace selectors and response fields removed until workspace support ships.</td>
</tr>
<tr>
<td>[x] 004</td>
<td><code>GET</code></td>
<td><code>/api/project</code></td>
<td><code>project.list</code></td>
<td>Keep</td>
<td>Removed unused <code>time.initialized</code>; the database column remains for migration data.</td>
</tr>
<tr>
<td>[x] 005</td>
<td><code>PATCH</code></td>
<td><code>/api/project/{projectID}</code></td>
<td><code>project.update</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 2: Configuration and capability catalogs</h2><a id="user-content-group-2-configuration-and-capability-catalogs" class="anchor" aria-label="Permalink: Group 2: Configuration and capability catalogs" href="#group-2-configuration-and-capability-catalogs"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 16</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 008</td>
<td><code>GET</code></td>
<td><code>/api/agent</code></td>
<td><code>agent.list</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
<tr>
<td>[x] 009</td>
<td><code>GET</code></td>
<td><code>/api/agent/{agentID}</code></td>
<td><code>agent.get</code></td>
<td>Keep</td>
<td>Request, response, and not-found error accepted as-is.</td>
</tr>
<tr>
<td>[x] 010</td>
<td><code>GET</code></td>
<td><code>/api/plugin</code></td>
<td><code>plugin.list</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
<tr>
<td>[x] 012</td>
<td><code>POST</code></td>
<td><code>/api/plugin/check</code></td>
<td><code>plugin.check</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
<tr>
<td>[x] 013</td>
<td><code>POST</code></td>
<td><code>/api/plugin/update</code></td>
<td><code>plugin.update</code></td>
<td>Keep</td>
<td>Request and errors accepted as-is.</td>
</tr>
<tr>
<td>[x] 014</td>
<td><code>GET</code></td>
<td><code>/api/model</code></td>
<td><code>model.list</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
<tr>
<td>[x] 015</td>
<td><code>GET</code></td>
<td><code>/api/model/default</code></td>
<td><code>model.default</code></td>
<td>Keep</td>
<td>Request and nullable response accepted as-is.</td>
</tr>
<tr>
<td>[x] 016</td>
<td><code>GET</code></td>
<td><code>/api/provider</code></td>
<td><code>provider.list</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
<tr>
<td>[x] 017</td>
<td><code>GET</code></td>
<td><code>/api/provider/{providerID}</code></td>
<td><code>provider.get</code></td>
<td>Keep</td>
<td>Request, response, and not-found error accepted as-is.</td>
</tr>
<tr>
<td>[x] 018</td>
<td><code>GET</code></td>
<td><code>/api/command</code></td>
<td><code>command.list</code></td>
<td>Keep</td>
<td>Request and response accepted as-is.</td>
</tr>
<tr>
<td>[x] 019</td>
<td><code>GET</code></td>
<td><code>/api/skill</code></td>
<td><code>skill.list</code></td>
<td>Keep</td>
<td>Renamed <code>location</code> to <code>path</code>; removed the skill-specific <code>slash</code> flag and slash-command behavior.</td>
</tr>
<tr>
<td>[x] 020</td>
<td><code>GET</code></td>
<td><code>/api/reference</code></td>
<td><code>reference.list</code></td>
<td>Keep</td>
<td>Removed duplicate <code>description</code> and <code>hidden</code> fields from nested <code>source</code>.</td>
</tr>
<tr>
<td>[x] 021</td>
<td><code>GET</code></td>
<td><code>/api/config</code></td>
<td><code>config.get</code></td>
<td>Keep</td>
<td>Compatibility entries removed; response now contains only documents and OpenCode directories.</td>
</tr>
<tr>
<td>[x] 022</td>
<td><code>GET</code></td>
<td><code>/api/config/preferences</code></td>
<td><code>config.preferences</code></td>
<td>Remove</td>
<td>Redundant special projection of global config.</td>
</tr>
<tr>
<td>[x] 023</td>
<td><code>PATCH</code></td>
<td><code>/api/config/preferences</code></td>
<td><code>config.updatePreferences</code></td>
<td>Remove</td>
<td>Redundant field-specific config mutation API.</td>
</tr>
<tr>
<td>[x] 024</td>
<td><code>GET</code></td>
<td><code>/api/config/shell</code></td>
<td><code>config.shells</code></td>
<td>Keep</td>
<td>Required by the server Terminal shell setting.</td>
</tr>
<tr>
<td>[x] 024a</td>
<td><code>PATCH</code></td>
<td><code>/api/experimental/config</code></td>
<td><code>experimental.config.update</code></td>
<td>Change</td>
<td>Experimental global config mutation; initially accepts only <code>shell</code>.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 3: Credentials, integrations, MCP, and web search</h2><a id="user-content-group-3-credentials-integrations-mcp-and-web-search" class="anchor" aria-label="Permalink: Group 3: Credentials, integrations, MCP, and web search" href="#group-3-credentials-integrations-mcp-and-web-search"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 22</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 025</td>
<td><code>GET</code></td>
<td><code>/api/integration</code></td>
<td><code>integration.list</code></td>
<td>Keep</td>
<td>Full integration inventory is consumed by authentication and integration-selection clients.</td>
</tr>
<tr>
<td>[x] 026</td>
<td><code>GET</code></td>
<td><code>/api/integration/{integrationID}</code></td>
<td><code>integration.get</code></td>
<td>Change</td>
<td>Missing integration now returns typed <code>404</code> instead of optional data.</td>
</tr>
<tr>
<td>[x] 027</td>
<td><code>POST</code></td>
<td><code>/api/experimental/integration/wellknown</code></td>
<td><code>experimental.integration.wellknown.add</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 028</td>
<td><code>POST</code></td>
<td><code>/api/integration/{integrationID}/connect/key</code></td>
<td><code>integration.connect.key</code></td>
<td>Change</td>
<td>Missing integration returns typed <code>404</code>; key form answers retained.</td>
</tr>
<tr>
<td>[x] 029</td>
<td><code>POST</code></td>
<td><code>/api/integration/{integrationID}/connect/oauth</code></td>
<td><code>integration.oauth.connect</code></td>
<td>Keep</td>
<td>OAuth connection start contract retained.</td>
</tr>
<tr>
<td>[x] 030</td>
<td><code>GET</code></td>
<td><code>/api/integration/{integrationID}/connect/oauth/{attemptID}</code></td>
<td><code>integration.oauth.status</code></td>
<td>Change</td>
<td>Missing integration or OAuth attempt returns typed <code>404</code>.</td>
</tr>
<tr>
<td>[x] 031</td>
<td><code>DELETE</code></td>
<td><code>/api/integration/{integrationID}/connect/oauth/{attemptID}</code></td>
<td><code>integration.oauth.cancel</code></td>
<td>Keep</td>
<td>Idempotent cancellation remains a no-op for unavailable or terminal attempts.</td>
</tr>
<tr>
<td>[x] 032</td>
<td><code>POST</code></td>
<td><code>/api/integration/{integrationID}/connect/oauth/{attemptID}/complete</code></td>
<td><code>integration.oauth.complete</code></td>
<td>Change</td>
<td>Missing integration or OAuth attempt returns typed <code>404</code>; code remains mode-dependent.</td>
</tr>
<tr>
<td>[x] 033</td>
<td><code>POST</code></td>
<td><code>/api/integration/{integrationID}/connect/command</code></td>
<td><code>integration.command.connect</code></td>
<td>Change</td>
<td>Missing integration or command method returns typed <code>404</code>.</td>
</tr>
<tr>
<td>[x] 034</td>
<td><code>GET</code></td>
<td><code>/api/integration/{integrationID}/connect/command/{attemptID}</code></td>
<td><code>integration.command.status</code></td>
<td>Change</td>
<td>Missing integration or command attempt returns typed <code>404</code>.</td>
</tr>
<tr>
<td>[x] 035</td>
<td><code>DELETE</code></td>
<td><code>/api/integration/{integrationID}/connect/command/{attemptID}</code></td>
<td><code>integration.command.cancel</code></td>
<td>Keep</td>
<td>Idempotent cancellation remains a no-op for unavailable or terminal attempts.</td>
</tr>
<tr>
<td>[x] 036</td>
<td><code>GET</code></td>
<td><code>/api/mcp</code></td>
<td><code>mcp.list</code></td>
<td>Keep</td>
<td>MCP inventory and connection status retained.</td>
</tr>
<tr>
<td>[x] 037</td>
<td><code>PUT</code></td>
<td><code>/api/experimental/mcp/{server}</code></td>
<td><code>experimental.mcp.add</code></td>
<td>Experimental-only</td>
<td>Runtime-only MCP override; does not persist configuration.</td>
</tr>
<tr>
<td>[x] 038</td>
<td><code>DELETE</code></td>
<td><code>/api/experimental/mcp/{server}</code></td>
<td><code>experimental.mcp.remove</code></td>
<td>Experimental-only</td>
<td>Runtime removal override; missing server returns <code>404</code>.</td>
</tr>
<tr>
<td>[x] 039</td>
<td><code>POST</code></td>
<td><code>/api/experimental/mcp/{server}/connect</code></td>
<td><code>experimental.mcp.connect</code></td>
<td>Experimental-only</td>
<td>Runtime connection override retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 040</td>
<td><code>POST</code></td>
<td><code>/api/experimental/mcp/{server}/disconnect</code></td>
<td><code>experimental.mcp.disconnect</code></td>
<td>Experimental-only</td>
<td>Runtime disconnection override retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 041</td>
<td><code>GET</code></td>
<td><code>/api/mcp/resource</code></td>
<td><code>mcp.resource.catalog</code></td>
<td>Keep</td>
<td>Reviewed separately by coworker.</td>
</tr>
<tr>
<td>[x] 042</td>
<td><code>PATCH</code></td>
<td><code>/api/credential/{credentialID}</code></td>
<td><code>credential.update</code></td>
<td>Change</td>
<td>Removed redundant location query; credentials and events are global.</td>
</tr>
<tr>
<td>[x] 043</td>
<td><code>DELETE</code></td>
<td><code>/api/credential/{credentialID}</code></td>
<td><code>credential.remove</code></td>
<td>Change</td>
<td>Removed redundant location query; credentials and events are global.</td>
</tr>
<tr>
<td>[x] 044</td>
<td><code>POST</code></td>
<td><code>/api/credential/{credentialID}/activate</code></td>
<td><code>credential.activate</code></td>
<td>Change</td>
<td>Removed redundant location query; credentials and events are global.</td>
</tr>
<tr>
<td>[x] 045</td>
<td><code>GET</code></td>
<td><code>/api/websearch/provider</code></td>
<td><code>websearch.providers</code></td>
<td>Keep</td>
<td>Provider availability remains location-scoped; singular resource path retained.</td>
</tr>
<tr>
<td>[x] 046</td>
<td><code>POST</code></td>
<td><code>/api/websearch</code></td>
<td><code>websearch.query</code></td>
<td>Keep</td>
<td>Unknown provider remains an invalid request; published time documented as Unix epoch milliseconds.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 4: Session lifecycle</h2><a id="user-content-group-4-session-lifecycle" class="anchor" aria-label="Permalink: Group 4: Session lifecycle" href="#group-4-session-lifecycle"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 12</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 047</td>
<td><code>GET</code></td>
<td><code>/api/session</code></td>
<td><code>session.list</code></td>
<td>Keep</td>
<td>Existing filtering, ordering, and cursor contract retained for now.</td>
</tr>
<tr>
<td>[x] 048</td>
<td><code>POST</code></td>
<td><code>/api/session</code></td>
<td><code>session.create</code></td>
<td>Keep</td>
<td>Existing creation contract retained; model reference includes optional variant.</td>
</tr>
<tr>
<td>[x] 049</td>
<td><code>GET</code></td>
<td><code>/api/experimental/session/stats</code></td>
<td><code>experimental.session.stats</code></td>
<td>Experimental-only</td>
<td>Session analytics retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 050</td>
<td><code>GET</code></td>
<td><code>/api/session/active</code></td>
<td><code>session.active</code></td>
<td>Keep</td>
<td>Status record retained for future active-state expansion.</td>
</tr>
<tr>
<td>[x] 051</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}</code></td>
<td><code>session.get</code></td>
<td>Keep</td>
<td>Specific session read and typed <code>404</code> retained.</td>
</tr>
<tr>
<td>[x] 052</td>
<td><code>DELETE</code></td>
<td><code>/api/session/{sessionID}</code></td>
<td><code>session.remove</code></td>
<td>Keep</td>
<td>Session and child deletion with typed <code>404</code> retained.</td>
</tr>
<tr>
<td>[x] 053</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/fork</code></td>
<td><code>session.fork</code></td>
<td>Change</td>
<td>Request now accepts optional branded <code>before</code> message ID; omission copies full history.</td>
</tr>
<tr>
<td>[x] 054</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/agent</code></td>
<td><code>session.switchAgent</code></td>
<td>Keep</td>
<td>Subsequent-execution agent selection retained.</td>
</tr>
<tr>
<td>[x] 055</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/model</code></td>
<td><code>session.switchModel</code></td>
<td>Keep</td>
<td>Subsequent-execution model and optional variant selection retained.</td>
</tr>
<tr>
<td>[x] 056</td>
<td><code>PATCH</code></td>
<td><code>/api/session/{sessionID}</code></td>
<td><code>session.update</code></td>
<td>Change</td>
<td>General session patch updates title and permissions; rules emit <code>session.permissions</code>.</td>
</tr>
<tr>
<td>[x] 057</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/move</code></td>
<td><code>session.move</code></td>
<td>Change</td>
<td>Removed inaccurate local-change transfer claim; delivery behavior retained.</td>
</tr>
<tr>
<td>[x] 058</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/background</code></td>
<td><code>session.background</code></td>
<td>Keep</td>
<td>Backgroundable foreground tools transition to background observation; idle requests remain no-ops.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 5: Session execution and inputs</h2><a id="user-content-group-5-session-execution-and-inputs" class="anchor" aria-label="Permalink: Group 5: Session execution and inputs" href="#group-5-session-execution-and-inputs"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 11</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 059</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/prompt</code></td>
<td><code>session.prompt</code></td>
<td>Keep</td>
<td>Durable admission, delivery mode, and admit-only resume control retained.</td>
</tr>
<tr>
<td>[x] 060</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/command</code></td>
<td><code>session.command</code></td>
<td>Change</td>
<td>Renamed request field from <code>command</code> to <code>name</code>; <code>204</code> retained.</td>
</tr>
<tr>
<td>[x] 061</td>
<td><code>POST</code></td>
<td><code>/api/experimental/session/{sessionID}/skill</code></td>
<td><code>experimental.session.skill</code></td>
<td>Experimental-only</td>
<td>Skill ID is now the <code>id</code> field; standalone activation remains experimental.</td>
</tr>
<tr>
<td>[x] 062</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/synthetic</code></td>
<td><code>session.synthetic</code></td>
<td>Keep</td>
<td>Durable synthetic admission and delivery controls retained.</td>
</tr>
<tr>
<td>[x] 063</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/shell</code></td>
<td><code>session.shell</code></td>
<td>Change</td>
<td>Caller ID is now the optimistic shell message ID; server derives its event ID.</td>
</tr>
<tr>
<td>[x] 064</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/compact</code></td>
<td><code>session.compact</code></td>
<td>Keep</td>
<td>Durable compaction admission and delivery controls retained.</td>
</tr>
<tr>
<td>[x] 065</td>
<td><code>POST</code></td>
<td><code>/api/experimental/session/{sessionID}/wait</code></td>
<td><code>experimental.session.wait</code></td>
<td>Experimental-only</td>
<td>Race-free idle barrier retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 066</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/generate</code></td>
<td><code>session.generate</code></td>
<td>Keep</td>
<td>Transient generation from session context retained.</td>
</tr>
<tr>
<td>[x] 067</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/interrupt</code></td>
<td><code>session.interrupt</code></td>
<td>Change</td>
<td>Renamed <code>continue</code> to <code>resume</code> across public and internal interruption APIs.</td>
</tr>
<tr>
<td>[x] 068</td>
<td><code>PUT</code></td>
<td><code>/api/session/{sessionID}/environment</code></td>
<td><code>session.environment</code></td>
<td>Keep</td>
<td>Process-local environment replacement retained in the stable API.</td>
</tr>
<tr>
<td>[x] 069</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/view</code></td>
<td><code>session.view</code></td>
<td>Change</td>
<td>Idle watermark now uses the standard epoch-millisecond timestamp schema.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 6: Session history and recovery</h2><a id="user-content-group-6-session-history-and-recovery" class="anchor" aria-label="Permalink: Group 6: Session history and recovery" href="#group-6-session-history-and-recovery"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 13</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 070</td>
<td><code>POST</code></td>
<td><code>/api/experimental/session/import</code></td>
<td><code>experimental.session.import</code></td>
<td>Experimental-only</td>
<td>Existing projected transcript import contract retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 071</td>
<td><code>GET</code></td>
<td><code>/api/experimental/session/{sessionID}/export</code></td>
<td><code>experimental.session.export</code></td>
<td>Experimental-only</td>
<td>Existing projected transcript export contract retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 072</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/revert/stage</code></td>
<td><code>session.revert.stage</code></td>
<td>Keep</td>
<td>Existing staged history and optional file restoration behavior retained.</td>
</tr>
<tr>
<td>[x] 073</td>
<td><code>DELETE</code></td>
<td><code>/api/session/{sessionID}/revert</code></td>
<td><code>session.revert.clear</code></td>
<td>Change</td>
<td>Clearing staged revert now deletes the session revert resource.</td>
</tr>
<tr>
<td>[x] 074</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/revert/commit</code></td>
<td><code>session.revert.commit</code></td>
<td>Keep</td>
<td>Explicit staged-revert commit action retained.</td>
</tr>
<tr>
<td>[x] 075</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/context</code></td>
<td><code>session.context</code></td>
<td>Keep</td>
<td>Active model-context projection retained.</td>
</tr>
<tr>
<td>[x] 076</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/diff</code></td>
<td><code>session.diff</code></td>
<td>Keep</td>
<td>Turn-range structured diff contract retained.</td>
</tr>
<tr>
<td>[x] 077</td>
<td><code>GET</code></td>
<td><code>/api/experimental/session/{sessionID}/instructions/entries</code></td>
<td><code>experimental.session.instructions.entry.list</code></td>
<td>Experimental-only</td>
<td>API-managed durable context entries retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 078</td>
<td><code>PUT</code></td>
<td><code>/api/experimental/session/{sessionID}/instructions/entries/{key}</code></td>
<td><code>experimental.session.instructions.entry.put</code></td>
<td>Experimental-only</td>
<td>API-managed durable context entries retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 079</td>
<td><code>DELETE</code></td>
<td><code>/api/experimental/session/{sessionID}/instructions/entries/{key}</code></td>
<td><code>experimental.session.instructions.entry.remove</code></td>
<td>Experimental-only</td>
<td>API-managed durable context entries retained outside the stable API.</td>
</tr>
<tr>
<td>[x] 080</td>
<td><code>GET</code></td>
<td><code>/api/experimental/session/{sessionID}/log</code></td>
<td><code>session.log</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 081</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/message/{messageID}</code></td>
<td><code>session.message.get</code></td>
<td>Change</td>
<td>Normalized specific-message operation ID.</td>
</tr>
<tr>
<td>[x] 082</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/message</code></td>
<td><code>session.message.list</code></td>
<td>Change</td>
<td>Normalized session-scoped message-list operation ID.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 7: Inbox, permissions, and forms</h2><a id="user-content-group-7-inbox-permissions-and-forms" class="anchor" aria-label="Permalink: Group 7: Inbox, permissions, and forms" href="#group-7-inbox-permissions-and-forms"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 19</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 083</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/inbox</code></td>
<td><code>session.inbox.list</code></td>
<td>Change</td>
<td>Inbox timestamps now use the standard nested <code>time.created</code> shape.</td>
</tr>
<tr>
<td>[x] 084</td>
<td><code>DELETE</code></td>
<td><code>/api/session/{sessionID}/inbox/{inboxID}</code></td>
<td><code>session.inbox.cancel</code></td>
<td>Change</td>
<td>Cancellation is idempotent and returns <code>204</code> when the session exists.</td>
</tr>
<tr>
<td>[x] 085</td>
<td><code>PATCH</code></td>
<td><code>/api/session/{sessionID}/inbox/{inboxID}</code></td>
<td><code>session.inbox.update</code></td>
<td>Change</td>
<td>Consolidated delivery mutation with `delivery: "steer"</td>
</tr>
<tr>
<td>[x] 086</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Remove</td>
<td>Replaced by <code>session.inbox.update</code>.</td>
</tr>
<tr>
<td>[x] 087</td>
<td><code>GET</code></td>
<td><code>/api/form</code></td>
<td><code>form.list</code></td>
<td>Change</td>
<td>Removed redundant <code>request</code> path and operation namespace.</td>
</tr>
<tr>
<td>[x] 088</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/form</code></td>
<td><code>session.form.list</code></td>
<td>Keep</td>
<td>Pending session form list retained with temporary MCP sentinel compatibility.</td>
</tr>
<tr>
<td>[x] 089</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/form</code></td>
<td><code>session.form.create</code></td>
<td>Keep</td>
<td>External form creation and temporary MCP sentinel ownership retained.</td>
</tr>
<tr>
<td>[x] 090</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/form/{formID}</code></td>
<td><code>session.form.get</code></td>
<td>Change</td>
<td>Form definition and lifecycle state are now returned together.</td>
</tr>
<tr>
<td>[x] 091</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Remove</td>
<td>State is included by <code>session.form.get</code>.</td>
</tr>
<tr>
<td>[x] 092</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/form/{formID}/reply</code></td>
<td><code>session.form.reply</code></td>
<td>Keep</td>
<td>One-shot validated form reply retained.</td>
</tr>
<tr>
<td>[x] 093</td>
<td><code>DELETE</code></td>
<td><code>/api/session/{sessionID}/form/{formID}</code></td>
<td><code>session.form.cancel</code></td>
<td>Change</td>
<td>Form cancellation now deletes the pending form resource.</td>
</tr>
<tr>
<td>[x] 094</td>
<td><code>GET</code></td>
<td><code>/api/permission/request</code></td>
<td><code>permission.request.list</code></td>
<td>Keep</td>
<td>Pending-request namespace retained alongside saved permissions.</td>
</tr>
<tr>
<td>[x] 095</td>
<td><code>GET</code></td>
<td><code>/api/permission/saved</code></td>
<td><code>permission.saved.list</code></td>
<td>Change</td>
<td>Added persisted creation and update timestamps under <code>time</code>.</td>
</tr>
<tr>
<td>[x] 096</td>
<td><code>DELETE</code></td>
<td><code>/api/permission/saved/{id}</code></td>
<td><code>permission.saved.remove</code></td>
<td>Keep</td>
<td>Idempotent saved-permission deletion retained.</td>
</tr>
<tr>
<td>[x] 097</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/permission</code></td>
<td><code>session.permission.create</code></td>
<td>Keep</td>
<td>Non-blocking permission evaluation and pending-request creation retained.</td>
</tr>
<tr>
<td>[x] 098</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/permission</code></td>
<td><code>session.permission.list</code></td>
<td>Keep</td>
<td>Pending session permission list retained.</td>
</tr>
<tr>
<td>[x] 099</td>
<td><code>GET</code></td>
<td><code>/api/session/{sessionID}/permission/{requestID}</code></td>
<td><code>session.permission.get</code></td>
<td>Keep</td>
<td>Specific pending permission read with ownership validation retained.</td>
</tr>
<tr>
<td>[x] 100</td>
<td><code>POST</code></td>
<td><code>/api/session/{sessionID}/permission/{requestID}/reply</code></td>
<td><code>session.permission.reply</code></td>
<td>Change</td>
<td>Renamed request field from <code>reply</code> to <code>decision</code>.</td>
</tr>
<tr>
<td>[x] 101</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Remove</td>
<td>Permission rules are updated through <code>session.update</code>.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 8: Filesystem, worktrees, and VCS</h2><a id="user-content-group-8-filesystem-worktrees-and-vcs" class="anchor" aria-label="Permalink: Group 8: Filesystem, worktrees, and VCS" href="#group-8-filesystem-worktrees-and-vcs"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 12</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 102</td>
<td><code>GET</code></td>
<td><code>/api/fs/read/*</code></td>
<td><code>fs.read</code></td>
<td>Keep</td>
<td>Relative wildcard file reads and raw byte responses retained.</td>
</tr>
<tr>
<td>[x] 103</td>
<td><code>GET</code></td>
<td><code>/api/fs/list</code></td>
<td><code>fs.list</code></td>
<td>Keep</td>
<td>Existing path scope and minimal entry metadata retained.</td>
</tr>
<tr>
<td>[x] 104</td>
<td><code>GET</code></td>
<td><code>/api/fs/find</code></td>
<td><code>fs.find</code></td>
<td>Keep</td>
<td>Existing ranked filesystem search retained.</td>
</tr>
<tr>
<td>[x] 105</td>
<td><code>GET</code></td>
<td><code>/api/worktree</code></td>
<td><code>worktree.list</code></td>
<td>Keep</td>
<td>Reviewed separately by coworker.</td>
</tr>
<tr>
<td>[x] 106</td>
<td><code>POST</code></td>
<td><code>/api/worktree</code></td>
<td><code>worktree.create</code></td>
<td>Keep</td>
<td>Reviewed separately by coworker.</td>
</tr>
<tr>
<td>[x] 107</td>
<td><code>DELETE</code></td>
<td><code>/api/worktree</code></td>
<td><code>worktree.remove</code></td>
<td>Keep</td>
<td>Reviewed separately by coworker.</td>
</tr>
<tr>
<td>[x] 108</td>
<td><code>POST</code></td>
<td><code>/api/worktree/refresh</code></td>
<td><code>worktree.refresh</code></td>
<td>Keep</td>
<td>Reviewed separately by coworker.</td>
</tr>
<tr>
<td>[x] 109</td>
<td><code>GET</code></td>
<td><code>/api/vcs</code></td>
<td><code>vcs.get</code></td>
<td>Change</td>
<td>Preserved branch nesting and added selected VCS provider ID.</td>
</tr>
<tr>
<td>[x] 110</td>
<td><code>GET</code></td>
<td><code>/api/vcs/base</code></td>
<td><code>vcs.base</code></td>
<td>Keep</td>
<td>Review-base inference and nullable unavailable state retained.</td>
</tr>
<tr>
<td>[x] 111</td>
<td><code>GET</code></td>
<td><code>/api/vcs/status</code></td>
<td><code>vcs.status</code></td>
<td>Keep</td>
<td>Existing working-copy status shape retained for now.</td>
</tr>
<tr>
<td>[x] 112</td>
<td><code>GET</code></td>
<td><code>/api/vcs/branch</code></td>
<td><code>vcs.branch.list</code></td>
<td>Change</td>
<td>Singular collection path and normalized operation ID.</td>
</tr>
<tr>
<td>[x] 113</td>
<td><code>GET</code></td>
<td><code>/api/vcs/diff</code></td>
<td><code>vcs.diff</code></td>
<td>Keep</td>
<td>Existing working, branch, and committed comparison modes retained.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 9: PTYs, persistent terminals, and shells</h2><a id="user-content-group-9-ptys-persistent-terminals-and-shells" class="anchor" aria-label="Permalink: Group 9: PTYs, persistent terminals, and shells" href="#group-9-ptys-persistent-terminals-and-shells"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 24</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 114</td>
<td><code>GET</code></td>
<td><code>/api/pty</code></td>
<td><code>pty.list</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 115</td>
<td><code>POST</code></td>
<td><code>/api/pty</code></td>
<td><code>pty.create</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 116</td>
<td><code>GET</code></td>
<td><code>/api/pty/{ptyID}</code></td>
<td><code>pty.get</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 117</td>
<td><code>PUT</code></td>
<td><code>/api/pty/{ptyID}</code></td>
<td><code>pty.update</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 118</td>
<td><code>DELETE</code></td>
<td><code>/api/pty/{ptyID}</code></td>
<td><code>pty.remove</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 119</td>
<td><code>POST</code></td>
<td><code>/api/pty/{ptyID}/connect-token</code></td>
<td><code>pty.connect.token</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 120</td>
<td><code>GET</code></td>
<td><code>/api/pty/{ptyID}/connect</code></td>
<td><code>pty.connect</code></td>
<td>Keep</td>
<td>PTY endpoints reviewed together and retained.</td>
</tr>
<tr>
<td>[x] 121</td>
<td><code>GET</code></td>
<td><code>/api/experimental/session/{sessionID}/terminal/read</code></td>
<td><code>server.experimental.persistentPty.read</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 122</td>
<td><code>GET</code></td>
<td><code>/api/experimental/session/{sessionID}/terminal</code></td>
<td><code>server.experimental.persistentPty.list</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 123</td>
<td><code>POST</code></td>
<td><code>/api/experimental/session/{sessionID}/terminal</code></td>
<td><code>server.experimental.persistentPty.create</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 124</td>
<td><code>POST</code></td>
<td><code>/api/experimental/persistent-pty/shutdown</code></td>
<td><code>server.experimental.persistentPty.shutdown</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 125</td>
<td><code>POST</code></td>
<td><code>/api/experimental/persistent-pty/handoff</code></td>
<td><code>server.experimental.persistentPty.handoff</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 126</td>
<td><code>GET</code></td>
<td><code>/api/experimental/persistent-pty/{ptyID}</code></td>
<td><code>server.experimental.persistentPty.get</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 127</td>
<td><code>PUT</code></td>
<td><code>/api/experimental/persistent-pty/{ptyID}</code></td>
<td><code>server.experimental.persistentPty.update</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 128</td>
<td><code>DELETE</code></td>
<td><code>/api/experimental/persistent-pty/{ptyID}</code></td>
<td><code>server.experimental.persistentPty.remove</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 129</td>
<td><code>GET</code></td>
<td><code>/api/experimental/persistent-pty/{ptyID}/snapshot</code></td>
<td><code>server.experimental.persistentPty.snapshot</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 130</td>
<td><code>POST</code></td>
<td><code>/api/experimental/persistent-pty/{ptyID}/connect-token</code></td>
<td><code>server.experimental.persistentPty.connectToken</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 131</td>
<td><code>GET</code></td>
<td><code>/api/experimental/persistent-pty/{ptyID}/connect</code></td>
<td><code>persistentPty.connect</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
<tr>
<td>[x] 132</td>
<td><code>GET</code></td>
<td><code>/api/shell</code></td>
<td><code>shell.list</code></td>
<td>Change</td>
<td>Stable shell inventory retained; numeric timestamps documented as epoch milliseconds.</td>
</tr>
<tr>
<td>[x] 133</td>
<td><code>POST</code></td>
<td><code>/api/shell</code></td>
<td><code>shell.create</code></td>
<td>Change</td>
<td>Timeout is optional and defaults to zero; caller metadata retained.</td>
</tr>
<tr>
<td>[x] 134</td>
<td><code>GET</code></td>
<td><code>/api/shell/{id}</code></td>
<td><code>shell.get</code></td>
<td>Keep</td>
<td>Specific running or retained shell read retained.</td>
</tr>
<tr>
<td>[x] 135</td>
<td><code>DELETE</code></td>
<td><code>/api/shell/{id}</code></td>
<td><code>shell.remove</code></td>
<td>Change</td>
<td>Shell deletion is idempotent and returns <code>204</code> when already absent.</td>
</tr>
<tr>
<td>[x] 136</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Remove</td>
<td>Timeout mutation remains an internal Core shell operation.</td>
</tr>
<tr>
<td>[x] 137</td>
<td><code>GET</code></td>
<td><code>/api/shell/{id}/output</code></td>
<td><code>shell.output</code></td>
<td>Keep</td>
<td>Existing byte-cursor text output paging retained.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Group 10: Events, RPC, and experimental operations</h2><a id="user-content-group-10-events-rpc-and-experimental-operations" class="anchor" aria-label="Permalink: Group 10: Events, RPC, and experimental operations" href="#group-10-events-rpc-and-experimental-operations"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Endpoints:</strong> 6</p>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Done</th>
<th>Method</th>
<th>Path</th>
<th>Operation ID</th>
<th>Decision</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>[x] 138</td>
<td><code>POST</code></td>
<td><code>/api/experimental/generate</code></td>
<td><code>experimental.generate.text</code></td>
<td>Experimental-only</td>
<td>Stateless generation retained alongside session generation.</td>
</tr>
<tr>
<td>[x] 139</td>
<td><code>POST</code></td>
<td><code>/api/rpc/{rpcID}/{method}</code></td>
<td><code>rpc.call</code></td>
<td>Keep</td>
<td>Generic typed-error plugin RPC transport retained.</td>
</tr>
<tr>
<td>[x] 140</td>
<td><code>GET</code></td>
<td><code>/api/event</code></td>
<td><code>event.subscribe</code></td>
<td>Keep</td>
<td>Unified native and dynamic plugin event stream retained.</td>
</tr>
<tr>
<td>[x] 141</td>
<td><code>GET</code></td>
<td><code>/api/debug/location</code></td>
<td><code>debug.location.list</code></td>
<td>Keep</td>
<td>Loaded-location debug inventory retained.</td>
</tr>
<tr>
<td>[x] 142</td>
<td><code>DELETE</code></td>
<td><code>/api/debug/location</code></td>
<td><code>debug.location.evict</code></td>
<td>Keep</td>
<td>Idempotent loaded-location eviction retained.</td>
</tr>
<tr>
<td>[x] 143</td>
<td><code>GET</code></td>
<td><code>/api/experimental/migration/v1</code></td>
<td><code>experimental.migration.v1.status</code></td>
<td>Experimental-only</td>
<td>Retained outside the stable API commitment.</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
</article></div><div class="d-none"></div></section></div></div></div> </div> <!-- --> </div></div></div></div></div></div><div class="ScrollMarksContainer-module__scrollMarksContainer__Eu7uU" id="find-result-marks-container"></div><div class="d-none"></div><div class="d-none"></div></div> <!-- --> <!-- --> </div>
</react-app>




  </div>

</turbo-frame>

    </main>
  </div>

  </div>

          <footer class="footer f6 color-fg-muted color-border-subtle tmp-pt-7 tmp-pb-6 p-responsive" role="contentinfo"  >
  <h2 class='sr-only'>Footer</h2>

  


  <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
    <div class="d-flex flex-items-center flex-shrink-0 mx-2">
      <a aria-label="GitHub Homepage" class="footer-octicon mr-2" href="https://github.com">
        <svg aria-hidden="true" data-component="Octicon" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
    <path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path>
</svg>
</a>
      <span>
        &copy; 2026 GitHub,&nbsp;Inc.
      </span>
    </div>

    <nav aria-label="Footer">
      <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>

      <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">


          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
          </li>


            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
            </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to community&quot;,&quot;label&quot;:&quot;text:community&quot;}" href="https://github.community/" data-view-component="true" class="Link--secondary Link">Community</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
          </li>

          
<li class="mx-2" >
  <cookie-consent-link>
    <button
      type="button"
      class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
      data-action="click:cookie-consent-link#showConsentManagement"
      data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}"
    >
      Manage cookies
    </button>
  </cookie-consent-link>
</li>

  <li class="mx-2">
    <cookie-consent-link>
      <button
        type="button"
        class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left"
        data-action="click:cookie-consent-link#showConsentManagement"
        data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}"
      >
        Do not share my personal information
      </button>
    </cookie-consent-link>
  </li>

      </ul>
    </nav>
  </div>
</footer>



    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-locale="en"
      data-initial-cookie-consent-allowed=""
      data-cookie-consent-required="true"
    ></ghcc-consent>




  <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    You can’t perform that action at this time.
  </div>

    <template id="site-details-dialog">
  <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
    <summary role="button" aria-label="Close dialog"></summary>
    <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
      <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
      </button>
      <div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
    </details-dialog>
  </details>
</template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  </div>
</div>

    <template id="snippet-clipboard-copy-button">
  <div class="zeroclipboard-container position-absolute right-0 top-0">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>
<template id="snippet-clipboard-copy-button-unpositioned">
  <div class="zeroclipboard-container">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>




    </div>
    <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
    <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
  </body>
</html>

