@stigmer/server-slim 3.38.0 → 3.38.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/console/404.html +1 -1
- package/console/__next.__PAGE__.txt +1 -1
- package/console/__next._full.txt +1 -1
- package/console/__next._head.txt +1 -1
- package/console/__next._index.txt +1 -1
- package/console/__next._tree.txt +1 -1
- package/console/_not-found/__next._full.txt +1 -1
- package/console/_not-found/__next._head.txt +1 -1
- package/console/_not-found/__next._index.txt +1 -1
- package/console/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/console/_not-found/__next._not-found.txt +1 -1
- package/console/_not-found/__next._tree.txt +1 -1
- package/console/_not-found.html +1 -1
- package/console/_not-found.txt +1 -1
- package/console/auth/callback/__next._full.txt +1 -1
- package/console/auth/callback/__next._head.txt +1 -1
- package/console/auth/callback/__next._index.txt +1 -1
- package/console/auth/callback/__next._tree.txt +1 -1
- package/console/auth/callback/__next.auth.callback.__PAGE__.txt +1 -1
- package/console/auth/callback/__next.auth.callback.txt +1 -1
- package/console/auth/callback/__next.auth.txt +1 -1
- package/console/auth/callback.html +1 -1
- package/console/auth/callback.txt +1 -1
- package/console/auth/github/callback/__next._full.txt +1 -1
- package/console/auth/github/callback/__next._head.txt +1 -1
- package/console/auth/github/callback/__next._index.txt +1 -1
- package/console/auth/github/callback/__next._tree.txt +1 -1
- package/console/auth/github/callback/__next.auth.github.callback.__PAGE__.txt +1 -1
- package/console/auth/github/callback/__next.auth.github.callback.txt +1 -1
- package/console/auth/github/callback/__next.auth.github.txt +1 -1
- package/console/auth/github/callback/__next.auth.txt +1 -1
- package/console/auth/github/callback.html +1 -1
- package/console/auth/github/callback.txt +1 -1
- package/console/auth/oauth/callback/__next._full.txt +1 -1
- package/console/auth/oauth/callback/__next._head.txt +1 -1
- package/console/auth/oauth/callback/__next._index.txt +1 -1
- package/console/auth/oauth/callback/__next._tree.txt +1 -1
- package/console/auth/oauth/callback/__next.auth.oauth.callback.__PAGE__.txt +1 -1
- package/console/auth/oauth/callback/__next.auth.oauth.callback.txt +1 -1
- package/console/auth/oauth/callback/__next.auth.oauth.txt +1 -1
- package/console/auth/oauth/callback/__next.auth.txt +1 -1
- package/console/auth/oauth/callback.html +1 -1
- package/console/auth/oauth/callback.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next.chat.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next.chat.$d$org.$d$slug.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next.chat.$d$org.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__/__next.chat.txt +1 -1
- package/console/chat/__placeholder__/__placeholder__.html +1 -1
- package/console/chat/__placeholder__/__placeholder__.txt +1 -1
- package/console/conversations/__next._full.txt +1 -1
- package/console/conversations/__next._head.txt +1 -1
- package/console/conversations/__next._index.txt +1 -1
- package/console/conversations/__next._tree.txt +1 -1
- package/console/conversations/__next.conversations.__PAGE__.txt +1 -1
- package/console/conversations/__next.conversations.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next.conversations.$d$channelId.$d$key.__PAGE__.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next.conversations.$d$channelId.$d$key.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next.conversations.$d$channelId.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__/__next.conversations.txt +1 -1
- package/console/conversations/__placeholder__/__placeholder__.html +1 -1
- package/console/conversations/__placeholder__/__placeholder__.txt +1 -1
- package/console/conversations.html +1 -1
- package/console/conversations.txt +1 -1
- package/console/dashboard/__next._full.txt +1 -1
- package/console/dashboard/__next._head.txt +1 -1
- package/console/dashboard/__next._index.txt +1 -1
- package/console/dashboard/__next._tree.txt +1 -1
- package/console/dashboard/__next.dashboard.__PAGE__.txt +1 -1
- package/console/dashboard/__next.dashboard.txt +1 -1
- package/console/dashboard.html +1 -1
- package/console/dashboard.txt +1 -1
- package/console/executions/__placeholder__/__next._full.txt +1 -1
- package/console/executions/__placeholder__/__next._head.txt +1 -1
- package/console/executions/__placeholder__/__next._index.txt +1 -1
- package/console/executions/__placeholder__/__next._tree.txt +1 -1
- package/console/executions/__placeholder__/__next.executions.$d$id.__PAGE__.txt +1 -1
- package/console/executions/__placeholder__/__next.executions.$d$id.txt +1 -1
- package/console/executions/__placeholder__/__next.executions.txt +1 -1
- package/console/executions/__placeholder__.html +1 -1
- package/console/executions/__placeholder__.txt +1 -1
- package/console/index.html +1 -1
- package/console/index.txt +1 -1
- package/console/invite/__placeholder__/__next._full.txt +1 -1
- package/console/invite/__placeholder__/__next._head.txt +1 -1
- package/console/invite/__placeholder__/__next._index.txt +1 -1
- package/console/invite/__placeholder__/__next._tree.txt +1 -1
- package/console/invite/__placeholder__/__next.invite.$d$token.__PAGE__.txt +1 -1
- package/console/invite/__placeholder__/__next.invite.$d$token.txt +1 -1
- package/console/invite/__placeholder__/__next.invite.txt +1 -1
- package/console/invite/__placeholder__.html +1 -1
- package/console/invite/__placeholder__.txt +1 -1
- package/console/library/__next._full.txt +1 -1
- package/console/library/__next._head.txt +1 -1
- package/console/library/__next._index.txt +1 -1
- package/console/library/__next._tree.txt +1 -1
- package/console/library/__next.library.__PAGE__.txt +1 -1
- package/console/library/__next.library.txt +1 -1
- package/console/library/agents/__next._full.txt +1 -1
- package/console/library/agents/__next._head.txt +1 -1
- package/console/library/agents/__next._index.txt +1 -1
- package/console/library/agents/__next._tree.txt +1 -1
- package/console/library/agents/__next.library.agents.__PAGE__.txt +1 -1
- package/console/library/agents/__next.library.agents.txt +1 -1
- package/console/library/agents/__next.library.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next.library.agents.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next.library.agents.$d$org.$d$slug.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next.library.agents.$d$org.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next.library.agents.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__/__next.library.txt +1 -1
- package/console/library/agents/__placeholder__/__placeholder__.html +1 -1
- package/console/library/agents/__placeholder__/__placeholder__.txt +1 -1
- package/console/library/agents/new/__next._full.txt +1 -1
- package/console/library/agents/new/__next._head.txt +1 -1
- package/console/library/agents/new/__next._index.txt +1 -1
- package/console/library/agents/new/__next._tree.txt +1 -1
- package/console/library/agents/new/__next.library.agents.new.__PAGE__.txt +1 -1
- package/console/library/agents/new/__next.library.agents.new.txt +1 -1
- package/console/library/agents/new/__next.library.agents.txt +1 -1
- package/console/library/agents/new/__next.library.txt +1 -1
- package/console/library/agents/new.html +1 -1
- package/console/library/agents/new.txt +1 -1
- package/console/library/agents.html +1 -1
- package/console/library/agents.txt +1 -1
- package/console/library/mcp-servers/__next._full.txt +1 -1
- package/console/library/mcp-servers/__next._head.txt +1 -1
- package/console/library/mcp-servers/__next._index.txt +1 -1
- package/console/library/mcp-servers/__next._tree.txt +1 -1
- package/console/library/mcp-servers/__next.library.mcp-servers.__PAGE__.txt +1 -1
- package/console/library/mcp-servers/__next.library.mcp-servers.txt +1 -1
- package/console/library/mcp-servers/__next.library.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next.library.mcp-servers.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next.library.mcp-servers.$d$org.$d$slug.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next.library.mcp-servers.$d$org.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next.library.mcp-servers.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__/__next.library.txt +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__.html +1 -1
- package/console/library/mcp-servers/__placeholder__/__placeholder__.txt +1 -1
- package/console/library/mcp-servers/new/__next._full.txt +1 -1
- package/console/library/mcp-servers/new/__next._head.txt +1 -1
- package/console/library/mcp-servers/new/__next._index.txt +1 -1
- package/console/library/mcp-servers/new/__next._tree.txt +1 -1
- package/console/library/mcp-servers/new/__next.library.mcp-servers.new.__PAGE__.txt +1 -1
- package/console/library/mcp-servers/new/__next.library.mcp-servers.new.txt +1 -1
- package/console/library/mcp-servers/new/__next.library.mcp-servers.txt +1 -1
- package/console/library/mcp-servers/new/__next.library.txt +1 -1
- package/console/library/mcp-servers/new.html +1 -1
- package/console/library/mcp-servers/new.txt +1 -1
- package/console/library/mcp-servers.html +1 -1
- package/console/library/mcp-servers.txt +1 -1
- package/console/library/plugins/__next._full.txt +1 -1
- package/console/library/plugins/__next._head.txt +1 -1
- package/console/library/plugins/__next._index.txt +1 -1
- package/console/library/plugins/__next._tree.txt +1 -1
- package/console/library/plugins/__next.library.plugins.__PAGE__.txt +1 -1
- package/console/library/plugins/__next.library.plugins.txt +1 -1
- package/console/library/plugins/__next.library.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next.library.plugins.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next.library.plugins.$d$org.$d$slug.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next.library.plugins.$d$org.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next.library.plugins.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__/__next.library.txt +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__.html +1 -1
- package/console/library/plugins/__placeholder__/__placeholder__.txt +1 -1
- package/console/library/plugins/upload/__next._full.txt +1 -1
- package/console/library/plugins/upload/__next._head.txt +1 -1
- package/console/library/plugins/upload/__next._index.txt +1 -1
- package/console/library/plugins/upload/__next._tree.txt +1 -1
- package/console/library/plugins/upload/__next.library.plugins.txt +1 -1
- package/console/library/plugins/upload/__next.library.plugins.upload.__PAGE__.txt +1 -1
- package/console/library/plugins/upload/__next.library.plugins.upload.txt +1 -1
- package/console/library/plugins/upload/__next.library.txt +1 -1
- package/console/library/plugins/upload.html +1 -1
- package/console/library/plugins/upload.txt +1 -1
- package/console/library/plugins.html +1 -1
- package/console/library/plugins.txt +1 -1
- package/console/library/schedules/__next._full.txt +1 -1
- package/console/library/schedules/__next._head.txt +1 -1
- package/console/library/schedules/__next._index.txt +1 -1
- package/console/library/schedules/__next._tree.txt +1 -1
- package/console/library/schedules/__next.library.schedules.__PAGE__.txt +1 -1
- package/console/library/schedules/__next.library.schedules.txt +1 -1
- package/console/library/schedules/__next.library.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next.library.schedules.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next.library.schedules.$d$org.$d$slug.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next.library.schedules.$d$org.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next.library.schedules.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__/__next.library.txt +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__.html +1 -1
- package/console/library/schedules/__placeholder__/__placeholder__.txt +1 -1
- package/console/library/schedules/new/__next._full.txt +1 -1
- package/console/library/schedules/new/__next._head.txt +1 -1
- package/console/library/schedules/new/__next._index.txt +1 -1
- package/console/library/schedules/new/__next._tree.txt +1 -1
- package/console/library/schedules/new/__next.library.schedules.new.__PAGE__.txt +1 -1
- package/console/library/schedules/new/__next.library.schedules.new.txt +1 -1
- package/console/library/schedules/new/__next.library.schedules.txt +1 -1
- package/console/library/schedules/new/__next.library.txt +1 -1
- package/console/library/schedules/new.html +1 -1
- package/console/library/schedules/new.txt +1 -1
- package/console/library/schedules.html +1 -1
- package/console/library/schedules.txt +1 -1
- package/console/library/skills/__next._full.txt +1 -1
- package/console/library/skills/__next._head.txt +1 -1
- package/console/library/skills/__next._index.txt +1 -1
- package/console/library/skills/__next._tree.txt +1 -1
- package/console/library/skills/__next.library.skills.__PAGE__.txt +1 -1
- package/console/library/skills/__next.library.skills.txt +1 -1
- package/console/library/skills/__next.library.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next.library.skills.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next.library.skills.$d$org.$d$slug.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next.library.skills.$d$org.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next.library.skills.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__/__next.library.txt +1 -1
- package/console/library/skills/__placeholder__/__placeholder__.html +1 -1
- package/console/library/skills/__placeholder__/__placeholder__.txt +1 -1
- package/console/library/skills/new/__next._full.txt +1 -1
- package/console/library/skills/new/__next._head.txt +1 -1
- package/console/library/skills/new/__next._index.txt +1 -1
- package/console/library/skills/new/__next._tree.txt +1 -1
- package/console/library/skills/new/__next.library.skills.new.__PAGE__.txt +1 -1
- package/console/library/skills/new/__next.library.skills.new.txt +1 -1
- package/console/library/skills/new/__next.library.skills.txt +1 -1
- package/console/library/skills/new/__next.library.txt +1 -1
- package/console/library/skills/new.html +1 -1
- package/console/library/skills/new.txt +1 -1
- package/console/library/skills.html +1 -1
- package/console/library/skills.txt +1 -1
- package/console/library/workflows/__next._full.txt +1 -1
- package/console/library/workflows/__next._head.txt +1 -1
- package/console/library/workflows/__next._index.txt +1 -1
- package/console/library/workflows/__next._tree.txt +1 -1
- package/console/library/workflows/__next.library.txt +1 -1
- package/console/library/workflows/__next.library.workflows.__PAGE__.txt +1 -1
- package/console/library/workflows/__next.library.workflows.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next.library.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next.library.workflows.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next.library.workflows.$d$org.$d$slug.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next.library.workflows.$d$org.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__/__next.library.workflows.txt +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__.html +1 -1
- package/console/library/workflows/__placeholder__/__placeholder__.txt +1 -1
- package/console/library/workflows/executions/__next._full.txt +1 -1
- package/console/library/workflows/executions/__next._head.txt +1 -1
- package/console/library/workflows/executions/__next._index.txt +1 -1
- package/console/library/workflows/executions/__next._tree.txt +1 -1
- package/console/library/workflows/executions/__next.library.txt +1 -1
- package/console/library/workflows/executions/__next.library.workflows.executions.__PAGE__.txt +1 -1
- package/console/library/workflows/executions/__next.library.workflows.executions.txt +1 -1
- package/console/library/workflows/executions/__next.library.workflows.txt +1 -1
- package/console/library/workflows/executions.html +1 -1
- package/console/library/workflows/executions.txt +1 -1
- package/console/library/workflows/new/__next._full.txt +1 -1
- package/console/library/workflows/new/__next._head.txt +1 -1
- package/console/library/workflows/new/__next._index.txt +1 -1
- package/console/library/workflows/new/__next._tree.txt +1 -1
- package/console/library/workflows/new/__next.library.txt +1 -1
- package/console/library/workflows/new/__next.library.workflows.new.__PAGE__.txt +1 -1
- package/console/library/workflows/new/__next.library.workflows.new.txt +1 -1
- package/console/library/workflows/new/__next.library.workflows.txt +1 -1
- package/console/library/workflows/new.html +1 -1
- package/console/library/workflows/new.txt +1 -1
- package/console/library/workflows.html +1 -1
- package/console/library/workflows.txt +1 -1
- package/console/library.html +1 -1
- package/console/library.txt +1 -1
- package/console/login/__next._full.txt +1 -1
- package/console/login/__next._head.txt +1 -1
- package/console/login/__next._index.txt +1 -1
- package/console/login/__next._tree.txt +1 -1
- package/console/login/__next.login.__PAGE__.txt +1 -1
- package/console/login/__next.login.txt +1 -1
- package/console/login.html +1 -1
- package/console/login.txt +1 -1
- package/console/marketplace/__next._full.txt +1 -1
- package/console/marketplace/__next._head.txt +1 -1
- package/console/marketplace/__next._index.txt +1 -1
- package/console/marketplace/__next._tree.txt +1 -1
- package/console/marketplace/__next.marketplace.__PAGE__.txt +1 -1
- package/console/marketplace/__next.marketplace.txt +1 -1
- package/console/marketplace.html +1 -1
- package/console/marketplace.txt +1 -1
- package/console/oauth/slack/callback/__next._full.txt +1 -1
- package/console/oauth/slack/callback/__next._head.txt +1 -1
- package/console/oauth/slack/callback/__next._index.txt +1 -1
- package/console/oauth/slack/callback/__next._tree.txt +1 -1
- package/console/oauth/slack/callback/__next.oauth.slack.callback.__PAGE__.txt +1 -1
- package/console/oauth/slack/callback/__next.oauth.slack.callback.txt +1 -1
- package/console/oauth/slack/callback/__next.oauth.slack.txt +1 -1
- package/console/oauth/slack/callback/__next.oauth.txt +1 -1
- package/console/oauth/slack/callback.html +1 -1
- package/console/oauth/slack/callback.txt +1 -1
- package/console/sessions/__placeholder__/__next._full.txt +1 -1
- package/console/sessions/__placeholder__/__next._head.txt +1 -1
- package/console/sessions/__placeholder__/__next._index.txt +1 -1
- package/console/sessions/__placeholder__/__next._tree.txt +1 -1
- package/console/sessions/__placeholder__/__next.sessions.$d$id.__PAGE__.txt +1 -1
- package/console/sessions/__placeholder__/__next.sessions.$d$id.txt +1 -1
- package/console/sessions/__placeholder__/__next.sessions.txt +1 -1
- package/console/sessions/__placeholder__.html +1 -1
- package/console/sessions/__placeholder__.txt +1 -1
- package/console/settings/__next._full.txt +1 -1
- package/console/settings/__next._head.txt +1 -1
- package/console/settings/__next._index.txt +1 -1
- package/console/settings/__next._tree.txt +1 -1
- package/console/settings/__next.settings.__PAGE__.txt +1 -1
- package/console/settings/__next.settings.txt +1 -1
- package/console/settings/account-preferences/__next._full.txt +1 -1
- package/console/settings/account-preferences/__next._head.txt +1 -1
- package/console/settings/account-preferences/__next._index.txt +1 -1
- package/console/settings/account-preferences/__next._tree.txt +1 -1
- package/console/settings/account-preferences/__next.settings.account-preferences.__PAGE__.txt +1 -1
- package/console/settings/account-preferences/__next.settings.account-preferences.txt +1 -1
- package/console/settings/account-preferences/__next.settings.txt +1 -1
- package/console/settings/account-preferences.html +1 -1
- package/console/settings/account-preferences.txt +1 -1
- package/console/settings/api-keys/__next._full.txt +1 -1
- package/console/settings/api-keys/__next._head.txt +1 -1
- package/console/settings/api-keys/__next._index.txt +1 -1
- package/console/settings/api-keys/__next._tree.txt +1 -1
- package/console/settings/api-keys/__next.settings.api-keys.__PAGE__.txt +1 -1
- package/console/settings/api-keys/__next.settings.api-keys.txt +1 -1
- package/console/settings/api-keys/__next.settings.txt +1 -1
- package/console/settings/api-keys.html +1 -1
- package/console/settings/api-keys.txt +1 -1
- package/console/settings/billing/__next._full.txt +1 -1
- package/console/settings/billing/__next._head.txt +1 -1
- package/console/settings/billing/__next._index.txt +1 -1
- package/console/settings/billing/__next._tree.txt +1 -1
- package/console/settings/billing/__next.settings.billing.__PAGE__.txt +1 -1
- package/console/settings/billing/__next.settings.billing.txt +1 -1
- package/console/settings/billing/__next.settings.txt +1 -1
- package/console/settings/billing.html +1 -1
- package/console/settings/billing.txt +1 -1
- package/console/settings/channel-apps/__next._full.txt +1 -1
- package/console/settings/channel-apps/__next._head.txt +1 -1
- package/console/settings/channel-apps/__next._index.txt +1 -1
- package/console/settings/channel-apps/__next._tree.txt +1 -1
- package/console/settings/channel-apps/__next.settings.channel-apps.__PAGE__.txt +1 -1
- package/console/settings/channel-apps/__next.settings.channel-apps.txt +1 -1
- package/console/settings/channel-apps/__next.settings.txt +1 -1
- package/console/settings/channel-apps.html +1 -1
- package/console/settings/channel-apps.txt +1 -1
- package/console/settings/cursor-accounts/__next._full.txt +1 -1
- package/console/settings/cursor-accounts/__next._head.txt +1 -1
- package/console/settings/cursor-accounts/__next._index.txt +1 -1
- package/console/settings/cursor-accounts/__next._tree.txt +1 -1
- package/console/settings/cursor-accounts/__next.settings.cursor-accounts.__PAGE__.txt +1 -1
- package/console/settings/cursor-accounts/__next.settings.cursor-accounts.txt +1 -1
- package/console/settings/cursor-accounts/__next.settings.txt +1 -1
- package/console/settings/cursor-accounts.html +1 -1
- package/console/settings/cursor-accounts.txt +1 -1
- package/console/settings/environments/__next._full.txt +1 -1
- package/console/settings/environments/__next._head.txt +1 -1
- package/console/settings/environments/__next._index.txt +1 -1
- package/console/settings/environments/__next._tree.txt +1 -1
- package/console/settings/environments/__next.settings.environments.__PAGE__.txt +1 -1
- package/console/settings/environments/__next.settings.environments.txt +1 -1
- package/console/settings/environments/__next.settings.txt +1 -1
- package/console/settings/environments.html +1 -1
- package/console/settings/environments.txt +1 -1
- package/console/settings/identity-providers/__next._full.txt +1 -1
- package/console/settings/identity-providers/__next._head.txt +1 -1
- package/console/settings/identity-providers/__next._index.txt +1 -1
- package/console/settings/identity-providers/__next._tree.txt +1 -1
- package/console/settings/identity-providers/__next.settings.identity-providers.__PAGE__.txt +1 -1
- package/console/settings/identity-providers/__next.settings.identity-providers.txt +1 -1
- package/console/settings/identity-providers/__next.settings.txt +1 -1
- package/console/settings/identity-providers.html +1 -1
- package/console/settings/identity-providers.txt +1 -1
- package/console/settings/invitations/__next._full.txt +1 -1
- package/console/settings/invitations/__next._head.txt +1 -1
- package/console/settings/invitations/__next._index.txt +1 -1
- package/console/settings/invitations/__next._tree.txt +1 -1
- package/console/settings/invitations/__next.settings.invitations.__PAGE__.txt +1 -1
- package/console/settings/invitations/__next.settings.invitations.txt +1 -1
- package/console/settings/invitations/__next.settings.txt +1 -1
- package/console/settings/invitations.html +1 -1
- package/console/settings/invitations.txt +1 -1
- package/console/settings/licenses/__next._full.txt +1 -1
- package/console/settings/licenses/__next._head.txt +1 -1
- package/console/settings/licenses/__next._index.txt +1 -1
- package/console/settings/licenses/__next._tree.txt +1 -1
- package/console/settings/licenses/__next.settings.licenses.__PAGE__.txt +1 -1
- package/console/settings/licenses/__next.settings.licenses.txt +1 -1
- package/console/settings/licenses/__next.settings.txt +1 -1
- package/console/settings/licenses.html +1 -1
- package/console/settings/licenses.txt +1 -1
- package/console/settings/members/__next._full.txt +1 -1
- package/console/settings/members/__next._head.txt +1 -1
- package/console/settings/members/__next._index.txt +1 -1
- package/console/settings/members/__next._tree.txt +1 -1
- package/console/settings/members/__next.settings.members.__PAGE__.txt +1 -1
- package/console/settings/members/__next.settings.members.txt +1 -1
- package/console/settings/members/__next.settings.txt +1 -1
- package/console/settings/members.html +1 -1
- package/console/settings/members.txt +1 -1
- package/console/settings/memory/__next._full.txt +1 -1
- package/console/settings/memory/__next._head.txt +1 -1
- package/console/settings/memory/__next._index.txt +1 -1
- package/console/settings/memory/__next._tree.txt +1 -1
- package/console/settings/memory/__next.settings.memory.__PAGE__.txt +1 -1
- package/console/settings/memory/__next.settings.memory.txt +1 -1
- package/console/settings/memory/__next.settings.txt +1 -1
- package/console/settings/memory.html +1 -1
- package/console/settings/memory.txt +1 -1
- package/console/settings/oauth-apps/__next._full.txt +1 -1
- package/console/settings/oauth-apps/__next._head.txt +1 -1
- package/console/settings/oauth-apps/__next._index.txt +1 -1
- package/console/settings/oauth-apps/__next._tree.txt +1 -1
- package/console/settings/oauth-apps/__next.settings.oauth-apps.__PAGE__.txt +1 -1
- package/console/settings/oauth-apps/__next.settings.oauth-apps.txt +1 -1
- package/console/settings/oauth-apps/__next.settings.txt +1 -1
- package/console/settings/oauth-apps.html +1 -1
- package/console/settings/oauth-apps.txt +1 -1
- package/console/settings/org-preferences/__next._full.txt +1 -1
- package/console/settings/org-preferences/__next._head.txt +1 -1
- package/console/settings/org-preferences/__next._index.txt +1 -1
- package/console/settings/org-preferences/__next._tree.txt +1 -1
- package/console/settings/org-preferences/__next.settings.org-preferences.__PAGE__.txt +1 -1
- package/console/settings/org-preferences/__next.settings.org-preferences.txt +1 -1
- package/console/settings/org-preferences/__next.settings.txt +1 -1
- package/console/settings/org-preferences.html +1 -1
- package/console/settings/org-preferences.txt +1 -1
- package/console/settings/org-profile/__next._full.txt +1 -1
- package/console/settings/org-profile/__next._head.txt +1 -1
- package/console/settings/org-profile/__next._index.txt +1 -1
- package/console/settings/org-profile/__next._tree.txt +1 -1
- package/console/settings/org-profile/__next.settings.org-profile.__PAGE__.txt +1 -1
- package/console/settings/org-profile/__next.settings.org-profile.txt +1 -1
- package/console/settings/org-profile/__next.settings.txt +1 -1
- package/console/settings/org-profile.html +1 -1
- package/console/settings/org-profile.txt +1 -1
- package/console/settings/platform-clients/__next._full.txt +1 -1
- package/console/settings/platform-clients/__next._head.txt +1 -1
- package/console/settings/platform-clients/__next._index.txt +1 -1
- package/console/settings/platform-clients/__next._tree.txt +1 -1
- package/console/settings/platform-clients/__next.settings.platform-clients.__PAGE__.txt +1 -1
- package/console/settings/platform-clients/__next.settings.platform-clients.txt +1 -1
- package/console/settings/platform-clients/__next.settings.txt +1 -1
- package/console/settings/platform-clients.html +1 -1
- package/console/settings/platform-clients.txt +1 -1
- package/console/settings/pricing-governance/__next._full.txt +1 -1
- package/console/settings/pricing-governance/__next._head.txt +1 -1
- package/console/settings/pricing-governance/__next._index.txt +1 -1
- package/console/settings/pricing-governance/__next._tree.txt +1 -1
- package/console/settings/pricing-governance/__next.settings.pricing-governance.__PAGE__.txt +1 -1
- package/console/settings/pricing-governance/__next.settings.pricing-governance.txt +1 -1
- package/console/settings/pricing-governance/__next.settings.txt +1 -1
- package/console/settings/pricing-governance.html +1 -1
- package/console/settings/pricing-governance.txt +1 -1
- package/console/settings/provider-standing/__next._full.txt +1 -1
- package/console/settings/provider-standing/__next._head.txt +1 -1
- package/console/settings/provider-standing/__next._index.txt +1 -1
- package/console/settings/provider-standing/__next._tree.txt +1 -1
- package/console/settings/provider-standing/__next.settings.provider-standing.__PAGE__.txt +1 -1
- package/console/settings/provider-standing/__next.settings.provider-standing.txt +1 -1
- package/console/settings/provider-standing/__next.settings.txt +1 -1
- package/console/settings/provider-standing.html +1 -1
- package/console/settings/provider-standing.txt +1 -1
- package/console/settings/teams/__next._full.txt +1 -1
- package/console/settings/teams/__next._head.txt +1 -1
- package/console/settings/teams/__next._index.txt +1 -1
- package/console/settings/teams/__next._tree.txt +1 -1
- package/console/settings/teams/__next.settings.teams.__PAGE__.txt +1 -1
- package/console/settings/teams/__next.settings.teams.txt +1 -1
- package/console/settings/teams/__next.settings.txt +1 -1
- package/console/settings/teams.html +1 -1
- package/console/settings/teams.txt +1 -1
- package/console/settings/usage/__next._full.txt +1 -1
- package/console/settings/usage/__next._head.txt +1 -1
- package/console/settings/usage/__next._index.txt +1 -1
- package/console/settings/usage/__next._tree.txt +1 -1
- package/console/settings/usage/__next.settings.txt +1 -1
- package/console/settings/usage/__next.settings.usage.__PAGE__.txt +1 -1
- package/console/settings/usage/__next.settings.usage.txt +1 -1
- package/console/settings/usage.html +1 -1
- package/console/settings/usage.txt +1 -1
- package/console/settings.html +1 -1
- package/console/settings.txt +1 -1
- package/console/workflows/__next._full.txt +1 -1
- package/console/workflows/__next._head.txt +1 -1
- package/console/workflows/__next._index.txt +1 -1
- package/console/workflows/__next._tree.txt +1 -1
- package/console/workflows/__next.workflows.__PAGE__.txt +1 -1
- package/console/workflows/__next.workflows.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next._full.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next._head.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next._index.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next._tree.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next.workflows.$d$org.$d$slug.__PAGE__.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next.workflows.$d$org.$d$slug.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next.workflows.$d$org.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__/__next.workflows.txt +1 -1
- package/console/workflows/__placeholder__/__placeholder__.html +1 -1
- package/console/workflows/__placeholder__/__placeholder__.txt +1 -1
- package/console/workflows/executions/__next._full.txt +1 -1
- package/console/workflows/executions/__next._head.txt +1 -1
- package/console/workflows/executions/__next._index.txt +1 -1
- package/console/workflows/executions/__next._tree.txt +1 -1
- package/console/workflows/executions/__next.workflows.executions.__PAGE__.txt +1 -1
- package/console/workflows/executions/__next.workflows.executions.txt +1 -1
- package/console/workflows/executions/__next.workflows.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next._full.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next._head.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next._index.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next._tree.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next.workflows.executions.$d$id.__PAGE__.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next.workflows.executions.$d$id.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next.workflows.executions.txt +1 -1
- package/console/workflows/executions/__placeholder__/__next.workflows.txt +1 -1
- package/console/workflows/executions/__placeholder__.html +1 -1
- package/console/workflows/executions/__placeholder__.txt +1 -1
- package/console/workflows/executions.html +1 -1
- package/console/workflows/executions.txt +1 -1
- package/console/workflows.html +1 -1
- package/console/workflows.txt +1 -1
- package/main.js +3 -3
- package/package.json +6 -6
- /package/console/_next/static/{RqXVqkFE2JUuPd2uFJmTQ → veqvz6RjoYoLNTdP_fk3c}/_buildManifest.js +0 -0
- /package/console/_next/static/{RqXVqkFE2JUuPd2uFJmTQ → veqvz6RjoYoLNTdP_fk3c}/_clientMiddlewareManifest.js +0 -0
- /package/console/_next/static/{RqXVqkFE2JUuPd2uFJmTQ → veqvz6RjoYoLNTdP_fk3c}/_ssgManifest.js +0 -0
package/main.js
CHANGED
|
@@ -467,7 +467,7 @@ ${captureLines}`:capture.stack}module2.exports.fetch=function(init,options=void
|
|
|
467
467
|
`+message6)}function abortHandshakeOrEmitwsClientError(server,req,socket,code,message6,headers2){if(server.listenerCount("wsClientError")){let err2=new Error(message6);Error.captureStackTrace(err2,abortHandshakeOrEmitwsClientError),server.emit("wsClientError",err2,socket,req)}else abortHandshake(socket,code,message6,headers2)}}});var require_ws=__commonJS({"node_modules/ws/index.js"(exports2,module2){"use strict";var createWebSocketStream=require_stream2(),extension=require_extension(),PerMessageDeflate=require_permessage_deflate2(),Receiver=require_receiver2(),Sender=require_sender2(),subprotocol=require_subprotocol(),WebSocket2=require_websocket2(),WebSocketServer=require_websocket_server();WebSocket2.createWebSocketStream=createWebSocketStream;WebSocket2.extension=extension;WebSocket2.PerMessageDeflate=PerMessageDeflate;WebSocket2.Receiver=Receiver;WebSocket2.Sender=Sender;WebSocket2.Server=WebSocketServer;WebSocket2.subprotocol=subprotocol;WebSocket2.WebSocket=WebSocket2;WebSocket2.WebSocketServer=WebSocketServer;module2.exports=WebSocket2}});var require_node2=__commonJS({"node_modules/isomorphic-ws/node.js"(exports2,module2){"use strict";module2.exports=require_ws()}});var require_constants11=__commonJS({"node_modules/stream-buffers/lib/constants.js"(exports2,module2){"use strict";module2.exports={DEFAULT_INITIAL_SIZE:8*1024,DEFAULT_INCREMENT_AMOUNT:8*1024,DEFAULT_FREQUENCY:1,DEFAULT_CHUNK_SIZE:1024}}});var require_readable_streambuffer=__commonJS({"node_modules/stream-buffers/lib/readable_streambuffer.js"(exports2,module2){"use strict";var stream=require("stream"),constants=require_constants11(),util=require("util"),ReadableStreamBuffer=module2.exports=function(opts){var that=this;opts=opts||{},stream.Readable.call(this,opts),this.stopped=!1;var frequency=opts.hasOwnProperty("frequency")?opts.frequency:constants.DEFAULT_FREQUENCY,chunkSize=opts.chunkSize||constants.DEFAULT_CHUNK_SIZE,initialSize=opts.initialSize||constants.DEFAULT_INITIAL_SIZE,incrementAmount=opts.incrementAmount||constants.DEFAULT_INCREMENT_AMOUNT,size=0,buffer=new Buffer(initialSize),allowPush=!1,sendData=function(){var amount=Math.min(chunkSize,size),sendMore=!1;if(amount>0){var chunk=null;chunk=new Buffer(amount),buffer.copy(chunk,0,0,amount),sendMore=that.push(chunk)!==!1,allowPush=sendMore,buffer.copy(buffer,0,amount,size),size-=amount}size===0&&that.stopped&&that.push(null),sendMore?sendData.timeout=setTimeout(sendData,frequency):sendData.timeout=null};this.stop=function(){if(this.stopped)throw new Error("stop() called on already stopped ReadableStreamBuffer");this.stopped=!0,size===0&&this.push(null)},this.size=function(){return size},this.maxSize=function(){return buffer.length};var increaseBufferIfNecessary=function(incomingDataSize){if(buffer.length-size<incomingDataSize){var factor=Math.ceil((incomingDataSize-(buffer.length-size))/incrementAmount),newBuffer=new Buffer(buffer.length+incrementAmount*factor);buffer.copy(newBuffer,0,0,size),buffer=newBuffer}},kickSendDataTask=function(){!sendData.timeout&&allowPush&&(sendData.timeout=setTimeout(sendData,frequency))};this.put=function(data,encoding){if(that.stopped)throw new Error("Tried to write data to a stopped ReadableStreamBuffer");if(Buffer.isBuffer(data))increaseBufferIfNecessary(data.length),data.copy(buffer,size,0),size+=data.length;else{data=data+"";var dataSizeInBytes=Buffer.byteLength(data);increaseBufferIfNecessary(dataSizeInBytes),buffer.write(data,size,encoding||"utf8"),size+=dataSizeInBytes}kickSendDataTask()},this._read=function(){allowPush=!0,kickSendDataTask()}};util.inherits(ReadableStreamBuffer,stream.Readable)}});var require_writable_streambuffer=__commonJS({"node_modules/stream-buffers/lib/writable_streambuffer.js"(exports2,module2){"use strict";var util=require("util"),stream=require("stream"),constants=require_constants11(),WritableStreamBuffer2=module2.exports=function(opts){opts=opts||{},opts.decodeStrings=!0,stream.Writable.call(this,opts);var initialSize=opts.initialSize||constants.DEFAULT_INITIAL_SIZE,incrementAmount=opts.incrementAmount||constants.DEFAULT_INCREMENT_AMOUNT,buffer=new Buffer(initialSize),size=0;this.size=function(){return size},this.maxSize=function(){return buffer.length},this.getContents=function(length){if(!size)return!1;var data=new Buffer(Math.min(length||size,size));return buffer.copy(data,0,0,data.length),data.length<size&&buffer.copy(buffer,0,data.length),size-=data.length,data},this.getContentsAsString=function(encoding,length){if(!size)return!1;var data=buffer.toString(encoding||"utf8",0,Math.min(length||size,size)),dataLength=Buffer.byteLength(data);return dataLength<size&&buffer.copy(buffer,0,dataLength),size-=dataLength,data};var increaseBufferIfNecessary=function(incomingDataSize){if(buffer.length-size<incomingDataSize){var factor=Math.ceil((incomingDataSize-(buffer.length-size))/incrementAmount),newBuffer=new Buffer(buffer.length+incrementAmount*factor);buffer.copy(newBuffer,0,0,size),buffer=newBuffer}};this._write=function(chunk,encoding,callback){increaseBufferIfNecessary(chunk.length),chunk.copy(buffer,size,0),size+=chunk.length,callback()}};util.inherits(WritableStreamBuffer2,stream.Writable)}});var require_streambuffer=__commonJS({"node_modules/stream-buffers/lib/streambuffer.js"(exports2,module2){"use strict";module2.exports=require_constants11();module2.exports.ReadableStreamBuffer=require_readable_streambuffer();module2.exports.WritableStreamBuffer=require_writable_streambuffer()}});var require_default2=__commonJS({"node_modules/events-universal/default.js"(exports2,module2){module2.exports=require("events")}});var require_fixed_size=__commonJS({"node_modules/fast-fifo/fixed-size.js"(exports2,module2){module2.exports=class{constructor(hwm){if(!(hwm>0)||(hwm-1&hwm)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(hwm),this.mask=hwm-1,this.top=0,this.btm=0,this.next=null}clear(){this.top=this.btm=0,this.next=null,this.buffer.fill(void 0)}push(data){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=data,this.top=this.top+1&this.mask,!0)}shift(){let last=this.buffer[this.btm];if(last!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,last}peek(){return this.buffer[this.btm]}isEmpty(){return this.buffer[this.btm]===void 0}}}});var require_fast_fifo=__commonJS({"node_modules/fast-fifo/index.js"(exports2,module2){var FixedFIFO=require_fixed_size();module2.exports=class{constructor(hwm){this.hwm=hwm||16,this.head=new FixedFIFO(this.hwm),this.tail=this.head,this.length=0}clear(){this.head=this.tail,this.head.clear(),this.length=0}push(val){if(this.length++,!this.head.push(val)){let prev=this.head;this.head=prev.next=new FixedFIFO(2*this.head.buffer.length),this.head.push(val)}}shift(){this.length!==0&&this.length--;let val=this.tail.shift();if(val===void 0&&this.tail.next){let next=this.tail.next;return this.tail.next=null,this.tail=next,this.tail.shift()}return val}peek(){let val=this.tail.peek();return val===void 0&&this.tail.next?this.tail.next.peek():val}isEmpty(){return this.length===0}}}});var require_b4a=__commonJS({"node_modules/b4a/index.js"(exports2,module2){function isBuffer(value){return Buffer.isBuffer(value)||value instanceof Uint8Array}function isEncoding(encoding){return Buffer.isEncoding(encoding)}function alloc2(size,fill2,encoding){return Buffer.alloc(size,fill2,encoding)}function allocUnsafe(size){return Buffer.allocUnsafe(size)}function allocUnsafeSlow(size){return Buffer.allocUnsafeSlow(size)}function byteLength(string,encoding){return Buffer.byteLength(string,encoding)}function compare(a5,b7){return Buffer.compare(a5,b7)}function concat2(buffers,totalLength){return Buffer.concat(buffers,totalLength)}function copy(source,target,targetStart,start,end){return toBuffer3(source).copy(target,targetStart,start,end)}function equals3(a5,b7){return toBuffer3(a5).equals(b7)}function fill(buffer,value,offset,end,encoding){return toBuffer3(buffer).fill(value,offset,end,encoding)}function from2(value,encodingOrOffset,length){return Buffer.from(value,encodingOrOffset,length)}function includes(buffer,value,byteOffset,encoding){return toBuffer3(buffer).includes(value,byteOffset,encoding)}function indexOf2(buffer,value,byfeOffset,encoding){return toBuffer3(buffer).indexOf(value,byfeOffset,encoding)}function lastIndexOf2(buffer,value,byteOffset,encoding){return toBuffer3(buffer).lastIndexOf(value,byteOffset,encoding)}function swap16(buffer){return toBuffer3(buffer).swap16()}function swap32(buffer){return toBuffer3(buffer).swap32()}function swap64(buffer){return toBuffer3(buffer).swap64()}function toBuffer3(buffer){return Buffer.isBuffer(buffer)?buffer:Buffer.from(buffer.buffer,buffer.byteOffset,buffer.byteLength)}function toString(buffer,encoding,start,end){return toBuffer3(buffer).toString(encoding,start,end)}function write2(buffer,string,offset,length,encoding){return toBuffer3(buffer).write(string,offset,length,encoding)}function readDoubleBE(buffer,offset){return toBuffer3(buffer).readDoubleBE(offset)}function readDoubleLE(buffer,offset){return toBuffer3(buffer).readDoubleLE(offset)}function readFloatBE(buffer,offset){return toBuffer3(buffer).readFloatBE(offset)}function readFloatLE(buffer,offset){return toBuffer3(buffer).readFloatLE(offset)}function readInt32BE(buffer,offset){return toBuffer3(buffer).readInt32BE(offset)}function readInt32LE(buffer,offset){return toBuffer3(buffer).readInt32LE(offset)}function readUInt32BE(buffer,offset){return toBuffer3(buffer).readUInt32BE(offset)}function readUInt32LE(buffer,offset){return toBuffer3(buffer).readUInt32LE(offset)}function writeDoubleBE(buffer,value,offset){return toBuffer3(buffer).writeDoubleBE(value,offset)}function writeDoubleLE(buffer,value,offset){return toBuffer3(buffer).writeDoubleLE(value,offset)}function writeFloatBE(buffer,value,offset){return toBuffer3(buffer).writeFloatBE(value,offset)}function writeFloatLE(buffer,value,offset){return toBuffer3(buffer).writeFloatLE(value,offset)}function writeInt32BE(buffer,value,offset){return toBuffer3(buffer).writeInt32BE(value,offset)}function writeInt32LE(buffer,value,offset){return toBuffer3(buffer).writeInt32LE(value,offset)}function writeUInt32BE(buffer,value,offset){return toBuffer3(buffer).writeUInt32BE(value,offset)}function writeUInt32LE(buffer,value,offset){return toBuffer3(buffer).writeUInt32LE(value,offset)}module2.exports={isBuffer,isEncoding,alloc:alloc2,allocUnsafe,allocUnsafeSlow,byteLength,compare,concat:concat2,copy,equals:equals3,fill,from:from2,includes,indexOf:indexOf2,lastIndexOf:lastIndexOf2,swap16,swap32,swap64,toBuffer:toBuffer3,toString,write:write2,readDoubleBE,readDoubleLE,readFloatBE,readFloatLE,readInt32BE,readInt32LE,readUInt32BE,readUInt32LE,writeDoubleBE,writeDoubleLE,writeFloatBE,writeFloatLE,writeInt32BE,writeInt32LE,writeUInt32BE,writeUInt32LE}}});var require_pass_through_decoder=__commonJS({"node_modules/text-decoder/lib/pass-through-decoder.js"(exports2,module2){var b4a=require_b4a();module2.exports=class{constructor(encoding){this.encoding=encoding}get remaining(){return 0}decode(data){return b4a.toString(data,this.encoding)}flush(){return""}}}});var require_utf8_decoder=__commonJS({"node_modules/text-decoder/lib/utf8-decoder.js"(exports2,module2){var b4a=require_b4a();module2.exports=class{constructor(){this._reset()}get remaining(){return this.bytesSeen}decode(data){if(data.byteLength===0)return"";if(this.bytesNeeded===0&&trailingIncomplete(data,0)===0)return this.bytesSeen=trailingBytesSeen(data),b4a.toString(data,"utf8");let result="",start=0;if(this.bytesNeeded>0){for(;start<data.byteLength;){let byte=data[start];if(byte<this.lowerBoundary||byte>this.upperBoundary){result+="\uFFFD",this._reset();break}if(this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|byte&63,this.bytesSeen++,start++,this.bytesSeen===this.bytesNeeded){result+=String.fromCodePoint(this.codePoint),this._reset();break}}if(this.bytesNeeded>0)return result}let trailing=trailingIncomplete(data,start),end=data.byteLength-trailing;end>start&&(result+=b4a.toString(data,"utf8",start,end));for(let i6=end;i6<data.byteLength;i6++){let byte=data[i6];if(this.bytesNeeded===0){byte<=127?(this.bytesSeen=0,result+=String.fromCharCode(byte)):byte>=194&&byte<=223?(this.bytesNeeded=2,this.bytesSeen=1,this.codePoint=byte&31):byte>=224&&byte<=239?(byte===224?this.lowerBoundary=160:byte===237&&(this.upperBoundary=159),this.bytesNeeded=3,this.bytesSeen=1,this.codePoint=byte&15):byte>=240&&byte<=244?(byte===240?this.lowerBoundary=144:byte===244&&(this.upperBoundary=143),this.bytesNeeded=4,this.bytesSeen=1,this.codePoint=byte&7):(this.bytesSeen=1,result+="\uFFFD");continue}if(byte<this.lowerBoundary||byte>this.upperBoundary){result+="\uFFFD",i6--,this._reset();continue}this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|byte&63,this.bytesSeen++,this.bytesSeen===this.bytesNeeded&&(result+=String.fromCodePoint(this.codePoint),this._reset())}return result}flush(){let result=this.bytesNeeded>0?"\uFFFD":"";return this._reset(),result}_reset(){this.codePoint=0,this.bytesNeeded=0,this.bytesSeen=0,this.lowerBoundary=128,this.upperBoundary=191}};function trailingIncomplete(data,start){let len=data.byteLength;if(len<=start)return 0;let limit=Math.max(start,len-4),i6=len-1;for(;i6>limit&&(data[i6]&192)===128;)i6--;if(i6<start)return 0;let byte=data[i6],needed;if(byte<=127)return 0;if(byte>=194&&byte<=223)needed=2;else if(byte>=224&&byte<=239)needed=3;else if(byte>=240&&byte<=244)needed=4;else return 0;let available=len-i6;return available<needed?available:0}function trailingBytesSeen(data){let len=data.byteLength;if(len===0)return 0;let last=data[len-1];if(last<=127)return 0;if((last&192)!==128)return 1;let limit=Math.max(0,len-4),i6=len-2;for(;i6>=limit&&(data[i6]&192)===128;)i6--;if(i6<0)return 1;let first=data[i6],needed;if(first>=194&&first<=223)needed=2;else if(first>=224&&first<=239)needed=3;else if(first>=240&&first<=244)needed=4;else return 1;if(len-i6!==needed)return 1;if(needed>=3){let second=data[i6+1];if(first===224&&second<160||first===237&&second>159||first===240&&second<144||first===244&&second>143)return 1}return 0}}});var require_text_decoder=__commonJS({"node_modules/text-decoder/index.js"(exports2,module2){var PassThroughDecoder=require_pass_through_decoder(),UTF8Decoder=require_utf8_decoder();module2.exports=class{constructor(encoding="utf8"){switch(this.encoding=normalizeEncoding(encoding),this.encoding){case"utf8":this.decoder=new UTF8Decoder;break;case"utf16le":case"base64":throw new Error("Unsupported encoding: "+this.encoding);default:this.decoder=new PassThroughDecoder(this.encoding)}}get remaining(){return this.decoder.remaining}push(data){return typeof data=="string"?data:this.decoder.decode(data)}write(data){return this.push(data)}end(data){let result="";return data&&(result=this.push(data)),result+=this.decoder.flush(),result}};function normalizeEncoding(encoding){switch(encoding=encoding.toLowerCase(),encoding){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return encoding;default:throw new Error("Unknown encoding: "+encoding)}}}});var require_errors7=__commonJS({"node_modules/streamx/lib/errors.js"(exports2,module2){module2.exports=class StreamError extends Error{constructor(msg,code,fn=StreamError){super(msg),this.code=code,Error.captureStackTrace&&Error.captureStackTrace(this,fn)}static isStreamDestroyed(err2){return err2&&err2.code==="STREAM_DESTROYED"}static isPrematureClose(err2){return err2&&err2.code==="PREMATURE_CLOSE"}static isAborted(err2){return err2&&err2.code==="ABORTED"}static isBadArgument(err2){return err2&&err2.code==="BAD_ARGUMENT"}get name(){return"StreamError"}static STREAM_DESTROYED(){return new StreamError("Stream was destroyed","STREAM_DESTROYED",StreamError.STREAM_DESTROYED)}static PREMATURE_CLOSE(msg="Premature close"){return new StreamError(msg,"PREMATURE_CLOSE",StreamError.PREMATURE_CLOSE)}static ABORTED(){return new StreamError("Stream aborted","ABORTED",StreamError.ABORTED)}static BAD_ARGUMENT(msg="Bad argument"){return new StreamError(msg,"BAD_ARGUMENT",StreamError.BAD_ARGUMENT)}}}});var require_streamx=__commonJS({"node_modules/streamx/index.js"(exports2,module2){var{EventEmitter}=require_default2(),FIFO=require_fast_fifo(),TextDecoder2=require_text_decoder(),StreamError=require_errors7(),qmt=typeof queueMicrotask>"u"?fn=>global.process.nextTick(fn):queueMicrotask,MAX=(1<<29)-1,OPENING=1,PREDESTROYING=2,DESTROYING=4,DESTROYED=8,NOT_OPENING=MAX^OPENING,NOT_PREDESTROYING=MAX^PREDESTROYING,READ_ACTIVE=16,READ_UPDATING=32,READ_PRIMARY=64,READ_QUEUED=128,READ_RESUMED=256,READ_PIPE_DRAINED=512,READ_ENDING=1024,READ_EMIT_DATA=2048,READ_EMIT_READABLE=4096,READ_EMITTED_READABLE=8192,READ_DONE=16384,READ_NEXT_TICK=32768,READ_NEEDS_PUSH=65536,READ_READ_AHEAD=131072,READ_FLOWING=READ_RESUMED|READ_PIPE_DRAINED,READ_ACTIVE_AND_NEEDS_PUSH=READ_ACTIVE|READ_NEEDS_PUSH,READ_PRIMARY_AND_ACTIVE=READ_PRIMARY|READ_ACTIVE,READ_EMIT_READABLE_AND_QUEUED=READ_EMIT_READABLE|READ_QUEUED,READ_RESUMED_READ_AHEAD=READ_RESUMED|READ_READ_AHEAD,READ_NOT_ACTIVE=MAX^READ_ACTIVE,READ_NON_PRIMARY=MAX^READ_PRIMARY,READ_NON_PRIMARY_AND_PUSHED=MAX^(READ_PRIMARY|READ_NEEDS_PUSH),READ_PUSHED=MAX^READ_NEEDS_PUSH,READ_PAUSED=MAX^READ_RESUMED,READ_NOT_QUEUED=MAX^(READ_QUEUED|READ_EMITTED_READABLE),READ_NOT_ENDING=MAX^READ_ENDING,READ_PIPE_NOT_DRAINED=MAX^READ_FLOWING,READ_NOT_NEXT_TICK=MAX^READ_NEXT_TICK,READ_NOT_UPDATING=MAX^READ_UPDATING,READ_NO_READ_AHEAD=MAX^READ_READ_AHEAD,READ_PAUSED_NO_READ_AHEAD=MAX^READ_RESUMED_READ_AHEAD,WRITE_ACTIVE=1<<18,WRITE_UPDATING=2<<18,WRITE_PRIMARY=4<<18,WRITE_QUEUED=8<<18,WRITE_UNDRAINED=16<<18,WRITE_DONE=32<<18,WRITE_EMIT_DRAIN=64<<18,WRITE_NEXT_TICK=128<<18,WRITE_WRITING=256<<18,WRITE_FINISHING=512<<18,WRITE_CORKED=1024<<18,WRITE_NOT_ACTIVE=MAX^(WRITE_ACTIVE|WRITE_WRITING),WRITE_NON_PRIMARY=MAX^WRITE_PRIMARY,WRITE_NOT_FINISHING=MAX^(WRITE_ACTIVE|WRITE_FINISHING),WRITE_DRAINED=MAX^WRITE_UNDRAINED,WRITE_NOT_QUEUED=MAX^WRITE_QUEUED,WRITE_NOT_NEXT_TICK=MAX^WRITE_NEXT_TICK,WRITE_NOT_UPDATING=MAX^WRITE_UPDATING,WRITE_NOT_CORKED=MAX^WRITE_CORKED,ACTIVE=READ_ACTIVE|WRITE_ACTIVE,NOT_ACTIVE=MAX^ACTIVE,DONE=READ_DONE|WRITE_DONE,DESTROY_STATUS=DESTROYING|DESTROYED|PREDESTROYING,OPEN_STATUS=DESTROY_STATUS|OPENING,AUTO_DESTROY=DESTROY_STATUS|DONE,NON_PRIMARY=WRITE_NON_PRIMARY&READ_NON_PRIMARY,ACTIVE_OR_TICKING=WRITE_NEXT_TICK|READ_NEXT_TICK,TICKING=ACTIVE_OR_TICKING&NOT_ACTIVE,IS_OPENING=OPEN_STATUS|TICKING,READ_PRIMARY_STATUS=OPEN_STATUS|READ_ENDING|READ_DONE,READ_STATUS=OPEN_STATUS|READ_DONE|READ_QUEUED,READ_ENDING_STATUS=OPEN_STATUS|READ_ENDING|READ_QUEUED,READ_READABLE_STATUS=OPEN_STATUS|READ_EMIT_READABLE|READ_QUEUED|READ_EMITTED_READABLE,SHOULD_NOT_READ=OPEN_STATUS|READ_ACTIVE|READ_ENDING|READ_DONE|READ_NEEDS_PUSH|READ_READ_AHEAD,READ_BACKPRESSURE_STATUS=DESTROY_STATUS|READ_ENDING|READ_DONE,READ_UPDATE_SYNC_STATUS=READ_UPDATING|OPEN_STATUS|READ_NEXT_TICK|READ_PRIMARY,READ_NEXT_TICK_OR_OPENING=READ_NEXT_TICK|OPENING,WRITE_PRIMARY_STATUS=OPEN_STATUS|WRITE_FINISHING|WRITE_DONE,WRITE_QUEUED_AND_UNDRAINED=WRITE_QUEUED|WRITE_UNDRAINED,WRITE_QUEUED_AND_ACTIVE=WRITE_QUEUED|WRITE_ACTIVE,WRITE_DRAIN_STATUS=WRITE_QUEUED|WRITE_UNDRAINED|OPEN_STATUS|WRITE_ACTIVE,WRITE_STATUS=OPEN_STATUS|WRITE_ACTIVE|WRITE_QUEUED|WRITE_CORKED,WRITE_PRIMARY_AND_ACTIVE=WRITE_PRIMARY|WRITE_ACTIVE,WRITE_ACTIVE_AND_WRITING=WRITE_ACTIVE|WRITE_WRITING,WRITE_FINISHING_STATUS=OPEN_STATUS|WRITE_FINISHING|WRITE_QUEUED_AND_ACTIVE|WRITE_DONE,WRITE_BACKPRESSURE_STATUS=WRITE_UNDRAINED|DESTROY_STATUS|WRITE_FINISHING|WRITE_DONE,WRITE_UPDATE_SYNC_STATUS=WRITE_UPDATING|OPEN_STATUS|WRITE_NEXT_TICK|WRITE_PRIMARY,WRITE_DROP_DATA=WRITE_FINISHING|WRITE_DONE|DESTROY_STATUS,asyncIterator=Symbol.asyncIterator||Symbol("asyncIterator"),WritableState=class{constructor(stream,{highWaterMark=16384,map:map5=null,mapWritable,byteLength,byteLengthWritable}={}){this.stream=stream,this.queue=new FIFO,this.highWaterMark=highWaterMark,this.buffered=0,this.error=null,this.pipeline=null,this.drains=null,this.byteLength=byteLengthWritable||byteLength||defaultByteLength,this.map=mapWritable||map5,this.afterWrite=afterWrite.bind(this),this.afterUpdateNextTick=updateWriteNT.bind(this)}get ending(){return(this.stream._duplexState&WRITE_FINISHING)!==0}get ended(){return(this.stream._duplexState&WRITE_DONE)!==0}push(data){return(this.stream._duplexState&WRITE_DROP_DATA)!==0?!1:(this.map!==null&&(data=this.map(data)),this.buffered+=this.byteLength(data),this.queue.push(data),this.buffered<this.highWaterMark?(this.stream._duplexState|=WRITE_QUEUED,!0):(this.stream._duplexState|=WRITE_QUEUED_AND_UNDRAINED,!1))}shift(){let data=this.queue.shift();return this.buffered-=this.byteLength(data),this.buffered===0&&(this.stream._duplexState&=WRITE_NOT_QUEUED),data}end(data){typeof data=="function"?this.stream.once("finish",data):data!=null&&this.push(data),this.stream._duplexState=(this.stream._duplexState|WRITE_FINISHING)&WRITE_NON_PRIMARY}autoBatch(data,cb){let buffer=[],stream=this.stream;for(buffer.push(data);(stream._duplexState&WRITE_STATUS)===WRITE_QUEUED_AND_ACTIVE;)buffer.push(stream._writableState.shift());if((stream._duplexState&OPEN_STATUS)!==0)return cb(null);stream._writev(buffer,cb)}update(){let stream=this.stream;stream._duplexState|=WRITE_UPDATING;do{for(;(stream._duplexState&WRITE_STATUS)===WRITE_QUEUED;){let data=this.shift();stream._duplexState|=WRITE_ACTIVE_AND_WRITING,stream._write(data,this.afterWrite)}(stream._duplexState&WRITE_PRIMARY_AND_ACTIVE)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);stream._duplexState&=WRITE_NOT_UPDATING}updateNonPrimary(){let stream=this.stream;if((stream._duplexState&WRITE_FINISHING_STATUS)===WRITE_FINISHING){stream._duplexState=stream._duplexState|WRITE_ACTIVE,stream._final(afterFinal.bind(this));return}if((stream._duplexState&DESTROY_STATUS)===DESTROYING){(stream._duplexState&ACTIVE_OR_TICKING)===0&&(stream._duplexState|=ACTIVE,stream._destroy(afterDestroy.bind(this)));return}(stream._duplexState&IS_OPENING)===OPENING&&(stream._duplexState=(stream._duplexState|ACTIVE)&NOT_OPENING,stream._open(afterOpen.bind(this)))}continueUpdate(){return(this.stream._duplexState&WRITE_NEXT_TICK)===0?!1:(this.stream._duplexState&=WRITE_NOT_NEXT_TICK,!0)}updateCallback(){(this.stream._duplexState&WRITE_UPDATE_SYNC_STATUS)===WRITE_PRIMARY?this.update():this.updateNextTick()}updateNextTick(){(this.stream._duplexState&WRITE_NEXT_TICK)===0&&(this.stream._duplexState|=WRITE_NEXT_TICK,(this.stream._duplexState&WRITE_UPDATING)===0&&qmt(this.afterUpdateNextTick))}},ReadableState=class{constructor(stream,{highWaterMark=16384,map:map5=null,mapReadable,byteLength,byteLengthReadable}={}){this.stream=stream,this.queue=new FIFO,this.highWaterMark=highWaterMark===0?1:highWaterMark,this.buffered=0,this.readAhead=highWaterMark>0,this.error=null,this.pipeline=null,this.byteLength=byteLengthReadable||byteLength||defaultByteLength,this.map=mapReadable||map5,this.pipeTo=null,this.afterRead=afterRead.bind(this),this.afterUpdateNextTick=updateReadNT.bind(this)}get ending(){return(this.stream._duplexState&READ_ENDING)!==0}get ended(){return(this.stream._duplexState&READ_DONE)!==0}pipe(pipeTo2,cb){if(this.pipeTo!==null)throw StreamError.BAD_ARGUMENT("Can only pipe to one destination");if(typeof cb!="function"&&(cb=null),this.stream._duplexState|=READ_PIPE_DRAINED,this.pipeTo=pipeTo2,this.pipeline=new Pipeline2(this.stream,pipeTo2,cb),cb&&this.stream.on("error",noop),isStreamx(pipeTo2))pipeTo2._writableState.pipeline=this.pipeline,cb&&pipeTo2.on("error",noop),pipeTo2.on("finish",this.pipeline.finished.bind(this.pipeline));else{let onerror=this.pipeline.done.bind(this.pipeline,pipeTo2),onclose=this.pipeline.done.bind(this.pipeline,pipeTo2,null);pipeTo2.on("error",onerror),pipeTo2.on("close",onclose),pipeTo2.on("finish",this.pipeline.finished.bind(this.pipeline))}pipeTo2.on("drain",afterDrain.bind(this)),this.stream.emit("piping",pipeTo2),pipeTo2.emit("pipe",this.stream)}push(data){let stream=this.stream;return data===null?(this.highWaterMark=0,stream._duplexState=(stream._duplexState|READ_ENDING)&READ_NON_PRIMARY_AND_PUSHED,!1):this.map!==null&&(data=this.map(data),data===null)?(stream._duplexState&=READ_PUSHED,this.buffered<this.highWaterMark):(this.buffered+=this.byteLength(data),this.queue.push(data),stream._duplexState=(stream._duplexState|READ_QUEUED)&READ_PUSHED,this.buffered<this.highWaterMark)}shift(){let data=this.queue.shift();return this.buffered-=this.byteLength(data),this.buffered===0&&(this.stream._duplexState&=READ_NOT_QUEUED),data}unshift(data){let pending=[this.map!==null?this.map(data):data];for(;this.buffered>0;)pending.push(this.shift());for(let i6=0;i6<pending.length-1;i6++){let data2=pending[i6];this.buffered+=this.byteLength(data2),this.queue.push(data2)}this.push(pending[pending.length-1])}read(){let stream=this.stream;if((stream._duplexState&READ_STATUS)===READ_QUEUED){let data=this.shift();return this.pipeTo!==null&&this.pipeTo.write(data)===!1&&(stream._duplexState&=READ_PIPE_NOT_DRAINED),(stream._duplexState&READ_EMIT_DATA)!==0&&stream.emit("data",data),data}return this.readAhead===!1&&(stream._duplexState|=READ_READ_AHEAD,this.updateNextTick()),null}drain(){let stream=this.stream;for(;(stream._duplexState&READ_STATUS)===READ_QUEUED&&(stream._duplexState&READ_FLOWING)!==0;){let data=this.shift();this.pipeTo!==null&&this.pipeTo.write(data)===!1&&(stream._duplexState&=READ_PIPE_NOT_DRAINED),(stream._duplexState&READ_EMIT_DATA)!==0&&stream.emit("data",data)}}update(){let stream=this.stream;stream._duplexState|=READ_UPDATING;do{for(this.drain();this.buffered<this.highWaterMark&&(stream._duplexState&SHOULD_NOT_READ)===READ_READ_AHEAD;)stream._duplexState|=READ_ACTIVE_AND_NEEDS_PUSH,stream._read(this.afterRead),this.drain();(stream._duplexState&READ_READABLE_STATUS)===READ_EMIT_READABLE_AND_QUEUED&&(stream._duplexState|=READ_EMITTED_READABLE,stream.emit("readable")),(stream._duplexState&READ_PRIMARY_AND_ACTIVE)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);stream._duplexState&=READ_NOT_UPDATING}updateNonPrimary(){let stream=this.stream;if((stream._duplexState&READ_ENDING_STATUS)===READ_ENDING&&(stream._duplexState=(stream._duplexState|READ_DONE)&READ_NOT_ENDING,stream.emit("end"),(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING),this.pipeTo!==null&&this.pipeTo.end()),(stream._duplexState&DESTROY_STATUS)===DESTROYING){(stream._duplexState&ACTIVE_OR_TICKING)===0&&(stream._duplexState|=ACTIVE,stream._destroy(afterDestroy.bind(this)));return}(stream._duplexState&IS_OPENING)===OPENING&&(stream._duplexState=(stream._duplexState|ACTIVE)&NOT_OPENING,stream._open(afterOpen.bind(this)))}continueUpdate(){return(this.stream._duplexState&READ_NEXT_TICK)===0?!1:(this.stream._duplexState&=READ_NOT_NEXT_TICK,!0)}updateCallback(){(this.stream._duplexState&READ_UPDATE_SYNC_STATUS)===READ_PRIMARY?this.update():this.updateNextTick()}updateNextTickIfOpen(){(this.stream._duplexState&READ_NEXT_TICK_OR_OPENING)===0&&(this.stream._duplexState|=READ_NEXT_TICK,(this.stream._duplexState&READ_UPDATING)===0&&qmt(this.afterUpdateNextTick))}updateNextTick(){(this.stream._duplexState&READ_NEXT_TICK)===0&&(this.stream._duplexState|=READ_NEXT_TICK,(this.stream._duplexState&READ_UPDATING)===0&&qmt(this.afterUpdateNextTick))}},TransformState=class{constructor(stream){this.data=null,this.afterTransform=afterTransform.bind(stream),this.afterFinal=null}},Pipeline2=class{constructor(src,dst,cb){this.from=src,this.to=dst,this.afterPipe=cb,this.error=null,this.pipeToFinished=!1}finished(){this.pipeToFinished=!0}done(stream,err2){if(err2&&(this.error=err2),stream===this.to&&(this.to=null,this.from!==null)){((this.from._duplexState&READ_DONE)===0||!this.pipeToFinished)&&this.from.destroy(this.error||StreamError.PREMATURE_CLOSE("Writable stream closed"));return}if(stream===this.from&&(this.from=null,this.to!==null)){(stream._duplexState&READ_DONE)===0&&this.to.destroy(this.error||StreamError.PREMATURE_CLOSE("Readable stream closed"));return}this.afterPipe!==null&&this.afterPipe(this.error),this.to=this.from=this.afterPipe=null}};function afterDrain(){this.stream._duplexState|=READ_PIPE_DRAINED,this.updateCallback()}function afterFinal(err2){let stream=this.stream;err2&&stream.destroy(err2),(stream._duplexState&DESTROY_STATUS)===0&&(stream._duplexState|=WRITE_DONE,stream.emit("finish")),(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING),stream._duplexState&=WRITE_NOT_FINISHING,(stream._duplexState&WRITE_UPDATING)===0?this.update():this.updateNextTick()}function afterDestroy(err2){let stream=this.stream;!err2&&!StreamError.isStreamDestroyed(this.error)&&(err2=this.error),err2&&stream.emit("error",err2),stream._duplexState|=DESTROYED,stream.emit("close");let rs=stream._readableState,ws=stream._writableState;if(rs!==null&&rs.pipeline!==null&&rs.pipeline.done(stream,err2),ws!==null){for(;ws.drains!==null&&ws.drains.length>0;)ws.drains.shift().resolve(!1);ws.pipeline!==null&&ws.pipeline.done(stream,err2)}}function afterWrite(err2){let stream=this.stream;err2&&stream.destroy(err2),stream._duplexState&=WRITE_NOT_ACTIVE,this.drains!==null&&tickDrains(this.drains),(stream._duplexState&WRITE_DRAIN_STATUS)===WRITE_UNDRAINED&&(stream._duplexState&=WRITE_DRAINED,(stream._duplexState&WRITE_EMIT_DRAIN)===WRITE_EMIT_DRAIN&&stream.emit("drain")),this.updateCallback()}function afterRead(err2){err2&&this.stream.destroy(err2),this.stream._duplexState&=READ_NOT_ACTIVE,this.readAhead===!1&&(this.stream._duplexState&READ_RESUMED)===0&&(this.stream._duplexState&=READ_NO_READ_AHEAD),this.updateCallback()}function updateReadNT(){(this.stream._duplexState&READ_UPDATING)===0&&(this.stream._duplexState&=READ_NOT_NEXT_TICK,this.update())}function updateWriteNT(){(this.stream._duplexState&WRITE_UPDATING)===0&&(this.stream._duplexState&=WRITE_NOT_NEXT_TICK,this.update())}function tickDrains(drains){for(let i6=0;i6<drains.length;i6++)--drains[i6].writes===0&&(drains.shift().resolve(!0),i6--)}function afterOpen(err2){let stream=this.stream;err2&&stream.destroy(err2),(stream._duplexState&DESTROYING)===0&&((stream._duplexState&READ_PRIMARY_STATUS)===0&&(stream._duplexState|=READ_PRIMARY),(stream._duplexState&WRITE_PRIMARY_STATUS)===0&&(stream._duplexState|=WRITE_PRIMARY),stream.emit("open")),stream._duplexState&=NOT_ACTIVE,stream._writableState!==null&&stream._writableState.updateCallback(),stream._readableState!==null&&stream._readableState.updateCallback()}function afterTransform(err2,data){data!=null&&this.push(data),this._writableState.afterWrite(err2)}function newListener(name){this._readableState!==null&&(name==="data"&&(this._duplexState|=READ_EMIT_DATA|READ_RESUMED_READ_AHEAD,this._readableState.updateNextTick()),name==="readable"&&(this._duplexState|=READ_EMIT_READABLE,this._readableState.updateNextTick())),this._writableState!==null&&name==="drain"&&(this._duplexState|=WRITE_EMIT_DRAIN,this._writableState.updateNextTick())}var Stream=class extends EventEmitter{constructor(opts){super(),this._duplexState=0,this._readableState=null,this._writableState=null,opts&&(opts.open&&(this._open=opts.open),opts.destroy&&(this._destroy=opts.destroy),opts.predestroy&&(this._predestroy=opts.predestroy),opts.signal&&opts.signal.addEventListener("abort",abort.bind(this))),this.on("newListener",newListener)}_open(cb){cb(null)}_destroy(cb){cb(null)}_predestroy(){}get readable(){return this._readableState!==null?!0:void 0}get writable(){return this._writableState!==null?!0:void 0}get destroyed(){return(this._duplexState&DESTROYED)!==0}get destroying(){return(this._duplexState&DESTROY_STATUS)!==0}destroy(err2){(this._duplexState&DESTROY_STATUS)===0&&(err2||(err2=StreamError.STREAM_DESTROYED()),this._duplexState=(this._duplexState|DESTROYING)&NON_PRIMARY,this._readableState!==null&&(this._readableState.highWaterMark=0,this._readableState.error=err2),this._writableState!==null&&(this._writableState.highWaterMark=0,this._writableState.error=err2),this._duplexState|=PREDESTROYING,this._predestroy(),this._duplexState&=NOT_PREDESTROYING,this._readableState!==null&&this._readableState.updateNextTick(),this._writableState!==null&&this._writableState.updateNextTick())}},Readable9=class _Readable extends Stream{constructor(opts){super(opts),this._duplexState|=OPENING|WRITE_DONE|READ_READ_AHEAD,this._readableState=new ReadableState(this,opts),opts&&(this._readableState.readAhead===!1&&(this._duplexState&=READ_NO_READ_AHEAD),opts.read&&(this._read=opts.read),opts.eagerOpen&&this._readableState.updateNextTick(),opts.encoding&&this.setEncoding(opts.encoding))}static deferred(fn,opts){let out=new PassThrough2(opts);return fn().then(src=>{if(src===null)return out.end();out.destroying||pipeline2(src,out,noop)}).catch(err2=>out.destroy(err2)),out}setEncoding(encoding){let dec=new TextDecoder2(encoding),map5=this._readableState.map||echo;return this._readableState.map=mapOrSkip,this;function mapOrSkip(data){let next=dec.push(data);return next===""&&(data.byteLength!==0||dec.remaining>0)?null:map5(next)}}_read(cb){cb(null)}pipe(dest,cb){return this._readableState.updateNextTick(),this._readableState.pipe(dest,cb),dest}read(){return this._readableState.updateNextTick(),this._readableState.read()}push(data){return this._readableState.updateNextTickIfOpen(),this._readableState.push(data)}unshift(data){return this._readableState.updateNextTickIfOpen(),this._readableState.unshift(data)}resume(){return this._duplexState|=READ_RESUMED_READ_AHEAD,this._readableState.updateNextTick(),this}pause(){return this._duplexState&=this._readableState.readAhead===!1?READ_PAUSED_NO_READ_AHEAD:READ_PAUSED,this}static _fromAsyncIterator(ite2,opts){let destroy,rs=new _Readable({...opts,read(cb){ite2.next().then(push4).then(cb.bind(null,null)).catch(cb)},predestroy(){destroy=ite2.return()},destroy(cb){if(!destroy)return cb(null);destroy.then(cb.bind(null,null)).catch(cb)}});return rs;function push4(data){data.done?rs.push(null):rs.push(data.value)}}static from(data,opts){if(isReadStreamx(data))return data;if(data[asyncIterator])return this._fromAsyncIterator(data[asyncIterator](),opts);Array.isArray(data)||(data=data===void 0?[]:[data]);let i6=0;return new _Readable({...opts,read(cb){this.push(i6===data.length?null:data[i6++]),cb(null)}})}static isBackpressured(rs){return(rs._duplexState&READ_BACKPRESSURE_STATUS)!==0||rs._readableState.buffered>=rs._readableState.highWaterMark}static isPaused(rs){return(rs._duplexState&READ_RESUMED)===0}[asyncIterator](){let stream=this,error2=null,promiseResolve=null,promiseReject=null;return this.on("error",err2=>{error2=err2}),this.on("readable",onreadable),this.on("close",onclose),{[asyncIterator](){return this},next(){return new Promise(function(resolve,reject2){promiseResolve=resolve,promiseReject=reject2;let data=stream.read();data!==null?ondata(data):(stream._duplexState&DESTROYED)!==0&&ondata(null)})},return(){return destroy(null)},throw(err2){return destroy(err2)}};function onreadable(){promiseResolve!==null&&ondata(stream.read())}function onclose(){promiseResolve!==null&&ondata(null)}function ondata(data){promiseReject!==null&&(error2?promiseReject(error2):data===null&&(stream._duplexState&READ_DONE)===0?promiseReject(StreamError.STREAM_DESTROYED()):promiseResolve({value:data,done:data===null}),promiseReject=promiseResolve=null)}function destroy(err2){return stream.destroy(err2),new Promise((resolve,reject2)=>{if(stream._duplexState&DESTROYED)return resolve({value:void 0,done:!0});stream.once("close",function(){err2?reject2(err2):resolve({value:void 0,done:!0})})})}}},Writable4=class extends Stream{constructor(opts){super(opts),this._duplexState|=OPENING|READ_DONE,this._writableState=new WritableState(this,opts),opts&&(opts.writev&&(this._writev=opts.writev),opts.write&&(this._write=opts.write),opts.final&&(this._final=opts.final),opts.eagerOpen&&this._writableState.updateNextTick())}cork(){this._duplexState|=WRITE_CORKED}uncork(){this._duplexState&=WRITE_NOT_CORKED,this._writableState.updateNextTick()}_writev(batch,cb){cb(null)}_write(data,cb){this._writableState.autoBatch(data,cb)}_final(cb){cb(null)}static isBackpressured(ws){return(ws._duplexState&WRITE_BACKPRESSURE_STATUS)!==0}static drained(ws){if(ws.destroyed)return Promise.resolve(!1);let state2=ws._writableState,writes=(isWritev(ws)?Math.min(1,state2.queue.length):state2.queue.length)+(ws._duplexState&WRITE_WRITING?1:0);return writes===0?Promise.resolve(!0):(state2.drains===null&&(state2.drains=[]),new Promise(resolve=>{state2.drains.push({writes,resolve})}))}write(data){return this._writableState.updateNextTick(),this._writableState.push(data)}end(data){return this._writableState.updateNextTick(),this._writableState.end(data),this}},Duplex2=class extends Readable9{constructor(opts){super(opts),this._duplexState=OPENING|this._duplexState&READ_READ_AHEAD,this._writableState=new WritableState(this,opts),opts&&(opts.writev&&(this._writev=opts.writev),opts.write&&(this._write=opts.write),opts.final&&(this._final=opts.final))}cork(){this._duplexState|=WRITE_CORKED}uncork(){this._duplexState&=WRITE_NOT_CORKED,this._writableState.updateNextTick()}_writev(batch,cb){cb(null)}_write(data,cb){this._writableState.autoBatch(data,cb)}_final(cb){cb(null)}write(data){return this._writableState.updateNextTick(),this._writableState.push(data)}end(data){return this._writableState.updateNextTick(),this._writableState.end(data),this}},Transform=class extends Duplex2{constructor(opts){super(opts),this._transformState=new TransformState(this),opts&&(opts.transform&&(this._transform=opts.transform),opts.flush&&(this._flush=opts.flush))}_write(data,cb){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=data:this._transform(data,this._transformState.afterTransform)}_read(cb){if(this._transformState.data!==null){let data=this._transformState.data;this._transformState.data=null,cb(null),this._transform(data,this._transformState.afterTransform)}else cb(null)}destroy(err2){super.destroy(err2),this._transformState.data!==null&&(this._transformState.data=null,this._transformState.afterTransform())}_transform(data,cb){cb(null,data)}_flush(cb){cb(null)}_final(cb){this._transformState.afterFinal=cb,this._flush(transformAfterFlush.bind(this))}},PassThrough2=class extends Transform{};function transformAfterFlush(err2,data){let cb=this._transformState.afterFinal;if(err2)return cb(err2);data!=null&&this.push(data),this.push(null),cb(null)}function pipelinePromise(...streams){return new Promise((resolve,reject2)=>pipeline2(...streams,err2=>{if(err2)return reject2(err2);resolve()}))}function pipeline2(stream,...streams){let all=Array.isArray(stream)?[...stream,...streams]:[stream,...streams],done=all.length&&typeof all[all.length-1]=="function"?all.pop():null;if(all.length<2)throw StreamError.BAD_ARGUMENT("Pipeline requires at least 2 streams");let src=all[0],dest=null,error2=null;for(let i6=1;i6<all.length;i6++)dest=all[i6],isStreamx(src)?src.pipe(dest,onerror):(errorHandle(src,!0,i6>1,onerror),src.pipe(dest)),src=dest;if(done){let fin=!1,autoDestroy=isStreamx(dest)||!!(dest._writableState&&dest._writableState.autoDestroy);dest.on("error",err2=>{error2===null&&(error2=err2)}),dest.on("finish",()=>{fin=!0,autoDestroy||done(error2)}),autoDestroy&&dest.on("close",()=>done(error2||(fin?null:StreamError.PREMATURE_CLOSE())))}return dest;function errorHandle(s2,rd,wr,onerror2){s2.on("error",onerror2),s2.on("close",onclose);function onclose(){if(rd&&s2._readableState&&!s2._readableState.ended||wr&&s2._writableState&&!s2._writableState.ended)return onerror2(StreamError.PREMATURE_CLOSE())}}function onerror(err2){if(!(!err2||error2)){error2=err2;for(let s2 of all)s2.destroy(err2)}}}function echo(s2){return s2}function isStream(stream){return!!stream._readableState||!!stream._writableState}function isStreamx(stream){return typeof stream._duplexState=="number"&&isStream(stream)}function isEnding(stream){return!!stream._readableState&&stream._readableState.ending}function isEnded(stream){return!!stream._readableState&&stream._readableState.ended}function isFinishing(stream){return!!stream._writableState&&stream._writableState.ending}function isFinished(stream){return!!stream._writableState&&stream._writableState.ended}function getStreamError(stream,opts={}){let err2=stream._readableState&&stream._readableState.error||stream._writableState&&stream._writableState.error;return!opts.all&&StreamError.isStreamDestroyed(err2)?null:err2}function isReadStreamx(stream){return isStreamx(stream)&&stream.readable}function isDisturbed(stream){return(stream._duplexState&OPENING)!==OPENING||(stream._duplexState&DESTROYING)===DESTROYING||(stream._duplexState&ACTIVE_OR_TICKING)!==0}function isTypedArray(data){return typeof data=="object"&&data!==null&&typeof data.byteLength=="number"}function defaultByteLength(data){return isTypedArray(data)?data.byteLength:1024}function noop(){}function abort(){this.destroy(StreamError.ABORTED())}function isWritev(s2){return s2._writev!==Writable4.prototype._writev&&s2._writev!==Duplex2.prototype._writev}module2.exports={pipeline:pipeline2,pipelinePromise,isStream,isStreamx,isEnding,isEnded,isFinishing,isFinished,isDisturbed,getStreamError,Stream,Writable:Writable4,Readable:Readable9,Duplex:Duplex2,Transform,PassThrough:PassThrough2}}});var require_headers2=__commonJS({"node_modules/tar-stream/headers.js"(exports2){var b4a=require_b4a(),ZEROS="0000000000000000000",SEVENS="7777777777777777777",ZERO_OFFSET=48,USTAR_MAGIC=b4a.from([117,115,116,97,114,0]),USTAR_VER=b4a.from([ZERO_OFFSET,ZERO_OFFSET]),GNU_MAGIC=b4a.from([117,115,116,97,114,32]),GNU_VER=b4a.from([32,0]),MASK=4095,MAGIC_OFFSET=257,VERSION_OFFSET=263;exports2.decodeLongPath=function(buf2,encoding){return decodeStr(buf2,0,buf2.length,encoding)};exports2.encodePax=function(opts){let result="";opts.name&&(result+=addLength(" path="+opts.name+`
|
|
468
468
|
`)),opts.linkname&&(result+=addLength(" linkpath="+opts.linkname+`
|
|
469
469
|
`));let pax=opts.pax;if(pax)for(let key in pax)result+=addLength(" "+key+"="+pax[key]+`
|
|
470
|
-
`);return b4a.from(result)};exports2.decodePax=function(buf2){let result={};for(;buf2.length;){let i6=0;for(;i6<buf2.length&&buf2[i6]!==32;)i6++;let len=parseInt(b4a.toString(buf2.subarray(0,i6)),10);if(!len)return result;let b7=b4a.toString(buf2.subarray(i6+1,len-1)),keyIndex=b7.indexOf("=");if(keyIndex===-1)return result;result[b7.slice(0,keyIndex)]=b7.slice(keyIndex+1),buf2=buf2.subarray(len)}return result};exports2.encode=function(opts){let buf2=b4a.alloc(512),name=opts.name,prefix="";if(opts.typeflag===5&&name[name.length-1]!=="/"&&(name+="/"),b4a.byteLength(name)!==name.length)return null;for(;b4a.byteLength(name)>100;){let i6=name.indexOf("/");if(i6===-1)return null;prefix+=prefix?"/"+name.slice(0,i6):name.slice(0,i6),name=name.slice(i6+1)}return b4a.byteLength(name)>100||b4a.byteLength(prefix)>155||opts.linkname&&b4a.byteLength(opts.linkname)>100?null:(b4a.write(buf2,name),b4a.write(buf2,encodeOct(opts.mode&MASK,6),100),b4a.write(buf2,encodeOct(opts.uid,6),108),b4a.write(buf2,encodeOct(opts.gid,6),116),encodeSize(opts.size,buf2,124),b4a.write(buf2,encodeOct(opts.mtime.getTime()/1e3|0,11),136),buf2[156]=ZERO_OFFSET+toTypeflag(opts.type),opts.linkname&&b4a.write(buf2,opts.linkname,157),b4a.copy(USTAR_MAGIC,buf2,MAGIC_OFFSET),b4a.copy(USTAR_VER,buf2,VERSION_OFFSET),opts.uname&&b4a.write(buf2,opts.uname,265),opts.gname&&b4a.write(buf2,opts.gname,297),b4a.write(buf2,encodeOct(opts.devmajor||0,6),329),b4a.write(buf2,encodeOct(opts.devminor||0,6),337),prefix&&b4a.write(buf2,prefix,345),b4a.write(buf2,encodeOct(cksum(buf2),6),148),buf2)};exports2.decode=function(buf2,filenameEncoding,allowUnknownFormat){let typeflag=buf2[156]===0?0:buf2[156]-ZERO_OFFSET,name=decodeStr(buf2,0,100,filenameEncoding),mode=decodeOct(buf2,100,8),uid=decodeOct(buf2,108,8),gid=decodeOct(buf2,116,8),size=decodeOct(buf2,124,12),mtime=decodeOct(buf2,136,12),type2=toType2(typeflag),linkname=buf2[157]===0?null:decodeStr(buf2,157,100,filenameEncoding),uname=decodeStr(buf2,265,32),gname=decodeStr(buf2,297,32),devmajor=decodeOct(buf2,329,8),devminor=decodeOct(buf2,337,8),c5=cksum(buf2);if(c5===256)return null;if(c5!==decodeOct(buf2,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(isUSTAR(buf2))buf2[345]&&(name=decodeStr(buf2,345,155,filenameEncoding)+"/"+name);else if(!isGNU(buf2)){if(!allowUnknownFormat)throw new Error("Invalid tar header: unknown format.")}return typeflag===0&&name&&name[name.length-1]==="/"&&(typeflag=5),{name,mode,uid,gid,size,byteOffset:0,mtime:new Date(1e3*mtime),type:type2,linkname,uname,gname,devmajor,devminor,pax:null}};function isUSTAR(buf2){return b4a.equals(USTAR_MAGIC,buf2.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))}function isGNU(buf2){return b4a.equals(GNU_MAGIC,buf2.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))&&b4a.equals(GNU_VER,buf2.subarray(VERSION_OFFSET,VERSION_OFFSET+2))}function clamp(index2,len,defaultValue){return typeof index2!="number"?defaultValue:(index2=~~index2,index2>=len?len:index2>=0||(index2+=len,index2>=0)?index2:0)}function toType2(flag){switch(flag){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function toTypeflag(flag){switch(flag){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function indexOf2(block,num,offset,end){for(;offset<end;offset++)if(block[offset]===num)return offset;return end}function cksum(block){let sum=256;for(let i6=0;i6<148;i6++)sum+=block[i6];for(let j5=156;j5<512;j5++)sum+=block[j5];return sum}function encodeOct(val,n3){return val=val.toString(8),val.length>n3?SEVENS.slice(0,n3)+" ":ZEROS.slice(0,n3-val.length)+val+" "}function encodeSizeBin(num,buf2,off){buf2[off]=128;for(let i6=11;i6>0;i6--)buf2[off+i6]=num&255,num=Math.floor(num/256)}function encodeSize(num,buf2,off){num.toString(8).length>11?encodeSizeBin(num,buf2,off):b4a.write(buf2,encodeOct(num,11),off)}function parse256(buf2){let positive;if(buf2[0]===128)positive=!0;else if(buf2[0]===255)positive=!1;else return null;let tuple=[],i6;for(i6=buf2.length-1;i6>0;i6--){let byte=buf2[i6];positive?tuple.push(byte):tuple.push(255-byte)}let sum=0,l3=tuple.length;for(i6=0;i6<l3;i6++)sum+=tuple[i6]*Math.pow(256,i6);return positive?sum:-1*sum}function decodeOct(val,offset,length){if(val=val.subarray(offset,offset+length),offset=0,val[offset]&128)return parse256(val);{for(;offset<val.length&&val[offset]===32;)offset++;let end=clamp(indexOf2(val,32,offset,val.length),val.length,val.length);for(;offset<end&&val[offset]===0;)offset++;return end===offset?0:parseInt(b4a.toString(val.subarray(offset,end)),8)}}function decodeStr(val,offset,length,encoding){return b4a.toString(val.subarray(offset,indexOf2(val,0,offset,offset+length)),encoding)}function addLength(str2){let len=b4a.byteLength(str2),digits=Math.floor(Math.log(len)/Math.log(10))+1;return len+digits>=Math.pow(10,digits)&&digits++,len+digits+str2}}});var require_extract=__commonJS({"node_modules/tar-stream/extract.js"(exports2,module2){var{Writable:Writable4,Readable:Readable9,getStreamError}=require_streamx(),FIFO=require_fast_fifo(),b4a=require_b4a(),headers2=require_headers2(),EMPTY=b4a.alloc(0),MAX_HEADER_SIZE=4*1024*1024,BufferList=class{constructor(){this.buffered=0,this.shifted=0,this.queue=new FIFO,this._offset=0}push(buffer){this.buffered+=buffer.byteLength,this.queue.push(buffer)}shiftFirst(size){return this.buffered===0?null:this._next(size)}shift(size){if(size>this.buffered)return null;if(size===0)return EMPTY;let chunk=this._next(size);if(size===chunk.byteLength)return chunk;let chunks=[chunk];for(;(size-=chunk.byteLength)>0;)chunk=this._next(size),chunks.push(chunk);return b4a.concat(chunks)}_next(size){let buf2=this.queue.peek(),rem=buf2.byteLength-this._offset;if(size>=rem){let sub=this._offset?buf2.subarray(this._offset,buf2.byteLength):buf2;return this.queue.shift(),this._offset=0,this.buffered-=rem,this.shifted+=rem,sub}return this.buffered-=size,this.shifted+=size,buf2.subarray(this._offset,this._offset+=size)}},Source=class extends Readable9{constructor(self2,header,offset){super(),this.header=header,this.offset=offset,this._parent=self2}_read(cb){this.header.size===0&&this.push(null),this._parent._stream===this&&this._parent._update(),cb(null)}_predestroy(){this._parent.destroy(getStreamError(this))}_detach(){this._parent._stream===this&&(this._parent._stream=null,this._parent._missing=overflow(this.header.size),this._parent._update())}_destroy(cb){this._detach(),cb(null)}},Extract=class extends Writable4{constructor(opts){super(opts),opts||(opts={}),this._buffer=new BufferList,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=noop,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=opts.filenameEncoding||"utf-8",this._allowUnknownFormat=!!opts.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(err2){if(this._locked=!1,err2){this.destroy(err2),this._continueWrite(err2);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=headers2.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(err2){return this._continueWrite(err2),!1}if(!this._header)return!0;switch(this._header.byteOffset=this._buffer.shifted,this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,this._missing>MAX_HEADER_SIZE?(this._continueWrite(new Error("Header exceeds max size")),!1):!0}return this._locked=!0,this._applyLongHeaders(),this._header.size>=0?this._header.size===0||this._header.type==="directory"?(this.emit("entry",this._header,this._createStream(),this._unlockBound),!0):(this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0):(this._continueWrite(new Error("Invalid header")),!1)}_applyLongHeaders(){this._gnuLongPath&&(this._header.name=this._gnuLongPath,this._gnuLongPath=null),this._gnuLongLinkPath&&(this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null),this._pax&&(this._pax.path&&(this._header.name=this._pax.path),this._pax.linkpath&&(this._header.linkname=this._pax.linkpath),this._pax.size&&(this._header.size=parseInt(this._pax.size,10)),this._header.pax=this._pax,this._pax=null)}_decodeLongHeader(buf2){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=headers2.decodeLongPath(buf2,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=headers2.decodeLongPath(buf2,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=headers2.decodePax(buf2);break;case"pax-header":this._pax=this._paxGlobal===null?headers2.decodePax(buf2):Object.assign({},this._paxGlobal,headers2.decodePax(buf2));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=overflow(this._header.size);let buf2=this._buffer.shift(this._header.size);try{this._decodeLongHeader(buf2)}catch(err2){return this._continueWrite(err2),!1}return!0}_consumeStream(){let buf2=this._buffer.shiftFirst(this._missing);if(buf2===null)return!1;this._missing-=buf2.byteLength;let drained=this._stream.push(buf2);return this._missing===0?(this._stream.push(null),drained&&this._stream._detach(),drained&&this._locked===!1):drained}_createStream(){return new Source(this,this._header,this._offset)}_update(){for(;this._buffer.buffered>0&&!this.destroying;){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let ignore=this._buffer.shiftFirst(this._missing);ignore!==null&&(this._missing-=ignore.byteLength);continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(err2){let cb=this._callback;this._callback=noop,cb(err2)}_write(data,cb){this._callback=cb,this._buffer.push(data),this._update()}_final(cb){this._finished=this._missing===0&&this._buffer.buffered===0,cb(this._finished?null:new Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(cb){this._stream&&this._stream.destroy(getStreamError(this)),cb(null)}[Symbol.asyncIterator](){let error2=null,promiseResolve=null,promiseReject=null,entryStream=null,entryCallback=null,extract=this;return this.on("entry",onentry),this.on("error",err2=>{error2=err2}),this.on("close",onclose),{[Symbol.asyncIterator](){return this},next(){return new Promise(onnext)},return(){return destroy(null)},throw(err2){return destroy(err2)}};function consumeCallback(err2){if(!entryCallback)return;let cb=entryCallback;entryCallback=null,cb(err2)}function onnext(resolve,reject2){if(error2)return reject2(error2);if(entryStream){resolve({value:entryStream,done:!1}),entryStream=null;return}promiseResolve=resolve,promiseReject=reject2,consumeCallback(null),extract._finished&&promiseResolve&&(promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function onentry(header,stream,callback){entryCallback=callback,stream.on("error",noop),promiseResolve?(promiseResolve({value:stream,done:!1}),promiseResolve=promiseReject=null):entryStream=stream}function onclose(){consumeCallback(error2),promiseResolve&&(error2?promiseReject(error2):promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function destroy(err2){return extract.destroy(err2),consumeCallback(err2),new Promise((resolve,reject2)=>{if(extract.destroyed)return resolve({value:void 0,done:!0});extract.once("close",function(){err2?reject2(err2):resolve({value:void 0,done:!0})})})}}};module2.exports=function(opts){return new Extract(opts)};function noop(){}function overflow(size){return size&=511,size&&512-size}}});var require_constants12=__commonJS({"node_modules/tar-stream/constants.js"(exports2,module2){var constants={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{module2.exports=require("fs").constants||constants}catch{module2.exports=constants}}});var require_pack=__commonJS({"node_modules/tar-stream/pack.js"(exports2,module2){var{Readable:Readable9,Writable:Writable4,getStreamError}=require_streamx(),b4a=require_b4a(),constants=require_constants12(),headers2=require_headers2(),DMODE=493,FMODE=420,END_OF_TAR=b4a.alloc(1024),Sink=class extends Writable4{constructor(pack,header,callback){super({mapWritable,eagerOpen:!0}),this.written=0,this.header=header,this._callback=callback,this._linkname=null,this._isLinkname=header.type==="symlink"&&!header.linkname,this._isVoid=header.type!=="file"&&header.type!=="contiguous-file",this._finished=!1,this._pack=pack,this._openCallback=null,this._pack._stream===null?this._pack._stream=this:this._pack._pending.push(this)}_open(cb){this._openCallback=cb,this._pack._stream===this&&this._continueOpen()}_continuePack(err2){if(this._callback===null)return;let callback=this._callback;this._callback=null,callback(err2)}_continueOpen(){this._pack._stream===null&&(this._pack._stream=this);let cb=this._openCallback;if(this._openCallback=null,cb!==null){if(this._pack.destroying)return cb(new Error("pack stream destroyed"));if(this._pack._finalized)return cb(new Error("pack stream is already finalized"));this._pack._stream=this,this._isLinkname||this._pack._encode(this.header),this._isVoid&&(this._finish(),this._continuePack(null)),cb(null)}}_write(data,cb){if(this._isLinkname)return this._linkname=this._linkname?b4a.concat([this._linkname,data]):data,cb(null);if(this._isVoid)return data.byteLength>0?cb(new Error("No body allowed for this entry")):cb();if(this.written+=data.byteLength,this._pack.push(data))return cb();this._pack._drain=cb}_finish(){this._finished||(this._finished=!0,this._isLinkname&&(this.header.linkname=this._linkname?b4a.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header)),overflow(this._pack,this.header.size),this._pack._done(this))}_final(cb){if(this.written!==this.header.size)return cb(new Error("Size mismatch"));this._finish(),cb(null)}_getError(){return getStreamError(this)||new Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(cb){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),cb()}},Pack=class extends Readable9{constructor(opts){super(opts),this._drain=noop,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(header,buffer,callback){if(this._finalized||this.destroying)throw new Error("already finalized or destroyed");typeof buffer=="function"&&(callback=buffer,buffer=null),callback||(callback=noop),(!header.size||header.type==="symlink")&&(header.size=0),header.type||(header.type=modeToType(header.mode)),header.mode||(header.mode=header.type==="directory"?DMODE:FMODE),header.uid||(header.uid=0),header.gid||(header.gid=0),header.mtime||(header.mtime=new Date),typeof buffer=="string"&&(buffer=b4a.from(buffer));let sink=new Sink(this,header,callback);return b4a.isBuffer(buffer)?(header.size=buffer.byteLength,sink.write(buffer),sink.end(),sink):(sink._isVoid,sink)}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(END_OF_TAR),this.push(null))}_done(stream){stream===this._stream&&(this._stream=null,this._finalizing&&this.finalize(),this._pending.length&&this._pending.shift()._continueOpen())}_encode(header){if(!header.pax){let buf2=headers2.encode(header);if(buf2){this.push(buf2);return}}this._encodePax(header)}_encodePax(header){let paxHeader=headers2.encodePax({name:header.name,linkname:header.linkname,pax:header.pax}),newHeader={name:"PaxHeader",mode:header.mode,uid:header.uid,gid:header.gid,size:paxHeader.byteLength,mtime:header.mtime,type:"pax-header",linkname:header.linkname&&"PaxHeader",uname:header.uname,gname:header.gname,devmajor:header.devmajor,devminor:header.devminor};this.push(headers2.encode(newHeader)),this.push(paxHeader),overflow(this,paxHeader.byteLength),newHeader.size=header.size,newHeader.type=header.type,this.push(headers2.encode(newHeader))}_doDrain(){let drain=this._drain;this._drain=noop,drain()}_predestroy(){let err2=getStreamError(this);for(this._stream&&this._stream.destroy(err2);this._pending.length;){let stream=this._pending.shift();stream.destroy(err2),stream._continueOpen()}this._doDrain()}_read(cb){this._doDrain(),cb()}};module2.exports=function(opts){return new Pack(opts)};function modeToType(mode){switch(mode&constants.S_IFMT){case constants.S_IFBLK:return"block-device";case constants.S_IFCHR:return"character-device";case constants.S_IFDIR:return"directory";case constants.S_IFIFO:return"fifo";case constants.S_IFLNK:return"symlink"}return"file"}function noop(){}function overflow(self2,size){size&=511,size&&self2.push(END_OF_TAR.subarray(0,512-size))}function mapWritable(buf2){return b4a.isBuffer(buf2)?buf2:b4a.from(buf2)}}});var require_tar_stream=__commonJS({"node_modules/tar-stream/index.js"(exports2){exports2.extract=require_extract();exports2.pack=require_pack()}});var require_wrappy=__commonJS({"node_modules/wrappy/wrappy.js"(exports2,module2){module2.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!="function")throw new TypeError("need wrapper function");return Object.keys(fn).forEach(function(k5){wrapper[k5]=fn[k5]}),wrapper;function wrapper(){for(var args=new Array(arguments.length),i6=0;i6<args.length;i6++)args[i6]=arguments[i6];var ret=fn.apply(this,args),cb2=args[args.length-1];return typeof ret=="function"&&ret!==cb2&&Object.keys(cb2).forEach(function(k5){ret[k5]=cb2[k5]}),ret}}}});var require_once=__commonJS({"node_modules/once/once.js"(exports2,module2){var wrappy=require_wrappy();module2.exports=wrappy(once);module2.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:!0})});function once(fn){var f5=function(){return f5.called?f5.value:(f5.called=!0,f5.value=fn.apply(this,arguments))};return f5.called=!1,f5}function onceStrict(fn){var f5=function(){if(f5.called)throw new Error(f5.onceError);return f5.called=!0,f5.value=fn.apply(this,arguments)},name=fn.name||"Function wrapped with `once`";return f5.onceError=name+" shouldn't be called more than once",f5.called=!1,f5}}});var require_end_of_stream=__commonJS({"node_modules/end-of-stream/index.js"(exports2,module2){var once=require_once(),noop=function(){},qnt=global.Bare?queueMicrotask:process.nextTick.bind(process),isRequest=function(stream){return stream.setHeader&&typeof stream.abort=="function"},isChildProcess=function(stream){return stream.stdio&&Array.isArray(stream.stdio)&&stream.stdio.length===3},eos=function(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var ws=stream._writableState,rs=stream._readableState,readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,cancelled=!1,onlegacyfinish=function(){stream.writable||onfinish()},onfinish=function(){writable=!1,readable||callback.call(stream)},onend=function(){readable=!1,writable||callback.call(stream)},onexit=function(exitCode){callback.call(stream,exitCode?new Error("exited with error code: "+exitCode):null)},onerror=function(err2){callback.call(stream,err2)},onclose=function(){qnt(onclosenexttick)},onclosenexttick=function(){if(!cancelled){if(readable&&!(rs&&rs.ended&&!rs.destroyed))return callback.call(stream,new Error("premature close"));if(writable&&!(ws&&ws.ended&&!ws.destroyed))return callback.call(stream,new Error("premature close"))}},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!ws&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),isChildProcess(stream)&&stream.on("exit",onexit),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){cancelled=!0,stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("exit",onexit),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}};module2.exports=eos}});var require_pump=__commonJS({"node_modules/pump/index.js"(exports2,module2){var once=require_once(),eos=require_end_of_stream(),fs6;try{fs6=require("fs")}catch{}var noop=function(){},ancient=typeof process>"u"?!1:/^v?\.0/.test(process.version),isFn=function(fn){return typeof fn=="function"},isFS=function(stream){return!ancient||!fs6?!1:(stream instanceof(fs6.ReadStream||noop)||stream instanceof(fs6.WriteStream||noop))&&isFn(stream.close)},isRequest=function(stream){return stream.setHeader&&isFn(stream.abort)},destroyer=function(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos(stream,{readable:reading,writable:writing},function(err2){if(err2)return callback(err2);closed=!0,callback()});var destroyed=!1;return function(err2){if(!closed&&!destroyed){if(destroyed=!0,isFS(stream))return stream.close(noop);if(isRequest(stream))return stream.abort();if(isFn(stream.destroy))return stream.destroy();callback(err2||new Error("stream was destroyed"))}}},call=function(fn){fn()},pipe2=function(from2,to){return from2.pipe(to)},pump=function(){var streams=Array.prototype.slice.call(arguments),callback=isFn(streams[streams.length-1]||noop)&&streams.pop()||noop;if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new Error("pump requires two streams per minimum");var error2,destroys=streams.map(function(stream,i6){var reading=i6<streams.length-1,writing=i6>0;return destroyer(stream,reading,writing,function(err2){error2||(error2=err2),err2&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error2))})});return streams.reduce(pipe2)};module2.exports=pump}});var require_tar_fs=__commonJS({"node_modules/tar-fs/index.js"(exports2){var tar2=require_tar_stream(),pump=require_pump(),fs6=require("fs"),path14=require("path"),win32=(global.Bare?global.Bare.platform:process.platform)==="win32";exports2.pack=function(cwd,opts){cwd||(cwd="."),opts||(opts={});let xfs=opts.fs||fs6,ignore=opts.ignore||opts.filter||noop,mapStream=opts.mapStream||echo,statNext=statAll(xfs,opts.dereference?xfs.stat:xfs.lstat,cwd,ignore,opts.entries,opts.sort),strict=opts.strict!==!1,umask=typeof opts.umask=="number"?~opts.umask:~processUmask(),pack2=opts.pack||tar2.pack(),finish=opts.finish||noop,map5=opts.map||noop,dmode=typeof opts.dmode=="number"?opts.dmode:0,fmode=typeof opts.fmode=="number"?opts.fmode:0;opts.strip&&(map5=strip(map5,opts.strip)),opts.readable&&(dmode|=parseInt(555,8),fmode|=parseInt(444,8)),opts.writable&&(dmode|=parseInt(333,8),fmode|=parseInt(222,8)),onnextentry();function onsymlink(filename,header){xfs.readlink(path14.join(cwd,filename),function(err2,linkname){if(err2)return pack2.destroy(err2);header.linkname=normalize2(linkname),pack2.entry(header,onnextentry)})}function onstat(err2,filename,stat4){if(pack2.destroyed)return;if(err2)return pack2.destroy(err2);if(!filename)return opts.finalize!==!1&&pack2.finalize(),finish(pack2);if(stat4.isSocket())return onnextentry();let header={name:normalize2(filename),mode:(stat4.mode|(stat4.isDirectory()?dmode:fmode))&umask,mtime:stat4.mtime,size:stat4.size,type:"file",uid:stat4.uid,gid:stat4.gid};if(stat4.isDirectory())return header.size=0,header.type="directory",header=map5(header)||header,pack2.entry(header,onnextentry);if(stat4.isSymbolicLink())return header.size=0,header.type="symlink",header=map5(header)||header,onsymlink(filename,header);if(header=map5(header)||header,!stat4.isFile())return strict?pack2.destroy(new Error("unsupported type for "+filename)):onnextentry();let entry=pack2.entry(header,onnextentry),rs=mapStream(xfs.createReadStream(path14.join(cwd,filename),{start:0,end:header.size>0?header.size-1:header.size}),header);rs.on("error",function(err3){entry.destroy(err3)}),pump(rs,entry)}function onnextentry(err2){if(err2)return pack2.destroy(err2);statNext(onstat)}return pack2};function head(list12){return list12.length?list12[list12.length-1]:null}function processGetuid(){return!global.Bare&&process.getuid?process.getuid():-1}function processUmask(){return!global.Bare&&process.umask?process.umask():0}exports2.extract=function(cwd,opts){cwd||(cwd="."),opts||(opts={}),cwd=path14.resolve(cwd);let xfs=opts.fs||fs6,ignore=opts.ignore||opts.filter||noop,mapStream=opts.mapStream||echo,own=opts.chown!==!1&&!win32&&processGetuid()===0,extract2=opts.extract||tar2.extract(),stack=[],now=new Date,umask=typeof opts.umask=="number"?~opts.umask:~processUmask(),strict=opts.strict!==!1,validateSymLinks=opts.validateSymlinks!==!1,map5=opts.map||noop,dmode=typeof opts.dmode=="number"?opts.dmode:0,fmode=typeof opts.fmode=="number"?opts.fmode:0;return opts.strip&&(map5=strip(map5,opts.strip)),opts.readable&&(dmode|=parseInt(555,8),fmode|=parseInt(444,8)),opts.writable&&(dmode|=parseInt(333,8),fmode|=parseInt(222,8)),extract2.on("entry",onentry),opts.finish&&extract2.on("finish",opts.finish),extract2;function onentry(header,stream,next){header=map5(header)||header,header.name=normalize2(header.name);let name=path14.join(cwd,path14.join("/",header.name));if(ignore(name,header))return stream.resume(),next();let dir=path14.join(name,".")===path14.join(cwd,".")?cwd:path14.dirname(name);validate2(xfs,dir,path14.join(cwd,"."),function(err2,valid){if(err2)return next(err2);if(!valid)return next(new Error(dir+" is not a valid path"));if(header.type==="directory")return stack.push([name,header.mtime]),mkdirfix(name,{fs:xfs,own,uid:header.uid,gid:header.gid,mode:header.mode},stat4);mkdirfix(dir,{fs:xfs,own,uid:header.uid,gid:header.gid,mode:493},function(err3){if(err3)return next(err3);switch(header.type){case"file":return onfile();case"link":return onlink();case"symlink":return onsymlink()}if(strict)return next(new Error("unsupported type for "+name+" ("+header.type+")"));stream.resume(),next()})});function stat4(err2){if(err2)return next(err2);if(path14.join(name,".")===path14.join(cwd,"."))return next();utimes(name,header,function(err3){if(err3)return next(err3);if(win32)return next();chperm(name,header,next)})}function onsymlink(){if(win32)return next();xfs.unlink(name,function(){let dst=path14.resolve(path14.dirname(name),header.linkname);if(!inCwd(dst)&&(validateSymLinks||opts.strip))return next(new Error(name+" is not a valid symlink"));validateNotSymlink(xfs,dst,path14.join(cwd,"."),function(err2,valid){if(err2)return next(err2);if(!valid&&validateSymLinks)return next(new Error(name+" is not a valid symlink"));xfs.symlink(header.linkname,name,stat4)})})}function onlink(){if(win32)return next();xfs.unlink(name,function(){let link=path14.join(cwd,path14.join("/",header.linkname));xfs.realpath(link,function(err2,dst){if(err2||!inCwd(dst))return next(new Error(name+" is not a valid hardlink"));xfs.link(dst,name,function(err3){if(err3&&err3.code==="EPERM"&&opts.hardlinkAsFilesFallback)return stream=xfs.createReadStream(dst),onfile();stat4(err3)})})})}function inCwd(dst){return dst===cwd||dst.startsWith(cwd+path14.sep)}function onfile(){xfs.lstat(name,function(err2,st){if(!err2&&st.isSymbolicLink())return xfs.unlink(name,onwrite);onwrite()});function onwrite(err2){if(err2)return next(err2);let ws=xfs.createWriteStream(name),rs=mapStream(stream,header);ws.on("error",function(err3){rs.destroy(err3)}),pump(rs,ws,function(err3){if(err3)return next(err3);ws.on("close",stat4)})}}}function utimesParent(name,cb){let top;for(;(top=head(stack))&&name.slice(0,top[0].length)!==top[0];)stack.pop();if(!top)return cb();xfs.utimes(top[0],now,top[1],cb)}function utimes(name,header,cb){if(opts.utimes===!1)return cb();if(header.type==="directory")return xfs.utimes(name,now,header.mtime,cb);if(header.type==="symlink")return utimesParent(name,cb);xfs.utimes(name,now,header.mtime,function(err2){if(err2)return cb(err2);utimesParent(name,cb)})}function chperm(name,header,cb){let link=header.type==="symlink",chmod=link?xfs.lchmod:xfs.chmod,chown=link?xfs.lchown:xfs.chown;if(!chmod)return cb();let mode=(header.mode|(header.type==="directory"?dmode:fmode))&umask&511;chown&&own?chown.call(xfs,name,header.uid,header.gid,onchown):onchown(null);function onchown(err2){if(err2)return cb(err2);if(!chmod)return cb();chmod.call(xfs,name,mode,cb)}}function mkdirfix(name,opts2,cb){xfs.stat(name,function(err2){if(!err2)return cb(null);if(err2.code!=="ENOENT")return cb(err2);xfs.mkdir(name,{mode:opts2.mode,recursive:!0},function(err3,made){if(err3)return cb(err3);chperm(name,opts2,cb)})})}};function validateNotSymlink(fs7,name,root5,cb){if(name===root5)return cb(null,!0);if(!name.startsWith(root5+path14.sep))return cb(null,!1);fs7.lstat(name,function(err2,st){if(err2&&err2.code!=="ENOENT"&&err2.code!=="EPERM")return cb(err2);if(err2||!st.isSymbolicLink())return validateNotSymlink(fs7,path14.join(name,".."),root5,cb);cb(null,!1)})}function validate2(fs7,name,root5,cb){if(name===root5)return cb(null,!0);fs7.lstat(name,function(err2,st){if(err2&&err2.code!=="ENOENT"&&err2.code!=="EPERM")return cb(err2);if(err2||st.isDirectory())return validate2(fs7,path14.join(name,".."),root5,cb);cb(null,!1)})}function inside(root5,name){return name===root5||name.startsWith(root5+path14.sep)}function noop(){}function echo(name){return name}function normalize2(name){return win32?name.replace(/\\/g,"/").replace(/[:?<>|]/g,"_"):name}function statAll(fs7,stat4,cwd,ignore,entries,sort){entries||(entries=["."]);let queue=entries.slice(0),root5=path14.resolve(cwd);return function(callback){if(!queue.length)return callback(null);let next=queue.shift(),nextAbs=path14.join(cwd,next);if(!inside(root5,path14.resolve(cwd,next)))return callback(new Error(next+" is not a valid path"));stat4.call(fs7,nextAbs,function(err2,stat5){if(err2)return callback(entries.indexOf(next)===-1&&err2.code==="ENOENT"?null:err2);if(!stat5.isDirectory())return callback(null,next,stat5);fs7.readdir(nextAbs,function(err3,files){if(err3)return callback(err3);sort&&files.sort();for(let i6=0;i6<files.length;i6++)ignore(path14.join(cwd,next,files[i6]))||queue.push(path14.join(next,files[i6]));callback(null,next,stat5)})})}}function strip(map5,level){return function(header){header.name=header.name.split("/").slice(level).join("/");let linkname=header.linkname;return linkname&&(header.type==="link"||path14.isAbsolute(linkname))&&(header.linkname=linkname.split("/").slice(level).join("/")),map5(header)}}}});var import_node_os=__toESM(require("node:os"),1),import_node_path=__toESM(require("node:path"),1);var import_node_crypto=require("node:crypto"),import_proto=__toESM(require_protos(),1),{temporal}=import_proto.default,ENCODING_METADATA_KEY="encoding",ENCRYPTED_ENCODING_VALUE="binary/encrypted",KEY_ID_METADATA_KEY="encryption-key-id",IV_BYTES=12,AUTH_TAG_BYTES=16,EncryptionPayloadCodec=class{config;decryptKeysById;constructor(config2){this.config=config2,this.decryptKeysById=new Map([[config2.primary.keyId,config2.primary.key]]),config2.secondary&&this.decryptKeysById.set(config2.secondary.keyId,config2.secondary.key)}async encode(payloads){return payloads.map(p3=>this.encodePayload(p3))}async decode(payloads){return Promise.all(payloads.map(p3=>this.decodePayload(p3)))}encodePayload(payload){if(!payload.data||payload.data.length===0)return payload;let plaintext=temporal.api.common.v1.Payload.encode(payload).finish();return{metadata:{[ENCODING_METADATA_KEY]:Buffer.from(ENCRYPTED_ENCODING_VALUE),[KEY_ID_METADATA_KEY]:Buffer.from(this.config.primary.keyId)},data:encrypt(plaintext,this.config.primary)}}async decodePayload(payload){if(!isEncryptedPayload(payload))return payload;let keyIdBytes=payload.metadata?.[KEY_ID_METADATA_KEY];if(!keyIdBytes)throw new Error("Encrypted payload is missing its encryption-key-id metadata \u2014 refusing to decode");let keyId=Buffer.from(keyIdBytes).toString("utf-8"),key=await this.decryptKeyFor(keyId);if(!key)throw new Error(`Encrypted payload uses unknown key id '${keyId}' \u2014 configure it as the primary or secondary payload encryption key (rotation window?)`);let plaintext=decrypt(payload.data,key,keyId);return temporal.api.common.v1.Payload.decode(plaintext)}async decryptKeyFor(keyId){let known=this.decryptKeysById.get(keyId);if(known!==void 0)return known;if(this.config.resolveKey===void 0)return;let resolved=await this.config.resolveKey(keyId);return resolved!==void 0&&this.decryptKeysById.set(keyId,resolved),resolved}};function isEncryptedPayload(payload){let encoding=payload.metadata?.[ENCODING_METADATA_KEY];return encoding?Buffer.from(encoding).toString("utf-8")===ENCRYPTED_ENCODING_VALUE:!1}function encrypt(plaintext,key){let iv=(0,import_node_crypto.randomBytes)(IV_BYTES),cipher=(0,import_node_crypto.createCipheriv)("aes-256-gcm",key.key,iv),ciphertext=Buffer.concat([cipher.update(plaintext),cipher.final()]);return Buffer.concat([iv,ciphertext,cipher.getAuthTag()])}function decrypt(data,key,keyId){if(data.length<IV_BYTES+AUTH_TAG_BYTES)throw new Error(`Encrypted payload under key id '${keyId}' is truncated (${data.length} bytes)`);let buf2=Buffer.from(data),iv=buf2.subarray(0,IV_BYTES),ciphertext=buf2.subarray(IV_BYTES,buf2.length-AUTH_TAG_BYTES),tag2=buf2.subarray(buf2.length-AUTH_TAG_BYTES),decipher=(0,import_node_crypto.createDecipheriv)("aes-256-gcm",key,iv);decipher.setAuthTag(tag2);try{return Buffer.concat([decipher.update(ciphertext),decipher.final()])}catch{throw new Error(`Failed to decrypt payload under key id '${keyId}' \u2014 ciphertext is corrupt or the configured key does not match`)}}var KEY_ENV="STIGMER_PAYLOAD_ENCRYPTION_KEY",KEY_ID_ENV="STIGMER_PAYLOAD_ENCRYPTION_KEY_ID",SECONDARY_KEY_ENV="STIGMER_PAYLOAD_ENCRYPTION_SECONDARY_KEY",SECONDARY_KEY_ID_ENV="STIGMER_PAYLOAD_ENCRYPTION_SECONDARY_KEY_ID";function loadPayloadEncryptionConfig(readSecret,bootstrap){let rawKey=readSecret(KEY_ENV);if(rawKey){let primary={keyId:requireKeyId(KEY_ID_ENV),key:parseKey(rawKey,KEY_ENV)},rawSecondary=readSecret(SECONDARY_KEY_ENV),secondary=rawSecondary?{keyId:requireKeyId(SECONDARY_KEY_ID_ENV),key:parseKey(rawSecondary,SECONDARY_KEY_ENV)}:void 0;return{primary,secondary}}if(bootstrap?.key){let primary={keyId:requireBootstrapKeyId(bootstrap.keyId,"payload_encryption_key_id"),key:parseKey(bootstrap.key,"bootstrap payload_encryption_key")},secondary=bootstrap.secondaryKey?{keyId:requireBootstrapKeyId(bootstrap.secondaryKeyId,"payload_encryption_secondary_key_id"),key:parseKey(bootstrap.secondaryKey,"bootstrap payload_encryption_secondary_key")}:void 0;return{primary,secondary}}}function requireKeyId(envName){let keyId=process.env[envName];if(!keyId)throw new Error(`Payload encryption misconfigured: ${envName} is required when the corresponding key is set`);return keyId}function requireBootstrapKeyId(keyId,fieldName){if(!keyId)throw new Error(`Runner bootstrap returned a payload encryption key without its ${fieldName} \u2014 refusing to encrypt under an unidentified key (server contract violation)`);return keyId}function parseKey(rawBase64,envName){let key;try{key=Buffer.from(rawBase64,"base64")}catch{throw new Error(`Payload encryption misconfigured: ${envName} is not valid base64`)}if(key.length!==32)throw new Error(`Payload encryption misconfigured: ${envName} must decode to 32 bytes (AES-256), got ${key.length}`);return key}var import_node_fs=require("node:fs"),TEMPORAL_API_KEY_ENV="STIGMER_TEMPORAL_API_KEY",TEMPORAL_TLS_ENV="STIGMER_TEMPORAL_TLS",TEMPORAL_TLS_SERVER_NAME_ENV="STIGMER_TEMPORAL_TLS_SERVER_NAME",PEM_ITEMS={serverCa:"STIGMER_TEMPORAL_TLS_SERVER_CA_CERT",clientCert:"STIGMER_TEMPORAL_TLS_CLIENT_CERT",clientKey:"STIGMER_TEMPORAL_TLS_CLIENT_KEY"},TEMPORAL_TLS_CLIENT_KEY_DATA_ENV=`${PEM_ITEMS.clientKey}_DATA`,TEMPORAL_CONNECTION_ENV_NAMES=[TEMPORAL_API_KEY_ENV,TEMPORAL_TLS_ENV,TEMPORAL_TLS_SERVER_NAME_ENV,...Object.values(PEM_ITEMS).flatMap(item=>[`${item}_PATH`,`${item}_DATA`])];function loadTemporalConnectionConfig(read3){let value=name=>{let raw=read3(name);return raw===void 0||raw.trim()===""?void 0:raw},apiKey=value(TEMPORAL_API_KEY_ENV)?.trim(),tlsFlag=parseFlag(value(TEMPORAL_TLS_ENV)),serverName=value(TEMPORAL_TLS_SERVER_NAME_ENV)?.trim(),serverCa=readPem(PEM_ITEMS.serverCa,value),clientCert=readPem(PEM_ITEMS.clientCert,value),clientKey=readPem(PEM_ITEMS.clientKey,value);if(clientCert===void 0!=(clientKey===void 0))throw new Error(`Temporal connection misconfigured: mutual TLS needs both ${PEM_ITEMS.clientCert}_* and ${PEM_ITEMS.clientKey}_* \u2014 set both or neither`);let tlsRequested=tlsFlag===!0||apiKey!==void 0||serverName!==void 0||serverCa!==void 0||clientCert!==void 0;if(tlsFlag===!1&&tlsRequested)throw new Error(`Temporal connection misconfigured: ${TEMPORAL_TLS_ENV} is false while an API key, a server name, a CA or a client certificate is set \u2014 each of those needs TLS`);return tlsRequested?{tls:{...serverName!==void 0?{serverNameOverride:serverName}:{},...serverCa!==void 0?{serverRootCACertificate:serverCa}:{},...clientCert!==void 0&&clientKey!==void 0?{clientCertPair:{crt:clientCert,key:clientKey}}:{}},...apiKey!==void 0?{apiKey}:{}}:{}}function temporalConnectionEnv(config2){let env2={};if(config2.tls===void 0)return env2;env2[TEMPORAL_TLS_ENV]="true";let text2=bytes=>Buffer.from(bytes).toString("utf8"),{serverNameOverride,serverRootCACertificate,clientCertPair}=config2.tls;return serverNameOverride!==void 0&&(env2[TEMPORAL_TLS_SERVER_NAME_ENV]=serverNameOverride),serverRootCACertificate!==void 0&&(env2[`${PEM_ITEMS.serverCa}_DATA`]=text2(serverRootCACertificate)),clientCertPair!==void 0&&(env2[`${PEM_ITEMS.clientCert}_DATA`]=text2(clientCertPair.crt),env2[TEMPORAL_TLS_CLIENT_KEY_DATA_ENV]=text2(clientCertPair.key)),config2.apiKey!==void 0&&(env2[TEMPORAL_API_KEY_ENV]=config2.apiKey),env2}function parseFlag(raw){if(raw===void 0)return;let flag=raw.trim().toLowerCase();if(flag==="true"||flag==="1")return!0;if(flag==="false"||flag==="0")return!1;throw new Error(`Temporal connection misconfigured: ${TEMPORAL_TLS_ENV} must be true, 1, false or 0, got "${raw}"`)}function readPem(item,value){let path14=value(`${item}_PATH`),data=value(`${item}_DATA`);if(path14!==void 0&&data!==void 0)throw new Error(`Temporal connection misconfigured: set ${item}_PATH or ${item}_DATA, not both`);if(data!==void 0)return Buffer.from(data,"utf8");if(path14!==void 0)try{return(0,import_node_fs.readFileSync)(path14.trim())}catch(err2){let reason=err2 instanceof Error?err2.message:String(err2);throw new Error(`Temporal connection misconfigured: ${item}_PATH "${path14.trim()}" cannot be read (${reason})`)}}var DEFAULT_GITHUB_OAUTH_CLIENT_ID="Ov23li4q5kgj90QMr226",DEFAULT_GITHUB_OAUTH_CLIENT_SECRET="edc089d10b6cc0dcee898f9680d62d1504e2c89a",DEFAULT_GRPC_PORT=7234,DEFAULT_MODEL_REGISTRY_UPSTREAM="https://api.stigmer.ai",DEFAULT_SANDBOX_RUNNER_IMAGE="ghcr.io/stigmer/runner:latest";function loadConfig(env2=process.env){let{operatorEmail:operatorEmail2,operatorName:operatorName2}=loadOperatorIdentity(env2),grpcPort=envInt(env2,"GRPC_PORT",DEFAULT_GRPC_PORT),artifactHttpPort=envInt(env2,"ARTIFACT_HTTP_PORT",grpcPort+1),artifactHttpHost=envString(env2,"ARTIFACT_HTTP_HOST","127.0.0.1"),artifactStorageType=envString(env2,"ARTIFACT_STORAGE_TYPE","local"),r22={r2Bucket:envString(env2,"R2_BUCKET",""),r2Endpoint:envString(env2,"R2_ENDPOINT",""),r2AccessKeyId:envString(env2,"R2_ACCESS_KEY_ID",""),r2SecretAccessKey:envString(env2,"R2_SECRET_ACCESS_KEY",""),r2Region:envString(env2,"R2_REGION","auto")},skillArtifactStorageType=envString(env2,"SKILL_ARTIFACT_STORAGE_TYPE","");return(artifactStorageType==="r2"||skillArtifactStorageType==="r2")&&validateR2Config(r22),{grpcPort,artifactHttpPort,artifactHttpHost,...r22,temporalHostPort:envString(env2,"TEMPORAL_HOST_PORT","localhost:7233"),temporalNamespace:envString(env2,"TEMPORAL_NAMESPACE","default"),temporalConnection:loadTemporalConnectionConfig(name=>env2[name]),artifactStorageType,artifactLocalBasePath:envString(env2,"ARTIFACT_LOCAL_BASE_PATH",defaultArtifactPath()),artifactLocalServeUrl:envString(env2,"ARTIFACT_LOCAL_SERVE_URL",`http://localhost:${artifactHttpPort}`),logLevel:envString(env2,"LOG_LEVEL","info"),env:envString(env2,"ENV","local"),modelRegistryUpstream:envString(env2,"STIGMER_MODEL_REGISTRY_UPSTREAM",DEFAULT_MODEL_REGISTRY_UPSTREAM),modelRegistryRefreshEnabled:env2.STIGMER_MODEL_REGISTRY_REFRESH!=="off",dbPath:envString(env2,"DB_PATH",defaultDbPath()),databaseUrl:envString(env2,"DATABASE_URL",""),storagePath:envString(env2,"STORAGE_PATH",defaultStoragePath()),skillArtifactStorageType,skillTransferBaseUrl:envString(env2,"SKILL_TRANSFER_BASE_URL",`http://localhost:${grpcPort}`),operatorEmail:operatorEmail2,operatorName:operatorName2,gitHubOAuthClientId:envString(env2,"STIGMER_GITHUB_CLIENT_ID",DEFAULT_GITHUB_OAUTH_CLIENT_ID),gitHubOAuthClientSecret:envString(env2,"STIGMER_GITHUB_CLIENT_SECRET",DEFAULT_GITHUB_OAUTH_CLIENT_SECRET),oauthRedirectUri:envString(env2,"STIGMER_OAUTH_REDIRECT_URI",""),consoleDir:envString(env2,"STIGMER_CONSOLE_DIR",""),...loadOidcConfig(env2),oidcConsoleClientId:envString(env2,"STIGMER_OIDC_CONSOLE_CLIENT_ID",""),sandboxProvisionerType:envString(env2,"SANDBOX_PROVISIONER_TYPE",""),sandboxBackendEndpoint:envString(env2,"STIGMER_SANDBOX_BACKEND_ENDPOINT",""),sandboxTemporalAddress:envString(env2,"STIGMER_SANDBOX_TEMPORAL_ADDRESS",envString(env2,"TEMPORAL_HOST_PORT","localhost:7233")),sandboxRunnerImage:envString(env2,"STIGMER_SANDBOX_RUNNER_IMAGE",DEFAULT_SANDBOX_RUNNER_IMAGE),sandboxRunnerCommand:envString(env2,"STIGMER_SANDBOX_RUNNER_COMMAND","stigmer-runner"),sandboxKubernetesNamespace:envString(env2,"STIGMER_SANDBOX_K8S_NAMESPACE","stigmer-sandboxes")}}function loadOidcConfig(env2){let issuer=(env2.STIGMER_OIDC_ISSUER??"").trim(),audience=(env2.STIGMER_OIDC_AUDIENCE??"").trim();if(issuer===""&&audience==="")return{oidcIssuer:"",oidcAudience:""};if(issuer===""||audience==="")throw new Error("incomplete OIDC configuration: STIGMER_OIDC_ISSUER and STIGMER_OIDC_AUDIENCE must be set together \u2014 set both or neither");let parsed;try{parsed=new URL(issuer)}catch{throw new Error(`STIGMER_OIDC_ISSUER "${issuer}" is not a valid URL \u2014 OIDC discovery requires the issuer's https URL`)}if(parsed.protocol!=="https:"&&parsed.protocol!=="http:")throw new Error(`STIGMER_OIDC_ISSUER "${issuer}" must be an http(s) URL \u2014 OIDC discovery requires it`);return{oidcIssuer:issuer,oidcAudience:audience}}function validateR2Config(r22){let requirements=[[r22.r2Bucket,"R2_BUCKET"],[r22.r2Endpoint,"R2_ENDPOINT"],[r22.r2AccessKeyId,"R2_ACCESS_KEY_ID"],[r22.r2SecretAccessKey,"R2_SECRET_ACCESS_KEY"]];for(let[value,name]of requirements)if(value==="")throw new Error(`invalid R2 configuration: ${name} is required when ARTIFACT_STORAGE_TYPE=r2`)}function defaultStoragePath(){try{return import_node_path.default.join(import_node_os.default.homedir(),".stigmer","storage")}catch{return"./storage"}}function defaultDbPath(){try{return import_node_path.default.join(import_node_os.default.homedir(),".stigmer","stigmer.db")}catch{return"./stigmer.db"}}function defaultArtifactPath(){try{return import_node_path.default.join(import_node_os.default.homedir(),".stigmer","data","artifacts")}catch{return"./artifacts"}}function loadOperatorIdentity(env2){let email=(env2.STIGMER_OPERATOR_EMAIL??"").trim(),name=(env2.STIGMER_OPERATOR_NAME??"").trim();if(email!==""&&!email.includes("@"))throw new Error(`STIGMER_OPERATOR_EMAIL "${email}" is not an email address (missing '@') \u2014 fix or unset it`);if(email===""&&name!=="")throw new Error("STIGMER_OPERATOR_NAME is set but STIGMER_OPERATOR_EMAIL is not \u2014 the email is the identity; set both or neither");return{operatorEmail:email,operatorName:name}}function envString(env2,key,fallback3){let value=env2[key];return value!==void 0&&value!==""?value:fallback3}function envInt(env2,key,fallback3){let value=env2[key];if(value===void 0||value==="")return fallback3;let parsed=Number.parseInt(value,10);return Number.isSafeInteger(parsed)&&String(parsed)===value.trim()?parsed:fallback3}var import_node_fs16=require("node:fs"),import_node_path18=__toESM(require("node:path"),1);function protoCamelCase(snakeCase){let capNext=!1,b7=[];for(let i6=0;i6<snakeCase.length;i6++){let c5=snakeCase.charAt(i6);switch(c5){case"_":capNext=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":b7.push(c5),capNext=!1;break;default:capNext&&(capNext=!1,c5=c5.toUpperCase()),b7.push(c5);break}}return b7.join("")}var reservedObjectProperties=new Set(["constructor","toString","toJSON","valueOf"]);function safeObjectProperty(name){return reservedObjectProperties.has(name)?name+"$":name}function varint64read(){let lowBits=0,highBits=0;for(let shift=0;shift<28;shift+=7){let b7=this.buf[this.pos++];if(lowBits|=(b7&127)<<shift,(b7&128)==0)return this.assertBounds(),[lowBits,highBits]}let middleByte=this.buf[this.pos++];if(lowBits|=(middleByte&15)<<28,highBits=(middleByte&112)>>4,(middleByte&128)==0)return this.assertBounds(),[lowBits,highBits];for(let shift=3;shift<=31;shift+=7){let b7=this.buf[this.pos++];if(highBits|=(b7&127)<<shift,(b7&128)==0)return this.assertBounds(),[lowBits,highBits]}throw new Error("invalid varint")}var TWO_PWR_32_DBL=4294967296;function int64FromString(dec){let minus=dec[0]==="-";minus&&(dec=dec.slice(1));let base=1e6,lowBits=0,highBits=0;function add1e6digit(begin,end){let digit1e6=Number(dec.slice(begin,end));highBits*=base,lowBits=lowBits*base+digit1e6,lowBits>=TWO_PWR_32_DBL&&(highBits=highBits+(lowBits/TWO_PWR_32_DBL|0),lowBits=lowBits%TWO_PWR_32_DBL)}return add1e6digit(-24,-18),add1e6digit(-18,-12),add1e6digit(-12,-6),add1e6digit(-6),minus?negate(lowBits,highBits):newBits(lowBits,highBits)}function int64ToString(lo,hi){let bits2=newBits(lo,hi),negative=bits2.hi&2147483648;negative&&(bits2=negate(bits2.lo,bits2.hi));let result=uInt64ToString(bits2.lo,bits2.hi);return negative?"-"+result:result}function uInt64ToString(lo,hi){if({lo,hi}=toUnsigned(lo,hi),hi<=2097151)return String(TWO_PWR_32_DBL*hi+lo);let low=lo&16777215,mid=(lo>>>24|hi<<8)&16777215,high=hi>>16&65535,digitA=low+mid*6777216+high*6710656,digitB=mid+high*8147497,digitC=high*2,base=1e7;return digitA>=base&&(digitB+=Math.floor(digitA/base),digitA%=base),digitB>=base&&(digitC+=Math.floor(digitB/base),digitB%=base),digitC.toString()+decimalFrom1e7WithLeadingZeros(digitB)+decimalFrom1e7WithLeadingZeros(digitA)}function toUnsigned(lo,hi){return{lo:lo>>>0,hi:hi>>>0}}function newBits(lo,hi){return{lo:lo|0,hi:hi|0}}function negate(lowBits,highBits){return highBits=~highBits,lowBits?lowBits=~lowBits+1:highBits+=1,newBits(lowBits,highBits)}var decimalFrom1e7WithLeadingZeros=digit1e7=>{let partial=String(digit1e7);return"0000000".slice(partial.length)+partial};function varint32write(value,bytes){if(value>=0){for(;value>127;)bytes.push(value&127|128),value=value>>>7;bytes.push(value)}else{for(let i6=0;i6<9;i6++)bytes.push(value&127|128),value=value>>7;bytes.push(1)}}function varint32read(){let b7=this.buf[this.pos++],result=b7&127;if((b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<7,(b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<14,(b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<21,(b7&128)==0)return this.assertBounds(),result;b7=this.buf[this.pos++],result|=(b7&15)<<28;for(let readBytes2=5;(b7&128)!==0&&readBytes2<10;readBytes2++)b7=this.buf[this.pos++];if((b7&128)!=0)throw new Error("invalid varint");return this.assertBounds(),result>>>0}var protoInt64=makeInt64Support();function makeInt64Support(){let dv=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof dv.getBigInt64=="function"&&typeof dv.getBigUint64=="function"&&typeof dv.setBigInt64=="function"&&typeof dv.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let MIN=BigInt("-9223372036854775808"),MAX=BigInt("9223372036854775807"),UMIN=BigInt("0"),UMAX=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>MAX||bi<MIN)throw new Error(`invalid int64: ${value}`);return bi},uParse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>UMAX||bi<UMIN)throw new Error(`invalid uint64: ${value}`);return bi},enc(value){return dv.setBigInt64(0,this.parse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},uEnc(value){return dv.setBigInt64(0,this.uParse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},dec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigInt64(0,!0)},uDec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(value){return typeof value!="string"&&(value=value.toString()),assertInt64String(value),value},uParse(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String(value),value},enc(value){return typeof value!="string"&&(value=value.toString()),assertInt64String(value),int64FromString(value)},uEnc(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String(value),int64FromString(value)},dec(lo,hi){return int64ToString(lo,hi)},uDec(lo,hi){return uInt64ToString(lo,hi)}}}function assertInt64String(value){if(!/^-?[0-9]+$/.test(value))throw new Error("invalid int64: "+value)}function assertUInt64String(value){if(!/^[0-9]+$/.test(value))throw new Error("invalid uint64: "+value)}var ScalarType;(function(ScalarType3){ScalarType3[ScalarType3.DOUBLE=1]="DOUBLE",ScalarType3[ScalarType3.FLOAT=2]="FLOAT",ScalarType3[ScalarType3.INT64=3]="INT64",ScalarType3[ScalarType3.UINT64=4]="UINT64",ScalarType3[ScalarType3.INT32=5]="INT32",ScalarType3[ScalarType3.FIXED64=6]="FIXED64",ScalarType3[ScalarType3.FIXED32=7]="FIXED32",ScalarType3[ScalarType3.BOOL=8]="BOOL",ScalarType3[ScalarType3.STRING=9]="STRING",ScalarType3[ScalarType3.BYTES=12]="BYTES",ScalarType3[ScalarType3.UINT32=13]="UINT32",ScalarType3[ScalarType3.SFIXED32=15]="SFIXED32",ScalarType3[ScalarType3.SFIXED64=16]="SFIXED64",ScalarType3[ScalarType3.SINT32=17]="SINT32",ScalarType3[ScalarType3.SINT64=18]="SINT64"})(ScalarType||(ScalarType={}));function scalarZeroValue(type2,longAsString){switch(type2){case ScalarType.STRING:return"";case ScalarType.BOOL:return!1;case ScalarType.DOUBLE:case ScalarType.FLOAT:return 0;case ScalarType.INT64:case ScalarType.UINT64:case ScalarType.SFIXED64:case ScalarType.FIXED64:case ScalarType.SINT64:return longAsString?"0":protoInt64.zero;case ScalarType.BYTES:return new Uint8Array(0);default:return 0}}function isScalarZeroValue(type2,value){switch(type2){case ScalarType.BOOL:return value===!1;case ScalarType.STRING:return value==="";case ScalarType.BYTES:return value instanceof Uint8Array&&!value.byteLength;default:return value==0}}var IMPLICIT=2,unsafeLocal=Symbol.for("reflect unsafe local");function unsafeOneofCase(target,oneof2){let c5=target[oneof2.localName].case;return c5===void 0?c5:oneof2.fields.find(f5=>f5.localName===c5)}function unsafeIsSet(target,field3){let name=field3.localName;if(field3.oneof)return target[field3.oneof.localName].case===name;if(field3.presence!=IMPLICIT)return target[name]!==void 0&&Object.prototype.hasOwnProperty.call(target,name);switch(field3.fieldKind){case"list":return target[name].length>0;case"map":return Object.keys(target[name]).length>0;case"scalar":return!isScalarZeroValue(field3.scalar,target[name]);case"enum":return target[name]!==field3.enum.values[0].number}throw new Error("message field with implicit presence")}function unsafeIsSetExplicit(target,localName){return Object.prototype.hasOwnProperty.call(target,localName)&&target[localName]!==void 0}function unsafeGet(target,field3){if(field3.oneof){let oneof2=target[field3.oneof.localName];return oneof2.case===field3.localName?oneof2.value:void 0}return target[field3.localName]}function unsafeSet(target,field3,value){field3.oneof?target[field3.oneof.localName]={case:field3.localName,value}:target[field3.localName]=value}function unsafeClear(target,field3){let name=field3.localName;if(field3.oneof){let oneofLocalName=field3.oneof.localName;target[oneofLocalName].case===name&&(target[oneofLocalName]={case:void 0})}else if(field3.presence!=IMPLICIT)delete target[name];else switch(field3.fieldKind){case"map":target[name]={};break;case"list":target[name]=[];break;case"enum":target[name]=field3.enum.values[0].number;break;case"scalar":target[name]=scalarZeroValue(field3.scalar,field3.longAsString);break}}function restoreJsonNames(message6){for(let f5 of message6.field)unsafeIsSetExplicit(f5,"jsonName")||(f5.jsonName=protoCamelCase(f5.name));message6.nestedType.forEach(restoreJsonNames)}function parseTextFormatEnumValue(descEnum,value){let enumValue=descEnum.values.find(v=>v.name===value);if(!enumValue)throw new Error(`cannot parse ${descEnum} default value: ${value}`);return enumValue.number}function parseTextFormatScalarValue(type2,value){switch(type2){case ScalarType.STRING:return value;case ScalarType.BYTES:{let u=unescapeBytesDefaultValue(value);if(u===!1)throw new Error(`cannot parse ${ScalarType[type2]} default value: ${value}`);return u}case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return protoInt64.parse(value);case ScalarType.UINT64:case ScalarType.FIXED64:return protoInt64.uParse(value);case ScalarType.DOUBLE:case ScalarType.FLOAT:switch(value){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(value)}case ScalarType.BOOL:return value==="true";case ScalarType.INT32:case ScalarType.UINT32:case ScalarType.SINT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:return parseInt(value,10)}}function unescapeBytesDefaultValue(str2){let b7=[],input={tail:str2,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(n3){if(this.tail.length>=n3){let r5=this.tail.substring(0,n3);return this.tail=this.tail.substring(n3),r5}return!1}};for(;input.next();)switch(input.c){case"\\":if(input.next())switch(input.c){case"\\":b7.push(input.c.charCodeAt(0));break;case"b":b7.push(8);break;case"f":b7.push(12);break;case"n":b7.push(10);break;case"r":b7.push(13);break;case"t":b7.push(9);break;case"v":b7.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let s2=input.c,t=input.take(2);if(t===!1)return!1;let n3=parseInt(s2+t,8);if(Number.isNaN(n3))return!1;b7.push(n3);break}case"x":{let s2=input.c,t=input.take(2);if(t===!1)return!1;let n3=parseInt(s2+t,16);if(Number.isNaN(n3))return!1;b7.push(n3);break}case"u":{let s2=input.c,t=input.take(4);if(t===!1)return!1;let n3=parseInt(s2+t,16);if(Number.isNaN(n3))return!1;let chunk=new Uint8Array(4);new DataView(chunk.buffer).setInt32(0,n3,!0),b7.push(chunk[0],chunk[1],chunk[2],chunk[3]);break}case"U":{let s2=input.c,t=input.take(8);if(t===!1)return!1;let tc=protoInt64.uEnc(s2+t),chunk=new Uint8Array(8),view=new DataView(chunk.buffer);view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),b7.push(chunk[0],chunk[1],chunk[2],chunk[3],chunk[4],chunk[5],chunk[6],chunk[7]);break}}break;default:b7.push(input.c.charCodeAt(0))}return new Uint8Array(b7)}function*nestedTypes(desc){switch(desc.kind){case"file":for(let message6 of desc.messages)yield message6,yield*nestedTypes(message6);yield*desc.enums,yield*desc.services,yield*desc.extensions;break;case"message":for(let message6 of desc.nestedMessages)yield message6,yield*nestedTypes(message6);yield*desc.nestedEnums,yield*desc.nestedExtensions;break}}function createFileRegistry(...args){let registry=createBaseRegistry();if(!args.length)return registry;if("$typeName"in args[0]&&args[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let file of args[0].file)addFile(file,registry);return registry}if("$typeName"in args[0]){let recurseDeps=function(file){let deps=[];for(let protoFileName of file.dependency){if(registry.getFile(protoFileName)!=null||seen.has(protoFileName))continue;let dep=resolve(protoFileName);if(!dep)throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);"kind"in dep?registry.addFile(dep,!1,!0):(seen.add(dep.name),deps.push(dep))}return deps.concat(...deps.map(recurseDeps))},input=args[0],resolve=args[1],seen=new Set;for(let file of[input,...recurseDeps(input)].reverse())addFile(file,registry)}else for(let fileReg of args)for(let file of fileReg.files)registry.addFile(file);return registry}function createBaseRegistry(){let types3=new Map,extendees=new Map,files=new Map;return{kind:"registry",types:types3,extendees,[Symbol.iterator](){return types3.values()},get files(){return files.values()},addFile(file,skipTypes,withDeps){if(files.set(file.proto.name,file),!skipTypes)for(let type2 of nestedTypes(file))this.add(type2);if(withDeps)for(let f5 of file.dependencies)this.addFile(f5,skipTypes,withDeps)},add(desc){if(desc.kind=="extension"){let numberToExt=extendees.get(desc.extendee.typeName);numberToExt||extendees.set(desc.extendee.typeName,numberToExt=new Map),numberToExt.set(desc.number,desc)}types3.set(desc.typeName,desc)},get(typeName){return types3.get(typeName)},getFile(fileName){return files.get(fileName)},getMessage(typeName){let t=types3.get(typeName);return t?.kind=="message"?t:void 0},getEnum(typeName){let t=types3.get(typeName);return t?.kind=="enum"?t:void 0},getExtension(typeName){let t=types3.get(typeName);return t?.kind=="extension"?t:void 0},getExtensionFor(extendee,no){var _a3;return(_a3=extendees.get(extendee.typeName))===null||_a3===void 0?void 0:_a3.get(no)},getService(typeName){let t=types3.get(typeName);return t?.kind=="service"?t:void 0}}}var EDITION_PROTO2=998,EDITION_PROTO3=999,EDITION_UNSTABLE=9999,TYPE_STRING=9,TYPE_GROUP=10,TYPE_MESSAGE=11,TYPE_BYTES=12,TYPE_ENUM=14,LABEL_REPEATED=3,LABEL_REQUIRED=2,JS_STRING=1,IDEMPOTENCY_UNKNOWN=0,EXPLICIT=1,IMPLICIT2=2,LEGACY_REQUIRED=3,PACKED=1,DELIMITED=2,OPEN=1,VERIFY=2;var maximumEdition=1001,featureDefaults={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function addFile(proto2,reg){var _a3,_b2;let file={kind:"file",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,edition:getFileEdition(proto2),name:proto2.name.replace(/\.proto$/,""),dependencies:findFileDependencies(proto2,reg),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${proto2.name}`}},mapEntriesStore=new Map,mapEntries={get(typeName){return mapEntriesStore.get(typeName)},add(desc){var _a4;assert(((_a4=desc.proto.options)===null||_a4===void 0?void 0:_a4.mapEntry)===!0),mapEntriesStore.set(desc.typeName,desc)}};for(let enumProto of proto2.enumType)addEnum(enumProto,file,void 0,reg);for(let messageProto of proto2.messageType)addMessage(messageProto,file,void 0,reg,mapEntries);for(let serviceProto of proto2.service)addService(serviceProto,file,reg);addExtensions(file,reg);for(let mapEntry of mapEntriesStore.values())addFields(mapEntry,reg,mapEntries);for(let message6 of file.messages)addFields(message6,reg,mapEntries),addExtensions(message6,reg);reg.addFile(file,!0)}function addExtensions(desc,reg){switch(desc.kind){case"file":for(let proto2 of desc.proto.extension){let ext=newField(proto2,desc,reg);desc.extensions.push(ext),reg.add(ext)}break;case"message":for(let proto2 of desc.proto.extension){let ext=newField(proto2,desc,reg);desc.nestedExtensions.push(ext),reg.add(ext)}for(let message6 of desc.nestedMessages)addExtensions(message6,reg);break}}function addFields(message6,reg,mapEntries){let allOneofs=message6.proto.oneofDecl.map(proto2=>newOneof(proto2,message6)),oneofsSeen=new Set;for(let proto2 of message6.proto.field){let oneof2=findOneof(proto2,allOneofs),field3=newField(proto2,message6,reg,oneof2,mapEntries);message6.fields.push(field3),message6.field[field3.localName]=field3,oneof2===void 0?message6.members.push(field3):(oneof2.fields.push(field3),oneofsSeen.has(oneof2)||(oneofsSeen.add(oneof2),message6.members.push(oneof2)))}for(let oneof2 of allOneofs.filter(o3=>oneofsSeen.has(o3)))message6.oneofs.push(oneof2);for(let child of message6.nestedMessages)addFields(child,reg,mapEntries)}function addEnum(proto2,file,parent,reg){var _a3,_b2,_c5,_d,_e5;let sharedPrefix=findEnumSharedPrefix(proto2.name,proto2.value),desc={kind:"enum",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,parent,open:!0,name:proto2.name,typeName:makeTypeName(proto2,parent,file),value:{},values:[],sharedPrefix,toString(){return`enum ${this.typeName}`}};desc.open=isEnumOpen(desc),reg.add(desc);for(let p3 of proto2.value){let name=p3.name;desc.values.push(desc.value[p3.number]={kind:"enum_value",proto:p3,deprecated:(_d=(_c5=p3.options)===null||_c5===void 0?void 0:_c5.deprecated)!==null&&_d!==void 0?_d:!1,parent:desc,name,localName:safeObjectProperty(sharedPrefix==null?name:name.substring(sharedPrefix.length)),number:p3.number,toString(){return`enum value ${desc.typeName}.${name}`}})}((_e5=parent?.nestedEnums)!==null&&_e5!==void 0?_e5:file.enums).push(desc)}function addMessage(proto2,file,parent,reg,mapEntries){var _a3,_b2,_c5,_d;let desc={kind:"message",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,parent,name:proto2.name,typeName:makeTypeName(proto2,parent,file),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((_c5=proto2.options)===null||_c5===void 0?void 0:_c5.mapEntry)===!0?mapEntries.add(desc):(((_d=parent?.nestedMessages)!==null&&_d!==void 0?_d:file.messages).push(desc),reg.add(desc));for(let enumProto of proto2.enumType)addEnum(enumProto,file,desc,reg);for(let messageProto of proto2.nestedType)addMessage(messageProto,file,desc,reg,mapEntries)}function addService(proto2,file,reg){var _a3,_b2;let desc={kind:"service",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,name:proto2.name,typeName:makeTypeName(proto2,void 0,file),methods:[],method:{},toString(){return`service ${this.typeName}`}};file.services.push(desc),reg.add(desc);for(let methodProto of proto2.method){let method=newMethod(methodProto,desc,reg);desc.methods.push(method),desc.method[method.localName]=method}}function newMethod(proto2,parent,reg){var _a3,_b2,_c5,_d;let methodKind;proto2.clientStreaming&&proto2.serverStreaming?methodKind="bidi_streaming":proto2.clientStreaming?methodKind="client_streaming":proto2.serverStreaming?methodKind="server_streaming":methodKind="unary";let input=reg.getMessage(trimLeadingDot(proto2.inputType)),output=reg.getMessage(trimLeadingDot(proto2.outputType));assert(input,`invalid MethodDescriptorProto: input_type ${proto2.inputType} not found`),assert(output,`invalid MethodDescriptorProto: output_type ${proto2.inputType} not found`);let name=proto2.name;return{kind:"rpc",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,parent,name,localName:safeObjectProperty(name.length?safeObjectProperty(name[0].toLowerCase()+name.substring(1)):name),methodKind,input,output,idempotency:(_d=(_c5=proto2.options)===null||_c5===void 0?void 0:_c5.idempotencyLevel)!==null&&_d!==void 0?_d:IDEMPOTENCY_UNKNOWN,toString(){return`rpc ${parent.typeName}.${name}`}}}function newOneof(proto2,parent){return{kind:"oneof",proto:proto2,deprecated:!1,parent,fields:[],name:proto2.name,localName:safeObjectProperty(protoCamelCase(proto2.name)),toString(){return`oneof ${parent.typeName}.${this.name}`}}}function newField(proto2,parentOrFile,reg,oneof2,mapEntries){var _a3,_b2,_c5;let isExtension=mapEntries===void 0,field3={kind:"field",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,name:proto2.name,number:proto2.number,scalar:void 0,message:void 0,enum:void 0,presence:getFieldPresence(proto2,oneof2,isExtension,parentOrFile),utf8Validation:isUtf8Validated(proto2,parentOrFile),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(isExtension){let file=parentOrFile.kind=="file"?parentOrFile:parentOrFile.file,parent=parentOrFile.kind=="file"?void 0:parentOrFile,typeName=makeTypeName(proto2,parent,file);field3.kind="extension",field3.file=file,field3.parent=parent,field3.oneof=void 0,field3.typeName=typeName,field3.jsonName=`[${typeName}]`,field3.toString=()=>`extension ${typeName}`;let extendee=reg.getMessage(trimLeadingDot(proto2.extendee));assert(extendee,`invalid FieldDescriptorProto: extendee ${proto2.extendee} not found`),field3.extendee=extendee}else{let parent=parentOrFile;assert(parent.kind=="message"),field3.parent=parent,field3.oneof=oneof2,field3.localName=oneof2?protoCamelCase(proto2.name):safeObjectProperty(protoCamelCase(proto2.name)),field3.jsonName=proto2.jsonName,field3.toString=()=>`field ${parent.typeName}.${proto2.name}`}let label2=proto2.label,type2=proto2.type,jstype=(_c5=proto2.options)===null||_c5===void 0?void 0:_c5.jstype;if(label2===LABEL_REPEATED){let mapEntry=type2==TYPE_MESSAGE?mapEntries?.get(trimLeadingDot(proto2.typeName)):void 0;if(mapEntry){field3.fieldKind="map";let{key,value}=findMapEntryFields(mapEntry);return field3.mapKey=key.scalar,field3.mapKind=value.fieldKind,field3.message=value.message,field3.delimitedEncoding=!1,field3.enum=value.enum,field3.scalar=value.scalar,field3}switch(field3.fieldKind="list",type2){case TYPE_MESSAGE:case TYPE_GROUP:field3.listKind="message",field3.message=reg.getMessage(trimLeadingDot(proto2.typeName)),assert(field3.message),field3.delimitedEncoding=isDelimitedEncoding(proto2,parentOrFile);break;case TYPE_ENUM:field3.listKind="enum",field3.enum=reg.getEnum(trimLeadingDot(proto2.typeName)),assert(field3.enum);break;default:field3.listKind="scalar",field3.scalar=type2,field3.longAsString=jstype==JS_STRING;break}return field3.packed=isPackedField(proto2,parentOrFile),field3}switch(type2){case TYPE_MESSAGE:case TYPE_GROUP:field3.fieldKind="message",field3.message=reg.getMessage(trimLeadingDot(proto2.typeName)),assert(field3.message,`invalid FieldDescriptorProto: type_name ${proto2.typeName} not found`),field3.delimitedEncoding=isDelimitedEncoding(proto2,parentOrFile),field3.getDefaultValue=()=>{};break;case TYPE_ENUM:{let enumeration=reg.getEnum(trimLeadingDot(proto2.typeName));assert(enumeration!==void 0,`invalid FieldDescriptorProto: type_name ${proto2.typeName} not found`),field3.fieldKind="enum",field3.enum=reg.getEnum(trimLeadingDot(proto2.typeName)),field3.getDefaultValue=()=>unsafeIsSetExplicit(proto2,"defaultValue")?parseTextFormatEnumValue(enumeration,proto2.defaultValue):void 0;break}default:{field3.fieldKind="scalar",field3.scalar=type2,field3.longAsString=jstype==JS_STRING,field3.getDefaultValue=()=>unsafeIsSetExplicit(proto2,"defaultValue")?parseTextFormatScalarValue(type2,proto2.defaultValue):void 0;break}}return field3}function getFileEdition(proto2){switch(proto2.syntax){case"":case"proto2":return EDITION_PROTO2;case"proto3":return EDITION_PROTO3;case"editions":if(proto2.edition===EDITION_UNSTABLE)return maximumEdition;if(proto2.edition in featureDefaults)return proto2.edition;throw new Error(`${proto2.name}: unsupported edition`);default:throw new Error(`${proto2.name}: unsupported syntax "${proto2.syntax}"`)}}function findFileDependencies(proto2,reg){return proto2.dependency.map(wantName=>{let dep=reg.getFile(wantName);if(!dep)throw new Error(`Cannot find ${wantName}, imported by ${proto2.name}`);return dep})}function findEnumSharedPrefix(enumName,values){let prefix=camelToSnakeCase(enumName)+"_";for(let value of values){if(!value.name.toLowerCase().startsWith(prefix))return;let shortName=value.name.substring(prefix.length);if(shortName.length==0||/^\d/.test(shortName))return}return prefix}function camelToSnakeCase(camel){return(camel.substring(0,1)+camel.substring(1).replace(/[A-Z]/g,c5=>"_"+c5)).toLowerCase()}function makeTypeName(proto2,parent,file){let typeName;return parent?typeName=`${parent.typeName}.${proto2.name}`:file.proto.package.length>0?typeName=`${file.proto.package}.${proto2.name}`:typeName=`${proto2.name}`,typeName}function trimLeadingDot(typeName){return typeName.startsWith(".")?typeName.substring(1):typeName}function findOneof(proto2,allOneofs){if(!unsafeIsSetExplicit(proto2,"oneofIndex")||proto2.proto3Optional)return;let oneof2=allOneofs[proto2.oneofIndex];return assert(oneof2,`invalid FieldDescriptorProto: oneof #${proto2.oneofIndex} for field #${proto2.number} not found`),oneof2}function getFieldPresence(proto2,oneof2,isExtension,parent){if(proto2.label==LABEL_REQUIRED)return LEGACY_REQUIRED;if(proto2.label==LABEL_REPEATED)return IMPLICIT2;if(oneof2||proto2.proto3Optional||isExtension)return EXPLICIT;let resolved=resolveFeature("fieldPresence",{proto:proto2,parent});return resolved==IMPLICIT2&&(proto2.type==TYPE_MESSAGE||proto2.type==TYPE_GROUP)?EXPLICIT:resolved}function isPackedField(proto2,parent){if(proto2.label!=LABEL_REPEATED)return!1;switch(proto2.type){case TYPE_STRING:case TYPE_BYTES:case TYPE_GROUP:case TYPE_MESSAGE:return!1}let o3=proto2.options;return o3&&unsafeIsSetExplicit(o3,"packed")?o3.packed:PACKED==resolveFeature("repeatedFieldEncoding",{proto:proto2,parent})}function findMapEntryFields(mapEntry){let key=mapEntry.fields.find(f5=>f5.number===1),value=mapEntry.fields.find(f5=>f5.number===2);return assert(key&&key.fieldKind=="scalar"&&key.scalar!=ScalarType.BYTES&&key.scalar!=ScalarType.FLOAT&&key.scalar!=ScalarType.DOUBLE&&value&&value.fieldKind!="list"&&value.fieldKind!="map"),{key,value}}function isEnumOpen(desc){var _a3;return OPEN==resolveFeature("enumType",{proto:desc.proto,parent:(_a3=desc.parent)!==null&&_a3!==void 0?_a3:desc.file})}function isDelimitedEncoding(proto2,parent){return proto2.type==TYPE_GROUP?!0:DELIMITED==resolveFeature("messageEncoding",{proto:proto2,parent})}function isUtf8Validated(proto2,parent){return VERIFY==resolveFeature("utf8Validation",{proto:proto2,parent})}function resolveFeature(name,ref){var _a3,_b2;let featureSet=(_a3=ref.proto.options)===null||_a3===void 0?void 0:_a3.features;if(featureSet){let val=featureSet[name];if(val!=0)return val}if("kind"in ref){if(ref.kind=="message")return resolveFeature(name,(_b2=ref.parent)!==null&&_b2!==void 0?_b2:ref.file);let editionDefaults=featureDefaults[ref.edition];if(!editionDefaults)throw new Error(`feature default for edition ${ref.edition} not found`);return editionDefaults[name]}return resolveFeature(name,ref.parent)}function assert(condition,msg){if(!condition)throw new Error(msg)}function boot(boot3){let root5=bootFileDescriptorProto(boot3);return root5.messageType.forEach(restoreJsonNames),createFileRegistry(root5,()=>{}).getFile(root5.name)}function bootFileDescriptorProto(init){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},init),{messageType:init.messageType.map(bootDescriptorProto),enumType:init.enumType.map(bootEnumDescriptorProto)}))}function bootDescriptorProto(init){var _a3,_b2,_c5,_d,_e5,_f,_g,_h4;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:init.name,field:(_b2=(_a3=init.field)===null||_a3===void 0?void 0:_a3.map(bootFieldDescriptorProto))!==null&&_b2!==void 0?_b2:[],extension:[],nestedType:(_d=(_c5=init.nestedType)===null||_c5===void 0?void 0:_c5.map(bootDescriptorProto))!==null&&_d!==void 0?_d:[],enumType:(_f=(_e5=init.enumType)===null||_e5===void 0?void 0:_e5.map(bootEnumDescriptorProto))!==null&&_f!==void 0?_f:[],extensionRange:(_h4=(_g=init.extensionRange)===null||_g===void 0?void 0:_g.map(e6=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},e6)))!==null&&_h4!==void 0?_h4:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function bootFieldDescriptorProto(init){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},init),{options:init.options?bootFieldOptions(init.options):void 0}))}function bootFieldOptions(init){var _a3,_b2,_c5;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},init),{targets:(_a3=init.targets)!==null&&_a3!==void 0?_a3:[],editionDefaults:(_c5=(_b2=init.editionDefaults)===null||_b2===void 0?void 0:_b2.map(e6=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},e6)))!==null&&_c5!==void 0?_c5:[],uninterpretedOption:[]}))}function bootEnumDescriptorProto(init){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:init.name,reservedName:[],reservedRange:[],value:init.value.map(e6=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},e6))})}function base64Decode(base64Str){let table2=getDecodeTable(),es=base64Str.length*3/4;base64Str[base64Str.length-2]=="="?es-=2:base64Str[base64Str.length-1]=="="&&(es-=1);let bytes=new Uint8Array(es),bytePos=0,groupPos=0,b7,p3=0;for(let i6=0;i6<base64Str.length;i6++){if(b7=table2[base64Str.charCodeAt(i6)],b7===void 0)switch(base64Str[i6]){case"=":groupPos=0;case`
|
|
470
|
+
`);return b4a.from(result)};exports2.decodePax=function(buf2){let result={};for(;buf2.length;){let i6=0;for(;i6<buf2.length&&buf2[i6]!==32;)i6++;let len=parseInt(b4a.toString(buf2.subarray(0,i6)),10);if(!len)return result;let b7=b4a.toString(buf2.subarray(i6+1,len-1)),keyIndex=b7.indexOf("=");if(keyIndex===-1)return result;result[b7.slice(0,keyIndex)]=b7.slice(keyIndex+1),buf2=buf2.subarray(len)}return result};exports2.encode=function(opts){let buf2=b4a.alloc(512),name=opts.name,prefix="";if(opts.typeflag===5&&name[name.length-1]!=="/"&&(name+="/"),b4a.byteLength(name)!==name.length)return null;for(;b4a.byteLength(name)>100;){let i6=name.indexOf("/");if(i6===-1)return null;prefix+=prefix?"/"+name.slice(0,i6):name.slice(0,i6),name=name.slice(i6+1)}return b4a.byteLength(name)>100||b4a.byteLength(prefix)>155||opts.linkname&&b4a.byteLength(opts.linkname)>100?null:(b4a.write(buf2,name),b4a.write(buf2,encodeOct(opts.mode&MASK,6),100),b4a.write(buf2,encodeOct(opts.uid,6),108),b4a.write(buf2,encodeOct(opts.gid,6),116),encodeSize(opts.size,buf2,124),b4a.write(buf2,encodeOct(opts.mtime.getTime()/1e3|0,11),136),buf2[156]=ZERO_OFFSET+toTypeflag(opts.type),opts.linkname&&b4a.write(buf2,opts.linkname,157),b4a.copy(USTAR_MAGIC,buf2,MAGIC_OFFSET),b4a.copy(USTAR_VER,buf2,VERSION_OFFSET),opts.uname&&b4a.write(buf2,opts.uname,265),opts.gname&&b4a.write(buf2,opts.gname,297),b4a.write(buf2,encodeOct(opts.devmajor||0,6),329),b4a.write(buf2,encodeOct(opts.devminor||0,6),337),prefix&&b4a.write(buf2,prefix,345),b4a.write(buf2,encodeOct(cksum(buf2),6),148),buf2)};exports2.decode=function(buf2,filenameEncoding,allowUnknownFormat){let typeflag=buf2[156]===0?0:buf2[156]-ZERO_OFFSET,name=decodeStr(buf2,0,100,filenameEncoding),mode=decodeOct(buf2,100,8),uid=decodeOct(buf2,108,8),gid=decodeOct(buf2,116,8),size=decodeOct(buf2,124,12),mtime=decodeOct(buf2,136,12),type2=toType2(typeflag),linkname=buf2[157]===0?null:decodeStr(buf2,157,100,filenameEncoding),uname=decodeStr(buf2,265,32),gname=decodeStr(buf2,297,32),devmajor=decodeOct(buf2,329,8),devminor=decodeOct(buf2,337,8),c5=cksum(buf2);if(c5===256)return null;if(c5!==decodeOct(buf2,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(isUSTAR(buf2))buf2[345]&&(name=decodeStr(buf2,345,155,filenameEncoding)+"/"+name);else if(!isGNU(buf2)){if(!allowUnknownFormat)throw new Error("Invalid tar header: unknown format.")}return typeflag===0&&name&&name[name.length-1]==="/"&&(typeflag=5),{name,mode,uid,gid,size,byteOffset:0,mtime:new Date(1e3*mtime),type:type2,linkname,uname,gname,devmajor,devminor,pax:null}};function isUSTAR(buf2){return b4a.equals(USTAR_MAGIC,buf2.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))}function isGNU(buf2){return b4a.equals(GNU_MAGIC,buf2.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))&&b4a.equals(GNU_VER,buf2.subarray(VERSION_OFFSET,VERSION_OFFSET+2))}function clamp(index2,len,defaultValue){return typeof index2!="number"?defaultValue:(index2=~~index2,index2>=len?len:index2>=0||(index2+=len,index2>=0)?index2:0)}function toType2(flag){switch(flag){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function toTypeflag(flag){switch(flag){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function indexOf2(block,num,offset,end){for(;offset<end;offset++)if(block[offset]===num)return offset;return end}function cksum(block){let sum=256;for(let i6=0;i6<148;i6++)sum+=block[i6];for(let j5=156;j5<512;j5++)sum+=block[j5];return sum}function encodeOct(val,n3){return val=val.toString(8),val.length>n3?SEVENS.slice(0,n3)+" ":ZEROS.slice(0,n3-val.length)+val+" "}function encodeSizeBin(num,buf2,off){buf2[off]=128;for(let i6=11;i6>0;i6--)buf2[off+i6]=num&255,num=Math.floor(num/256)}function encodeSize(num,buf2,off){num.toString(8).length>11?encodeSizeBin(num,buf2,off):b4a.write(buf2,encodeOct(num,11),off)}function parse256(buf2){let positive;if(buf2[0]===128)positive=!0;else if(buf2[0]===255)positive=!1;else return null;let tuple=[],i6;for(i6=buf2.length-1;i6>0;i6--){let byte=buf2[i6];positive?tuple.push(byte):tuple.push(255-byte)}let sum=0,l3=tuple.length;for(i6=0;i6<l3;i6++)sum+=tuple[i6]*Math.pow(256,i6);return positive?sum:-1*sum}function decodeOct(val,offset,length){if(val=val.subarray(offset,offset+length),offset=0,val[offset]&128)return parse256(val);{for(;offset<val.length&&val[offset]===32;)offset++;let end=clamp(indexOf2(val,32,offset,val.length),val.length,val.length);for(;offset<end&&val[offset]===0;)offset++;return end===offset?0:parseInt(b4a.toString(val.subarray(offset,end)),8)}}function decodeStr(val,offset,length,encoding){return b4a.toString(val.subarray(offset,indexOf2(val,0,offset,offset+length)),encoding)}function addLength(str2){let len=b4a.byteLength(str2),digits=Math.floor(Math.log(len)/Math.log(10))+1;return len+digits>=Math.pow(10,digits)&&digits++,len+digits+str2}}});var require_extract=__commonJS({"node_modules/tar-stream/extract.js"(exports2,module2){var{Writable:Writable4,Readable:Readable9,getStreamError}=require_streamx(),FIFO=require_fast_fifo(),b4a=require_b4a(),headers2=require_headers2(),EMPTY=b4a.alloc(0),MAX_HEADER_SIZE=4*1024*1024,BufferList=class{constructor(){this.buffered=0,this.shifted=0,this.queue=new FIFO,this._offset=0}push(buffer){this.buffered+=buffer.byteLength,this.queue.push(buffer)}shiftFirst(size){return this.buffered===0?null:this._next(size)}shift(size){if(size>this.buffered)return null;if(size===0)return EMPTY;let chunk=this._next(size);if(size===chunk.byteLength)return chunk;let chunks=[chunk];for(;(size-=chunk.byteLength)>0;)chunk=this._next(size),chunks.push(chunk);return b4a.concat(chunks)}_next(size){let buf2=this.queue.peek(),rem=buf2.byteLength-this._offset;if(size>=rem){let sub=this._offset?buf2.subarray(this._offset,buf2.byteLength):buf2;return this.queue.shift(),this._offset=0,this.buffered-=rem,this.shifted+=rem,sub}return this.buffered-=size,this.shifted+=size,buf2.subarray(this._offset,this._offset+=size)}},Source=class extends Readable9{constructor(self2,header,offset){super(),this.header=header,this.offset=offset,this._parent=self2}_read(cb){this.header.size===0&&this.push(null),this._parent._stream===this&&this._parent._update(),cb(null)}_predestroy(){this._parent.destroy(getStreamError(this))}_detach(){this._parent._stream===this&&(this._parent._stream=null,this._parent._missing=overflow(this.header.size),this._parent._update())}_destroy(cb){this._detach(),cb(null)}},Extract=class extends Writable4{constructor(opts){super(opts),opts||(opts={}),this._buffer=new BufferList,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=noop,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=opts.filenameEncoding||"utf-8",this._allowUnknownFormat=!!opts.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(err2){if(this._locked=!1,err2){this.destroy(err2),this._continueWrite(err2);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=headers2.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(err2){return this._continueWrite(err2),!1}if(!this._header)return!0;switch(this._header.byteOffset=this._buffer.shifted,this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,this._missing>MAX_HEADER_SIZE?(this._continueWrite(new Error("Header exceeds max size")),!1):!0}return this._locked=!0,this._applyLongHeaders(),this._header.size>=0?this._header.size===0||this._header.type==="directory"?(this.emit("entry",this._header,this._createStream(),this._unlockBound),!0):(this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0):(this._continueWrite(new Error("Invalid header")),!1)}_applyLongHeaders(){this._gnuLongPath&&(this._header.name=this._gnuLongPath,this._gnuLongPath=null),this._gnuLongLinkPath&&(this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null),this._pax&&(this._pax.path&&(this._header.name=this._pax.path),this._pax.linkpath&&(this._header.linkname=this._pax.linkpath),this._pax.size&&(this._header.size=parseInt(this._pax.size,10)),this._header.pax=this._pax,this._pax=null)}_decodeLongHeader(buf2){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=headers2.decodeLongPath(buf2,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=headers2.decodeLongPath(buf2,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=headers2.decodePax(buf2);break;case"pax-header":this._pax=this._paxGlobal===null?headers2.decodePax(buf2):Object.assign({},this._paxGlobal,headers2.decodePax(buf2));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=overflow(this._header.size);let buf2=this._buffer.shift(this._header.size);try{this._decodeLongHeader(buf2)}catch(err2){return this._continueWrite(err2),!1}return!0}_consumeStream(){let buf2=this._buffer.shiftFirst(this._missing);if(buf2===null)return!1;this._missing-=buf2.byteLength;let drained=this._stream.push(buf2);return this._missing===0?(this._stream.push(null),drained&&this._stream._detach(),drained&&this._locked===!1):drained}_createStream(){return new Source(this,this._header,this._offset)}_update(){for(;this._buffer.buffered>0&&!this.destroying;){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let ignore=this._buffer.shiftFirst(this._missing);ignore!==null&&(this._missing-=ignore.byteLength);continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(err2){let cb=this._callback;this._callback=noop,cb(err2)}_write(data,cb){this._callback=cb,this._buffer.push(data),this._update()}_final(cb){this._finished=this._missing===0&&this._buffer.buffered===0,cb(this._finished?null:new Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(cb){this._stream&&this._stream.destroy(getStreamError(this)),cb(null)}[Symbol.asyncIterator](){let error2=null,promiseResolve=null,promiseReject=null,entryStream=null,entryCallback=null,extract=this;return this.on("entry",onentry),this.on("error",err2=>{error2=err2}),this.on("close",onclose),{[Symbol.asyncIterator](){return this},next(){return new Promise(onnext)},return(){return destroy(null)},throw(err2){return destroy(err2)}};function consumeCallback(err2){if(!entryCallback)return;let cb=entryCallback;entryCallback=null,cb(err2)}function onnext(resolve,reject2){if(error2)return reject2(error2);if(entryStream){resolve({value:entryStream,done:!1}),entryStream=null;return}promiseResolve=resolve,promiseReject=reject2,consumeCallback(null),extract._finished&&promiseResolve&&(promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function onentry(header,stream,callback){entryCallback=callback,stream.on("error",noop),promiseResolve?(promiseResolve({value:stream,done:!1}),promiseResolve=promiseReject=null):entryStream=stream}function onclose(){consumeCallback(error2),promiseResolve&&(error2?promiseReject(error2):promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function destroy(err2){return extract.destroy(err2),consumeCallback(err2),new Promise((resolve,reject2)=>{if(extract.destroyed)return resolve({value:void 0,done:!0});extract.once("close",function(){err2?reject2(err2):resolve({value:void 0,done:!0})})})}}};module2.exports=function(opts){return new Extract(opts)};function noop(){}function overflow(size){return size&=511,size&&512-size}}});var require_constants12=__commonJS({"node_modules/tar-stream/constants.js"(exports2,module2){var constants={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{module2.exports=require("fs").constants||constants}catch{module2.exports=constants}}});var require_pack=__commonJS({"node_modules/tar-stream/pack.js"(exports2,module2){var{Readable:Readable9,Writable:Writable4,getStreamError}=require_streamx(),b4a=require_b4a(),constants=require_constants12(),headers2=require_headers2(),DMODE=493,FMODE=420,END_OF_TAR=b4a.alloc(1024),Sink=class extends Writable4{constructor(pack,header,callback){super({mapWritable,eagerOpen:!0}),this.written=0,this.header=header,this._callback=callback,this._linkname=null,this._isLinkname=header.type==="symlink"&&!header.linkname,this._isVoid=header.type!=="file"&&header.type!=="contiguous-file",this._finished=!1,this._pack=pack,this._openCallback=null,this._pack._stream===null?this._pack._stream=this:this._pack._pending.push(this)}_open(cb){this._openCallback=cb,this._pack._stream===this&&this._continueOpen()}_continuePack(err2){if(this._callback===null)return;let callback=this._callback;this._callback=null,callback(err2)}_continueOpen(){this._pack._stream===null&&(this._pack._stream=this);let cb=this._openCallback;if(this._openCallback=null,cb!==null){if(this._pack.destroying)return cb(new Error("pack stream destroyed"));if(this._pack._finalized)return cb(new Error("pack stream is already finalized"));this._pack._stream=this,this._isLinkname||this._pack._encode(this.header),this._isVoid&&(this._finish(),this._continuePack(null)),cb(null)}}_write(data,cb){if(this._isLinkname)return this._linkname=this._linkname?b4a.concat([this._linkname,data]):data,cb(null);if(this._isVoid)return data.byteLength>0?cb(new Error("No body allowed for this entry")):cb();if(this.written+=data.byteLength,this._pack.push(data))return cb();this._pack._drain=cb}_finish(){this._finished||(this._finished=!0,this._isLinkname&&(this.header.linkname=this._linkname?b4a.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header)),overflow(this._pack,this.header.size),this._pack._done(this))}_final(cb){if(this.written!==this.header.size)return cb(new Error("Size mismatch"));this._finish(),cb(null)}_getError(){return getStreamError(this)||new Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(cb){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),cb()}},Pack=class extends Readable9{constructor(opts){super(opts),this._drain=noop,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(header,buffer,callback){if(this._finalized||this.destroying)throw new Error("already finalized or destroyed");typeof buffer=="function"&&(callback=buffer,buffer=null),callback||(callback=noop),(!header.size||header.type==="symlink")&&(header.size=0),header.type||(header.type=modeToType(header.mode)),header.mode||(header.mode=header.type==="directory"?DMODE:FMODE),header.uid||(header.uid=0),header.gid||(header.gid=0),header.mtime||(header.mtime=new Date),typeof buffer=="string"&&(buffer=b4a.from(buffer));let sink=new Sink(this,header,callback);return b4a.isBuffer(buffer)?(header.size=buffer.byteLength,sink.write(buffer),sink.end(),sink):(sink._isVoid,sink)}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(END_OF_TAR),this.push(null))}_done(stream){stream===this._stream&&(this._stream=null,this._finalizing&&this.finalize(),this._pending.length&&this._pending.shift()._continueOpen())}_encode(header){if(!header.pax){let buf2=headers2.encode(header);if(buf2){this.push(buf2);return}}this._encodePax(header)}_encodePax(header){let paxHeader=headers2.encodePax({name:header.name,linkname:header.linkname,pax:header.pax}),newHeader={name:"PaxHeader",mode:header.mode,uid:header.uid,gid:header.gid,size:paxHeader.byteLength,mtime:header.mtime,type:"pax-header",linkname:header.linkname&&"PaxHeader",uname:header.uname,gname:header.gname,devmajor:header.devmajor,devminor:header.devminor};this.push(headers2.encode(newHeader)),this.push(paxHeader),overflow(this,paxHeader.byteLength),newHeader.size=header.size,newHeader.type=header.type,this.push(headers2.encode(newHeader))}_doDrain(){let drain=this._drain;this._drain=noop,drain()}_predestroy(){let err2=getStreamError(this);for(this._stream&&this._stream.destroy(err2);this._pending.length;){let stream=this._pending.shift();stream.destroy(err2),stream._continueOpen()}this._doDrain()}_read(cb){this._doDrain(),cb()}};module2.exports=function(opts){return new Pack(opts)};function modeToType(mode){switch(mode&constants.S_IFMT){case constants.S_IFBLK:return"block-device";case constants.S_IFCHR:return"character-device";case constants.S_IFDIR:return"directory";case constants.S_IFIFO:return"fifo";case constants.S_IFLNK:return"symlink"}return"file"}function noop(){}function overflow(self2,size){size&=511,size&&self2.push(END_OF_TAR.subarray(0,512-size))}function mapWritable(buf2){return b4a.isBuffer(buf2)?buf2:b4a.from(buf2)}}});var require_tar_stream=__commonJS({"node_modules/tar-stream/index.js"(exports2){exports2.extract=require_extract();exports2.pack=require_pack()}});var require_wrappy=__commonJS({"node_modules/wrappy/wrappy.js"(exports2,module2){module2.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!="function")throw new TypeError("need wrapper function");return Object.keys(fn).forEach(function(k5){wrapper[k5]=fn[k5]}),wrapper;function wrapper(){for(var args=new Array(arguments.length),i6=0;i6<args.length;i6++)args[i6]=arguments[i6];var ret=fn.apply(this,args),cb2=args[args.length-1];return typeof ret=="function"&&ret!==cb2&&Object.keys(cb2).forEach(function(k5){ret[k5]=cb2[k5]}),ret}}}});var require_once=__commonJS({"node_modules/once/once.js"(exports2,module2){var wrappy=require_wrappy();module2.exports=wrappy(once);module2.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:!0})});function once(fn){var f5=function(){return f5.called?f5.value:(f5.called=!0,f5.value=fn.apply(this,arguments))};return f5.called=!1,f5}function onceStrict(fn){var f5=function(){if(f5.called)throw new Error(f5.onceError);return f5.called=!0,f5.value=fn.apply(this,arguments)},name=fn.name||"Function wrapped with `once`";return f5.onceError=name+" shouldn't be called more than once",f5.called=!1,f5}}});var require_end_of_stream=__commonJS({"node_modules/end-of-stream/index.js"(exports2,module2){var once=require_once(),noop=function(){},qnt=global.Bare?queueMicrotask:process.nextTick.bind(process),isRequest=function(stream){return stream.setHeader&&typeof stream.abort=="function"},isChildProcess=function(stream){return stream.stdio&&Array.isArray(stream.stdio)&&stream.stdio.length===3},eos=function(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var ws=stream._writableState,rs=stream._readableState,readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,cancelled=!1,onlegacyfinish=function(){stream.writable||onfinish()},onfinish=function(){writable=!1,readable||callback.call(stream)},onend=function(){readable=!1,writable||callback.call(stream)},onexit=function(exitCode){callback.call(stream,exitCode?new Error("exited with error code: "+exitCode):null)},onerror=function(err2){callback.call(stream,err2)},onclose=function(){qnt(onclosenexttick)},onclosenexttick=function(){if(!cancelled){if(readable&&!(rs&&rs.ended&&!rs.destroyed))return callback.call(stream,new Error("premature close"));if(writable&&!(ws&&ws.ended&&!ws.destroyed))return callback.call(stream,new Error("premature close"))}},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!ws&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),isChildProcess(stream)&&stream.on("exit",onexit),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){cancelled=!0,stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("exit",onexit),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}};module2.exports=eos}});var require_pump=__commonJS({"node_modules/pump/index.js"(exports2,module2){var once=require_once(),eos=require_end_of_stream(),fs6;try{fs6=require("fs")}catch{}var noop=function(){},ancient=typeof process>"u"?!1:/^v?\.0/.test(process.version),isFn=function(fn){return typeof fn=="function"},isFS=function(stream){return!ancient||!fs6?!1:(stream instanceof(fs6.ReadStream||noop)||stream instanceof(fs6.WriteStream||noop))&&isFn(stream.close)},isRequest=function(stream){return stream.setHeader&&isFn(stream.abort)},destroyer=function(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos(stream,{readable:reading,writable:writing},function(err2){if(err2)return callback(err2);closed=!0,callback()});var destroyed=!1;return function(err2){if(!closed&&!destroyed){if(destroyed=!0,isFS(stream))return stream.close(noop);if(isRequest(stream))return stream.abort();if(isFn(stream.destroy))return stream.destroy();callback(err2||new Error("stream was destroyed"))}}},call=function(fn){fn()},pipe2=function(from2,to){return from2.pipe(to)},pump=function(){var streams=Array.prototype.slice.call(arguments),callback=isFn(streams[streams.length-1]||noop)&&streams.pop()||noop;if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new Error("pump requires two streams per minimum");var error2,destroys=streams.map(function(stream,i6){var reading=i6<streams.length-1,writing=i6>0;return destroyer(stream,reading,writing,function(err2){error2||(error2=err2),err2&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error2))})});return streams.reduce(pipe2)};module2.exports=pump}});var require_tar_fs=__commonJS({"node_modules/tar-fs/index.js"(exports2){var tar2=require_tar_stream(),pump=require_pump(),fs6=require("fs"),path14=require("path"),win32=(global.Bare?global.Bare.platform:process.platform)==="win32";exports2.pack=function(cwd,opts){cwd||(cwd="."),opts||(opts={});let xfs=opts.fs||fs6,ignore=opts.ignore||opts.filter||noop,mapStream=opts.mapStream||echo,statNext=statAll(xfs,opts.dereference?xfs.stat:xfs.lstat,cwd,ignore,opts.entries,opts.sort),strict=opts.strict!==!1,umask=typeof opts.umask=="number"?~opts.umask:~processUmask(),pack2=opts.pack||tar2.pack(),finish=opts.finish||noop,map5=opts.map||noop,dmode=typeof opts.dmode=="number"?opts.dmode:0,fmode=typeof opts.fmode=="number"?opts.fmode:0;opts.strip&&(map5=strip(map5,opts.strip)),opts.readable&&(dmode|=parseInt(555,8),fmode|=parseInt(444,8)),opts.writable&&(dmode|=parseInt(333,8),fmode|=parseInt(222,8)),onnextentry();function onsymlink(filename,header){xfs.readlink(path14.join(cwd,filename),function(err2,linkname){if(err2)return pack2.destroy(err2);header.linkname=normalize2(linkname),pack2.entry(header,onnextentry)})}function onstat(err2,filename,stat4){if(pack2.destroyed)return;if(err2)return pack2.destroy(err2);if(!filename)return opts.finalize!==!1&&pack2.finalize(),finish(pack2);if(stat4.isSocket())return onnextentry();let header={name:normalize2(filename),mode:(stat4.mode|(stat4.isDirectory()?dmode:fmode))&umask,mtime:stat4.mtime,size:stat4.size,type:"file",uid:stat4.uid,gid:stat4.gid};if(stat4.isDirectory())return header.size=0,header.type="directory",header=map5(header)||header,pack2.entry(header,onnextentry);if(stat4.isSymbolicLink())return header.size=0,header.type="symlink",header=map5(header)||header,onsymlink(filename,header);if(header=map5(header)||header,!stat4.isFile())return strict?pack2.destroy(new Error("unsupported type for "+filename)):onnextentry();let entry=pack2.entry(header,onnextentry),rs=mapStream(xfs.createReadStream(path14.join(cwd,filename),{start:0,end:header.size>0?header.size-1:header.size}),header);rs.on("error",function(err3){entry.destroy(err3)}),pump(rs,entry)}function onnextentry(err2){if(err2)return pack2.destroy(err2);statNext(onstat)}return pack2};function head(list12){return list12.length?list12[list12.length-1]:null}function processGetuid(){return!global.Bare&&process.getuid?process.getuid():-1}function processUmask(){return!global.Bare&&process.umask?process.umask():0}exports2.extract=function(cwd,opts){cwd||(cwd="."),opts||(opts={}),cwd=path14.resolve(cwd);let xfs=opts.fs||fs6,ignore=opts.ignore||opts.filter||noop,mapStream=opts.mapStream||echo,own=opts.chown!==!1&&!win32&&processGetuid()===0,extract2=opts.extract||tar2.extract(),stack=[],now=new Date,umask=typeof opts.umask=="number"?~opts.umask:~processUmask(),strict=opts.strict!==!1,validateSymLinks=opts.validateSymlinks!==!1,map5=opts.map||noop,dmode=typeof opts.dmode=="number"?opts.dmode:0,fmode=typeof opts.fmode=="number"?opts.fmode:0;return opts.strip&&(map5=strip(map5,opts.strip)),opts.readable&&(dmode|=parseInt(555,8),fmode|=parseInt(444,8)),opts.writable&&(dmode|=parseInt(333,8),fmode|=parseInt(222,8)),extract2.on("entry",onentry),opts.finish&&extract2.on("finish",opts.finish),extract2;function onentry(header,stream,next){header=map5(header)||header,header.name=normalize2(header.name);let name=path14.join(cwd,path14.join("/",header.name));if(ignore(name,header))return stream.resume(),next();let dir=path14.join(name,".")===path14.join(cwd,".")?cwd:path14.dirname(name);validate2(xfs,dir,path14.join(cwd,"."),function(err2,valid){if(err2)return next(err2);if(!valid)return next(new Error(dir+" is not a valid path"));if(header.type==="directory")return stack.push([name,header.mtime]),mkdirfix(name,{fs:xfs,own,uid:header.uid,gid:header.gid,mode:header.mode},stat4);mkdirfix(dir,{fs:xfs,own,uid:header.uid,gid:header.gid,mode:493},function(err3){if(err3)return next(err3);switch(header.type){case"file":return onfile();case"link":return onlink();case"symlink":return onsymlink()}if(strict)return next(new Error("unsupported type for "+name+" ("+header.type+")"));stream.resume(),next()})});function stat4(err2){if(err2)return next(err2);if(path14.join(name,".")===path14.join(cwd,"."))return next();utimes(name,header,function(err3){if(err3)return next(err3);if(win32)return next();chperm(name,header,next)})}function onsymlink(){if(win32)return next();xfs.unlink(name,function(){let dst=path14.resolve(path14.dirname(name),header.linkname);if(!inCwd(dst)&&(validateSymLinks||opts.strip))return next(new Error(name+" is not a valid symlink"));validateNotSymlink(xfs,dst,path14.join(cwd,"."),function(err2,valid){if(err2)return next(err2);if(!valid&&validateSymLinks)return next(new Error(name+" is not a valid symlink"));xfs.symlink(header.linkname,name,stat4)})})}function onlink(){if(win32)return next();xfs.unlink(name,function(){let link=path14.join(cwd,path14.join("/",header.linkname));xfs.realpath(link,function(err2,dst){if(err2||!inCwd(dst))return next(new Error(name+" is not a valid hardlink"));xfs.link(dst,name,function(err3){if(err3&&err3.code==="EPERM"&&opts.hardlinkAsFilesFallback)return stream=xfs.createReadStream(dst),onfile();stat4(err3)})})})}function inCwd(dst){return dst===cwd||dst.startsWith(cwd+path14.sep)}function onfile(){xfs.lstat(name,function(err2,st){if(!err2&&st.isSymbolicLink())return xfs.unlink(name,onwrite);onwrite()});function onwrite(err2){if(err2)return next(err2);let ws=xfs.createWriteStream(name),rs=mapStream(stream,header);ws.on("error",function(err3){rs.destroy(err3)}),pump(rs,ws,function(err3){if(err3)return next(err3);ws.on("close",stat4)})}}}function utimesParent(name,cb){let top;for(;(top=head(stack))&&name.slice(0,top[0].length)!==top[0];)stack.pop();if(!top)return cb();xfs.utimes(top[0],now,top[1],cb)}function utimes(name,header,cb){if(opts.utimes===!1)return cb();if(header.type==="directory")return xfs.utimes(name,now,header.mtime,cb);if(header.type==="symlink")return utimesParent(name,cb);xfs.utimes(name,now,header.mtime,function(err2){if(err2)return cb(err2);utimesParent(name,cb)})}function chperm(name,header,cb){let link=header.type==="symlink",chmod=link?xfs.lchmod:xfs.chmod,chown=link?xfs.lchown:xfs.chown;if(!chmod)return cb();let mode=(header.mode|(header.type==="directory"?dmode:fmode))&umask&511;chown&&own?chown.call(xfs,name,header.uid,header.gid,onchown):onchown(null);function onchown(err2){if(err2)return cb(err2);if(!chmod)return cb();chmod.call(xfs,name,mode,cb)}}function mkdirfix(name,opts2,cb){xfs.stat(name,function(err2){if(!err2)return cb(null);if(err2.code!=="ENOENT")return cb(err2);xfs.mkdir(name,{mode:opts2.mode,recursive:!0},function(err3,made){if(err3)return cb(err3);chperm(name,opts2,cb)})})}};function validateNotSymlink(fs7,name,root5,cb){if(name===root5)return cb(null,!0);if(!name.startsWith(root5+path14.sep))return cb(null,!1);fs7.lstat(name,function(err2,st){if(err2&&err2.code!=="ENOENT"&&err2.code!=="EPERM")return cb(err2);if(err2||!st.isSymbolicLink())return validateNotSymlink(fs7,path14.join(name,".."),root5,cb);cb(null,!1)})}function validate2(fs7,name,root5,cb){if(name===root5)return cb(null,!0);fs7.lstat(name,function(err2,st){if(err2&&err2.code!=="ENOENT"&&err2.code!=="EPERM")return cb(err2);if(err2||st.isDirectory())return validate2(fs7,path14.join(name,".."),root5,cb);cb(null,!1)})}function inside(root5,name){return name===root5||name.startsWith(root5+path14.sep)}function noop(){}function echo(name){return name}function normalize2(name){return win32?name.replace(/\\/g,"/").replace(/[:?<>|]/g,"_"):name}function statAll(fs7,stat4,cwd,ignore,entries,sort){entries||(entries=["."]);let queue=entries.slice(0),root5=path14.resolve(cwd);return function(callback){if(!queue.length)return callback(null);let next=queue.shift(),nextAbs=path14.join(cwd,next);if(!inside(root5,path14.resolve(cwd,next)))return callback(new Error(next+" is not a valid path"));stat4.call(fs7,nextAbs,function(err2,stat5){if(err2)return callback(entries.indexOf(next)===-1&&err2.code==="ENOENT"?null:err2);if(!stat5.isDirectory())return callback(null,next,stat5);fs7.readdir(nextAbs,function(err3,files){if(err3)return callback(err3);sort&&files.sort();for(let i6=0;i6<files.length;i6++)ignore(path14.join(cwd,next,files[i6]))||queue.push(path14.join(next,files[i6]));callback(null,next,stat5)})})}}function strip(map5,level){return function(header){header.name=header.name.split("/").slice(level).join("/");let linkname=header.linkname;return linkname&&(header.type==="link"||path14.isAbsolute(linkname))&&(header.linkname=linkname.split("/").slice(level).join("/")),map5(header)}}}});var import_node_os=__toESM(require("node:os"),1),import_node_path=__toESM(require("node:path"),1);var import_node_crypto=require("node:crypto"),import_proto=__toESM(require_protos(),1),{temporal}=import_proto.default,ENCODING_METADATA_KEY="encoding",ENCRYPTED_ENCODING_VALUE="binary/encrypted",KEY_ID_METADATA_KEY="encryption-key-id",IV_BYTES=12,AUTH_TAG_BYTES=16,EncryptionPayloadCodec=class{config;decryptKeysById;constructor(config2){this.config=config2,this.decryptKeysById=new Map([[config2.primary.keyId,config2.primary.key]]),config2.secondary&&this.decryptKeysById.set(config2.secondary.keyId,config2.secondary.key)}async encode(payloads){return payloads.map(p3=>this.encodePayload(p3))}async decode(payloads){return Promise.all(payloads.map(p3=>this.decodePayload(p3)))}encodePayload(payload){if(!payload.data||payload.data.length===0)return payload;let plaintext=temporal.api.common.v1.Payload.encode(payload).finish();return{metadata:{[ENCODING_METADATA_KEY]:Buffer.from(ENCRYPTED_ENCODING_VALUE),[KEY_ID_METADATA_KEY]:Buffer.from(this.config.primary.keyId)},data:encrypt(plaintext,this.config.primary)}}async decodePayload(payload){if(!isEncryptedPayload(payload))return payload;let keyIdBytes=payload.metadata?.[KEY_ID_METADATA_KEY];if(!keyIdBytes)throw new Error("Encrypted payload is missing its encryption-key-id metadata \u2014 refusing to decode");let keyId=Buffer.from(keyIdBytes).toString("utf-8"),key=await this.decryptKeyFor(keyId);if(!key)throw new Error(`Encrypted payload uses unknown key id '${keyId}' \u2014 configure it as the primary or secondary payload encryption key (rotation window?)`);let plaintext=decrypt(payload.data,key,keyId);return temporal.api.common.v1.Payload.decode(plaintext)}async decryptKeyFor(keyId){let known=this.decryptKeysById.get(keyId);if(known!==void 0)return known;if(this.config.resolveKey===void 0)return;let resolved=await this.config.resolveKey(keyId);return resolved!==void 0&&this.decryptKeysById.set(keyId,resolved),resolved}};function isEncryptedPayload(payload){let encoding=payload.metadata?.[ENCODING_METADATA_KEY];return encoding?Buffer.from(encoding).toString("utf-8")===ENCRYPTED_ENCODING_VALUE:!1}function encrypt(plaintext,key){let iv=(0,import_node_crypto.randomBytes)(IV_BYTES),cipher=(0,import_node_crypto.createCipheriv)("aes-256-gcm",key.key,iv),ciphertext=Buffer.concat([cipher.update(plaintext),cipher.final()]);return Buffer.concat([iv,ciphertext,cipher.getAuthTag()])}function decrypt(data,key,keyId){if(data.length<IV_BYTES+AUTH_TAG_BYTES)throw new Error(`Encrypted payload under key id '${keyId}' is truncated (${data.length} bytes)`);let buf2=Buffer.from(data),iv=buf2.subarray(0,IV_BYTES),ciphertext=buf2.subarray(IV_BYTES,buf2.length-AUTH_TAG_BYTES),tag2=buf2.subarray(buf2.length-AUTH_TAG_BYTES),decipher=(0,import_node_crypto.createDecipheriv)("aes-256-gcm",key,iv);decipher.setAuthTag(tag2);try{return Buffer.concat([decipher.update(ciphertext),decipher.final()])}catch{throw new Error(`Failed to decrypt payload under key id '${keyId}' \u2014 ciphertext is corrupt or the configured key does not match`)}}var KEY_ENV="STIGMER_PAYLOAD_ENCRYPTION_KEY",KEY_ID_ENV="STIGMER_PAYLOAD_ENCRYPTION_KEY_ID",SECONDARY_KEY_ENV="STIGMER_PAYLOAD_ENCRYPTION_SECONDARY_KEY",SECONDARY_KEY_ID_ENV="STIGMER_PAYLOAD_ENCRYPTION_SECONDARY_KEY_ID";function loadPayloadEncryptionConfig(readSecret,bootstrap){let rawKey=readSecret(KEY_ENV);if(rawKey){let primary={keyId:requireKeyId(KEY_ID_ENV),key:parseKey(rawKey,KEY_ENV)},rawSecondary=readSecret(SECONDARY_KEY_ENV),secondary=rawSecondary?{keyId:requireKeyId(SECONDARY_KEY_ID_ENV),key:parseKey(rawSecondary,SECONDARY_KEY_ENV)}:void 0;return{primary,secondary}}if(bootstrap?.key){let primary={keyId:requireBootstrapKeyId(bootstrap.keyId,"payload_encryption_key_id"),key:parseKey(bootstrap.key,"bootstrap payload_encryption_key")},secondary=bootstrap.secondaryKey?{keyId:requireBootstrapKeyId(bootstrap.secondaryKeyId,"payload_encryption_secondary_key_id"),key:parseKey(bootstrap.secondaryKey,"bootstrap payload_encryption_secondary_key")}:void 0;return{primary,secondary}}}function requireKeyId(envName){let keyId=process.env[envName];if(!keyId)throw new Error(`Payload encryption misconfigured: ${envName} is required when the corresponding key is set`);return keyId}function requireBootstrapKeyId(keyId,fieldName){if(!keyId)throw new Error(`Runner bootstrap returned a payload encryption key without its ${fieldName} \u2014 refusing to encrypt under an unidentified key (server contract violation)`);return keyId}function parseKey(rawBase64,envName){let key;try{key=Buffer.from(rawBase64,"base64")}catch{throw new Error(`Payload encryption misconfigured: ${envName} is not valid base64`)}if(key.length!==32)throw new Error(`Payload encryption misconfigured: ${envName} must decode to 32 bytes (AES-256), got ${key.length}`);return key}var import_node_fs=require("node:fs"),TEMPORAL_API_KEY_ENV="STIGMER_TEMPORAL_API_KEY",TEMPORAL_TLS_ENV="STIGMER_TEMPORAL_TLS",TEMPORAL_TLS_SERVER_NAME_ENV="STIGMER_TEMPORAL_TLS_SERVER_NAME",PEM_ITEMS={serverCa:"STIGMER_TEMPORAL_TLS_SERVER_CA_CERT",clientCert:"STIGMER_TEMPORAL_TLS_CLIENT_CERT",clientKey:"STIGMER_TEMPORAL_TLS_CLIENT_KEY"},TEMPORAL_TLS_CLIENT_KEY_DATA_ENV=`${PEM_ITEMS.clientKey}_DATA`,TEMPORAL_CONNECTION_ENV_NAMES=[TEMPORAL_API_KEY_ENV,TEMPORAL_TLS_ENV,TEMPORAL_TLS_SERVER_NAME_ENV,...Object.values(PEM_ITEMS).flatMap(item=>[`${item}_PATH`,`${item}_DATA`])];function loadTemporalConnectionConfig(read3){let value=name=>{let raw=read3(name);return raw===void 0||raw.trim()===""?void 0:raw},apiKey=value(TEMPORAL_API_KEY_ENV)?.trim(),tlsFlag=parseFlag(value(TEMPORAL_TLS_ENV)),serverName=value(TEMPORAL_TLS_SERVER_NAME_ENV)?.trim(),serverCa=readPem(PEM_ITEMS.serverCa,value),clientCert=readPem(PEM_ITEMS.clientCert,value),clientKey=readPem(PEM_ITEMS.clientKey,value);if(clientCert===void 0!=(clientKey===void 0))throw new Error(`Temporal connection misconfigured: mutual TLS needs both ${PEM_ITEMS.clientCert}_* and ${PEM_ITEMS.clientKey}_* \u2014 set both or neither`);let tlsRequested=tlsFlag===!0||apiKey!==void 0||serverName!==void 0||serverCa!==void 0||clientCert!==void 0;if(tlsFlag===!1&&tlsRequested)throw new Error(`Temporal connection misconfigured: ${TEMPORAL_TLS_ENV} is false while an API key, a server name, a CA or a client certificate is set \u2014 each of those needs TLS`);return tlsRequested?{tls:{...serverName!==void 0?{serverNameOverride:serverName}:{},...serverCa!==void 0?{serverRootCACertificate:serverCa}:{},...clientCert!==void 0&&clientKey!==void 0?{clientCertPair:{crt:clientCert,key:clientKey}}:{}},...apiKey!==void 0?{apiKey}:{}}:{}}function temporalConnectionEnv(config2){let env2={};if(config2.tls===void 0)return env2;env2[TEMPORAL_TLS_ENV]="true";let text2=bytes=>Buffer.from(bytes).toString("utf8"),{serverNameOverride,serverRootCACertificate,clientCertPair}=config2.tls;return serverNameOverride!==void 0&&(env2[TEMPORAL_TLS_SERVER_NAME_ENV]=serverNameOverride),serverRootCACertificate!==void 0&&(env2[`${PEM_ITEMS.serverCa}_DATA`]=text2(serverRootCACertificate)),clientCertPair!==void 0&&(env2[`${PEM_ITEMS.clientCert}_DATA`]=text2(clientCertPair.crt),env2[TEMPORAL_TLS_CLIENT_KEY_DATA_ENV]=text2(clientCertPair.key)),config2.apiKey!==void 0&&(env2[TEMPORAL_API_KEY_ENV]=config2.apiKey),env2}function parseFlag(raw){if(raw===void 0)return;let flag=raw.trim().toLowerCase();if(flag==="true"||flag==="1")return!0;if(flag==="false"||flag==="0")return!1;throw new Error(`Temporal connection misconfigured: ${TEMPORAL_TLS_ENV} must be true, 1, false or 0, got "${raw}"`)}function readPem(item,value){let path14=value(`${item}_PATH`),data=value(`${item}_DATA`);if(path14!==void 0&&data!==void 0)throw new Error(`Temporal connection misconfigured: set ${item}_PATH or ${item}_DATA, not both`);if(data!==void 0)return Buffer.from(data,"utf8");if(path14!==void 0)try{return(0,import_node_fs.readFileSync)(path14.trim())}catch(err2){let reason=err2 instanceof Error?err2.message:String(err2);throw new Error(`Temporal connection misconfigured: ${item}_PATH "${path14.trim()}" cannot be read (${reason})`)}}var DEFAULT_GITHUB_OAUTH_CLIENT_ID="Ov23li4q5kgj90QMr226",DEFAULT_GITHUB_OAUTH_CLIENT_SECRET="edc089d10b6cc0dcee898f9680d62d1504e2c89a",DEFAULT_GRPC_PORT=7234,DEFAULT_MODEL_REGISTRY_UPSTREAM="https://api.stigmer.ai",DEFAULT_SANDBOX_RUNNER_IMAGE="ghcr.io/stigmer/runner:latest";function loadConfig(env2=process.env){let{operatorEmail:operatorEmail2,operatorName:operatorName2}=loadOperatorIdentity(env2),grpcPort=envInt(env2,"GRPC_PORT",DEFAULT_GRPC_PORT),artifactHttpPort=envInt(env2,"ARTIFACT_HTTP_PORT",grpcPort+1),artifactHttpHost=envString(env2,"ARTIFACT_HTTP_HOST","127.0.0.1"),artifactStorageType=envString(env2,"ARTIFACT_STORAGE_TYPE","local"),r22={r2Bucket:envString(env2,"R2_BUCKET",""),r2Endpoint:envString(env2,"R2_ENDPOINT",""),r2AccessKeyId:envString(env2,"R2_ACCESS_KEY_ID",""),r2SecretAccessKey:envString(env2,"R2_SECRET_ACCESS_KEY",""),r2Region:envString(env2,"R2_REGION","auto")},skillArtifactStorageType=envString(env2,"SKILL_ARTIFACT_STORAGE_TYPE","");return(artifactStorageType==="r2"||skillArtifactStorageType==="r2")&&validateR2Config(r22),{grpcPort,artifactHttpPort,artifactHttpHost,...r22,temporalHostPort:envString(env2,"TEMPORAL_HOST_PORT","localhost:7233"),temporalNamespace:envString(env2,"TEMPORAL_NAMESPACE","default"),temporalConnection:loadTemporalConnectionConfig(name=>env2[name]),runnerBootstrapTemporalAddress:envString(env2,"STIGMER_RUNNER_BOOTSTRAP_TEMPORAL_ADDRESS",envString(env2,"TEMPORAL_HOST_PORT","localhost:7233")),artifactStorageType,artifactLocalBasePath:envString(env2,"ARTIFACT_LOCAL_BASE_PATH",defaultArtifactPath()),artifactLocalServeUrl:envString(env2,"ARTIFACT_LOCAL_SERVE_URL",`http://localhost:${artifactHttpPort}`),logLevel:envString(env2,"LOG_LEVEL","info"),env:envString(env2,"ENV","local"),modelRegistryUpstream:envString(env2,"STIGMER_MODEL_REGISTRY_UPSTREAM",DEFAULT_MODEL_REGISTRY_UPSTREAM),modelRegistryRefreshEnabled:env2.STIGMER_MODEL_REGISTRY_REFRESH!=="off",dbPath:envString(env2,"DB_PATH",defaultDbPath()),databaseUrl:envString(env2,"DATABASE_URL",""),storagePath:envString(env2,"STORAGE_PATH",defaultStoragePath()),skillArtifactStorageType,skillTransferBaseUrl:envString(env2,"SKILL_TRANSFER_BASE_URL",`http://localhost:${grpcPort}`),operatorEmail:operatorEmail2,operatorName:operatorName2,gitHubOAuthClientId:envString(env2,"STIGMER_GITHUB_CLIENT_ID",DEFAULT_GITHUB_OAUTH_CLIENT_ID),gitHubOAuthClientSecret:envString(env2,"STIGMER_GITHUB_CLIENT_SECRET",DEFAULT_GITHUB_OAUTH_CLIENT_SECRET),oauthRedirectUri:envString(env2,"STIGMER_OAUTH_REDIRECT_URI",""),consoleDir:envString(env2,"STIGMER_CONSOLE_DIR",""),...loadOidcConfig(env2),oidcConsoleClientId:envString(env2,"STIGMER_OIDC_CONSOLE_CLIENT_ID",""),sandboxProvisionerType:envString(env2,"SANDBOX_PROVISIONER_TYPE",""),sandboxBackendEndpoint:envString(env2,"STIGMER_SANDBOX_BACKEND_ENDPOINT",""),sandboxTemporalAddress:envString(env2,"STIGMER_SANDBOX_TEMPORAL_ADDRESS",envString(env2,"TEMPORAL_HOST_PORT","localhost:7233")),sandboxRunnerImage:envString(env2,"STIGMER_SANDBOX_RUNNER_IMAGE",DEFAULT_SANDBOX_RUNNER_IMAGE),sandboxRunnerCommand:envString(env2,"STIGMER_SANDBOX_RUNNER_COMMAND","stigmer-runner"),sandboxKubernetesNamespace:envString(env2,"STIGMER_SANDBOX_K8S_NAMESPACE","stigmer-sandboxes")}}function loadOidcConfig(env2){let issuer=(env2.STIGMER_OIDC_ISSUER??"").trim(),audience=(env2.STIGMER_OIDC_AUDIENCE??"").trim();if(issuer===""&&audience==="")return{oidcIssuer:"",oidcAudience:""};if(issuer===""||audience==="")throw new Error("incomplete OIDC configuration: STIGMER_OIDC_ISSUER and STIGMER_OIDC_AUDIENCE must be set together \u2014 set both or neither");let parsed;try{parsed=new URL(issuer)}catch{throw new Error(`STIGMER_OIDC_ISSUER "${issuer}" is not a valid URL \u2014 OIDC discovery requires the issuer's https URL`)}if(parsed.protocol!=="https:"&&parsed.protocol!=="http:")throw new Error(`STIGMER_OIDC_ISSUER "${issuer}" must be an http(s) URL \u2014 OIDC discovery requires it`);return{oidcIssuer:issuer,oidcAudience:audience}}function validateR2Config(r22){let requirements=[[r22.r2Bucket,"R2_BUCKET"],[r22.r2Endpoint,"R2_ENDPOINT"],[r22.r2AccessKeyId,"R2_ACCESS_KEY_ID"],[r22.r2SecretAccessKey,"R2_SECRET_ACCESS_KEY"]];for(let[value,name]of requirements)if(value==="")throw new Error(`invalid R2 configuration: ${name} is required when ARTIFACT_STORAGE_TYPE=r2`)}function defaultStoragePath(){try{return import_node_path.default.join(import_node_os.default.homedir(),".stigmer","storage")}catch{return"./storage"}}function defaultDbPath(){try{return import_node_path.default.join(import_node_os.default.homedir(),".stigmer","stigmer.db")}catch{return"./stigmer.db"}}function defaultArtifactPath(){try{return import_node_path.default.join(import_node_os.default.homedir(),".stigmer","data","artifacts")}catch{return"./artifacts"}}function loadOperatorIdentity(env2){let email=(env2.STIGMER_OPERATOR_EMAIL??"").trim(),name=(env2.STIGMER_OPERATOR_NAME??"").trim();if(email!==""&&!email.includes("@"))throw new Error(`STIGMER_OPERATOR_EMAIL "${email}" is not an email address (missing '@') \u2014 fix or unset it`);if(email===""&&name!=="")throw new Error("STIGMER_OPERATOR_NAME is set but STIGMER_OPERATOR_EMAIL is not \u2014 the email is the identity; set both or neither");return{operatorEmail:email,operatorName:name}}function envString(env2,key,fallback3){let value=env2[key];return value!==void 0&&value!==""?value:fallback3}function envInt(env2,key,fallback3){let value=env2[key];if(value===void 0||value==="")return fallback3;let parsed=Number.parseInt(value,10);return Number.isSafeInteger(parsed)&&String(parsed)===value.trim()?parsed:fallback3}var import_node_fs16=require("node:fs"),import_node_path18=__toESM(require("node:path"),1);function protoCamelCase(snakeCase){let capNext=!1,b7=[];for(let i6=0;i6<snakeCase.length;i6++){let c5=snakeCase.charAt(i6);switch(c5){case"_":capNext=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":b7.push(c5),capNext=!1;break;default:capNext&&(capNext=!1,c5=c5.toUpperCase()),b7.push(c5);break}}return b7.join("")}var reservedObjectProperties=new Set(["constructor","toString","toJSON","valueOf"]);function safeObjectProperty(name){return reservedObjectProperties.has(name)?name+"$":name}function varint64read(){let lowBits=0,highBits=0;for(let shift=0;shift<28;shift+=7){let b7=this.buf[this.pos++];if(lowBits|=(b7&127)<<shift,(b7&128)==0)return this.assertBounds(),[lowBits,highBits]}let middleByte=this.buf[this.pos++];if(lowBits|=(middleByte&15)<<28,highBits=(middleByte&112)>>4,(middleByte&128)==0)return this.assertBounds(),[lowBits,highBits];for(let shift=3;shift<=31;shift+=7){let b7=this.buf[this.pos++];if(highBits|=(b7&127)<<shift,(b7&128)==0)return this.assertBounds(),[lowBits,highBits]}throw new Error("invalid varint")}var TWO_PWR_32_DBL=4294967296;function int64FromString(dec){let minus=dec[0]==="-";minus&&(dec=dec.slice(1));let base=1e6,lowBits=0,highBits=0;function add1e6digit(begin,end){let digit1e6=Number(dec.slice(begin,end));highBits*=base,lowBits=lowBits*base+digit1e6,lowBits>=TWO_PWR_32_DBL&&(highBits=highBits+(lowBits/TWO_PWR_32_DBL|0),lowBits=lowBits%TWO_PWR_32_DBL)}return add1e6digit(-24,-18),add1e6digit(-18,-12),add1e6digit(-12,-6),add1e6digit(-6),minus?negate(lowBits,highBits):newBits(lowBits,highBits)}function int64ToString(lo,hi){let bits2=newBits(lo,hi),negative=bits2.hi&2147483648;negative&&(bits2=negate(bits2.lo,bits2.hi));let result=uInt64ToString(bits2.lo,bits2.hi);return negative?"-"+result:result}function uInt64ToString(lo,hi){if({lo,hi}=toUnsigned(lo,hi),hi<=2097151)return String(TWO_PWR_32_DBL*hi+lo);let low=lo&16777215,mid=(lo>>>24|hi<<8)&16777215,high=hi>>16&65535,digitA=low+mid*6777216+high*6710656,digitB=mid+high*8147497,digitC=high*2,base=1e7;return digitA>=base&&(digitB+=Math.floor(digitA/base),digitA%=base),digitB>=base&&(digitC+=Math.floor(digitB/base),digitB%=base),digitC.toString()+decimalFrom1e7WithLeadingZeros(digitB)+decimalFrom1e7WithLeadingZeros(digitA)}function toUnsigned(lo,hi){return{lo:lo>>>0,hi:hi>>>0}}function newBits(lo,hi){return{lo:lo|0,hi:hi|0}}function negate(lowBits,highBits){return highBits=~highBits,lowBits?lowBits=~lowBits+1:highBits+=1,newBits(lowBits,highBits)}var decimalFrom1e7WithLeadingZeros=digit1e7=>{let partial=String(digit1e7);return"0000000".slice(partial.length)+partial};function varint32write(value,bytes){if(value>=0){for(;value>127;)bytes.push(value&127|128),value=value>>>7;bytes.push(value)}else{for(let i6=0;i6<9;i6++)bytes.push(value&127|128),value=value>>7;bytes.push(1)}}function varint32read(){let b7=this.buf[this.pos++],result=b7&127;if((b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<7,(b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<14,(b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<21,(b7&128)==0)return this.assertBounds(),result;b7=this.buf[this.pos++],result|=(b7&15)<<28;for(let readBytes2=5;(b7&128)!==0&&readBytes2<10;readBytes2++)b7=this.buf[this.pos++];if((b7&128)!=0)throw new Error("invalid varint");return this.assertBounds(),result>>>0}var protoInt64=makeInt64Support();function makeInt64Support(){let dv=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof dv.getBigInt64=="function"&&typeof dv.getBigUint64=="function"&&typeof dv.setBigInt64=="function"&&typeof dv.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let MIN=BigInt("-9223372036854775808"),MAX=BigInt("9223372036854775807"),UMIN=BigInt("0"),UMAX=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>MAX||bi<MIN)throw new Error(`invalid int64: ${value}`);return bi},uParse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>UMAX||bi<UMIN)throw new Error(`invalid uint64: ${value}`);return bi},enc(value){return dv.setBigInt64(0,this.parse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},uEnc(value){return dv.setBigInt64(0,this.uParse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},dec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigInt64(0,!0)},uDec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(value){return typeof value!="string"&&(value=value.toString()),assertInt64String(value),value},uParse(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String(value),value},enc(value){return typeof value!="string"&&(value=value.toString()),assertInt64String(value),int64FromString(value)},uEnc(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String(value),int64FromString(value)},dec(lo,hi){return int64ToString(lo,hi)},uDec(lo,hi){return uInt64ToString(lo,hi)}}}function assertInt64String(value){if(!/^-?[0-9]+$/.test(value))throw new Error("invalid int64: "+value)}function assertUInt64String(value){if(!/^[0-9]+$/.test(value))throw new Error("invalid uint64: "+value)}var ScalarType;(function(ScalarType3){ScalarType3[ScalarType3.DOUBLE=1]="DOUBLE",ScalarType3[ScalarType3.FLOAT=2]="FLOAT",ScalarType3[ScalarType3.INT64=3]="INT64",ScalarType3[ScalarType3.UINT64=4]="UINT64",ScalarType3[ScalarType3.INT32=5]="INT32",ScalarType3[ScalarType3.FIXED64=6]="FIXED64",ScalarType3[ScalarType3.FIXED32=7]="FIXED32",ScalarType3[ScalarType3.BOOL=8]="BOOL",ScalarType3[ScalarType3.STRING=9]="STRING",ScalarType3[ScalarType3.BYTES=12]="BYTES",ScalarType3[ScalarType3.UINT32=13]="UINT32",ScalarType3[ScalarType3.SFIXED32=15]="SFIXED32",ScalarType3[ScalarType3.SFIXED64=16]="SFIXED64",ScalarType3[ScalarType3.SINT32=17]="SINT32",ScalarType3[ScalarType3.SINT64=18]="SINT64"})(ScalarType||(ScalarType={}));function scalarZeroValue(type2,longAsString){switch(type2){case ScalarType.STRING:return"";case ScalarType.BOOL:return!1;case ScalarType.DOUBLE:case ScalarType.FLOAT:return 0;case ScalarType.INT64:case ScalarType.UINT64:case ScalarType.SFIXED64:case ScalarType.FIXED64:case ScalarType.SINT64:return longAsString?"0":protoInt64.zero;case ScalarType.BYTES:return new Uint8Array(0);default:return 0}}function isScalarZeroValue(type2,value){switch(type2){case ScalarType.BOOL:return value===!1;case ScalarType.STRING:return value==="";case ScalarType.BYTES:return value instanceof Uint8Array&&!value.byteLength;default:return value==0}}var IMPLICIT=2,unsafeLocal=Symbol.for("reflect unsafe local");function unsafeOneofCase(target,oneof2){let c5=target[oneof2.localName].case;return c5===void 0?c5:oneof2.fields.find(f5=>f5.localName===c5)}function unsafeIsSet(target,field3){let name=field3.localName;if(field3.oneof)return target[field3.oneof.localName].case===name;if(field3.presence!=IMPLICIT)return target[name]!==void 0&&Object.prototype.hasOwnProperty.call(target,name);switch(field3.fieldKind){case"list":return target[name].length>0;case"map":return Object.keys(target[name]).length>0;case"scalar":return!isScalarZeroValue(field3.scalar,target[name]);case"enum":return target[name]!==field3.enum.values[0].number}throw new Error("message field with implicit presence")}function unsafeIsSetExplicit(target,localName){return Object.prototype.hasOwnProperty.call(target,localName)&&target[localName]!==void 0}function unsafeGet(target,field3){if(field3.oneof){let oneof2=target[field3.oneof.localName];return oneof2.case===field3.localName?oneof2.value:void 0}return target[field3.localName]}function unsafeSet(target,field3,value){field3.oneof?target[field3.oneof.localName]={case:field3.localName,value}:target[field3.localName]=value}function unsafeClear(target,field3){let name=field3.localName;if(field3.oneof){let oneofLocalName=field3.oneof.localName;target[oneofLocalName].case===name&&(target[oneofLocalName]={case:void 0})}else if(field3.presence!=IMPLICIT)delete target[name];else switch(field3.fieldKind){case"map":target[name]={};break;case"list":target[name]=[];break;case"enum":target[name]=field3.enum.values[0].number;break;case"scalar":target[name]=scalarZeroValue(field3.scalar,field3.longAsString);break}}function restoreJsonNames(message6){for(let f5 of message6.field)unsafeIsSetExplicit(f5,"jsonName")||(f5.jsonName=protoCamelCase(f5.name));message6.nestedType.forEach(restoreJsonNames)}function parseTextFormatEnumValue(descEnum,value){let enumValue=descEnum.values.find(v=>v.name===value);if(!enumValue)throw new Error(`cannot parse ${descEnum} default value: ${value}`);return enumValue.number}function parseTextFormatScalarValue(type2,value){switch(type2){case ScalarType.STRING:return value;case ScalarType.BYTES:{let u=unescapeBytesDefaultValue(value);if(u===!1)throw new Error(`cannot parse ${ScalarType[type2]} default value: ${value}`);return u}case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return protoInt64.parse(value);case ScalarType.UINT64:case ScalarType.FIXED64:return protoInt64.uParse(value);case ScalarType.DOUBLE:case ScalarType.FLOAT:switch(value){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(value)}case ScalarType.BOOL:return value==="true";case ScalarType.INT32:case ScalarType.UINT32:case ScalarType.SINT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:return parseInt(value,10)}}function unescapeBytesDefaultValue(str2){let b7=[],input={tail:str2,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(n3){if(this.tail.length>=n3){let r5=this.tail.substring(0,n3);return this.tail=this.tail.substring(n3),r5}return!1}};for(;input.next();)switch(input.c){case"\\":if(input.next())switch(input.c){case"\\":b7.push(input.c.charCodeAt(0));break;case"b":b7.push(8);break;case"f":b7.push(12);break;case"n":b7.push(10);break;case"r":b7.push(13);break;case"t":b7.push(9);break;case"v":b7.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let s2=input.c,t=input.take(2);if(t===!1)return!1;let n3=parseInt(s2+t,8);if(Number.isNaN(n3))return!1;b7.push(n3);break}case"x":{let s2=input.c,t=input.take(2);if(t===!1)return!1;let n3=parseInt(s2+t,16);if(Number.isNaN(n3))return!1;b7.push(n3);break}case"u":{let s2=input.c,t=input.take(4);if(t===!1)return!1;let n3=parseInt(s2+t,16);if(Number.isNaN(n3))return!1;let chunk=new Uint8Array(4);new DataView(chunk.buffer).setInt32(0,n3,!0),b7.push(chunk[0],chunk[1],chunk[2],chunk[3]);break}case"U":{let s2=input.c,t=input.take(8);if(t===!1)return!1;let tc=protoInt64.uEnc(s2+t),chunk=new Uint8Array(8),view=new DataView(chunk.buffer);view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),b7.push(chunk[0],chunk[1],chunk[2],chunk[3],chunk[4],chunk[5],chunk[6],chunk[7]);break}}break;default:b7.push(input.c.charCodeAt(0))}return new Uint8Array(b7)}function*nestedTypes(desc){switch(desc.kind){case"file":for(let message6 of desc.messages)yield message6,yield*nestedTypes(message6);yield*desc.enums,yield*desc.services,yield*desc.extensions;break;case"message":for(let message6 of desc.nestedMessages)yield message6,yield*nestedTypes(message6);yield*desc.nestedEnums,yield*desc.nestedExtensions;break}}function createFileRegistry(...args){let registry=createBaseRegistry();if(!args.length)return registry;if("$typeName"in args[0]&&args[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let file of args[0].file)addFile(file,registry);return registry}if("$typeName"in args[0]){let recurseDeps=function(file){let deps=[];for(let protoFileName of file.dependency){if(registry.getFile(protoFileName)!=null||seen.has(protoFileName))continue;let dep=resolve(protoFileName);if(!dep)throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);"kind"in dep?registry.addFile(dep,!1,!0):(seen.add(dep.name),deps.push(dep))}return deps.concat(...deps.map(recurseDeps))},input=args[0],resolve=args[1],seen=new Set;for(let file of[input,...recurseDeps(input)].reverse())addFile(file,registry)}else for(let fileReg of args)for(let file of fileReg.files)registry.addFile(file);return registry}function createBaseRegistry(){let types3=new Map,extendees=new Map,files=new Map;return{kind:"registry",types:types3,extendees,[Symbol.iterator](){return types3.values()},get files(){return files.values()},addFile(file,skipTypes,withDeps){if(files.set(file.proto.name,file),!skipTypes)for(let type2 of nestedTypes(file))this.add(type2);if(withDeps)for(let f5 of file.dependencies)this.addFile(f5,skipTypes,withDeps)},add(desc){if(desc.kind=="extension"){let numberToExt=extendees.get(desc.extendee.typeName);numberToExt||extendees.set(desc.extendee.typeName,numberToExt=new Map),numberToExt.set(desc.number,desc)}types3.set(desc.typeName,desc)},get(typeName){return types3.get(typeName)},getFile(fileName){return files.get(fileName)},getMessage(typeName){let t=types3.get(typeName);return t?.kind=="message"?t:void 0},getEnum(typeName){let t=types3.get(typeName);return t?.kind=="enum"?t:void 0},getExtension(typeName){let t=types3.get(typeName);return t?.kind=="extension"?t:void 0},getExtensionFor(extendee,no){var _a3;return(_a3=extendees.get(extendee.typeName))===null||_a3===void 0?void 0:_a3.get(no)},getService(typeName){let t=types3.get(typeName);return t?.kind=="service"?t:void 0}}}var EDITION_PROTO2=998,EDITION_PROTO3=999,EDITION_UNSTABLE=9999,TYPE_STRING=9,TYPE_GROUP=10,TYPE_MESSAGE=11,TYPE_BYTES=12,TYPE_ENUM=14,LABEL_REPEATED=3,LABEL_REQUIRED=2,JS_STRING=1,IDEMPOTENCY_UNKNOWN=0,EXPLICIT=1,IMPLICIT2=2,LEGACY_REQUIRED=3,PACKED=1,DELIMITED=2,OPEN=1,VERIFY=2;var maximumEdition=1001,featureDefaults={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function addFile(proto2,reg){var _a3,_b2;let file={kind:"file",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,edition:getFileEdition(proto2),name:proto2.name.replace(/\.proto$/,""),dependencies:findFileDependencies(proto2,reg),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${proto2.name}`}},mapEntriesStore=new Map,mapEntries={get(typeName){return mapEntriesStore.get(typeName)},add(desc){var _a4;assert(((_a4=desc.proto.options)===null||_a4===void 0?void 0:_a4.mapEntry)===!0),mapEntriesStore.set(desc.typeName,desc)}};for(let enumProto of proto2.enumType)addEnum(enumProto,file,void 0,reg);for(let messageProto of proto2.messageType)addMessage(messageProto,file,void 0,reg,mapEntries);for(let serviceProto of proto2.service)addService(serviceProto,file,reg);addExtensions(file,reg);for(let mapEntry of mapEntriesStore.values())addFields(mapEntry,reg,mapEntries);for(let message6 of file.messages)addFields(message6,reg,mapEntries),addExtensions(message6,reg);reg.addFile(file,!0)}function addExtensions(desc,reg){switch(desc.kind){case"file":for(let proto2 of desc.proto.extension){let ext=newField(proto2,desc,reg);desc.extensions.push(ext),reg.add(ext)}break;case"message":for(let proto2 of desc.proto.extension){let ext=newField(proto2,desc,reg);desc.nestedExtensions.push(ext),reg.add(ext)}for(let message6 of desc.nestedMessages)addExtensions(message6,reg);break}}function addFields(message6,reg,mapEntries){let allOneofs=message6.proto.oneofDecl.map(proto2=>newOneof(proto2,message6)),oneofsSeen=new Set;for(let proto2 of message6.proto.field){let oneof2=findOneof(proto2,allOneofs),field3=newField(proto2,message6,reg,oneof2,mapEntries);message6.fields.push(field3),message6.field[field3.localName]=field3,oneof2===void 0?message6.members.push(field3):(oneof2.fields.push(field3),oneofsSeen.has(oneof2)||(oneofsSeen.add(oneof2),message6.members.push(oneof2)))}for(let oneof2 of allOneofs.filter(o3=>oneofsSeen.has(o3)))message6.oneofs.push(oneof2);for(let child of message6.nestedMessages)addFields(child,reg,mapEntries)}function addEnum(proto2,file,parent,reg){var _a3,_b2,_c5,_d,_e5;let sharedPrefix=findEnumSharedPrefix(proto2.name,proto2.value),desc={kind:"enum",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,parent,open:!0,name:proto2.name,typeName:makeTypeName(proto2,parent,file),value:{},values:[],sharedPrefix,toString(){return`enum ${this.typeName}`}};desc.open=isEnumOpen(desc),reg.add(desc);for(let p3 of proto2.value){let name=p3.name;desc.values.push(desc.value[p3.number]={kind:"enum_value",proto:p3,deprecated:(_d=(_c5=p3.options)===null||_c5===void 0?void 0:_c5.deprecated)!==null&&_d!==void 0?_d:!1,parent:desc,name,localName:safeObjectProperty(sharedPrefix==null?name:name.substring(sharedPrefix.length)),number:p3.number,toString(){return`enum value ${desc.typeName}.${name}`}})}((_e5=parent?.nestedEnums)!==null&&_e5!==void 0?_e5:file.enums).push(desc)}function addMessage(proto2,file,parent,reg,mapEntries){var _a3,_b2,_c5,_d;let desc={kind:"message",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,parent,name:proto2.name,typeName:makeTypeName(proto2,parent,file),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((_c5=proto2.options)===null||_c5===void 0?void 0:_c5.mapEntry)===!0?mapEntries.add(desc):(((_d=parent?.nestedMessages)!==null&&_d!==void 0?_d:file.messages).push(desc),reg.add(desc));for(let enumProto of proto2.enumType)addEnum(enumProto,file,desc,reg);for(let messageProto of proto2.nestedType)addMessage(messageProto,file,desc,reg,mapEntries)}function addService(proto2,file,reg){var _a3,_b2;let desc={kind:"service",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,name:proto2.name,typeName:makeTypeName(proto2,void 0,file),methods:[],method:{},toString(){return`service ${this.typeName}`}};file.services.push(desc),reg.add(desc);for(let methodProto of proto2.method){let method=newMethod(methodProto,desc,reg);desc.methods.push(method),desc.method[method.localName]=method}}function newMethod(proto2,parent,reg){var _a3,_b2,_c5,_d;let methodKind;proto2.clientStreaming&&proto2.serverStreaming?methodKind="bidi_streaming":proto2.clientStreaming?methodKind="client_streaming":proto2.serverStreaming?methodKind="server_streaming":methodKind="unary";let input=reg.getMessage(trimLeadingDot(proto2.inputType)),output=reg.getMessage(trimLeadingDot(proto2.outputType));assert(input,`invalid MethodDescriptorProto: input_type ${proto2.inputType} not found`),assert(output,`invalid MethodDescriptorProto: output_type ${proto2.inputType} not found`);let name=proto2.name;return{kind:"rpc",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,parent,name,localName:safeObjectProperty(name.length?safeObjectProperty(name[0].toLowerCase()+name.substring(1)):name),methodKind,input,output,idempotency:(_d=(_c5=proto2.options)===null||_c5===void 0?void 0:_c5.idempotencyLevel)!==null&&_d!==void 0?_d:IDEMPOTENCY_UNKNOWN,toString(){return`rpc ${parent.typeName}.${name}`}}}function newOneof(proto2,parent){return{kind:"oneof",proto:proto2,deprecated:!1,parent,fields:[],name:proto2.name,localName:safeObjectProperty(protoCamelCase(proto2.name)),toString(){return`oneof ${parent.typeName}.${this.name}`}}}function newField(proto2,parentOrFile,reg,oneof2,mapEntries){var _a3,_b2,_c5;let isExtension=mapEntries===void 0,field3={kind:"field",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,name:proto2.name,number:proto2.number,scalar:void 0,message:void 0,enum:void 0,presence:getFieldPresence(proto2,oneof2,isExtension,parentOrFile),utf8Validation:isUtf8Validated(proto2,parentOrFile),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(isExtension){let file=parentOrFile.kind=="file"?parentOrFile:parentOrFile.file,parent=parentOrFile.kind=="file"?void 0:parentOrFile,typeName=makeTypeName(proto2,parent,file);field3.kind="extension",field3.file=file,field3.parent=parent,field3.oneof=void 0,field3.typeName=typeName,field3.jsonName=`[${typeName}]`,field3.toString=()=>`extension ${typeName}`;let extendee=reg.getMessage(trimLeadingDot(proto2.extendee));assert(extendee,`invalid FieldDescriptorProto: extendee ${proto2.extendee} not found`),field3.extendee=extendee}else{let parent=parentOrFile;assert(parent.kind=="message"),field3.parent=parent,field3.oneof=oneof2,field3.localName=oneof2?protoCamelCase(proto2.name):safeObjectProperty(protoCamelCase(proto2.name)),field3.jsonName=proto2.jsonName,field3.toString=()=>`field ${parent.typeName}.${proto2.name}`}let label2=proto2.label,type2=proto2.type,jstype=(_c5=proto2.options)===null||_c5===void 0?void 0:_c5.jstype;if(label2===LABEL_REPEATED){let mapEntry=type2==TYPE_MESSAGE?mapEntries?.get(trimLeadingDot(proto2.typeName)):void 0;if(mapEntry){field3.fieldKind="map";let{key,value}=findMapEntryFields(mapEntry);return field3.mapKey=key.scalar,field3.mapKind=value.fieldKind,field3.message=value.message,field3.delimitedEncoding=!1,field3.enum=value.enum,field3.scalar=value.scalar,field3}switch(field3.fieldKind="list",type2){case TYPE_MESSAGE:case TYPE_GROUP:field3.listKind="message",field3.message=reg.getMessage(trimLeadingDot(proto2.typeName)),assert(field3.message),field3.delimitedEncoding=isDelimitedEncoding(proto2,parentOrFile);break;case TYPE_ENUM:field3.listKind="enum",field3.enum=reg.getEnum(trimLeadingDot(proto2.typeName)),assert(field3.enum);break;default:field3.listKind="scalar",field3.scalar=type2,field3.longAsString=jstype==JS_STRING;break}return field3.packed=isPackedField(proto2,parentOrFile),field3}switch(type2){case TYPE_MESSAGE:case TYPE_GROUP:field3.fieldKind="message",field3.message=reg.getMessage(trimLeadingDot(proto2.typeName)),assert(field3.message,`invalid FieldDescriptorProto: type_name ${proto2.typeName} not found`),field3.delimitedEncoding=isDelimitedEncoding(proto2,parentOrFile),field3.getDefaultValue=()=>{};break;case TYPE_ENUM:{let enumeration=reg.getEnum(trimLeadingDot(proto2.typeName));assert(enumeration!==void 0,`invalid FieldDescriptorProto: type_name ${proto2.typeName} not found`),field3.fieldKind="enum",field3.enum=reg.getEnum(trimLeadingDot(proto2.typeName)),field3.getDefaultValue=()=>unsafeIsSetExplicit(proto2,"defaultValue")?parseTextFormatEnumValue(enumeration,proto2.defaultValue):void 0;break}default:{field3.fieldKind="scalar",field3.scalar=type2,field3.longAsString=jstype==JS_STRING,field3.getDefaultValue=()=>unsafeIsSetExplicit(proto2,"defaultValue")?parseTextFormatScalarValue(type2,proto2.defaultValue):void 0;break}}return field3}function getFileEdition(proto2){switch(proto2.syntax){case"":case"proto2":return EDITION_PROTO2;case"proto3":return EDITION_PROTO3;case"editions":if(proto2.edition===EDITION_UNSTABLE)return maximumEdition;if(proto2.edition in featureDefaults)return proto2.edition;throw new Error(`${proto2.name}: unsupported edition`);default:throw new Error(`${proto2.name}: unsupported syntax "${proto2.syntax}"`)}}function findFileDependencies(proto2,reg){return proto2.dependency.map(wantName=>{let dep=reg.getFile(wantName);if(!dep)throw new Error(`Cannot find ${wantName}, imported by ${proto2.name}`);return dep})}function findEnumSharedPrefix(enumName,values){let prefix=camelToSnakeCase(enumName)+"_";for(let value of values){if(!value.name.toLowerCase().startsWith(prefix))return;let shortName=value.name.substring(prefix.length);if(shortName.length==0||/^\d/.test(shortName))return}return prefix}function camelToSnakeCase(camel){return(camel.substring(0,1)+camel.substring(1).replace(/[A-Z]/g,c5=>"_"+c5)).toLowerCase()}function makeTypeName(proto2,parent,file){let typeName;return parent?typeName=`${parent.typeName}.${proto2.name}`:file.proto.package.length>0?typeName=`${file.proto.package}.${proto2.name}`:typeName=`${proto2.name}`,typeName}function trimLeadingDot(typeName){return typeName.startsWith(".")?typeName.substring(1):typeName}function findOneof(proto2,allOneofs){if(!unsafeIsSetExplicit(proto2,"oneofIndex")||proto2.proto3Optional)return;let oneof2=allOneofs[proto2.oneofIndex];return assert(oneof2,`invalid FieldDescriptorProto: oneof #${proto2.oneofIndex} for field #${proto2.number} not found`),oneof2}function getFieldPresence(proto2,oneof2,isExtension,parent){if(proto2.label==LABEL_REQUIRED)return LEGACY_REQUIRED;if(proto2.label==LABEL_REPEATED)return IMPLICIT2;if(oneof2||proto2.proto3Optional||isExtension)return EXPLICIT;let resolved=resolveFeature("fieldPresence",{proto:proto2,parent});return resolved==IMPLICIT2&&(proto2.type==TYPE_MESSAGE||proto2.type==TYPE_GROUP)?EXPLICIT:resolved}function isPackedField(proto2,parent){if(proto2.label!=LABEL_REPEATED)return!1;switch(proto2.type){case TYPE_STRING:case TYPE_BYTES:case TYPE_GROUP:case TYPE_MESSAGE:return!1}let o3=proto2.options;return o3&&unsafeIsSetExplicit(o3,"packed")?o3.packed:PACKED==resolveFeature("repeatedFieldEncoding",{proto:proto2,parent})}function findMapEntryFields(mapEntry){let key=mapEntry.fields.find(f5=>f5.number===1),value=mapEntry.fields.find(f5=>f5.number===2);return assert(key&&key.fieldKind=="scalar"&&key.scalar!=ScalarType.BYTES&&key.scalar!=ScalarType.FLOAT&&key.scalar!=ScalarType.DOUBLE&&value&&value.fieldKind!="list"&&value.fieldKind!="map"),{key,value}}function isEnumOpen(desc){var _a3;return OPEN==resolveFeature("enumType",{proto:desc.proto,parent:(_a3=desc.parent)!==null&&_a3!==void 0?_a3:desc.file})}function isDelimitedEncoding(proto2,parent){return proto2.type==TYPE_GROUP?!0:DELIMITED==resolveFeature("messageEncoding",{proto:proto2,parent})}function isUtf8Validated(proto2,parent){return VERIFY==resolveFeature("utf8Validation",{proto:proto2,parent})}function resolveFeature(name,ref){var _a3,_b2;let featureSet=(_a3=ref.proto.options)===null||_a3===void 0?void 0:_a3.features;if(featureSet){let val=featureSet[name];if(val!=0)return val}if("kind"in ref){if(ref.kind=="message")return resolveFeature(name,(_b2=ref.parent)!==null&&_b2!==void 0?_b2:ref.file);let editionDefaults=featureDefaults[ref.edition];if(!editionDefaults)throw new Error(`feature default for edition ${ref.edition} not found`);return editionDefaults[name]}return resolveFeature(name,ref.parent)}function assert(condition,msg){if(!condition)throw new Error(msg)}function boot(boot3){let root5=bootFileDescriptorProto(boot3);return root5.messageType.forEach(restoreJsonNames),createFileRegistry(root5,()=>{}).getFile(root5.name)}function bootFileDescriptorProto(init){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},init),{messageType:init.messageType.map(bootDescriptorProto),enumType:init.enumType.map(bootEnumDescriptorProto)}))}function bootDescriptorProto(init){var _a3,_b2,_c5,_d,_e5,_f,_g,_h4;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:init.name,field:(_b2=(_a3=init.field)===null||_a3===void 0?void 0:_a3.map(bootFieldDescriptorProto))!==null&&_b2!==void 0?_b2:[],extension:[],nestedType:(_d=(_c5=init.nestedType)===null||_c5===void 0?void 0:_c5.map(bootDescriptorProto))!==null&&_d!==void 0?_d:[],enumType:(_f=(_e5=init.enumType)===null||_e5===void 0?void 0:_e5.map(bootEnumDescriptorProto))!==null&&_f!==void 0?_f:[],extensionRange:(_h4=(_g=init.extensionRange)===null||_g===void 0?void 0:_g.map(e6=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},e6)))!==null&&_h4!==void 0?_h4:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function bootFieldDescriptorProto(init){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},init),{options:init.options?bootFieldOptions(init.options):void 0}))}function bootFieldOptions(init){var _a3,_b2,_c5;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},init),{targets:(_a3=init.targets)!==null&&_a3!==void 0?_a3:[],editionDefaults:(_c5=(_b2=init.editionDefaults)===null||_b2===void 0?void 0:_b2.map(e6=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},e6)))!==null&&_c5!==void 0?_c5:[],uninterpretedOption:[]}))}function bootEnumDescriptorProto(init){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:init.name,reservedName:[],reservedRange:[],value:init.value.map(e6=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},e6))})}function base64Decode(base64Str){let table2=getDecodeTable(),es=base64Str.length*3/4;base64Str[base64Str.length-2]=="="?es-=2:base64Str[base64Str.length-1]=="="&&(es-=1);let bytes=new Uint8Array(es),bytePos=0,groupPos=0,b7,p3=0;for(let i6=0;i6<base64Str.length;i6++){if(b7=table2[base64Str.charCodeAt(i6)],b7===void 0)switch(base64Str[i6]){case"=":groupPos=0;case`
|
|
471
471
|
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(groupPos){case 0:p3=b7,groupPos=1;break;case 1:bytes[bytePos++]=p3<<2|(b7&48)>>4,p3=b7,groupPos=2;break;case 2:bytes[bytePos++]=(p3&15)<<4|(b7&60)>>2,p3=b7,groupPos=3;break;case 3:bytes[bytePos++]=(p3&3)<<6|b7,groupPos=0;break}}if(groupPos==1)throw Error("invalid base64 string");return bytes.subarray(0,bytePos)}var encodeTableStd,encodeTableUrl,decodeTable;function getEncodeTable(encoding){return encodeTableStd||(encodeTableStd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),encodeTableUrl=encodeTableStd.slice(0,-2).concat("-","_")),encoding=="url"?encodeTableUrl:encodeTableStd}function getDecodeTable(){if(!decodeTable){decodeTable=[];let encodeTable=getEncodeTable("std");for(let i6=0;i6<encodeTable.length;i6++)decodeTable[encodeTable[i6].charCodeAt(0)]=i6;decodeTable[45]=encodeTable.indexOf("+"),decodeTable[95]=encodeTable.indexOf("/")}return decodeTable}function isMessage(arg,schema2){return arg!==null&&typeof arg=="object"&&"$typeName"in arg&&typeof arg.$typeName=="string"?schema2===void 0?!0:schema2.typeName===arg.$typeName:!1}var FieldError=class extends Error{constructor(fieldOrOneof,message6,name="FieldValueInvalidError"){super(message6),this.name=name,this.field=()=>fieldOrOneof}};function isObject(arg){return arg!==null&&typeof arg=="object"&&!Array.isArray(arg)}function isReflectList(arg,field3){var _a3,_b2,_c5,_d;if(isObject(arg)&&unsafeLocal in arg&&"add"in arg&&"field"in arg&&typeof arg.field=="function"){if(field3!==void 0){let a5=field3,b7=arg.field();return a5.listKind==b7.listKind&&a5.scalar===b7.scalar&&((_a3=a5.message)===null||_a3===void 0?void 0:_a3.typeName)===((_b2=b7.message)===null||_b2===void 0?void 0:_b2.typeName)&&((_c5=a5.enum)===null||_c5===void 0?void 0:_c5.typeName)===((_d=b7.enum)===null||_d===void 0?void 0:_d.typeName)}return!0}return!1}function isReflectMap(arg,field3){var _a3,_b2,_c5,_d;if(isObject(arg)&&unsafeLocal in arg&&"has"in arg&&"field"in arg&&typeof arg.field=="function"){if(field3!==void 0){let a5=field3,b7=arg.field();return a5.mapKey===b7.mapKey&&a5.mapKind==b7.mapKind&&a5.scalar===b7.scalar&&((_a3=a5.message)===null||_a3===void 0?void 0:_a3.typeName)===((_b2=b7.message)===null||_b2===void 0?void 0:_b2.typeName)&&((_c5=a5.enum)===null||_c5===void 0?void 0:_c5.typeName)===((_d=b7.enum)===null||_d===void 0?void 0:_d.typeName)}return!0}return!1}function isReflectMessage(arg,messageDesc4){return isObject(arg)&&unsafeLocal in arg&&"desc"in arg&&isObject(arg.desc)&&arg.desc.kind==="message"&&(messageDesc4===void 0||arg.desc.typeName==messageDesc4.typeName)}var symbol=Symbol.for("@bufbuild/protobuf/text-encoding");function getTextEncoding(){if(globalThis[symbol]==null){let te2=new globalThis.TextEncoder,td2=new globalThis.TextDecoder,tdStrict;globalThis[symbol]={encodeUtf8(text2){return te2.encode(text2)},decodeUtf8(bytes,strict){return strict?(tdStrict===void 0&&(tdStrict=new globalThis.TextDecoder("utf-8",{fatal:!0})),tdStrict.decode(bytes)):td2.decode(bytes)},checkUtf8(text2){try{return encodeURIComponent(text2),!0}catch{return!1}}}}return globalThis[symbol]}var WireType;(function(WireType3){WireType3[WireType3.Varint=0]="Varint",WireType3[WireType3.Bit64=1]="Bit64",WireType3[WireType3.LengthDelimited=2]="LengthDelimited",WireType3[WireType3.StartGroup=3]="StartGroup",WireType3[WireType3.EndGroup=4]="EndGroup",WireType3[WireType3.Bit32=5]="Bit32"})(WireType||(WireType={}));var FLOAT32_MAX=34028234663852886e22,FLOAT32_MIN=-34028234663852886e22,UINT32_MAX=4294967295,INT32_MAX=2147483647,INT32_MIN=-2147483648;var BinaryReader=class{constructor(buf2,decodeUtf82=getTextEncoding().decodeUtf8){this.decodeUtf8=decodeUtf82,this.varint64=varint64read,this.uint32=varint32read,this.buf=buf2,this.len=buf2.length,this.pos=0,this.view=new DataView(buf2.buffer,buf2.byteOffset,buf2.byteLength)}tag(){let start=this.pos,tag2=this.uint32(),bytesRead=this.pos-start;if(bytesRead>5||bytesRead==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");let fieldNo=tag2>>>3,wireType=tag2&7;if(fieldNo<=0||wireType>5)throw new Error("illegal tag: field no "+fieldNo+" wire type "+wireType);return[fieldNo,wireType]}skip(wireType,fieldNo){let start=this.pos;switch(wireType){case WireType.Varint:for(;this.buf[this.pos++]&128;);break;case WireType.Bit64:this.pos+=4;case WireType.Bit32:this.pos+=4;break;case WireType.LengthDelimited:let len=this.uint32();this.pos+=len;break;case WireType.StartGroup:for(;;){let[fn,wt]=this.tag();if(wt===WireType.EndGroup){if(fieldNo!==void 0&&fn!==fieldNo)throw new Error("invalid end group tag");break}this.skip(wt,fn)}break;default:throw new Error("cant skip wire type "+wireType)}return this.assertBounds(),this.buf.subarray(start,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let zze=this.uint32();return zze>>>1^-(zze&1)}int64(){return protoInt64.dec(...this.varint64())}uint64(){return protoInt64.uDec(...this.varint64())}sint64(){let[lo,hi]=this.varint64(),s2=-(lo&1);return lo=(lo>>>1|(hi&1)<<31)^s2,hi=hi>>>1^s2,protoInt64.dec(lo,hi)}bool(){let[lo,hi]=this.varint64();return lo!==0||hi!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return protoInt64.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return protoInt64.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let len=this.uint32(),start=this.pos;return this.pos+=len,this.assertBounds(),this.buf.subarray(start,start+len)}string(strict){return this.decodeUtf8(this.bytes(),strict)}};function checkField(field3,value){let check=field3.fieldKind=="list"?isReflectList(value,field3):field3.fieldKind=="map"?isReflectMap(value,field3):checkSingular(field3,value);if(check===!0)return;let reason;switch(field3.fieldKind){case"list":reason=`expected ${formatReflectList(field3)}, got ${formatVal(value)}`;break;case"map":reason=`expected ${formatReflectMap(field3)}, got ${formatVal(value)}`;break;default:reason=reasonSingular(field3,value,check)}return new FieldError(field3,reason)}function checkListItem(field3,index2,value){let check=checkSingular(field3,value);if(check!==!0)return new FieldError(field3,`list item #${index2+1}: ${reasonSingular(field3,value,check)}`)}function checkMapEntry(field3,key,value){let checkKey=checkScalarValue(key,field3.mapKey);if(checkKey!==!0)return new FieldError(field3,`invalid map key: ${reasonSingular({scalar:field3.mapKey},key,checkKey)}`);let checkVal=checkSingular(field3,value);if(checkVal!==!0)return new FieldError(field3,`map entry ${formatVal(key)}: ${reasonSingular(field3,value,checkVal)}`)}function checkSingular(field3,value){return field3.scalar!==void 0?checkScalarValue(value,field3.scalar):field3.enum!==void 0?field3.enum.open?Number.isInteger(value):field3.enum.values.some(v=>v.number===value):isReflectMessage(value,field3.message)}function checkScalarValue(value,scalar){switch(scalar){case ScalarType.DOUBLE:return typeof value=="number";case ScalarType.FLOAT:return typeof value!="number"?!1:Number.isNaN(value)||!Number.isFinite(value)?!0:value>FLOAT32_MAX||value<FLOAT32_MIN?`${value.toFixed()} out of range`:!0;case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:return typeof value!="number"||!Number.isInteger(value)?!1:value>INT32_MAX||value<INT32_MIN?`${value.toFixed()} out of range`:!0;case ScalarType.FIXED32:case ScalarType.UINT32:return typeof value!="number"||!Number.isInteger(value)?!1:value>UINT32_MAX||value<0?`${value.toFixed()} out of range`:!0;case ScalarType.BOOL:return typeof value=="boolean";case ScalarType.STRING:return typeof value!="string"?!1:getTextEncoding().checkUtf8(value)||"invalid UTF8";case ScalarType.BYTES:return value instanceof Uint8Array;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(typeof value=="bigint"||typeof value=="number"||typeof value=="string"&&value.length>0)try{return protoInt64.parse(value),!0}catch{return`${value} out of range`}return!1;case ScalarType.FIXED64:case ScalarType.UINT64:if(typeof value=="bigint"||typeof value=="number"||typeof value=="string"&&value.length>0)try{return protoInt64.uParse(value),!0}catch{return`${value} out of range`}return!1}}function reasonSingular(field3,val,details){return details=typeof details=="string"?`: ${details}`:`, got ${formatVal(val)}`,field3.scalar!==void 0?`expected ${scalarTypeDescription(field3.scalar)}`+details:field3.enum!==void 0?`expected ${field3.enum.toString()}`+details:`expected ${formatReflectMessage(field3.message)}`+details}function formatVal(val){switch(typeof val){case"object":return val===null?"null":val instanceof Uint8Array?`Uint8Array(${val.length})`:Array.isArray(val)?`Array(${val.length})`:isReflectList(val)?formatReflectList(val.field()):isReflectMap(val)?formatReflectMap(val.field()):isReflectMessage(val)?formatReflectMessage(val.desc):isMessage(val)?`message ${val.$typeName}`:"object";case"string":return val.length>30?"string":`"${val.split('"').join('\\"')}"`;case"boolean":return String(val);case"number":return String(val);case"bigint":return String(val)+"n";default:return typeof val}}function formatReflectMessage(desc){return`ReflectMessage (${desc.typeName})`}function formatReflectList(field3){switch(field3.listKind){case"message":return`ReflectList (${field3.message.toString()})`;case"enum":return`ReflectList (${field3.enum.toString()})`;case"scalar":return`ReflectList (${ScalarType[field3.scalar]})`}}function formatReflectMap(field3){switch(field3.mapKind){case"message":return`ReflectMap (${ScalarType[field3.mapKey]}, ${field3.message.toString()})`;case"enum":return`ReflectMap (${ScalarType[field3.mapKey]}, ${field3.enum.toString()})`;case"scalar":return`ReflectMap (${ScalarType[field3.mapKey]}, ${ScalarType[field3.scalar]})`}}function scalarTypeDescription(scalar){switch(scalar){case ScalarType.STRING:return"string";case ScalarType.BOOL:return"boolean";case ScalarType.INT64:case ScalarType.SINT64:case ScalarType.SFIXED64:return"bigint (int64)";case ScalarType.UINT64:case ScalarType.FIXED64:return"bigint (uint64)";case ScalarType.BYTES:return"Uint8Array";case ScalarType.DOUBLE:return"number (float64)";case ScalarType.FLOAT:return"number (float32)";case ScalarType.FIXED32:case ScalarType.UINT32:return"number (uint32)";case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:return"number (int32)"}}function isWrapper(arg){return isWrapperTypeName(arg.$typeName)}function isWrapperDesc(messageDesc4){let f5=messageDesc4.fields[0];return isWrapperTypeName(messageDesc4.typeName)&&f5!==void 0&&f5.fieldKind=="scalar"&&f5.name=="value"&&f5.number==1}function isWrapperTypeName(name){return name.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(name.substring(16))}var EDITION_PROTO32=999,EDITION_PROTO22=998,IMPLICIT3=2;function create(schema2,init){if(isMessage(init,schema2))return init;let message6=createZeroMessage(schema2);return init!==void 0&&initMessage(schema2,message6,init),message6}function initMessage(messageDesc4,message6,init){for(let member2 of messageDesc4.members){let value=init[member2.localName];if(value==null)continue;let field3;if(member2.kind=="oneof"){let oneofField=unsafeOneofCase(init,member2);if(!oneofField)continue;field3=oneofField,value=unsafeGet(init,oneofField)}else field3=member2;switch(field3.fieldKind){case"message":value=toMessage(field3,value);break;case"scalar":value=initScalar(field3,value);break;case"list":value=initList(field3,value);break;case"map":value=initMap(field3,value);break}unsafeSet(message6,field3,value)}return message6}function initScalar(field3,value){return field3.scalar==ScalarType.BYTES?toU8Arr(value):value}function initMap(field3,value){if(isObject(value)){if(field3.scalar==ScalarType.BYTES)return convertObjectValues(value,toU8Arr);if(field3.mapKind=="message")return convertObjectValues(value,val=>toMessage(field3,val))}return value}function initList(field3,value){if(Array.isArray(value)){if(field3.scalar==ScalarType.BYTES)return value.map(toU8Arr);if(field3.listKind=="message")return value.map(item=>toMessage(field3,item))}return value}function toMessage(field3,value){if(field3.fieldKind=="message"&&!field3.oneof&&isWrapperDesc(field3.message))return initScalar(field3.message.fields[0],value);if(isObject(value)){if(field3.message.typeName=="google.protobuf.Struct"&&field3.parent.typeName!=="google.protobuf.Value")return value;if(!isMessage(value,field3.message))return create(field3.message,value)}return value}function toU8Arr(value){return Array.isArray(value)?new Uint8Array(value):value}function convertObjectValues(obj,fn){let ret={};for(let entry of Object.entries(obj))ret[entry[0]]=fn(entry[1]);return ret}var tokenZeroMessageField=Symbol(),messagePrototypes=new WeakMap;function createZeroMessage(desc){let msg;if(needsPrototypeChain(desc)){let cached2=messagePrototypes.get(desc),prototype,members;if(cached2)({prototype,members}=cached2);else{prototype={},members=new Set;for(let member2 of desc.members)member2.kind!="oneof"&&(member2.fieldKind!="scalar"&&member2.fieldKind!="enum"||member2.presence!=IMPLICIT3&&(members.add(member2),prototype[member2.localName]=createZeroField(member2)));messagePrototypes.set(desc,{prototype,members})}msg=Object.create(prototype),msg.$typeName=desc.typeName;for(let member2 of desc.members)members.has(member2)||member2.kind=="field"&&(member2.fieldKind=="message"||(member2.fieldKind=="scalar"||member2.fieldKind=="enum")&&member2.presence!=IMPLICIT3)||(msg[member2.localName]=createZeroField(member2))}else{msg={$typeName:desc.typeName};for(let member2 of desc.members)(member2.kind=="oneof"||member2.presence==IMPLICIT3)&&(msg[member2.localName]=createZeroField(member2))}return msg}function needsPrototypeChain(desc){switch(desc.file.edition){case EDITION_PROTO32:return!1;case EDITION_PROTO22:return!0;default:return desc.fields.some(f5=>f5.presence!=IMPLICIT3&&f5.fieldKind!="message"&&!f5.oneof)}}function createZeroField(field3){if(field3.kind=="oneof")return{case:void 0};if(field3.fieldKind=="list")return[];if(field3.fieldKind=="map")return{};if(field3.fieldKind=="message")return tokenZeroMessageField;let defaultValue=field3.getDefaultValue();return defaultValue!==void 0?field3.fieldKind=="scalar"&&field3.longAsString?defaultValue.toString():defaultValue:field3.fieldKind=="scalar"?scalarZeroValue(field3.scalar,field3.longAsString):field3.enum.values[0].number}function reflect(messageDesc4,message6,check=!0){return new ReflectMessageImpl(messageDesc4,message6,check)}var messageSortedFields=new WeakMap,ReflectMessageImpl=class{get sortedFields(){let cached2=messageSortedFields.get(this.desc);if(cached2)return cached2;let sortedFields=this.desc.fields.concat().sort((a5,b7)=>a5.number-b7.number);return messageSortedFields.set(this.desc,sortedFields),sortedFields}constructor(messageDesc4,message6,check=!0){this.lists=new Map,this.maps=new Map,this.check=check,this.desc=messageDesc4,this.message=this[unsafeLocal]=message6??create(messageDesc4),this.fields=messageDesc4.fields,this.oneofs=messageDesc4.oneofs,this.members=messageDesc4.members}findNumber(number){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(f5=>[f5.number,f5]))),this._fieldsByNumber.get(number)}oneofCase(oneof2){return assertOwn(this.message,oneof2),unsafeOneofCase(this.message,oneof2)}isSet(field3){return assertOwn(this.message,field3),unsafeIsSet(this.message,field3)}clear(field3){assertOwn(this.message,field3),unsafeClear(this.message,field3)}get(field3){assertOwn(this.message,field3);let value=unsafeGet(this.message,field3);switch(field3.fieldKind){case"list":let list12=this.lists.get(field3);return(!list12||list12[unsafeLocal]!==value)&&this.lists.set(field3,list12=new ReflectListImpl(field3,value,this.check)),list12;case"map":let map5=this.maps.get(field3);return(!map5||map5[unsafeLocal]!==value)&&this.maps.set(field3,map5=new ReflectMapImpl(field3,value,this.check)),map5;case"message":return messageToReflect(field3,value,this.check);case"scalar":return value===void 0?scalarZeroValue(field3.scalar,!1):longToReflect(field3,value);case"enum":return value??field3.enum.values[0].number}}set(field3,value){if(assertOwn(this.message,field3),this.check){let err2=checkField(field3,value);if(err2)throw err2}let local;field3.fieldKind=="message"?local=messageToLocal(field3,value):isReflectMap(value)||isReflectList(value)?local=value[unsafeLocal]:local=longToLocal(field3,value),unsafeSet(this.message,field3,local)}getUnknown(){return this.message.$unknown}setUnknown(value){this.message.$unknown=value}};function assertOwn(owner,member2){if(member2.parent.typeName!==owner.$typeName)throw new FieldError(member2,`cannot use ${member2.toString()} with message ${owner.$typeName}`,"ForeignFieldError")}var ReflectListImpl=class{field(){return this._field}get size(){return this._arr.length}constructor(field3,unsafeInput,check){this._field=field3,this._arr=this[unsafeLocal]=unsafeInput,this.check=check}get(index2){let item=this._arr[index2];return item===void 0?void 0:listItemToReflect(this._field,item,this.check)}set(index2,item){if(index2<0||index2>=this._arr.length)throw new FieldError(this._field,`list item #${index2+1}: out of range`);if(this.check){let err2=checkListItem(this._field,index2,item);if(err2)throw err2}this._arr[index2]=listItemToLocal(this._field,item)}add(item){if(this.check){let err2=checkListItem(this._field,this._arr.length,item);if(err2)throw err2}this._arr.push(listItemToLocal(this._field,item))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let item of this._arr)yield listItemToReflect(this._field,item,this.check)}*entries(){for(let i6=0;i6<this._arr.length;i6++)yield[i6,listItemToReflect(this._field,this._arr[i6],this.check)]}};var ReflectMapImpl=class{constructor(field3,unsafeInput,check=!0){this.obj=this[unsafeLocal]=unsafeInput??{},this.check=check,this._field=field3}field(){return this._field}set(key,value){if(this.check){let err2=checkMapEntry(this._field,key,value);if(err2)throw err2}return this.obj[mapKeyToLocal(key)]=mapValueToLocal(this._field,value),this}delete(key){let k5=mapKeyToLocal(key),has=Object.prototype.hasOwnProperty.call(this.obj,k5);return has&&delete this.obj[k5],has}clear(){for(let key of Object.keys(this.obj))delete this.obj[key]}get(key){let val=this.obj[mapKeyToLocal(key)];return val!==void 0&&(val=mapValueToReflect(this._field,val,this.check)),val}has(key){return Object.prototype.hasOwnProperty.call(this.obj,mapKeyToLocal(key))}*keys(){for(let objKey of Object.keys(this.obj))yield mapKeyToReflect(objKey,this._field.mapKey)}*entries(){for(let objEntry of Object.entries(this.obj))yield[mapKeyToReflect(objEntry[0],this._field.mapKey),mapValueToReflect(this._field,objEntry[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let val of Object.values(this.obj))yield mapValueToReflect(this._field,val,this.check)}forEach(callbackfn,thisArg){for(let mapEntry of this.entries())callbackfn.call(thisArg,mapEntry[1],mapEntry[0],this)}};function messageToLocal(field3,value){return isReflectMessage(value)?isWrapper(value.message)&&!field3.oneof&&field3.fieldKind=="message"?value.message.value:value.desc.typeName=="google.protobuf.Struct"&&field3.parent.typeName!="google.protobuf.Value"?wktStructToLocal(value.message):value.message:value}function messageToReflect(field3,value,check){return value!==void 0&&(isWrapperDesc(field3.message)&&!field3.oneof&&field3.fieldKind=="message"?value={$typeName:field3.message.typeName,value:longToReflect(field3.message.fields[0],value)}:field3.message.typeName=="google.protobuf.Struct"&&field3.parent.typeName!="google.protobuf.Value"&&isObject(value)&&(value=wktStructToReflect(value))),new ReflectMessageImpl(field3.message,value,check)}function listItemToLocal(field3,value){return field3.listKind=="message"?messageToLocal(field3,value):longToLocal(field3,value)}function listItemToReflect(field3,value,check){return field3.listKind=="message"?messageToReflect(field3,value,check):longToReflect(field3,value)}function mapValueToLocal(field3,value){return field3.mapKind=="message"?messageToLocal(field3,value):longToLocal(field3,value)}function mapValueToReflect(field3,value,check){return field3.mapKind=="message"?messageToReflect(field3,value,check):value}function mapKeyToLocal(key){return typeof key=="string"||typeof key=="number"?key:String(key)}function mapKeyToReflect(key,type2){switch(type2){case ScalarType.STRING:return key;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:{let n3=Number.parseInt(key);if(Number.isFinite(n3))return n3;break}case ScalarType.BOOL:switch(key){case"true":return!0;case"false":return!1}break;case ScalarType.UINT64:case ScalarType.FIXED64:try{return protoInt64.uParse(key)}catch{}break;default:try{return protoInt64.parse(key)}catch{}break}return key}function longToReflect(field3,value){switch(field3.scalar){case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:"longAsString"in field3&&field3.longAsString&&typeof value=="string"&&(value=protoInt64.parse(value));break;case ScalarType.FIXED64:case ScalarType.UINT64:"longAsString"in field3&&field3.longAsString&&typeof value=="string"&&(value=protoInt64.uParse(value));break}return value}function longToLocal(field3,value){switch(field3.scalar){case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:"longAsString"in field3&&field3.longAsString?value=String(value):(typeof value=="string"||typeof value=="number")&&(value=protoInt64.parse(value));break;case ScalarType.FIXED64:case ScalarType.UINT64:"longAsString"in field3&&field3.longAsString?value=String(value):(typeof value=="string"||typeof value=="number")&&(value=protoInt64.uParse(value));break}return value}function wktStructToReflect(json2){let struct2={$typeName:"google.protobuf.Struct",fields:{}};if(isObject(json2))for(let[k5,v]of Object.entries(json2))struct2.fields[k5]=wktValueToReflect(v);return struct2}function wktStructToLocal(val){let json2={};for(let[k5,v]of Object.entries(val.fields))json2[k5]=wktValueToLocal(v);return json2}function wktValueToLocal(val){switch(val.kind.case){case"structValue":return wktStructToLocal(val.kind.value);case"listValue":return val.kind.value.values.map(wktValueToLocal);case"nullValue":case void 0:return null;default:return val.kind.value}}function wktValueToReflect(json2){let value={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof json2){case"number":value.kind={case:"numberValue",value:json2};break;case"string":value.kind={case:"stringValue",value:json2};break;case"boolean":value.kind={case:"boolValue",value:json2};break;case"object":if(json2===null)value.kind={case:"nullValue",value:0};else if(Array.isArray(json2)){let listValue={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(json2))for(let e6 of json2)listValue.values.push(wktValueToReflect(e6));value.kind={case:"listValue",value:listValue}}else value.kind={case:"structValue",value:wktStructToReflect(json2)};break}return value}function messageDesc(file,path14,...paths){return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path14])}var file_google_protobuf_descriptor=boot({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false",options:{}},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"removal_error",number:5,type:9,label:1}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var FileDescriptorProtoSchema=messageDesc(file_google_protobuf_descriptor,1);var ExtensionRangeOptions_VerificationState;(function(ExtensionRangeOptions_VerificationState3){ExtensionRangeOptions_VerificationState3[ExtensionRangeOptions_VerificationState3.DECLARATION=0]="DECLARATION",ExtensionRangeOptions_VerificationState3[ExtensionRangeOptions_VerificationState3.UNVERIFIED=1]="UNVERIFIED"})(ExtensionRangeOptions_VerificationState||(ExtensionRangeOptions_VerificationState={}));var FieldDescriptorProto_Type;(function(FieldDescriptorProto_Type3){FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.DOUBLE=1]="DOUBLE",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.FLOAT=2]="FLOAT",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.INT64=3]="INT64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.UINT64=4]="UINT64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.INT32=5]="INT32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.FIXED64=6]="FIXED64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.FIXED32=7]="FIXED32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.BOOL=8]="BOOL",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.STRING=9]="STRING",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.GROUP=10]="GROUP",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.MESSAGE=11]="MESSAGE",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.BYTES=12]="BYTES",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.UINT32=13]="UINT32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.ENUM=14]="ENUM",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SFIXED32=15]="SFIXED32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SFIXED64=16]="SFIXED64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SINT32=17]="SINT32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SINT64=18]="SINT64"})(FieldDescriptorProto_Type||(FieldDescriptorProto_Type={}));var FieldDescriptorProto_Label;(function(FieldDescriptorProto_Label3){FieldDescriptorProto_Label3[FieldDescriptorProto_Label3.OPTIONAL=1]="OPTIONAL",FieldDescriptorProto_Label3[FieldDescriptorProto_Label3.REPEATED=3]="REPEATED",FieldDescriptorProto_Label3[FieldDescriptorProto_Label3.REQUIRED=2]="REQUIRED"})(FieldDescriptorProto_Label||(FieldDescriptorProto_Label={}));var FileOptions_OptimizeMode;(function(FileOptions_OptimizeMode3){FileOptions_OptimizeMode3[FileOptions_OptimizeMode3.SPEED=1]="SPEED",FileOptions_OptimizeMode3[FileOptions_OptimizeMode3.CODE_SIZE=2]="CODE_SIZE",FileOptions_OptimizeMode3[FileOptions_OptimizeMode3.LITE_RUNTIME=3]="LITE_RUNTIME"})(FileOptions_OptimizeMode||(FileOptions_OptimizeMode={}));var FieldOptions_CType;(function(FieldOptions_CType3){FieldOptions_CType3[FieldOptions_CType3.STRING=0]="STRING",FieldOptions_CType3[FieldOptions_CType3.CORD=1]="CORD",FieldOptions_CType3[FieldOptions_CType3.STRING_PIECE=2]="STRING_PIECE"})(FieldOptions_CType||(FieldOptions_CType={}));var FieldOptions_JSType;(function(FieldOptions_JSType3){FieldOptions_JSType3[FieldOptions_JSType3.JS_NORMAL=0]="JS_NORMAL",FieldOptions_JSType3[FieldOptions_JSType3.JS_STRING=1]="JS_STRING",FieldOptions_JSType3[FieldOptions_JSType3.JS_NUMBER=2]="JS_NUMBER"})(FieldOptions_JSType||(FieldOptions_JSType={}));var FieldOptions_OptionRetention;(function(FieldOptions_OptionRetention3){FieldOptions_OptionRetention3[FieldOptions_OptionRetention3.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",FieldOptions_OptionRetention3[FieldOptions_OptionRetention3.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",FieldOptions_OptionRetention3[FieldOptions_OptionRetention3.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(FieldOptions_OptionRetention||(FieldOptions_OptionRetention={}));var FieldOptions_OptionTargetType;(function(FieldOptions_OptionTargetType3){FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(FieldOptions_OptionTargetType||(FieldOptions_OptionTargetType={}));var MethodOptions_IdempotencyLevel;(function(MethodOptions_IdempotencyLevel3){MethodOptions_IdempotencyLevel3[MethodOptions_IdempotencyLevel3.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",MethodOptions_IdempotencyLevel3[MethodOptions_IdempotencyLevel3.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",MethodOptions_IdempotencyLevel3[MethodOptions_IdempotencyLevel3.IDEMPOTENT=2]="IDEMPOTENT"})(MethodOptions_IdempotencyLevel||(MethodOptions_IdempotencyLevel={}));var FeatureSet_VisibilityFeature_DefaultSymbolVisibility;(function(FeatureSet_VisibilityFeature_DefaultSymbolVisibility3){FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.EXPORT_ALL=1]="EXPORT_ALL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.LOCAL_ALL=3]="LOCAL_ALL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.STRICT=4]="STRICT"})(FeatureSet_VisibilityFeature_DefaultSymbolVisibility||(FeatureSet_VisibilityFeature_DefaultSymbolVisibility={}));var FeatureSet_FieldPresence;(function(FeatureSet_FieldPresence3){FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.EXPLICIT=1]="EXPLICIT",FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.IMPLICIT=2]="IMPLICIT",FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(FeatureSet_FieldPresence||(FeatureSet_FieldPresence={}));var FeatureSet_EnumType;(function(FeatureSet_EnumType3){FeatureSet_EnumType3[FeatureSet_EnumType3.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",FeatureSet_EnumType3[FeatureSet_EnumType3.OPEN=1]="OPEN",FeatureSet_EnumType3[FeatureSet_EnumType3.CLOSED=2]="CLOSED"})(FeatureSet_EnumType||(FeatureSet_EnumType={}));var FeatureSet_RepeatedFieldEncoding;(function(FeatureSet_RepeatedFieldEncoding3){FeatureSet_RepeatedFieldEncoding3[FeatureSet_RepeatedFieldEncoding3.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",FeatureSet_RepeatedFieldEncoding3[FeatureSet_RepeatedFieldEncoding3.PACKED=1]="PACKED",FeatureSet_RepeatedFieldEncoding3[FeatureSet_RepeatedFieldEncoding3.EXPANDED=2]="EXPANDED"})(FeatureSet_RepeatedFieldEncoding||(FeatureSet_RepeatedFieldEncoding={}));var FeatureSet_Utf8Validation;(function(FeatureSet_Utf8Validation3){FeatureSet_Utf8Validation3[FeatureSet_Utf8Validation3.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",FeatureSet_Utf8Validation3[FeatureSet_Utf8Validation3.VERIFY=2]="VERIFY",FeatureSet_Utf8Validation3[FeatureSet_Utf8Validation3.NONE=3]="NONE"})(FeatureSet_Utf8Validation||(FeatureSet_Utf8Validation={}));var FeatureSet_MessageEncoding;(function(FeatureSet_MessageEncoding3){FeatureSet_MessageEncoding3[FeatureSet_MessageEncoding3.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",FeatureSet_MessageEncoding3[FeatureSet_MessageEncoding3.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",FeatureSet_MessageEncoding3[FeatureSet_MessageEncoding3.DELIMITED=2]="DELIMITED"})(FeatureSet_MessageEncoding||(FeatureSet_MessageEncoding={}));var FeatureSet_JsonFormat;(function(FeatureSet_JsonFormat3){FeatureSet_JsonFormat3[FeatureSet_JsonFormat3.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",FeatureSet_JsonFormat3[FeatureSet_JsonFormat3.ALLOW=1]="ALLOW",FeatureSet_JsonFormat3[FeatureSet_JsonFormat3.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(FeatureSet_JsonFormat||(FeatureSet_JsonFormat={}));var FeatureSet_EnforceNamingStyle;(function(FeatureSet_EnforceNamingStyle3){FeatureSet_EnforceNamingStyle3[FeatureSet_EnforceNamingStyle3.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",FeatureSet_EnforceNamingStyle3[FeatureSet_EnforceNamingStyle3.STYLE2024=1]="STYLE2024",FeatureSet_EnforceNamingStyle3[FeatureSet_EnforceNamingStyle3.STYLE_LEGACY=2]="STYLE_LEGACY"})(FeatureSet_EnforceNamingStyle||(FeatureSet_EnforceNamingStyle={}));var GeneratedCodeInfo_Annotation_Semantic;(function(GeneratedCodeInfo_Annotation_Semantic3){GeneratedCodeInfo_Annotation_Semantic3[GeneratedCodeInfo_Annotation_Semantic3.NONE=0]="NONE",GeneratedCodeInfo_Annotation_Semantic3[GeneratedCodeInfo_Annotation_Semantic3.SET=1]="SET",GeneratedCodeInfo_Annotation_Semantic3[GeneratedCodeInfo_Annotation_Semantic3.ALIAS=2]="ALIAS"})(GeneratedCodeInfo_Annotation_Semantic||(GeneratedCodeInfo_Annotation_Semantic={}));var Edition;(function(Edition3){Edition3[Edition3.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",Edition3[Edition3.EDITION_LEGACY=900]="EDITION_LEGACY",Edition3[Edition3.EDITION_PROTO2=998]="EDITION_PROTO2",Edition3[Edition3.EDITION_PROTO3=999]="EDITION_PROTO3",Edition3[Edition3.EDITION_2023=1e3]="EDITION_2023",Edition3[Edition3.EDITION_2024=1001]="EDITION_2024",Edition3[Edition3.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",Edition3[Edition3.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",Edition3[Edition3.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",Edition3[Edition3.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",Edition3[Edition3.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",Edition3[Edition3.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",Edition3[Edition3.EDITION_MAX=2147483647]="EDITION_MAX"})(Edition||(Edition={}));var SymbolVisibility;(function(SymbolVisibility3){SymbolVisibility3[SymbolVisibility3.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",SymbolVisibility3[SymbolVisibility3.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",SymbolVisibility3[SymbolVisibility3.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(SymbolVisibility||(SymbolVisibility={}));function enumDesc(file,path14,...paths){if(paths.length==0)return file.enums[path14];let e6=paths.pop();return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path14]).nestedEnums[e6]}function extDesc(file,path14,...paths){if(paths.length==0)return file.extensions[path14];let e6=paths.pop();return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path14]).nestedExtensions[e6]}var readDefaults={readUnknownFields:!0};function makeReadOptions(options){return options?Object.assign(Object.assign({},readDefaults),options):readDefaults}function fromBinary(schema2,bytes,options){let msg=reflect(schema2,void 0,!1);return readMessage(msg,new BinaryReader(bytes),makeReadOptions(options),!1,bytes.byteLength),msg.message}function readMessage(message6,reader,options,delimited,lengthOrDelimitedFieldNo){var _a3;let end=delimited?reader.len:reader.pos+lengthOrDelimitedFieldNo,fieldNo,wireType,unknownFields=(_a3=message6.getUnknown())!==null&&_a3!==void 0?_a3:[];for(;reader.pos<end&&([fieldNo,wireType]=reader.tag(),!(delimited&&wireType==WireType.EndGroup));){let field3=message6.findNumber(fieldNo);if(!field3){let data=reader.skip(wireType,fieldNo);options.readUnknownFields&&unknownFields.push({no:fieldNo,wireType,data});continue}readField(message6,reader,field3,wireType,options)}if(delimited&&(wireType!=WireType.EndGroup||fieldNo!==lengthOrDelimitedFieldNo))throw new Error("invalid end group tag");unknownFields.length>0&&message6.setUnknown(unknownFields)}function readField(message6,reader,field3,wireType,options){var _a3;switch(field3.fieldKind){case"scalar":message6.set(field3,readScalar(reader,field3.scalar,field3.utf8Validation));break;case"enum":let val=readScalar(reader,ScalarType.INT32);if(field3.enum.open)message6.set(field3,val);else if(field3.enum.values.some(v=>v.number===val))message6.set(field3,val);else if(options.readUnknownFields){let bytes=[];varint32write(val,bytes);let unknownFields=(_a3=message6.getUnknown())!==null&&_a3!==void 0?_a3:[];unknownFields.push({no:field3.number,wireType,data:new Uint8Array(bytes)}),message6.setUnknown(unknownFields)}break;case"message":message6.set(field3,readMessageField(reader,options,field3,message6.get(field3)));break;case"list":readListField(reader,wireType,message6.get(field3),options);break;case"map":readMapEntry(reader,message6.get(field3),options);break}}function readMapEntry(reader,map5,options){let field3=map5.field(),key,val,len=reader.uint32(),end=reader.pos+len;for(;reader.pos<end;){let[fieldNo]=reader.tag();switch(fieldNo){case 1:key=readScalar(reader,field3.mapKey,field3.utf8Validation);break;case 2:switch(field3.mapKind){case"scalar":val=readScalar(reader,field3.scalar,field3.utf8Validation);break;case"enum":val=reader.int32();break;case"message":val=readMessageField(reader,options,field3);break}break}}if(key===void 0&&(key=scalarZeroValue(field3.mapKey,!1)),val===void 0)switch(field3.mapKind){case"scalar":val=scalarZeroValue(field3.scalar,!1);break;case"enum":val=field3.enum.values[0].number;break;case"message":val=reflect(field3.message,void 0,!1);break}map5.set(key,val)}function readListField(reader,wireType,list12,options){var _a3;let field3=list12.field();if(field3.listKind==="message"){list12.add(readMessageField(reader,options,field3));return}let scalarType=(_a3=field3.scalar)!==null&&_a3!==void 0?_a3:ScalarType.INT32;if(!(wireType==WireType.LengthDelimited&&scalarType!=ScalarType.STRING&&scalarType!=ScalarType.BYTES)){list12.add(readScalar(reader,scalarType,field3.utf8Validation));return}let e6=reader.uint32()+reader.pos;for(;reader.pos<e6;)list12.add(readScalar(reader,scalarType,field3.utf8Validation))}function readMessageField(reader,options,field3,mergeMessage){let delimited=field3.delimitedEncoding,message6=mergeMessage??reflect(field3.message,void 0,!1);return readMessage(message6,reader,options,delimited,delimited?field3.number:reader.uint32()),message6}function readScalar(reader,type2,validateUtf8=!1){switch(type2){case ScalarType.STRING:return reader.string(validateUtf8);case ScalarType.BOOL:return reader.bool();case ScalarType.DOUBLE:return reader.double();case ScalarType.FLOAT:return reader.float();case ScalarType.INT32:return reader.int32();case ScalarType.INT64:return reader.int64();case ScalarType.UINT64:return reader.uint64();case ScalarType.FIXED64:return reader.fixed64();case ScalarType.BYTES:return reader.bytes();case ScalarType.FIXED32:return reader.fixed32();case ScalarType.SFIXED32:return reader.sfixed32();case ScalarType.SFIXED64:return reader.sfixed64();case ScalarType.SINT64:return reader.sint64();case ScalarType.UINT32:return reader.uint32();case ScalarType.SINT32:return reader.sint32()}}function fileDesc(b64,imports){var _a3;let root5=fromBinary(FileDescriptorProtoSchema,base64Decode(b64));return root5.messageType.forEach(restoreJsonNames),root5.dependency=(_a3=imports?.map(f5=>f5.proto.name))!==null&&_a3!==void 0?_a3:[],createFileRegistry(root5,protoFileName=>imports?.find(f5=>f5.proto.name===protoFileName)).getFile(root5.name)}function messageDesc2(file,path14,...paths){return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path14])}function serviceDesc(file,path14,...paths){if(paths.length>0)throw new Error;return file.services[path14]}var file_google_protobuf_timestamp=fileDesc("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");var file_google_protobuf_duration=fileDesc("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var file_google_protobuf_empty=fileDesc("Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIHCgVFbXB0eUJ9ChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3RvUAFaLmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2VtcHR5cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var file_google_protobuf_field_mask=fileDesc("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var file_google_protobuf_struct=fileDesc("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");var NullValue;(function(NullValue3){NullValue3[NullValue3.NULL_VALUE=0]="NULL_VALUE"})(NullValue||(NullValue={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_group=fileDesc("CkdhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2FwaV9yZXNvdXJjZV9ncm91cC5wcm90bxIuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZCI8ChRBcGlSZXNvdXJjZUdyb3VwTWV0YRIOCgZkb21haW4YASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJKuoBChBBcGlSZXNvdXJjZUdyb3VwEiIKHmFwaV9yZXNvdXJjZV9ncm91cF91bnNwZWNpZmllZBAAEi4KB2FnZW50aWMQARoh6r0sHQoSYWdlbnRpYy5zdGlnbWVyLmFpEgdBZ2VudGljEiIKA2lhbRACGhnqvSwVCg5pYW0uc3RpZ21lci5haRIDSUFNEi4KB3RlbmFuY3kQAxoh6r0sHQoSdGVuYW5jeS5zdGlnbWVyLmFpEgdUZW5hbmN5Ei4KB2JpbGxpbmcQBBoh6r0sHQoSYmlsbGluZy5zdGlnbWVyLmFpEgdCaWxsaW5nOogBCgpncm91cF9tZXRhEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMY3ccFIAEoCzJELmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuQXBpUmVzb3VyY2VHcm91cE1ldGFSCWdyb3VwTWV0YWIGcHJvdG8z",[file_google_protobuf_descriptor]);var ApiResourceGroup;(function(ApiResourceGroup2){ApiResourceGroup2[ApiResourceGroup2.api_resource_group_unspecified=0]="api_resource_group_unspecified",ApiResourceGroup2[ApiResourceGroup2.agentic=1]="agentic",ApiResourceGroup2[ApiResourceGroup2.iam=2]="iam",ApiResourceGroup2[ApiResourceGroup2.tenancy=3]="tenancy",ApiResourceGroup2[ApiResourceGroup2.billing=4]="billing"})(ApiResourceGroup||(ApiResourceGroup={}));var file_ai_stigmer_iam_v1_enum=fileDesc("ChxhaS9zdGlnbWVyL2lhbS92MS9lbnVtLnByb3RvEhFhaS5zdGlnbWVyLmlhbS52MSqXCQoNSWFtUGVybWlzc2lvbhIPCgt1bnNwZWNpZmllZBAAEgwKCGNhbl92aWV3EAESDAoIY2FuX2VkaXQQAhIOCgpjYW5fZGVsZXRlEAMSFAoQY2FuX2dyYW50X2FjY2VzcxAEEhMKD2Nhbl92aWV3X2FjY2VzcxAFEhQKEGNhbl9hc3NpZ25fcm9sZXMQLxIUChBjYW5fY3JlYXRlX2FnZW50EAYSFwoTY2FuX2NyZWF0ZV93b3JrZmxvdxAHEhYKEmNhbl9jcmVhdGVfc2Vzc2lvbhAIEhQKEGNhbl9jcmVhdGVfc2tpbGwQCRISCg5jYW5fY3JlYXRlX2lkcBALEhoKFmNhbl9jcmVhdGVfZW52aXJvbm1lbnQQDBIfChtjYW5fY3JlYXRlX2lkZW50aXR5X2FjY291bnQQFRIYChRjYW5fY3JlYXRlX29hdXRoX2FwcBAXEh4KGmNhbl9jcmVhdGVfcGxhdGZvcm1fY2xpZW50EBgSGwoXY2FuX2NyZWF0ZV9leGVjdXRpb25faW4QDRIXChNjYW5fY3JlYXRlX2luc3RhbmNlEA4SDwoLY2FuX2V4ZWN1dGUQDxIUChBjYW5fcmVhZF9zZWNyZXRzEBASFQoRY2FuX2Jvb3RzdHJhcF9pYW0QERIgChxjYW5fbWFuYWdlX2lkZW50aXR5X2FjY291bnRzEBISGAoUbG9naW5fdG9fYmFja19vZmZpY2UQFBIPCgtjYW5fY29ubmVjdBAWEhUKEWNhbl9jcmVhdGVfcnVubmVyEBkSGgoSY2FuX2RlbGV0ZV9zZXNzaW9uEBoaAggBEhQKEGNhbl92aWV3X2JpbGxpbmcQGxIWChJjYW5fbWFuYWdlX2JpbGxpbmcQHBIbChdjYW5fZXhlY3V0ZV9iaWxsaW5nX29wcxAdEhoKFmNhbl9jcmVhdGVfYWdlbnRfc2hhcmUQHhIaChZjYW5fY3JlYXRlX2NoYW5uZWxfYXBwEB8SHAoYY2FuX21hbmFnZV9tb2RlbF9wcmljaW5nECASHgoaY2FuX21hbmFnZV9jdXJzb3JfYWNjb3VudHMQIxITCg9jYW5fcGFydGljaXBhdGUQJBIdChljYW5fd3JpdGVfcmVzZXJ2ZWRfbGFiZWxzECUSHgoaY2FuX3ZpZXdfcHJvdmlkZXJfc3RhbmRpbmcQJhIVChFjYW5fY3JlYXRlX3BsdWdpbhAoEhQKEGNhbl9tYW5hZ2VfcGxhbnMQKRIVChFjYW5faXNzdWVfbGljZW5zZRAqEhkKFWNhbl9jcmVhdGVfbWNwX3NlcnZlchArEh0KGWNhbl9jcmVhdGVfYWdlbnRfaW5zdGFuY2UQLBITCg9jYW5fY3JlYXRlX3RlYW0QLRIWChJjYW5fbWFuYWdlX2NyZWRpdHMQLiIECCEQISIECCIQIiIECAoQCiIECCcQJyoPY2FuX3VzZV9yZWNvcmRzKhRjYW5fY3JlYXRlX2RhdGFzdG9yZSoSY2FuX2NyZWF0ZV9wcm9qZWN0KhljYW5fc2V0X3B1YmxpY192aXNpYmlsaXR5KmIKB0lhbVJvbGUSGAoUaWFtX3JvbGVfdW5zcGVjaWZpZWQQABIJCgVvd25lchABEgkKBWFkbWluEAISCgoGbWVtYmVyEAMSCgoGdmlld2VyEAQSDwoLcGFydGljaXBhbnQQBWIGcHJvdG8z"),IamPermission;(function(IamPermission2){IamPermission2[IamPermission2.unspecified=0]="unspecified",IamPermission2[IamPermission2.can_view=1]="can_view",IamPermission2[IamPermission2.can_edit=2]="can_edit",IamPermission2[IamPermission2.can_delete=3]="can_delete",IamPermission2[IamPermission2.can_grant_access=4]="can_grant_access",IamPermission2[IamPermission2.can_view_access=5]="can_view_access",IamPermission2[IamPermission2.can_assign_roles=47]="can_assign_roles",IamPermission2[IamPermission2.can_create_agent=6]="can_create_agent",IamPermission2[IamPermission2.can_create_workflow=7]="can_create_workflow",IamPermission2[IamPermission2.can_create_session=8]="can_create_session",IamPermission2[IamPermission2.can_create_skill=9]="can_create_skill",IamPermission2[IamPermission2.can_create_idp=11]="can_create_idp",IamPermission2[IamPermission2.can_create_environment=12]="can_create_environment",IamPermission2[IamPermission2.can_create_identity_account=21]="can_create_identity_account",IamPermission2[IamPermission2.can_create_oauth_app=23]="can_create_oauth_app",IamPermission2[IamPermission2.can_create_platform_client=24]="can_create_platform_client",IamPermission2[IamPermission2.can_create_execution_in=13]="can_create_execution_in",IamPermission2[IamPermission2.can_create_instance=14]="can_create_instance",IamPermission2[IamPermission2.can_execute=15]="can_execute",IamPermission2[IamPermission2.can_read_secrets=16]="can_read_secrets",IamPermission2[IamPermission2.can_bootstrap_iam=17]="can_bootstrap_iam",IamPermission2[IamPermission2.can_manage_identity_accounts=18]="can_manage_identity_accounts",IamPermission2[IamPermission2.login_to_back_office=20]="login_to_back_office",IamPermission2[IamPermission2.can_connect=22]="can_connect",IamPermission2[IamPermission2.can_create_runner=25]="can_create_runner",IamPermission2[IamPermission2.can_delete_session=26]="can_delete_session",IamPermission2[IamPermission2.can_view_billing=27]="can_view_billing",IamPermission2[IamPermission2.can_manage_billing=28]="can_manage_billing",IamPermission2[IamPermission2.can_execute_billing_ops=29]="can_execute_billing_ops",IamPermission2[IamPermission2.can_create_agent_share=30]="can_create_agent_share",IamPermission2[IamPermission2.can_create_channel_app=31]="can_create_channel_app",IamPermission2[IamPermission2.can_manage_model_pricing=32]="can_manage_model_pricing",IamPermission2[IamPermission2.can_manage_cursor_accounts=35]="can_manage_cursor_accounts",IamPermission2[IamPermission2.can_participate=36]="can_participate",IamPermission2[IamPermission2.can_write_reserved_labels=37]="can_write_reserved_labels",IamPermission2[IamPermission2.can_view_provider_standing=38]="can_view_provider_standing",IamPermission2[IamPermission2.can_create_plugin=40]="can_create_plugin",IamPermission2[IamPermission2.can_manage_plans=41]="can_manage_plans",IamPermission2[IamPermission2.can_issue_license=42]="can_issue_license",IamPermission2[IamPermission2.can_create_mcp_server=43]="can_create_mcp_server",IamPermission2[IamPermission2.can_create_agent_instance=44]="can_create_agent_instance",IamPermission2[IamPermission2.can_create_team=45]="can_create_team",IamPermission2[IamPermission2.can_manage_credits=46]="can_manage_credits"})(IamPermission||(IamPermission={}));var IamPermissionSchema=enumDesc(file_ai_stigmer_iam_v1_enum,0),IamRole;(function(IamRole2){IamRole2[IamRole2.iam_role_unspecified=0]="iam_role_unspecified",IamRole2[IamRole2.owner=1]="owner",IamRole2[IamRole2.admin=2]="admin",IamRole2[IamRole2.member=3]="member",IamRole2[IamRole2.viewer=4]="viewer",IamRole2[IamRole2.participant=5]="participant"})(IamRole||(IamRole={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_authorization_config=fileDesc("CklhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2F1dGhvcml6YXRpb25fY29uZmlnLnByb3RvEi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kIn4KEFZpc2liaWxpdHlDb25maWcSGQoRc3VwcG9ydHNfcGxhdGZvcm0YAiABKAgSFAoMc3VwcG9ydHNfb3JnGAMgASgIEiIKGmRlZmF1bHRzX3RvX29yZ192aXNpYmlsaXR5GAQgASgISgQIARACUg9zdXBwb3J0c19wdWJsaWMiSgoUUGFyZW50UmVsYXRpb25Db25maWcSDAoEa2luZBgBIAEoCRIQCghyZWxhdGlvbhgCIAEoCRISCgpzcGVjX2ZpZWxkGAMgASgJIugEChNBdXRob3JpemF0aW9uQ29uZmlnEloKCnNjb3BlX3R5cGUYASABKA4yRi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkF1dGhvcml6YXRpb25TY29wZVR5cGUSWAoKb3duZXJfdHlwZRgCIAEoDjJELmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuT3duZXJBdHRyaWJ1dGlvblR5cGUSVAoGcGFyZW50GAMgASgLMkQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5QYXJlbnRSZWxhdGlvbkNvbmZpZxJgChJhZGRpdGlvbmFsX3BhcmVudHMYBCADKAsyRC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLlBhcmVudFJlbGF0aW9uQ29uZmlnElQKCnZpc2liaWxpdHkYBSABKAsyQC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLlZpc2liaWxpdHlDb25maWcSHgoWcmVxdWlyZXNfY3JlYXRvcl90dXBsZRgGIAEoCBIzCg9ncmFudGFibGVfcm9sZXMYByADKA4yGi5haS5zdGlnbWVyLmlhbS52MS5JYW1Sb2xlEjgKFHRlYW1fZ3JhbnRhYmxlX3JvbGVzGAggAygOMhouYWkuc3RpZ21lci5pYW0udjEuSWFtUm9sZSqFAgoWQXV0aG9yaXphdGlvblNjb3BlVHlwZRIoCiRBVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfVU5TUEVDSUZJRUQQABIlCiFBVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfUExBVEZPUk0QARIpCiVBVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfT1JHQU5JWkFUSU9OEAISIwofQVVUSE9SSVpBVElPTl9TQ09QRV9UWVBFX1BBUkVOVBADEicKI0FVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9PV05FUl9PTkxZEAQSIQodQVVUSE9SSVpBVElPTl9TQ09QRV9UWVBFX05PTkUQBSrJAQoUT3duZXJBdHRyaWJ1dGlvblR5cGUSJgoiT1dORVJfQVRUUklCVVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEiEKHU9XTkVSX0FUVFJJQlVUSU9OX1RZUEVfRElSRUNUEAESJAogT1dORVJfQVRUUklCVVRJT05fVFlQRV9JTkhFUklURUQQAhIfChtPV05FUl9BVFRSSUJVVElPTl9UWVBFX1NFTEYQAxIfChtPV05FUl9BVFRSSUJVVElPTl9UWVBFX05PTkUQBEIaQhhBdXRob3JpemF0aW9uQ29uZmlnUHJvdG9iBnByb3RvMw",[file_ai_stigmer_iam_v1_enum]);var AuthorizationScopeType;(function(AuthorizationScopeType2){AuthorizationScopeType2[AuthorizationScopeType2.UNSPECIFIED=0]="UNSPECIFIED",AuthorizationScopeType2[AuthorizationScopeType2.PLATFORM=1]="PLATFORM",AuthorizationScopeType2[AuthorizationScopeType2.ORGANIZATION=2]="ORGANIZATION",AuthorizationScopeType2[AuthorizationScopeType2.PARENT=3]="PARENT",AuthorizationScopeType2[AuthorizationScopeType2.OWNER_ONLY=4]="OWNER_ONLY",AuthorizationScopeType2[AuthorizationScopeType2.NONE=5]="NONE"})(AuthorizationScopeType||(AuthorizationScopeType={}));var OwnerAttributionType;(function(OwnerAttributionType2){OwnerAttributionType2[OwnerAttributionType2.UNSPECIFIED=0]="UNSPECIFIED",OwnerAttributionType2[OwnerAttributionType2.DIRECT=1]="DIRECT",OwnerAttributionType2[OwnerAttributionType2.INHERITED=2]="INHERITED",OwnerAttributionType2[OwnerAttributionType2.SELF=3]="SELF",OwnerAttributionType2[OwnerAttributionType2.NONE=4]="NONE"})(OwnerAttributionType||(OwnerAttributionType={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind=fileDesc("CkZhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2FwaV9yZXNvdXJjZV9raW5kLnByb3RvEi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kIswDChNBcGlSZXNvdXJjZUtpbmRNZXRhEk8KBWdyb3VwGAEgASgOMkAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUdyb3VwElMKB3ZlcnNpb24YAiABKA4yQi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlVmVyc2lvbhIMCgRuYW1lGAMgASgJEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRIRCglpZF9wcmVmaXgYBSABKAkSFAoMaXNfdmVyc2lvbmVkGAYgASgIEhoKEm5vdF9zZWFyY2hfaW5kZXhlZBgHIAEoCBJKCgR0aWVyGAggASgOMjwuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5SZXNvdXJjZVRpZXISWgoNYXV0aG9yaXphdGlvbhgJIAEoCzJDLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuQXV0aG9yaXphdGlvbkNvbmZpZypCChJBcGlSZXNvdXJjZVZlcnNpb24SJAogYXBpX3Jlc291cmNlX3ZlcnNpb25fdW5zcGVjaWZpZWQQABIGCgJ2MRABKl4KDFJlc291cmNlVGllchIdChlyZXNvdXJjZV90aWVyX3Vuc3BlY2lmaWVkEAASDwoLb3Blbl9zb3VyY2UQARIOCgpjbG91ZF9vbmx5EAISDgoKZW50ZXJwcmlzZRADKkEKD1BsYXRmb3JtSWRWYWx1ZRIhCh1wbGF0Zm9ybV9pZF92YWx1ZV91bnNwZWNpZmllZBAAEgsKB3N0aWdtZXIQASqJFAoPQXBpUmVzb3VyY2VLaW5kEh0KGWFwaV9yZXNvdXJjZV9raW5kX3Vua25vd24QABJbChRhcGlfcmVzb3VyY2VfdmVyc2lvbhABGkGq/ys9CAEQARoSQXBpUmVzb3VyY2VWZXJzaW9uIhRBUEkgUmVzb3VyY2UgVmVyc2lvbioDdmVyOAFAAkoECAUQBBI/CgppYW1fcG9saWN5EAoaL6r/KysIAhABGglJYW1Qb2xpY3kiCklBTSBQb2xpY3kqBGlhbXA4AUABSgQIAhABElAKEGlkZW50aXR5X2FjY291bnQQCxo6qv8rNggCEAEaD0lkZW50aXR5QWNjb3VudCIQSWRlbnRpdHkgQWNjb3VudCoDaWRhOAFAAUoECAQQAxI1CgdhcGlfa2V5EAwaKKr/KyQIAhABGgZBcGlLZXkiB0FQSSBLZXkqA2tleTgBQAFKBAgEEAESPwoKaW52aXRhdGlvbhAUGi+q/ysrCAIQARoKSW52aXRhdGlvbiIKSW52aXRhdGlvbioDaW52OAFAA0oECAIQBBJWChFpZGVudGl0eV9wcm92aWRlchAVGj+q/ys7CAIQARoQSWRlbnRpdHlQcm92aWRlciIRSWRlbnRpdHkgUHJvdmlkZXIqA2lkcDgBQANKBwgCEAQ6AQQSPwoJb2F1dGhfYXBwEBYaMKr/KywIAhABGghPQXV0aEFwcCIJT0F1dGggQXBwKgRvYXBwOAFAAUoHCAIQBDoBBBJQCg9wbGF0Zm9ybV9jbGllbnQQFxo7qv8rNwgCEAEaDlBsYXRmb3JtQ2xpZW50Ig9QbGF0Zm9ybSBDbGllbnQqA3BjbDgBQAFKBwgCEAQ6AQQSLwoEdGVhbRAYGiWq/yshCAIQARoEVGVhbSIEVGVhbSoCdG04AUADSgcIAhAEOgEDEkkKDG9yZ2FuaXphdGlvbhAeGjeq/yszCAMQARoMT3JnYW5pemF0aW9uIgxPcmdhbml6YXRpb24qA29yZ0ABSgoIBBABOgQBAgMEEjkKCHBsYXRmb3JtEB8aK6r/KycIAxABGghQbGF0Zm9ybSIIUGxhdGZvcm0qA3BsdDgBQANKBAgFEAQSPQoFYWdlbnQQKBoyqv8rLggBEAEaBUFnZW50IgVBZ2VudCoDYWd0QAFKEwgCEAEqBhABGAEgAToCAQRCAQQSawoPYWdlbnRfZXhlY3V0aW9uECkaVqr/K1IIARABGg5BZ2VudEV4ZWN1dGlvbiIPQWdlbnQgRXhlY3V0aW9uKgNhZXhAAUokCAMQAhoeCgdzZXNzaW9uEgdzZXNzaW9uGgpzZXNzaW9uX2lkEjgKB3Nlc3Npb24QKhorqv8rJwgBEAEaB1Nlc3Npb24iB1Nlc3Npb24qA3Nlc0ABSggIAhABOgIBBBI/CgVza2lsbBArGjSq/yswCAEQARoFU2tpbGwiBVNraWxsKgNza2wwAUABShMIAhABKgYQARgBIAE6AgEEQgEEEksKCm1jcF9zZXJ2ZXIQLBo7qv8rNwgBEAEaCU1jcFNlcnZlciIKTUNQIFNlcnZlcioDbWNwQAFKEwgCEAEqBhABGAEgAToCAQRCAQQSbQoOYWdlbnRfaW5zdGFuY2UQLRpZqv8rVQgBEAEaDUFnZW50SW5zdGFuY2UiDkFnZW50IEluc3RhbmNlKgNhaW5AAUopCAIQASIYCgVhZ2VudBIFYWdlbnQaCGFnZW50X2lkKgIYAToCAQRCAQQSRQoLYWdlbnRfc2hhcmUQLho0qv8rMAgBEAEaCkFnZW50U2hhcmUiC0FnZW50IFNoYXJlKgNhc2g4AUABSggIAhABOgIBBBJQCg1hZ2VudF9jaGFubmVsEC8aPar/KzkIARABGgxBZ2VudENoYW5uZWwiDUFnZW50IENoYW5uZWwqA2FjaDgBQAFKDQgCEAE6AwEEBUICBAUSRwoLY2hhbm5lbF9hcHAQMBo2qv8rMggBEAEaCkNoYW5uZWxBcHAiC0NoYW5uZWwgQXBwKgVjaGFwcDgBQAFKCAgCEAE6AgEEEkgKCHdvcmtmbG93EDIaOqr/KzYIARABGghXb3JrZmxvdyIIV29ya2Zsb3cqA3dmbDABQAFKEwgCEAEqBhABGAEgAToCAQRCAQQSfwoRd29ya2Zsb3dfaW5zdGFuY2UQMxpoqv8rZAgBEAEaEFdvcmtmbG93SW5zdGFuY2UiEVdvcmtmbG93IEluc3RhbmNlKgN3aW5AAUoyCAIQASIhCgh3b3JrZmxvdxIId29ya2Zsb3caC3dvcmtmbG93X2lkKgIYAToCAQRCAQQSmgEKEndvcmtmbG93X2V4ZWN1dGlvbhA0GoEBqv8rfQgBEAEaEVdvcmtmbG93RXhlY3V0aW9uIhJXb3JrZmxvdyBFeGVjdXRpb24qA3dleEABSkkIAhABIjwKEXdvcmtmbG93X2luc3RhbmNlEhF3b3JrZmxvd19pbnN0YW5jZRoUd29ya2Zsb3dfaW5zdGFuY2VfaWQ6AgEEQgEEEkoKC2Vudmlyb25tZW50EDUaOar/KzUIARABGgtFbnZpcm9ubWVudCILRW52aXJvbm1lbnQqA2VudkABSg4IAhABKgIYATABOgIBBBI9CghhcnRpZmFjdBA3Gi+q/ysrCAEQARoIQXJ0aWZhY3QiCEFydGlmYWN0KgNhcnQ4AUABSggIAhABOgIBBBJSChFleGVjdXRpb25fY29udGV4dBA2Gjuq/ys3CAEQARoQRXhlY3V0aW9uQ29udGV4dCIRRXhlY3V0aW9uIENvbnRleHQqBGVjdHhAAUoECAQQARJACghzY2hlZHVsZRA4GjKq/ysuCAEQARoIU2NoZWR1bGUiCFNjaGVkdWxlKgNzY2g4AUABSgsIAhABOgIBBEIBBBJtCgZtZW1vcnkQORphqv8rXQgBEAEaBk1lbW9yeSIGTWVtb3J5KgNtZW04AUABSj4IAhAEIjgKEGlkZW50aXR5X2FjY291bnQSB3N1YmplY3QaG3N1YmplY3RfaWRlbnRpdHlfYWNjb3VudF9pZBJCCgZwbHVnaW4QOho2qv8rMggBEAEaBlBsdWdpbiIGUGx1Z2luKgNwbGcwAUABShMIAhABKgYQARgBIAE6AgEEQgEEEi0KBHBsYW4QRhojqv8rHwgEEAEaBFBsYW4iBFBsYW4qA3BsbjgBQAJKBAgFEAQSRQoMc3Vic2NyaXB0aW9uEEcaM6r/Ky8IBBABGgxTdWJzY3JpcHRpb24iDFN1YnNjcmlwdGlvbioDc3ViOAFAAkoECAIQBBI2CgdsaWNlbnNlEEgaKar/KyUIBBABGgdMaWNlbnNlIgdMaWNlbnNlKgNsaWM4AUACSgQIBRAEIgQIMRAxIgQIPBA8KglkYXRhc3RvcmUqB3Byb2plY3Q6hQEKCWtpbmRfbWV0YRIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGPW/BSABKAsyQy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZE1ldGFSCGtpbmRNZXRhQhtCGUFwaVJlc291cmNlS2luZE91dGVyQ2xhc3NiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_group,file_ai_stigmer_commons_apiresource_apiresourcekind_authorization_config,file_google_protobuf_descriptor]);var ApiResourceVersion;(function(ApiResourceVersion2){ApiResourceVersion2[ApiResourceVersion2.api_resource_version_unspecified=0]="api_resource_version_unspecified",ApiResourceVersion2[ApiResourceVersion2.v1=1]="v1"})(ApiResourceVersion||(ApiResourceVersion={}));var ResourceTier;(function(ResourceTier2){ResourceTier2[ResourceTier2.resource_tier_unspecified=0]="resource_tier_unspecified",ResourceTier2[ResourceTier2.open_source=1]="open_source",ResourceTier2[ResourceTier2.cloud_only=2]="cloud_only",ResourceTier2[ResourceTier2.enterprise=3]="enterprise"})(ResourceTier||(ResourceTier={}));var PlatformIdValue;(function(PlatformIdValue2){PlatformIdValue2[PlatformIdValue2.platform_id_value_unspecified=0]="platform_id_value_unspecified",PlatformIdValue2[PlatformIdValue2.stigmer=1]="stigmer"})(PlatformIdValue||(PlatformIdValue={}));var ApiResourceKind;(function(ApiResourceKind2){ApiResourceKind2[ApiResourceKind2.api_resource_kind_unknown=0]="api_resource_kind_unknown",ApiResourceKind2[ApiResourceKind2.api_resource_version=1]="api_resource_version",ApiResourceKind2[ApiResourceKind2.iam_policy=10]="iam_policy",ApiResourceKind2[ApiResourceKind2.identity_account=11]="identity_account",ApiResourceKind2[ApiResourceKind2.api_key=12]="api_key",ApiResourceKind2[ApiResourceKind2.invitation=20]="invitation",ApiResourceKind2[ApiResourceKind2.identity_provider=21]="identity_provider",ApiResourceKind2[ApiResourceKind2.oauth_app=22]="oauth_app",ApiResourceKind2[ApiResourceKind2.platform_client=23]="platform_client",ApiResourceKind2[ApiResourceKind2.team=24]="team",ApiResourceKind2[ApiResourceKind2.organization=30]="organization",ApiResourceKind2[ApiResourceKind2.platform=31]="platform",ApiResourceKind2[ApiResourceKind2.agent=40]="agent",ApiResourceKind2[ApiResourceKind2.agent_execution=41]="agent_execution",ApiResourceKind2[ApiResourceKind2.session=42]="session",ApiResourceKind2[ApiResourceKind2.skill=43]="skill",ApiResourceKind2[ApiResourceKind2.mcp_server=44]="mcp_server",ApiResourceKind2[ApiResourceKind2.agent_instance=45]="agent_instance",ApiResourceKind2[ApiResourceKind2.agent_share=46]="agent_share",ApiResourceKind2[ApiResourceKind2.agent_channel=47]="agent_channel",ApiResourceKind2[ApiResourceKind2.channel_app=48]="channel_app",ApiResourceKind2[ApiResourceKind2.workflow=50]="workflow",ApiResourceKind2[ApiResourceKind2.workflow_instance=51]="workflow_instance",ApiResourceKind2[ApiResourceKind2.workflow_execution=52]="workflow_execution",ApiResourceKind2[ApiResourceKind2.environment=53]="environment",ApiResourceKind2[ApiResourceKind2.artifact=55]="artifact",ApiResourceKind2[ApiResourceKind2.execution_context=54]="execution_context",ApiResourceKind2[ApiResourceKind2.schedule=56]="schedule",ApiResourceKind2[ApiResourceKind2.memory=57]="memory",ApiResourceKind2[ApiResourceKind2.plugin=58]="plugin",ApiResourceKind2[ApiResourceKind2.plan=70]="plan",ApiResourceKind2[ApiResourceKind2.subscription=71]="subscription",ApiResourceKind2[ApiResourceKind2.license=72]="license"})(ApiResourceKind||(ApiResourceKind={}));var ApiResourceKindSchema=enumDesc(file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,3),kind_meta=extDesc(file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,0);var file_ai_stigmer_commons_rpc_authorization_config=fileDesc("CjFhaS9zdGlnbWVyL2NvbW1vbnMvcnBjL2F1dGhvcml6YXRpb25fY29uZmlnLnByb3RvEhZhaS5zdGlnbWVyLmNvbW1vbnMucnBjIv4BChZScGNBdXRob3JpemF0aW9uQ29uZmlnEjQKCnBlcm1pc3Npb24YASABKA4yIC5haS5zdGlnbWVyLmlhbS52MS5JYW1QZXJtaXNzaW9uElYKDXJlc291cmNlX2tpbmQYAiABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBIaChJyZXNvdXJjZV9raW5kX3BhdGgYAyABKAkSEgoKZmllbGRfcGF0aBgEIAEoCRIRCgllcnJvcl9tc2cYBSABKAkSEwoLcmVzb3VyY2VfaWQYBiABKAliBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_iam_v1_enum]);var file_ai_stigmer_commons_rpc_method_options=fileDesc("CithaS9zdGlnbWVyL2NvbW1vbnMvcnBjL21ldGhvZF9vcHRpb25zLnByb3RvEhZhaS5zdGlnbWVyLmNvbW1vbnMucnBjOmgKBmNvbmZpZxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGIiHAyABKAsyLi5haS5zdGlnbWVyLmNvbW1vbnMucnBjLlJwY0F1dGhvcml6YXRpb25Db25maWdSBmNvbmZpZzo9Cglpc19wdWJsaWMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiJhwMgASgIUghpc1B1YmxpYzpUChVpc19za2lwX2F1dGhvcml6YXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiKhwMgASgIUhNpc1NraXBBdXRob3JpemF0aW9uYgZwcm90bzM",[file_ai_stigmer_commons_rpc_authorization_config,file_google_protobuf_descriptor]),config=extDesc(file_ai_stigmer_commons_rpc_method_options,0),is_public=extDesc(file_ai_stigmer_commons_rpc_method_options,1),is_skip_authorization=extDesc(file_ai_stigmer_commons_rpc_method_options,2);var file_buf_validate_validate=fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSL4FgoKRmxvYXRSdWxlcxJ9CgVjb25zdBgBIAEoAkJuwkhrCmkKC2Zsb2F0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSmQEKAmx0GAIgASgCQooBwkiGAQqDAQoIZmxvYXQubHQadyFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASqQEKA2x0ZRgDIAEoAkKZAcJIlQEKkgEKCWZsb2F0Lmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtAHCgJndBgEIAEoAkLBB8JIvQcKhgEKCGZsb2F0Lmd0GnohaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq9AQoLZmxvYXQuZ3RfbHQarQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrHAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKDGZsb2F0Lmd0X2x0ZRq8AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCtcBChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGrwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARKcCAoDZ3RlGAUgASgCQowIwkiICAqVAQoJZmxvYXQuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCswBCgxmbG9hdC5ndGVfbHQauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtYBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoNZmxvYXQuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5gEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGsoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygCQm3CSGoKaAoIZmxvYXQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoAkJgwkhdClsKDGZsb2F0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEm8KBmZpbml0ZRgIIAEoCEJfwkhcCloKDGZsb2F0LmZpbml0ZRpKcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAnbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIooXCgtEb3VibGVSdWxlcxJ+CgVjb25zdBgBIAEoAUJvwkhsCmoKDGRvdWJsZS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEpoBCgJsdBgCIAEoAUKLAcJIhwEKhAEKCWRvdWJsZS5sdBp3IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKqAQoDbHRlGAMgASgBQpoBwkiWAQqTAQoKZG91YmxlLmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtUHCgJndBgEIAEoAULGB8JIwgcKhwEKCWRvdWJsZS5ndBp6IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKvgEKDGRvdWJsZS5ndF9sdBqtAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsgBChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKDWRvdWJsZS5ndF9sdGUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrYAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEqEICgNndGUYBSABKAFCkQjCSI0ICpYBCgpkb3VibGUuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCs0BCg1kb3VibGUuZ3RlX2x0GrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrXAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BCg5kb3VibGUuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5wEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoAUJuwkhrCmkKCWRvdWJsZS5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygBQmHCSF4KXAoNZG91YmxlLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnAKBmZpbml0ZRgIIAEoCEJgwkhdClsKDWRvdWJsZS5maW5pdGUaSnJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ211c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4isBQKCkludDMyUnVsZXMSfQoFY29uc3QYASABKAVCbsJIawppCgtpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoQBCgJsdBgCIAEoBUJ2wkhzCnEKCGludDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpUBCgNsdGUYAyABKAVChQHCSIEBCn8KCWludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS+QYKAmd0GAQgASgFQuoGwkjmBgp0CghpbnQzMi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrQEKC2ludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq1AQoVaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKDGludDMyLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxQEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsUHCgNndGUYBSABKAVCtQfCSLEHCoIBCglpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq8AQoMaW50MzIuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsQBChZpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoNaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrUAQoXaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeQoCaW4YBiADKAVCbcJIagpoCghpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScAoGbm90X2luGAcgAygFQmDCSF0KWwoMaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIrAUCgpJbnQ2NFJ1bGVzEn0KBWNvbnN0GAEgASgDQm7CSGsKaQoLaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKEAQoCbHQYAiABKANCdsJIcwpxCghpbnQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKVAQoDbHRlGAMgASgDQoUBwkiBAQp/CglpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvkGCgJndBgEIAEoA0LqBsJI5gYKdAoIaW50NjQuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq0BCgtpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtQEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BCgxpbnQ2NC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsUBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLFBwoDZ3RlGAUgASgDQrUHwkixBwqCAQoJaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvAEKDGludDY0Lmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrEAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKDWludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1AEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygDQm3CSGoKaAoIaW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoA0JgwkhdClsKDGludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLVUludDMyUnVsZXMSfgoFY29uc3QYASABKA1Cb8JIbApqCgx1aW50MzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKA1Cd8JIdApyCgl1aW50MzIubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoDUKHAcJIgwEKgAEKCnVpbnQzMi5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoDULvBsJI6wYKdQoJdWludDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMdWludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg11aW50MzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKA1CugfCSLYHCoMBCgp1aW50MzIuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXVpbnQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOdWludDMyLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoDUJuwkhrCmkKCXVpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygNQmHCSF4KXAoNdWludDMyLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwhQKC1VJbnQ2NFJ1bGVzEn4KBWNvbnN0GAEgASgEQm/CSGwKagoMdWludDY0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycShQEKAmx0GAIgASgEQnfCSHQKcgoJdWludDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpcBCgNsdGUYAyABKARChwHCSIMBCoABCgp1aW50NjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL+BgoCZ3QYBCABKARC7wbCSOsGCnUKCXVpbnQ2NC5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrgEKDHVpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtgEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoNdWludDY0Lmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxgEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLKBwoDZ3RlGAUgASgEQroHwki2BwqDAQoKdWludDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr0BCg11aW50NjQuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsUBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKDnVpbnQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtUBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESegoCaW4YBiADKARCbsJIawppCgl1aW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnEKBm5vdF9pbhgHIAMoBEJhwkheClwKDXVpbnQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygEQhvCSBgKFgoOdWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsIUCgtTSW50MzJSdWxlcxJ+CgVjb25zdBgBIAEoEUJvwkhsCmoKDHNpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoUBCgJsdBgCIAEoEUJ3wkh0CnIKCXNpbnQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKXAQoDbHRlGAMgASgRQocBwkiDAQqAAQoKc2ludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS/gYKAmd0GAQgASgRQu8GwkjrBgp1CglzaW50MzIuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq4BCgxzaW50MzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrYBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKDXNpbnQzMi5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsYBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESygcKA2d0ZRgFIAEoEUK6B8JItgcKgwEKCnNpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq9AQoNc2ludDMyLmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrFAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BCg5zaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrVAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnoKAmluGAYgAygRQm7CSGsKaQoJc2ludDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJxCgZub3RfaW4YByADKBFCYcJIXgpcCg1zaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLU0ludDY0UnVsZXMSfgoFY29uc3QYASABKBJCb8JIbApqCgxzaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKBJCd8JIdApyCglzaW50NjQubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoEkKHAcJIgwEKgAEKCnNpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoEkLvBsJI6wYKdQoJc2ludDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMc2ludDY0Lmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg1zaW50NjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKBJCugfCSLYHCoMBCgpzaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXNpbnQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3NpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOc2ludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHNpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoEkJuwkhrCmkKCXNpbnQ2NC5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygSQmHCSF4KXAoNc2ludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkMzJSdWxlcxJ/CgVjb25zdBgBIAEoB0JwwkhtCmsKDWZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAdCeMJIdQpzCgpmaXhlZDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAdCiAHCSIQBCoEBCgtmaXhlZDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgHQvQGwkjwBgp2CgpmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQzMi5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgHQr8Hwki7BwqEAQoLZml4ZWQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkMzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoB0JvwkhsCmoKCmZpeGVkMzIuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoB0JiwkhfCl0KDmZpeGVkMzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoB0IcwkgZChcKD2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkNjRSdWxlcxJ/CgVjb25zdBgBIAEoBkJwwkhtCmsKDWZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAZCeMJIdQpzCgpmaXhlZDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAZCiAHCSIQBCoEBCgtmaXhlZDY0Lmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgGQvQGwkjwBgp2CgpmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgGQr8Hwki7BwqEAQoLZml4ZWQ2NC5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkNjQuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoBkJvwkhsCmoKCmZpeGVkNjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoBkJiwkhfCl0KDmZpeGVkNjQubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDMyUnVsZXMSgAEKBWNvbnN0GAEgASgPQnHCSG4KbAoOc2ZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKA9CecJIdgp0CgtzZml4ZWQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgPQokBwkiFAQqCAQoMc2ZpeGVkMzIubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKA9C+QbCSPUGCncKC3NmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkMzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoD0LEB8JIwAcKhQEKDHNmaXhlZDMyLmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQzMi5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoD0JwwkhtCmsKC3NmaXhlZDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKA9CY8JIYApeCg9zZml4ZWQzMi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDY0UnVsZXMSgAEKBWNvbnN0GAEgASgQQnHCSG4KbAoOc2ZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKBBCecJIdgp0CgtzZml4ZWQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgQQokBwkiFAQqCAQoMc2ZpeGVkNjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKBBC+QbCSPUGCncKC3NmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkNjQuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoEELEB8JIwAcKhQEKDHNmaXhlZDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoEEJwwkhtCmsKC3NmaXhlZDY0LmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKBBCY8JIYApeCg9zZml4ZWQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwAEKCUJvb2xSdWxlcxJ8CgVjb25zdBgBIAEoCEJtwkhqCmgKCmJvb2wuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi6jwKC1N0cmluZ1J1bGVzEoABCgVjb25zdBgBIAEoCUJxwkhuCmwKDHN0cmluZy5jb25zdBpcdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycScQoDbGVuGBMgASgEQmTCSGEKXwoKc3RyaW5nLmxlbhpRdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ211c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEokBCgdtaW5fbGVuGAIgASgEQnjCSHUKcwoOc3RyaW5nLm1pbl9sZW4aYXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg5zdHJpbmcubWF4X2xlbhpgdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ211c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEosBCglsZW5fYnl0ZXMYFCABKARCeMJIdQpzChBzdHJpbmcubGVuX2J5dGVzGl91aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ211c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKUAQoJbWluX2J5dGVzGAQgASgEQoABwkh9CnsKEHN0cmluZy5taW5fYnl0ZXMaZ3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSkgEKCW1heF9ieXRlcxgFIAEoBEJ/wkh8CnoKEHN0cmluZy5tYXhfYnl0ZXMaZnVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2J5dGVzXSkgOiAnJxKHAQoHcGF0dGVybhgGIAEoCUJ2wkhzCnEKDnN0cmluZy5wYXR0ZXJuGl8hdGhpcy5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ2RvZXMgbm90IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxJ+CgZwcmVmaXgYByABKAlCbsJIawppCg1zdHJpbmcucHJlZml4GlghdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEnwKBnN1ZmZpeBgIIAEoCUJswkhpCmcKDXN0cmluZy5zdWZmaXgaViF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEooBCghjb250YWlucxgJIAEoCUJ4wkh1CnMKD3N0cmluZy5jb250YWlucxpgIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ2RvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpEBCgxub3RfY29udGFpbnMYFyABKAlCe8JIeAp2ChNzdHJpbmcubm90X2NvbnRhaW5zGl90aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAnY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJxJ6CgJpbhgKIAMoCUJuwkhrCmkKCXN0cmluZy5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAsgAygJQmHCSF4KXAoNc3RyaW5nLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEtkBCgVlbWFpbBgMIAEoCELHAcJIwwEKWwoMc3RyaW5nLmVtYWlsEh1tdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLhAQoIaG9zdG5hbWUYDSABKAhCzAHCSMgBCl8KD3N0cmluZy5ob3N0bmFtZRIYbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLBAQoCaXAYDiABKAhCsgHCSK4BCk8KCXN0cmluZy5pcBIabXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS0AEKBGlwdjQYDyABKAhCvwHCSLsBClYKC3N0cmluZy5pcHY0EhxtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtABCgRpcHY2GBAgASgIQr8Bwki7AQpWCgtzdHJpbmcuaXB2NhIcbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK5AQoDdXJpGBEgASgIQqkBwkilAQpLCgpzdHJpbmcudXJpEhNtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmoKB3VyaV9yZWYYEiABKAhCV8JIVApSCg5zdHJpbmcudXJpX3JlZhIdbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEokCCgdhZGRyZXNzGBUgASgIQvUBwkjxAQp7Cg5zdHJpbmcuYWRkcmVzcxInbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKSAgoEdXVpZBgWIAEoCEKBAsJI/QEKnwEKC3N0cmluZy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS6gEKBXR1dWlkGCEgASgIQtgBwkjUAQptCgxzdHJpbmcudHV1aWQSHG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASkAIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvIBwkjuAQpyChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SGW11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLJAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKpAsJIpQIKjQEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEi9tdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEskCChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQqkCwkilAgqNAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SL211c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS7AEKCWlwX3ByZWZpeBgdIAEoCELWAcJI0gEKZgoQc3RyaW5nLmlwX3ByZWZpeBIZbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABL9AQoLaXB2NF9wcmVmaXgYHiABKAhC5QHCSOEBCm8KEnN0cmluZy5pcHY0X3ByZWZpeBIbbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAAS/QEKC2lwdjZfcHJlZml4GB8gASgIQuUBwkjhAQpvChJzdHJpbmcuaXB2Nl9wcmVmaXgSG211c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEq8CCg1ob3N0X2FuZF9wb3J0GCAgASgIQpUCwkiRAgqTAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSO211c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEu4BCgR1bGlkGCMgASgIQt0BwkjZAQp8CgtzdHJpbmcudWxpZBIUbXVzdCBiZSBhIHZhbGlkIFVMSUQaVyFydWxlcy51bGlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQnKQpZChFzdHJpbmcudWxpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVMSUQaGSFydWxlcy51bGlkIHx8IHRoaXMgIT0gJydIABLUAgoMcHJvdG9idWZfZnFuGCUgASgIQrsCwki3AgqvAQoTc3RyaW5nLnByb3RvYnVmX2ZxbhItbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lGmkhcnVsZXMucHJvdG9idWZfZnFuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeW0EtWmEtel9dW0EtWmEtel8wLTldKihcXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKSokJykKggEKGXN0cmluZy5wcm90b2J1Zl9mcW5fZW1wdHkSQnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZRohIXJ1bGVzLnByb3RvYnVmX2ZxbiB8fCB0aGlzICE9ICcnSAASkQMKEHByb3RvYnVmX2RvdF9mcW4YJiABKAhC9ALCSPACCs0BChdzdHJpbmcucHJvdG9idWZfZG90X2ZxbhJAbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lIHdpdGggYSBsZWFkaW5nIGRvdBpwIXJ1bGVzLnByb3RvYnVmX2RvdF9mcW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15cXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKFxcLltBLVphLXpfXVtBLVphLXpfMC05XSopKiQnKQqdAQodc3RyaW5nLnByb3RvYnVmX2RvdF9mcW5fZW1wdHkSVXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZSB3aXRoIGEgbGVhZGluZyBkb3QaJSFydWxlcy5wcm90b2J1Zl9kb3RfZnFuIHx8IHRoaXMgIT0gJydIABKcBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QuUEwkjhBArqAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrhAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEiFtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIt0RCgpCeXRlc1J1bGVzEnoKBWNvbnN0GAEgASgMQmvCSGgKZgoLYnl0ZXMuY29uc3QaV3RoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgYmUgJXgnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxJrCgNsZW4YDSABKARCXsJIWwpZCglieXRlcy5sZW4aTHVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICdtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSgwEKB21pbl9sZW4YAiABKARCcsJIbwptCg1ieXRlcy5taW5fbGVuGlx1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAnbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKCAQoHbWF4X2xlbhgDIAEoBEJxwkhuCmwKDWJ5dGVzLm1heF9sZW4aW3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSigEKB3BhdHRlcm4YBCABKAlCecJIdgp0Cg1ieXRlcy5wYXR0ZXJuGmMhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAnbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSewoGcHJlZml4GAUgASgMQmvCSGgKZgoMYnl0ZXMucHJlZml4GlYhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ5CgZzdWZmaXgYBiABKAxCacJIZgpkCgxieXRlcy5zdWZmaXgaVCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxJ9Cghjb250YWlucxgHIAEoDEJrwkhoCmYKDmJ5dGVzLmNvbnRhaW5zGlQhdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAnZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSoQEKAmluGAggAygMQpQBwkiQAQqNAQoIYnl0ZXMuaW4agAFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJwCgZub3RfaW4YCSADKAxCYMJIXQpbCgxieXRlcy5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLlAQoCaXAYCiABKAhC1gHCSNIBCm4KCGJ5dGVzLmlwEhptdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3gEKBGlwdjQYCyABKAhCzQHCSMkBCl8KCmJ5dGVzLmlwdjQSHG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3wEKBGlwdjYYDCABKAhCzgHCSMoBCmAKCmJ5dGVzLmlwdjYSHG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEs8BCgR1dWlkGA8gASgIQr4Bwki6AQpYCgpieXRlcy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLBAwoJRW51bVJ1bGVzEnwKBWNvbnN0GAEgASgFQm3CSGoKaAoKZW51bS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ4CgJpbhgDIAMoBUJswkhpCmcKB2VudW0uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEm8KBm5vdF9pbhgEIAMoBUJfwkhcCloKC2VudW0ubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIu0DCg1SZXBlYXRlZFJ1bGVzEpYBCgltaW5faXRlbXMYASABKARCggHCSH8KfQoScmVwZWF0ZWQubWluX2l0ZW1zGmd1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICdtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEpwBCgltYXhfaXRlbXMYAiABKARCiAHCSIQBCoEBChJyZXBlYXRlZC5tYXhfaXRlbXMaa3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ211c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIr8WCg1EdXJhdGlvblJ1bGVzEpsBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJxwkhuCmwKDmR1cmF0aW9uLmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSogEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnnCSHYKdAoLZHVyYXRpb24ubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAAStAEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKJAcJIhQEKggEKDGR1cmF0aW9uLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASowcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQvkGwkj1Bgp3CgtkdXJhdGlvbi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKsAEKDmR1cmF0aW9uLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq4AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwAEKD2R1cmF0aW9uLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKyAEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu8HCgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CxAfCSMAHCoUBCgxkdXJhdGlvbi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq/AQoPZHVyYXRpb24uZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCscBChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrPAQoQZHVyYXRpb24uZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrXAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESlwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnDCSG0KawoLZHVyYXRpb24uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEo4BCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CY8JIYApeCg9kdXJhdGlvbi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i6wUKDkZpZWxkTWFza1J1bGVzErkBCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCjQHCSIkBCoYBChBmaWVsZF9tYXNrLmNvbnN0GnJ0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICdtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS0wEKAmluGAIgAygJQsYBwkjCAQq/AQoNZmllbGRfbWFzay5pbhqtASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICdtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEu0BCgZub3RfaW4YAyADKAlC3AHCSNgBCtUBChFmaWVsZF9tYXNrLm5vdF9pbhq/ASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ211c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIisBcKDlRpbWVzdGFtcFJ1bGVzEp0BCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCcsJIbwptCg90aW1lc3RhbXAuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKkAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQnrCSHcKdQoMdGltZXN0YW1wLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErYBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQooBwkiGAQqDAQoNdGltZXN0YW1wLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASZgoGbHRfbm93GAcgASgIQlTCSFEKTwoQdGltZXN0YW1wLmx0X25vdxo7KHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICdtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABKpBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQv4Gwkj6Bgp4Cgx0aW1lc3RhbXAuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrEBCg90aW1lc3RhbXAuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrkBChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwQEKEHRpbWVzdGFtcC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCskBChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES9QcKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCyQfCSMUHCoYBCg10aW1lc3RhbXAuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwAEKEHRpbWVzdGFtcC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKyAEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrQAQoRdGltZXN0YW1wLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2AEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJpCgZndF9ub3cYCCABKAhCV8JIVApSChB0aW1lc3RhbXAuZ3Rfbm93Gj4ocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErEBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ChQHCSIEBCn8KEHRpbWVzdGFtcC53aXRoaW4aa3RoaXMgPCBub3ctcnVsZXMud2l0aGluIHx8IHRoaXMgPiBub3crcnVsZXMud2l0aGluID8gJ211c3QgYmUgd2l0aGluICVzIG9mIG5vdycuZm9ybWF0KFtydWxlcy53aXRoaW5dKSA6ICcnEksKB2V4YW1wbGUYCiADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQh7CSBsKGQoRdGltZXN0YW1wLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIjkKClZpb2xhdGlvbnMSKwoKdmlvbGF0aW9ucxgBIAMoCzIXLmJ1Zi52YWxpZGF0ZS5WaW9sYXRpb24inwEKCVZpb2xhdGlvbhImCgVmaWVsZBgFIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSJQoEcnVsZRgGIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSDwoHcnVsZV9pZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg8KB2Zvcl9rZXkYBCABKAhKBAgBEAJSCmZpZWxkX3BhdGgiPQoJRmllbGRQYXRoEjAKCGVsZW1lbnRzGAEgAygLMh4uYnVmLnZhbGlkYXRlLkZpZWxkUGF0aEVsZW1lbnQi6QIKEEZpZWxkUGF0aEVsZW1lbnQSFAoMZmllbGRfbnVtYmVyGAEgASgFEhIKCmZpZWxkX25hbWUYAiABKAkSPgoKZmllbGRfdHlwZRgDIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEjwKCGtleV90eXBlGAQgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPgoKdmFsdWVfdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEg8KBWluZGV4GAYgASgESAASEgoIYm9vbF9rZXkYByABKAhIABIRCgdpbnRfa2V5GAggASgDSAASEgoIdWludF9rZXkYCSABKARIABIUCgpzdHJpbmdfa2V5GAogASgJSABCCwoJc3Vic2NyaXB0KqEBCgZJZ25vcmUSFgoSSUdOT1JFX1VOU1BFQ0lGSUVEEAASGAoUSUdOT1JFX0lGX1pFUk9fVkFMVUUQARIRCg1JR05PUkVfQUxXQVlTEAMiBAgCEAIqDElHTk9SRV9FTVBUWSoOSUdOT1JFX0RFRkFVTFQqF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFKhVJR05PUkVfSUZfVU5QT1BVTEFURUQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlYKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMhouYnVmLnZhbGlkYXRlLk1lc3NhZ2VSdWxlc1IHbWVzc2FnZTpOCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLk9uZW9mUnVsZXNSBW9uZW9mOk4KBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlc1IFZmllbGQ6XQoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMh0uYnVmLnZhbGlkYXRlLlByZWRlZmluZWRSdWxlc1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU",[file_google_protobuf_descriptor,file_google_protobuf_duration,file_google_protobuf_field_mask,file_google_protobuf_timestamp]);var Ignore;(function(Ignore3){Ignore3[Ignore3.UNSPECIFIED=0]="UNSPECIFIED",Ignore3[Ignore3.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",Ignore3[Ignore3.ALWAYS=3]="ALWAYS"})(Ignore||(Ignore={}));var KnownRegex;(function(KnownRegex3){KnownRegex3[KnownRegex3.UNSPECIFIED=0]="UNSPECIFIED",KnownRegex3[KnownRegex3.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",KnownRegex3[KnownRegex3.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(KnownRegex||(KnownRegex={}));var file_ai_stigmer_platform_v1_entitlement=fileDesc("CihhaS9zdGlnbWVyL3BsYXRmb3JtL3YxL2VudGl0bGVtZW50LnByb3RvEhZhaS5zdGlnbWVyLnBsYXRmb3JtLnYxIo8BCgxFbnRpdGxlbWVudHMSOQoGbGltaXRzGAEgASgLMikuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5FbnRpdGxlbWVudExpbWl0cxJECghmZWF0dXJlcxgCIAMoDjIfLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuRmVhdHVyZUIRukgOkgELGAEiB4IBBBABIAAi2gEKEUVudGl0bGVtZW50TGltaXRzEicKEW1heF9vcmdhbml6YXRpb25zGAEgASgFQge6SAQaAiAASACIAQESHwoJbWF4X3VzZXJzGAIgASgFQge6SAQaAiAASAGIAQESNAoeaW5jbHVkZWRfbWFuYWdlZF9vcmdhbml6YXRpb25zGAMgASgFQge6SAQaAiAASAKIAQFCFAoSX21heF9vcmdhbml6YXRpb25zQgwKCl9tYXhfdXNlcnNCIQofX2luY2x1ZGVkX21hbmFnZWRfb3JnYW5pemF0aW9ucyqkAQoHRmVhdHVyZRIXChNmZWF0dXJlX3Vuc3BlY2lmaWVkEAASEwoPc3NvX2VuZm9yY2VtZW50EAESEwoPcGxhdGZvcm1fY2xpZW50EAISFQoRYnlvX3Byb3ZpZGVyX2tleXMQAxIMCghjaGFubmVscxAEEgsKB3NoYXJpbmcQBRIJCgV0ZWFtcxAGEhkKFW1hbmFnZWRfb3JnYW5pemF0aW9ucxAHQhJCEEVudGl0bGVtZW50UHJvdG9iBnByb3RvMw",[file_buf_validate_validate]);var Feature;(function(Feature2){Feature2[Feature2.feature_unspecified=0]="feature_unspecified",Feature2[Feature2.sso_enforcement=1]="sso_enforcement",Feature2[Feature2.platform_client=2]="platform_client",Feature2[Feature2.byo_provider_keys=3]="byo_provider_keys",Feature2[Feature2.channels=4]="channels",Feature2[Feature2.sharing=5]="sharing",Feature2[Feature2.teams=6]="teams",Feature2[Feature2.managed_organizations=7]="managed_organizations"})(Feature||(Feature={}));var file_ai_stigmer_platform_v1_license=fileDesc("CiRhaS9zdGlnbWVyL3BsYXRmb3JtL3YxL2xpY2Vuc2UucHJvdG8SFmFpLnN0aWdtZXIucGxhdGZvcm0udjEiiQUKDUxpY2Vuc2VDbGFpbXMSGgoKbGljZW5zZV9pZBgBIAEoCUIGukgDyAEBEkEKCGN1c3RvbWVyGAIgASgLMicuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5MaWNlbnNlQ3VzdG9tZXJCBrpIA8gBARJACgR0ZXJtGAMgASgOMiMuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5MaWNlbnNlVGVybUINukgKyAEBggEEEAEgABJCCgxlbnRpdGxlbWVudHMYBCABKAsyJC5haS5zdGlnbWVyLnBsYXRmb3JtLnYxLkVudGl0bGVtZW50c0IGukgDyAEBEjUKCWlzc3VlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARI2CgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEjcKC2dyYWNlX3VudGlsGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBOuoBukjmARpqCiJsaWNlbnNlX2NsYWltcy5leHBpcmVzX2FmdGVyX2lzc3VlEiJleHBpcmVzX2F0IG11c3QgYmUgYWZ0ZXIgaXNzdWVkX2F0GiB0aGlzLmV4cGlyZXNfYXQgPiB0aGlzLmlzc3VlZF9hdBp4CiZsaWNlbnNlX2NsYWltcy5ncmFjZV9ub3RfYmVmb3JlX2V4cGlyeRIpZ3JhY2VfdW50aWwgbXVzdCBub3QgYmUgYmVmb3JlIGV4cGlyZXNfYXQaI3RoaXMuZ3JhY2VfdW50aWwgPj0gdGhpcy5leHBpcmVzX2F0InwKD0xpY2Vuc2VDdXN0b21lchISCgJpZBgBIAEoCUIGukgDyAEBEhwKDGRpc3BsYXlfbmFtZRgCIAEoCUIGukgDyAEBEiEKDWNvbnRhY3RfZW1haWwYAyABKAlCCrpIB8gBAXICYAESFAoMb3JnYW5pemF0aW9uGAQgASgJKkAKC0xpY2Vuc2VUZXJtEhwKGGxpY2Vuc2VfdGVybV91bnNwZWNpZmllZBAAEgkKBXRyaWFsEAESCAoEcGFpZBACKncKDExpY2Vuc2VTdGF0ZRIdChlsaWNlbnNlX3N0YXRlX3Vuc3BlY2lmaWVkEAASCgoGYWJzZW50EAESCQoFdmFsaWQQAhIMCghleHBpcmluZxADEgkKBWdyYWNlEAQSCwoHZXhwaXJlZBAFEgsKB2ludmFsaWQQBkIOQgxMaWNlbnNlUHJvdG9iBnByb3RvMw",[file_ai_stigmer_platform_v1_entitlement,file_buf_validate_validate,file_google_protobuf_timestamp]);var LicenseTerm;(function(LicenseTerm2){LicenseTerm2[LicenseTerm2.license_term_unspecified=0]="license_term_unspecified",LicenseTerm2[LicenseTerm2.trial=1]="trial",LicenseTerm2[LicenseTerm2.paid=2]="paid"})(LicenseTerm||(LicenseTerm={}));var LicenseState;(function(LicenseState2){LicenseState2[LicenseState2.license_state_unspecified=0]="license_state_unspecified",LicenseState2[LicenseState2.absent=1]="absent",LicenseState2[LicenseState2.valid=2]="valid",LicenseState2[LicenseState2.expiring=3]="expiring",LicenseState2[LicenseState2.grace=4]="grace",LicenseState2[LicenseState2.expired=5]="expired",LicenseState2[LicenseState2.invalid=6]="invalid"})(LicenseState||(LicenseState={}));var file_ai_stigmer_platform_v1_server_info=fileDesc("CihhaS9zdGlnbWVyL3BsYXRmb3JtL3YxL3NlcnZlcl9pbmZvLnByb3RvEhZhaS5zdGlnbWVyLnBsYXRmb3JtLnYxIhQKEkdldFNlcnZlckluZm9JbnB1dCKgAQoTR2V0U2VydmVySW5mb091dHB1dBI2CgdlZGl0aW9uGAEgASgOMiUuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5TZXJ2ZXJFZGl0aW9uEg8KB3ZlcnNpb24YAiABKAkSJAoXYXV0aGVudGljYXRpb25fcmVxdWlyZWQYAyABKAhIAIgBAUIaChhfYXV0aGVudGljYXRpb25fcmVxdWlyZWQiFwoVR2V0TGljZW5zZVN0YXR1c0lucHV0IsQBChZHZXRMaWNlbnNlU3RhdHVzT3V0cHV0EjMKBXN0YXRlGAEgASgOMiQuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5MaWNlbnNlU3RhdGUSNQoGY2xhaW1zGAIgASgLMiUuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5MaWNlbnNlQ2xhaW1zEg4KBmtleV9pZBgDIAEoCRIuCgpjaGVja2VkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIfCh1HZXRSdW5uZXJCb290c3RyYXBDb25maWdJbnB1dCLjAgoeR2V0UnVubmVyQm9vdHN0cmFwQ29uZmlnT3V0cHV0EiEKEHRlbXBvcmFsX2FkZHJlc3MYASABKAlCB7pIBHICEAESIwoSdGVtcG9yYWxfbmFtZXNwYWNlGAIgASgJQge6SARyAhABEhsKE3J1bm5lcl9hY2Nlc3NfdG9rZW4YAyABKAkSEgoKdG9rZW5fdHlwZRgEIAEoCRIuCiZydW5uZXJfYWNjZXNzX3Rva2VuX2V4cGlyZXNfaW5fc2Vjb25kcxgFIAEoBRIeChZwYXlsb2FkX2VuY3J5cHRpb25fa2V5GAYgASgJEiEKGXBheWxvYWRfZW5jcnlwdGlvbl9rZXlfaWQYByABKAkSKAogcGF5bG9hZF9lbmNyeXB0aW9uX3NlY29uZGFyeV9rZXkYCCABKAkSKwojcGF5bG9hZF9lbmNyeXB0aW9uX3NlY29uZGFyeV9rZXlfaWQYCSABKAki3AEKGUdldFJ1bm5lclNjb3BlZFRva2VuSW5wdXQSHAoSYWdlbnRfZXhlY3V0aW9uX2lkGAEgASgJSAASHwoVd29ya2Zsb3dfZXhlY3V0aW9uX2lkGAIgASgJSAASNwoKcG9vbF9jbGFpbRgDIAEoCzIhLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuUG9vbENsYWltSAASNwoHcmVuZXdhbBgEIAEoCzIkLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuVG9rZW5SZW5ld2FsSABCDgoFc2NvcGUSBbpIAggBIigKCVBvb2xDbGFpbRIbCgpzZXNzaW9uX2lkGAEgASgJQge6SARyAhABIg4KDFRva2VuUmVuZXdhbCJpChpHZXRSdW5uZXJTY29wZWRUb2tlbk91dHB1dBIbChNydW5uZXJfc2NvcGVkX3Rva2VuGAEgASgJEhIKCnRva2VuX3R5cGUYAiABKAkSGgoSZXhwaXJlc19pbl9zZWNvbmRzGAMgASgFKlMKDVNlcnZlckVkaXRpb24SHgoac2VydmVyX2VkaXRpb25fdW5zcGVjaWZpZWQQABIHCgNvc3MQARIJCgVjbG91ZBACEg4KCmVudGVycHJpc2UQAzKaBAoXUGxhdGZvcm1RdWVyeUNvbnRyb2xsZXISbgoNZ2V0U2VydmVySW5mbxIqLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuR2V0U2VydmVySW5mb0lucHV0GisuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5HZXRTZXJ2ZXJJbmZvT3V0cHV0IgTIuBgBEncKEGdldExpY2Vuc2VTdGF0dXMSLS5haS5zdGlnbWVyLnBsYXRmb3JtLnYxLkdldExpY2Vuc2VTdGF0dXNJbnB1dBouLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuR2V0TGljZW5zZVN0YXR1c091dHB1dCIE0LgYARKPAQoYZ2V0UnVubmVyQm9vdHN0cmFwQ29uZmlnEjUuYWkuc3RpZ21lci5wbGF0Zm9ybS52MS5HZXRSdW5uZXJCb290c3RyYXBDb25maWdJbnB1dBo2LmFpLnN0aWdtZXIucGxhdGZvcm0udjEuR2V0UnVubmVyQm9vdHN0cmFwQ29uZmlnT3V0cHV0IgTQuBgBEoMBChRnZXRSdW5uZXJTY29wZWRUb2tlbhIxLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuR2V0UnVubmVyU2NvcGVkVG9rZW5JbnB1dBoyLmFpLnN0aWdtZXIucGxhdGZvcm0udjEuR2V0UnVubmVyU2NvcGVkVG9rZW5PdXRwdXQiBNC4GAFCEUIPU2VydmVySW5mb1Byb3RvYgZwcm90bzM",[file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_platform_v1_license,file_buf_validate_validate,file_google_protobuf_timestamp]);var GetServerInfoOutputSchema=messageDesc2(file_ai_stigmer_platform_v1_server_info,1);var GetLicenseStatusOutputSchema=messageDesc2(file_ai_stigmer_platform_v1_server_info,3);var GetRunnerBootstrapConfigOutputSchema=messageDesc2(file_ai_stigmer_platform_v1_server_info,5);var GetRunnerScopedTokenOutputSchema=messageDesc2(file_ai_stigmer_platform_v1_server_info,9),ServerEdition;(function(ServerEdition2){ServerEdition2[ServerEdition2.server_edition_unspecified=0]="server_edition_unspecified",ServerEdition2[ServerEdition2.oss=1]="oss",ServerEdition2[ServerEdition2.cloud=2]="cloud",ServerEdition2[ServerEdition2.enterprise=3]="enterprise"})(ServerEdition||(ServerEdition={}));var PlatformQueryController=serviceDesc(file_ai_stigmer_platform_v1_server_info,0);var file_grpc_health_v1_health=fileDesc("ChtncnBjL2hlYWx0aC92MS9oZWFsdGgucHJvdG8SDmdycGMuaGVhbHRoLnYxIiUKEkhlYWx0aENoZWNrUmVxdWVzdBIPCgdzZXJ2aWNlGAEgASgJIqkBChNIZWFsdGhDaGVja1Jlc3BvbnNlEkEKBnN0YXR1cxgBIAEoDjIxLmdycGMuaGVhbHRoLnYxLkhlYWx0aENoZWNrUmVzcG9uc2UuU2VydmluZ1N0YXR1cyJPCg1TZXJ2aW5nU3RhdHVzEgsKB1VOS05PV04QABILCgdTRVJWSU5HEAESDwoLTk9UX1NFUlZJTkcQAhITCg9TRVJWSUNFX1VOS05PV04QAyITChFIZWFsdGhMaXN0UmVxdWVzdCKuAQoSSGVhbHRoTGlzdFJlc3BvbnNlEkIKCHN0YXR1c2VzGAEgAygLMjAuZ3JwYy5oZWFsdGgudjEuSGVhbHRoTGlzdFJlc3BvbnNlLlN0YXR1c2VzRW50cnkaVAoNU3RhdHVzZXNFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5ncnBjLmhlYWx0aC52MS5IZWFsdGhDaGVja1Jlc3BvbnNlOgI4ATL9AQoGSGVhbHRoElAKBUNoZWNrEiIuZ3JwYy5oZWFsdGgudjEuSGVhbHRoQ2hlY2tSZXF1ZXN0GiMuZ3JwYy5oZWFsdGgudjEuSGVhbHRoQ2hlY2tSZXNwb25zZRJNCgRMaXN0EiEuZ3JwYy5oZWFsdGgudjEuSGVhbHRoTGlzdFJlcXVlc3QaIi5ncnBjLmhlYWx0aC52MS5IZWFsdGhMaXN0UmVzcG9uc2USUgoFV2F0Y2gSIi5ncnBjLmhlYWx0aC52MS5IZWFsdGhDaGVja1JlcXVlc3QaIy5ncnBjLmhlYWx0aC52MS5IZWFsdGhDaGVja1Jlc3BvbnNlMAFCcAoRaW8uZ3JwYy5oZWFsdGgudjFCC0hlYWx0aFByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL2dycGMvaGVhbHRoL2dycGNfaGVhbHRoX3YxogIMR3JwY0hlYWx0aFYxqgIOR3JwYy5IZWFsdGguVjFiBnByb3RvMw");var HealthCheckResponse_ServingStatus;(function(HealthCheckResponse_ServingStatus2){HealthCheckResponse_ServingStatus2[HealthCheckResponse_ServingStatus2.UNKNOWN=0]="UNKNOWN",HealthCheckResponse_ServingStatus2[HealthCheckResponse_ServingStatus2.SERVING=1]="SERVING",HealthCheckResponse_ServingStatus2[HealthCheckResponse_ServingStatus2.NOT_SERVING=2]="NOT_SERVING",HealthCheckResponse_ServingStatus2[HealthCheckResponse_ServingStatus2.SERVICE_UNKNOWN=3]="SERVICE_UNKNOWN"})(HealthCheckResponse_ServingStatus||(HealthCheckResponse_ServingStatus={}));var Health=serviceDesc(file_grpc_health_v1_health,0);function isMessage2(arg,schema2){return arg!==null&&typeof arg=="object"&&"$typeName"in arg&&typeof arg.$typeName=="string"?schema2===void 0?!0:schema2.typeName===arg.$typeName:!1}var ScalarType2;(function(ScalarType3){ScalarType3[ScalarType3.DOUBLE=1]="DOUBLE",ScalarType3[ScalarType3.FLOAT=2]="FLOAT",ScalarType3[ScalarType3.INT64=3]="INT64",ScalarType3[ScalarType3.UINT64=4]="UINT64",ScalarType3[ScalarType3.INT32=5]="INT32",ScalarType3[ScalarType3.FIXED64=6]="FIXED64",ScalarType3[ScalarType3.FIXED32=7]="FIXED32",ScalarType3[ScalarType3.BOOL=8]="BOOL",ScalarType3[ScalarType3.STRING=9]="STRING",ScalarType3[ScalarType3.BYTES=12]="BYTES",ScalarType3[ScalarType3.UINT32=13]="UINT32",ScalarType3[ScalarType3.SFIXED32=15]="SFIXED32",ScalarType3[ScalarType3.SFIXED64=16]="SFIXED64",ScalarType3[ScalarType3.SINT32=17]="SINT32",ScalarType3[ScalarType3.SINT64=18]="SINT64"})(ScalarType2||(ScalarType2={}));function varint64read2(){let lowBits=0,highBits=0;for(let shift=0;shift<28;shift+=7){let b7=this.buf[this.pos++];if(lowBits|=(b7&127)<<shift,(b7&128)==0)return this.assertBounds(),[lowBits,highBits]}let middleByte=this.buf[this.pos++];if(lowBits|=(middleByte&15)<<28,highBits=(middleByte&112)>>4,(middleByte&128)==0)return this.assertBounds(),[lowBits,highBits];for(let shift=3;shift<=31;shift+=7){let b7=this.buf[this.pos++];if(highBits|=(b7&127)<<shift,(b7&128)==0)return this.assertBounds(),[lowBits,highBits]}throw new Error("invalid varint")}function varint64write2(lo,hi,bytes){for(let i6=0;i6<28;i6=i6+7){let shift=lo>>>i6,hasNext=!(!(shift>>>7)&&hi==0),byte=(hasNext?shift|128:shift)&255;if(bytes.push(byte),!hasNext)return}let splitBits=lo>>>28&15|(hi&7)<<4,hasMoreBits=hi>>3!=0;if(bytes.push((hasMoreBits?splitBits|128:splitBits)&255),!!hasMoreBits){for(let i6=3;i6<31;i6=i6+7){let shift=hi>>>i6,hasNext=!!(shift>>>7),byte=(hasNext?shift|128:shift)&255;if(bytes.push(byte),!hasNext)return}bytes.push(hi>>>31&1)}}var TWO_PWR_32_DBL2=4294967296;function int64FromString2(dec){let minus=dec[0]==="-";minus&&(dec=dec.slice(1));let base=1e6,lowBits=0,highBits=0;function add1e6digit(begin,end){let digit1e6=Number(dec.slice(begin,end));highBits*=base,lowBits=lowBits*base+digit1e6,lowBits>=TWO_PWR_32_DBL2&&(highBits=highBits+(lowBits/TWO_PWR_32_DBL2|0),lowBits=lowBits%TWO_PWR_32_DBL2)}return add1e6digit(-24,-18),add1e6digit(-18,-12),add1e6digit(-12,-6),add1e6digit(-6),minus?negate2(lowBits,highBits):newBits2(lowBits,highBits)}function int64ToString2(lo,hi){let bits2=newBits2(lo,hi),negative=bits2.hi&2147483648;negative&&(bits2=negate2(bits2.lo,bits2.hi));let result=uInt64ToString2(bits2.lo,bits2.hi);return negative?"-"+result:result}function uInt64ToString2(lo,hi){if({lo,hi}=toUnsigned2(lo,hi),hi<=2097151)return String(TWO_PWR_32_DBL2*hi+lo);let low=lo&16777215,mid=(lo>>>24|hi<<8)&16777215,high=hi>>16&65535,digitA=low+mid*6777216+high*6710656,digitB=mid+high*8147497,digitC=high*2,base=1e7;return digitA>=base&&(digitB+=Math.floor(digitA/base),digitA%=base),digitB>=base&&(digitC+=Math.floor(digitB/base),digitB%=base),digitC.toString()+decimalFrom1e7WithLeadingZeros2(digitB)+decimalFrom1e7WithLeadingZeros2(digitA)}function toUnsigned2(lo,hi){return{lo:lo>>>0,hi:hi>>>0}}function newBits2(lo,hi){return{lo:lo|0,hi:hi|0}}function negate2(lowBits,highBits){return highBits=~highBits,lowBits?lowBits=~lowBits+1:highBits+=1,newBits2(lowBits,highBits)}var decimalFrom1e7WithLeadingZeros2=digit1e7=>{let partial=String(digit1e7);return"0000000".slice(partial.length)+partial};function varint32write2(value,bytes){if(value>=0){for(;value>127;)bytes.push(value&127|128),value=value>>>7;bytes.push(value)}else{for(let i6=0;i6<9;i6++)bytes.push(value&127|128),value=value>>7;bytes.push(1)}}function varint32read2(){let b7=this.buf[this.pos++],result=b7&127;if((b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<7,(b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<14,(b7&128)==0)return this.assertBounds(),result;if(b7=this.buf[this.pos++],result|=(b7&127)<<21,(b7&128)==0)return this.assertBounds(),result;b7=this.buf[this.pos++],result|=(b7&15)<<28;for(let readBytes2=5;(b7&128)!==0&&readBytes2<10;readBytes2++)b7=this.buf[this.pos++];if((b7&128)!=0)throw new Error("invalid varint");return this.assertBounds(),result>>>0}var protoInt642=makeInt64Support2();function makeInt64Support2(){let dv=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof dv.getBigInt64=="function"&&typeof dv.getBigUint64=="function"&&typeof dv.setBigInt64=="function"&&typeof dv.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let MIN=BigInt("-9223372036854775808"),MAX=BigInt("9223372036854775807"),UMIN=BigInt("0"),UMAX=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>MAX||bi<MIN)throw new Error(`invalid int64: ${value}`);return bi},uParse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>UMAX||bi<UMIN)throw new Error(`invalid uint64: ${value}`);return bi},enc(value){return dv.setBigInt64(0,this.parse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},uEnc(value){return dv.setBigInt64(0,this.uParse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},dec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigInt64(0,!0)},uDec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(value){return typeof value!="string"&&(value=value.toString()),assertInt64String2(value),value},uParse(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String2(value),value},enc(value){return typeof value!="string"&&(value=value.toString()),assertInt64String2(value),int64FromString2(value)},uEnc(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String2(value),int64FromString2(value)},dec(lo,hi){return int64ToString2(lo,hi)},uDec(lo,hi){return uInt64ToString2(lo,hi)}}}function assertInt64String2(value){if(!/^-?[0-9]+$/.test(value))throw new Error("invalid int64: "+value)}function assertUInt64String2(value){if(!/^[0-9]+$/.test(value))throw new Error("invalid uint64: "+value)}function scalarEquals(type2,a5,b7){if(a5===b7)return!0;if(type2==ScalarType2.BYTES){if(!(a5 instanceof Uint8Array)||!(b7 instanceof Uint8Array)||a5.length!==b7.length)return!1;for(let i6=0;i6<a5.length;i6++)if(a5[i6]!==b7[i6])return!1;return!0}switch(type2){case ScalarType2.UINT64:case ScalarType2.FIXED64:case ScalarType2.INT64:case ScalarType2.SFIXED64:case ScalarType2.SINT64:return a5==b7}return!1}function scalarZeroValue2(type2,longAsString){switch(type2){case ScalarType2.STRING:return"";case ScalarType2.BOOL:return!1;case ScalarType2.DOUBLE:case ScalarType2.FLOAT:return 0;case ScalarType2.INT64:case ScalarType2.UINT64:case ScalarType2.SFIXED64:case ScalarType2.FIXED64:case ScalarType2.SINT64:return longAsString?"0":protoInt642.zero;case ScalarType2.BYTES:return new Uint8Array(0);default:return 0}}function isScalarZeroValue2(type2,value){switch(type2){case ScalarType2.BOOL:return value===!1;case ScalarType2.STRING:return value==="";case ScalarType2.BYTES:return value instanceof Uint8Array&&!value.byteLength;default:return value==0}}var IMPLICIT4=2,unsafeLocal2=Symbol.for("reflect unsafe local");function unsafeOneofCase2(target,oneof2){let c5=target[oneof2.localName].case;return c5===void 0?c5:oneof2.fields.find(f5=>f5.localName===c5)}function unsafeIsSet2(target,field3){let name=field3.localName;if(field3.oneof)return target[field3.oneof.localName].case===name;if(field3.presence!=IMPLICIT4)return target[name]!==void 0&&Object.prototype.hasOwnProperty.call(target,name);switch(field3.fieldKind){case"list":return target[name].length>0;case"map":return Object.keys(target[name]).length>0;case"scalar":return!isScalarZeroValue2(field3.scalar,target[name]);case"enum":return target[name]!==field3.enum.values[0].number}throw new Error("message field with implicit presence")}function unsafeIsSetExplicit2(target,localName){return Object.prototype.hasOwnProperty.call(target,localName)&&target[localName]!==void 0}function unsafeGet2(target,field3){if(field3.oneof){let oneof2=target[field3.oneof.localName];return oneof2.case===field3.localName?oneof2.value:void 0}return target[field3.localName]}function unsafeSet2(target,field3,value){field3.oneof?target[field3.oneof.localName]={case:field3.localName,value}:target[field3.localName]=value}function unsafeClear2(target,field3){let name=field3.localName;if(field3.oneof){let oneofLocalName=field3.oneof.localName;target[oneofLocalName].case===name&&(target[oneofLocalName]={case:void 0})}else if(field3.presence!=IMPLICIT4)delete target[name];else switch(field3.fieldKind){case"map":target[name]={};break;case"list":target[name]=[];break;case"enum":target[name]=field3.enum.values[0].number;break;case"scalar":target[name]=scalarZeroValue2(field3.scalar,field3.longAsString);break}}function isObject2(arg){return arg!==null&&typeof arg=="object"&&!Array.isArray(arg)}function isReflectList2(arg,field3){var _a3,_b2,_c5,_d;if(isObject2(arg)&&unsafeLocal2 in arg&&"add"in arg&&"field"in arg&&typeof arg.field=="function"){if(field3!==void 0){let a5=field3,b7=arg.field();return a5.listKind==b7.listKind&&a5.scalar===b7.scalar&&((_a3=a5.message)===null||_a3===void 0?void 0:_a3.typeName)===((_b2=b7.message)===null||_b2===void 0?void 0:_b2.typeName)&&((_c5=a5.enum)===null||_c5===void 0?void 0:_c5.typeName)===((_d=b7.enum)===null||_d===void 0?void 0:_d.typeName)}return!0}return!1}function isReflectMap2(arg,field3){var _a3,_b2,_c5,_d;if(isObject2(arg)&&unsafeLocal2 in arg&&"has"in arg&&"field"in arg&&typeof arg.field=="function"){if(field3!==void 0){let a5=field3,b7=arg.field();return a5.mapKey===b7.mapKey&&a5.mapKind==b7.mapKind&&a5.scalar===b7.scalar&&((_a3=a5.message)===null||_a3===void 0?void 0:_a3.typeName)===((_b2=b7.message)===null||_b2===void 0?void 0:_b2.typeName)&&((_c5=a5.enum)===null||_c5===void 0?void 0:_c5.typeName)===((_d=b7.enum)===null||_d===void 0?void 0:_d.typeName)}return!0}return!1}function isReflectMessage2(arg,messageDesc4){return isObject2(arg)&&unsafeLocal2 in arg&&"desc"in arg&&isObject2(arg.desc)&&arg.desc.kind==="message"&&(messageDesc4===void 0||arg.desc.typeName==messageDesc4.typeName)}function isWrapper2(arg){return isWrapperTypeName2(arg.$typeName)}function isWrapperDesc2(messageDesc4){let f5=messageDesc4.fields[0];return isWrapperTypeName2(messageDesc4.typeName)&&f5!==void 0&&f5.fieldKind=="scalar"&&f5.name=="value"&&f5.number==1}function hasCustomJsonRepresentation(desc){switch(desc.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return isWrapperDesc2(desc)}}function isWrapperTypeName2(name){return name.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(name.substring(16))}var EDITION_PROTO33=999,EDITION_PROTO23=998,IMPLICIT5=2;function create2(schema2,init){if(isMessage2(init,schema2))return init;let message6=createZeroMessage2(schema2);return init!==void 0&&initMessage2(schema2,message6,init),message6}function initMessage2(messageDesc4,message6,init){for(let member2 of messageDesc4.members){let value=init[member2.localName];if(value==null)continue;let field3;if(member2.kind=="oneof"){let oneofField=unsafeOneofCase2(init,member2);if(!oneofField)continue;field3=oneofField,value=unsafeGet2(init,oneofField)}else field3=member2;switch(field3.fieldKind){case"message":value=toMessage2(field3,value);break;case"scalar":value=initScalar2(field3,value);break;case"list":value=initList2(field3,value);break;case"map":value=initMap2(field3,value);break}unsafeSet2(message6,field3,value)}return message6}function initScalar2(field3,value){return field3.scalar==ScalarType2.BYTES?toU8Arr2(value):value}function initMap2(field3,value){if(isObject2(value)){if(field3.scalar==ScalarType2.BYTES)return convertObjectValues2(value,toU8Arr2);if(field3.mapKind=="message")return convertObjectValues2(value,val=>toMessage2(field3,val))}return value}function initList2(field3,value){if(Array.isArray(value)){if(field3.scalar==ScalarType2.BYTES)return value.map(toU8Arr2);if(field3.listKind=="message")return value.map(item=>toMessage2(field3,item))}return value}function toMessage2(field3,value){if(field3.fieldKind=="message"&&!field3.oneof&&isWrapperDesc2(field3.message))return initScalar2(field3.message.fields[0],value);if(isObject2(value)){if(field3.message.typeName=="google.protobuf.Struct"&&field3.parent.typeName!=="google.protobuf.Value")return value;if(!isMessage2(value,field3.message))return create2(field3.message,value)}return value}function toU8Arr2(value){return Array.isArray(value)?new Uint8Array(value):value}function convertObjectValues2(obj,fn){let ret={};for(let entry of Object.entries(obj))ret[entry[0]]=fn(entry[1]);return ret}var tokenZeroMessageField2=Symbol(),messagePrototypes2=new WeakMap;function createZeroMessage2(desc){let msg;if(needsPrototypeChain2(desc)){let cached2=messagePrototypes2.get(desc),prototype,members;if(cached2)({prototype,members}=cached2);else{prototype={},members=new Set;for(let member2 of desc.members)member2.kind!="oneof"&&(member2.fieldKind!="scalar"&&member2.fieldKind!="enum"||member2.presence!=IMPLICIT5&&(members.add(member2),prototype[member2.localName]=createZeroField2(member2)));messagePrototypes2.set(desc,{prototype,members})}msg=Object.create(prototype),msg.$typeName=desc.typeName;for(let member2 of desc.members)members.has(member2)||member2.kind=="field"&&(member2.fieldKind=="message"||(member2.fieldKind=="scalar"||member2.fieldKind=="enum")&&member2.presence!=IMPLICIT5)||(msg[member2.localName]=createZeroField2(member2))}else{msg={$typeName:desc.typeName};for(let member2 of desc.members)(member2.kind=="oneof"||member2.presence==IMPLICIT5)&&(msg[member2.localName]=createZeroField2(member2))}return msg}function needsPrototypeChain2(desc){switch(desc.file.edition){case EDITION_PROTO33:return!1;case EDITION_PROTO23:return!0;default:return desc.fields.some(f5=>f5.presence!=IMPLICIT5&&f5.fieldKind!="message"&&!f5.oneof)}}function createZeroField2(field3){if(field3.kind=="oneof")return{case:void 0};if(field3.fieldKind=="list")return[];if(field3.fieldKind=="map")return{};if(field3.fieldKind=="message")return tokenZeroMessageField2;let defaultValue=field3.getDefaultValue();return defaultValue!==void 0?field3.fieldKind=="scalar"&&field3.longAsString?defaultValue.toString():defaultValue:field3.fieldKind=="scalar"?scalarZeroValue2(field3.scalar,field3.longAsString):field3.enum.values[0].number}var errorNames=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],FieldError2=class extends Error{constructor(fieldOrOneof,message6,name="FieldValueInvalidError"){super(message6),this.name=name,this.field=()=>fieldOrOneof}};function isFieldError(arg){return arg instanceof Error&&errorNames.includes(arg.name)&&"field"in arg&&typeof arg.field=="function"}var symbol2=Symbol.for("@bufbuild/protobuf/text-encoding");function getTextEncoding2(){if(globalThis[symbol2]==null){let te2=new globalThis.TextEncoder,td2=new globalThis.TextDecoder,tdStrict;globalThis[symbol2]={encodeUtf8(text2){return te2.encode(text2)},decodeUtf8(bytes,strict){return strict?(tdStrict===void 0&&(tdStrict=new globalThis.TextDecoder("utf-8",{fatal:!0})),tdStrict.decode(bytes)):td2.decode(bytes)},checkUtf8(text2){try{return encodeURIComponent(text2),!0}catch{return!1}}}}return globalThis[symbol2]}var WireType2;(function(WireType3){WireType3[WireType3.Varint=0]="Varint",WireType3[WireType3.Bit64=1]="Bit64",WireType3[WireType3.LengthDelimited=2]="LengthDelimited",WireType3[WireType3.StartGroup=3]="StartGroup",WireType3[WireType3.EndGroup=4]="EndGroup",WireType3[WireType3.Bit32=5]="Bit32"})(WireType2||(WireType2={}));var FLOAT32_MAX2=34028234663852886e22,FLOAT32_MIN2=-34028234663852886e22,UINT32_MAX2=4294967295,INT32_MAX2=2147483647,INT32_MIN2=-2147483648,BinaryWriter=class{constructor(encodeUtf8=getTextEncoding2().encodeUtf8){this.encodeUtf8=encodeUtf8,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let len=0;for(let i6=0;i6<this.chunks.length;i6++)len+=this.chunks[i6].length;let bytes=new Uint8Array(len),offset=0;for(let i6=0;i6<this.chunks.length;i6++)bytes.set(this.chunks[i6],offset),offset+=this.chunks[i6].length;return this.chunks=[],bytes}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let chunk=this.finish(),prev=this.stack.pop();if(!prev)throw new Error("invalid state, fork stack empty");return this.chunks=prev.chunks,this.buf=prev.buf,this.uint32(chunk.byteLength),this.raw(chunk)}tag(fieldNo,type2){return this.uint32((fieldNo<<3|type2)>>>0)}raw(chunk){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(chunk),this}uint32(value){for(assertUInt32(value);value>127;)this.buf.push(value&127|128),value=value>>>7;return this.buf.push(value),this}int32(value){return assertInt32(value),varint32write2(value,this.buf),this}bool(value){return this.buf.push(value?1:0),this}bytes(value){return this.uint32(value.byteLength),this.raw(value)}string(value){let chunk=this.encodeUtf8(value);return this.uint32(chunk.byteLength),this.raw(chunk)}float(value){assertFloat32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setFloat32(0,value,!0),this.raw(chunk)}double(value){let chunk=new Uint8Array(8);return new DataView(chunk.buffer).setFloat64(0,value,!0),this.raw(chunk)}fixed32(value){assertUInt32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setUint32(0,value,!0),this.raw(chunk)}sfixed32(value){assertInt32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setInt32(0,value,!0),this.raw(chunk)}sint32(value){return assertInt32(value),value=(value<<1^value>>31)>>>0,varint32write2(value,this.buf),this}sfixed64(value){let chunk=new Uint8Array(8),view=new DataView(chunk.buffer),tc=protoInt642.enc(value);return view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),this.raw(chunk)}fixed64(value){let chunk=new Uint8Array(8),view=new DataView(chunk.buffer),tc=protoInt642.uEnc(value);return view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),this.raw(chunk)}int64(value){let tc=protoInt642.enc(value);return varint64write2(tc.lo,tc.hi,this.buf),this}sint64(value){let tc=protoInt642.enc(value),sign4=tc.hi>>31,lo=tc.lo<<1^sign4,hi=(tc.hi<<1|tc.lo>>>31)^sign4;return varint64write2(lo,hi,this.buf),this}uint64(value){let tc=protoInt642.uEnc(value);return varint64write2(tc.lo,tc.hi,this.buf),this}},BinaryReader2=class{constructor(buf2,decodeUtf82=getTextEncoding2().decodeUtf8){this.decodeUtf8=decodeUtf82,this.varint64=varint64read2,this.uint32=varint32read2,this.buf=buf2,this.len=buf2.length,this.pos=0,this.view=new DataView(buf2.buffer,buf2.byteOffset,buf2.byteLength)}tag(){let start=this.pos,tag2=this.uint32(),bytesRead=this.pos-start;if(bytesRead>5||bytesRead==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");let fieldNo=tag2>>>3,wireType=tag2&7;if(fieldNo<=0||wireType>5)throw new Error("illegal tag: field no "+fieldNo+" wire type "+wireType);return[fieldNo,wireType]}skip(wireType,fieldNo){let start=this.pos;switch(wireType){case WireType2.Varint:for(;this.buf[this.pos++]&128;);break;case WireType2.Bit64:this.pos+=4;case WireType2.Bit32:this.pos+=4;break;case WireType2.LengthDelimited:let len=this.uint32();this.pos+=len;break;case WireType2.StartGroup:for(;;){let[fn,wt]=this.tag();if(wt===WireType2.EndGroup){if(fieldNo!==void 0&&fn!==fieldNo)throw new Error("invalid end group tag");break}this.skip(wt,fn)}break;default:throw new Error("cant skip wire type "+wireType)}return this.assertBounds(),this.buf.subarray(start,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let zze=this.uint32();return zze>>>1^-(zze&1)}int64(){return protoInt642.dec(...this.varint64())}uint64(){return protoInt642.uDec(...this.varint64())}sint64(){let[lo,hi]=this.varint64(),s2=-(lo&1);return lo=(lo>>>1|(hi&1)<<31)^s2,hi=hi>>>1^s2,protoInt642.dec(lo,hi)}bool(){let[lo,hi]=this.varint64();return lo!==0||hi!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return protoInt642.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return protoInt642.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let len=this.uint32(),start=this.pos;return this.pos+=len,this.assertBounds(),this.buf.subarray(start,start+len)}string(strict){return this.decodeUtf8(this.bytes(),strict)}};function assertInt32(arg){if(typeof arg=="string")arg=Number(arg);else if(typeof arg!="number")throw new Error("invalid int32: "+typeof arg);if(!Number.isInteger(arg)||arg>INT32_MAX2||arg<INT32_MIN2)throw new Error("invalid int32: "+arg)}function assertUInt32(arg){if(typeof arg=="string")arg=Number(arg);else if(typeof arg!="number")throw new Error("invalid uint32: "+typeof arg);if(!Number.isInteger(arg)||arg>UINT32_MAX2||arg<0)throw new Error("invalid uint32: "+arg)}function assertFloat32(arg){if(typeof arg=="string"){let o3=arg;if(arg=Number(arg),Number.isNaN(arg)&&o3!=="NaN")throw new Error("invalid float32: "+o3)}else if(typeof arg!="number")throw new Error("invalid float32: "+typeof arg);if(Number.isFinite(arg)&&(arg>FLOAT32_MAX2||arg<FLOAT32_MIN2))throw new Error("invalid float32: "+arg)}function checkField2(field3,value){let check=field3.fieldKind=="list"?isReflectList2(value,field3):field3.fieldKind=="map"?isReflectMap2(value,field3):checkSingular2(field3,value);if(check===!0)return;let reason;switch(field3.fieldKind){case"list":reason=`expected ${formatReflectList2(field3)}, got ${formatVal2(value)}`;break;case"map":reason=`expected ${formatReflectMap2(field3)}, got ${formatVal2(value)}`;break;default:reason=reasonSingular2(field3,value,check)}return new FieldError2(field3,reason)}function checkListItem2(field3,index2,value){let check=checkSingular2(field3,value);if(check!==!0)return new FieldError2(field3,`list item #${index2+1}: ${reasonSingular2(field3,value,check)}`)}function checkMapEntry2(field3,key,value){let checkKey=checkScalarValue2(key,field3.mapKey);if(checkKey!==!0)return new FieldError2(field3,`invalid map key: ${reasonSingular2({scalar:field3.mapKey},key,checkKey)}`);let checkVal=checkSingular2(field3,value);if(checkVal!==!0)return new FieldError2(field3,`map entry ${formatVal2(key)}: ${reasonSingular2(field3,value,checkVal)}`)}function checkSingular2(field3,value){return field3.scalar!==void 0?checkScalarValue2(value,field3.scalar):field3.enum!==void 0?field3.enum.open?Number.isInteger(value):field3.enum.values.some(v=>v.number===value):isReflectMessage2(value,field3.message)}function checkScalarValue2(value,scalar){switch(scalar){case ScalarType2.DOUBLE:return typeof value=="number";case ScalarType2.FLOAT:return typeof value!="number"?!1:Number.isNaN(value)||!Number.isFinite(value)?!0:value>FLOAT32_MAX2||value<FLOAT32_MIN2?`${value.toFixed()} out of range`:!0;case ScalarType2.INT32:case ScalarType2.SFIXED32:case ScalarType2.SINT32:return typeof value!="number"||!Number.isInteger(value)?!1:value>INT32_MAX2||value<INT32_MIN2?`${value.toFixed()} out of range`:!0;case ScalarType2.FIXED32:case ScalarType2.UINT32:return typeof value!="number"||!Number.isInteger(value)?!1:value>UINT32_MAX2||value<0?`${value.toFixed()} out of range`:!0;case ScalarType2.BOOL:return typeof value=="boolean";case ScalarType2.STRING:return typeof value!="string"?!1:getTextEncoding2().checkUtf8(value)||"invalid UTF8";case ScalarType2.BYTES:return value instanceof Uint8Array;case ScalarType2.INT64:case ScalarType2.SFIXED64:case ScalarType2.SINT64:if(typeof value=="bigint"||typeof value=="number"||typeof value=="string"&&value.length>0)try{return protoInt642.parse(value),!0}catch{return`${value} out of range`}return!1;case ScalarType2.FIXED64:case ScalarType2.UINT64:if(typeof value=="bigint"||typeof value=="number"||typeof value=="string"&&value.length>0)try{return protoInt642.uParse(value),!0}catch{return`${value} out of range`}return!1}}function reasonSingular2(field3,val,details){return details=typeof details=="string"?`: ${details}`:`, got ${formatVal2(val)}`,field3.scalar!==void 0?`expected ${scalarTypeDescription2(field3.scalar)}`+details:field3.enum!==void 0?`expected ${field3.enum.toString()}`+details:`expected ${formatReflectMessage2(field3.message)}`+details}function formatVal2(val){switch(typeof val){case"object":return val===null?"null":val instanceof Uint8Array?`Uint8Array(${val.length})`:Array.isArray(val)?`Array(${val.length})`:isReflectList2(val)?formatReflectList2(val.field()):isReflectMap2(val)?formatReflectMap2(val.field()):isReflectMessage2(val)?formatReflectMessage2(val.desc):isMessage2(val)?`message ${val.$typeName}`:"object";case"string":return val.length>30?"string":`"${val.split('"').join('\\"')}"`;case"boolean":return String(val);case"number":return String(val);case"bigint":return String(val)+"n";default:return typeof val}}function formatReflectMessage2(desc){return`ReflectMessage (${desc.typeName})`}function formatReflectList2(field3){switch(field3.listKind){case"message":return`ReflectList (${field3.message.toString()})`;case"enum":return`ReflectList (${field3.enum.toString()})`;case"scalar":return`ReflectList (${ScalarType2[field3.scalar]})`}}function formatReflectMap2(field3){switch(field3.mapKind){case"message":return`ReflectMap (${ScalarType2[field3.mapKey]}, ${field3.message.toString()})`;case"enum":return`ReflectMap (${ScalarType2[field3.mapKey]}, ${field3.enum.toString()})`;case"scalar":return`ReflectMap (${ScalarType2[field3.mapKey]}, ${ScalarType2[field3.scalar]})`}}function scalarTypeDescription2(scalar){switch(scalar){case ScalarType2.STRING:return"string";case ScalarType2.BOOL:return"boolean";case ScalarType2.INT64:case ScalarType2.SINT64:case ScalarType2.SFIXED64:return"bigint (int64)";case ScalarType2.UINT64:case ScalarType2.FIXED64:return"bigint (uint64)";case ScalarType2.BYTES:return"Uint8Array";case ScalarType2.DOUBLE:return"number (float64)";case ScalarType2.FLOAT:return"number (float32)";case ScalarType2.FIXED32:case ScalarType2.UINT32:return"number (uint32)";case ScalarType2.INT32:case ScalarType2.SFIXED32:case ScalarType2.SINT32:return"number (int32)"}}function reflect2(messageDesc4,message6,check=!0){return new ReflectMessageImpl2(messageDesc4,message6,check)}var messageSortedFields2=new WeakMap,ReflectMessageImpl2=class{get sortedFields(){let cached2=messageSortedFields2.get(this.desc);if(cached2)return cached2;let sortedFields=this.desc.fields.concat().sort((a5,b7)=>a5.number-b7.number);return messageSortedFields2.set(this.desc,sortedFields),sortedFields}constructor(messageDesc4,message6,check=!0){this.lists=new Map,this.maps=new Map,this.check=check,this.desc=messageDesc4,this.message=this[unsafeLocal2]=message6??create2(messageDesc4),this.fields=messageDesc4.fields,this.oneofs=messageDesc4.oneofs,this.members=messageDesc4.members}findNumber(number){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(f5=>[f5.number,f5]))),this._fieldsByNumber.get(number)}oneofCase(oneof2){return assertOwn2(this.message,oneof2),unsafeOneofCase2(this.message,oneof2)}isSet(field3){return assertOwn2(this.message,field3),unsafeIsSet2(this.message,field3)}clear(field3){assertOwn2(this.message,field3),unsafeClear2(this.message,field3)}get(field3){assertOwn2(this.message,field3);let value=unsafeGet2(this.message,field3);switch(field3.fieldKind){case"list":let list12=this.lists.get(field3);return(!list12||list12[unsafeLocal2]!==value)&&this.lists.set(field3,list12=new ReflectListImpl2(field3,value,this.check)),list12;case"map":let map5=this.maps.get(field3);return(!map5||map5[unsafeLocal2]!==value)&&this.maps.set(field3,map5=new ReflectMapImpl2(field3,value,this.check)),map5;case"message":return messageToReflect2(field3,value,this.check);case"scalar":return value===void 0?scalarZeroValue2(field3.scalar,!1):longToReflect2(field3,value);case"enum":return value??field3.enum.values[0].number}}set(field3,value){if(assertOwn2(this.message,field3),this.check){let err2=checkField2(field3,value);if(err2)throw err2}let local;field3.fieldKind=="message"?local=messageToLocal2(field3,value):isReflectMap2(value)||isReflectList2(value)?local=value[unsafeLocal2]:local=longToLocal2(field3,value),unsafeSet2(this.message,field3,local)}getUnknown(){return this.message.$unknown}setUnknown(value){this.message.$unknown=value}};function assertOwn2(owner,member2){if(member2.parent.typeName!==owner.$typeName)throw new FieldError2(member2,`cannot use ${member2.toString()} with message ${owner.$typeName}`,"ForeignFieldError")}function reflectList(field3,unsafeInput,check=!0){return new ReflectListImpl2(field3,unsafeInput??[],check)}var ReflectListImpl2=class{field(){return this._field}get size(){return this._arr.length}constructor(field3,unsafeInput,check){this._field=field3,this._arr=this[unsafeLocal2]=unsafeInput,this.check=check}get(index2){let item=this._arr[index2];return item===void 0?void 0:listItemToReflect2(this._field,item,this.check)}set(index2,item){if(index2<0||index2>=this._arr.length)throw new FieldError2(this._field,`list item #${index2+1}: out of range`);if(this.check){let err2=checkListItem2(this._field,index2,item);if(err2)throw err2}this._arr[index2]=listItemToLocal2(this._field,item)}add(item){if(this.check){let err2=checkListItem2(this._field,this._arr.length,item);if(err2)throw err2}this._arr.push(listItemToLocal2(this._field,item))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let item of this._arr)yield listItemToReflect2(this._field,item,this.check)}*entries(){for(let i6=0;i6<this._arr.length;i6++)yield[i6,listItemToReflect2(this._field,this._arr[i6],this.check)]}};function reflectMap(field3,unsafeInput,check=!0){return new ReflectMapImpl2(field3,unsafeInput,check)}var ReflectMapImpl2=class{constructor(field3,unsafeInput,check=!0){this.obj=this[unsafeLocal2]=unsafeInput??{},this.check=check,this._field=field3}field(){return this._field}set(key,value){if(this.check){let err2=checkMapEntry2(this._field,key,value);if(err2)throw err2}return this.obj[mapKeyToLocal2(key)]=mapValueToLocal2(this._field,value),this}delete(key){let k5=mapKeyToLocal2(key),has=Object.prototype.hasOwnProperty.call(this.obj,k5);return has&&delete this.obj[k5],has}clear(){for(let key of Object.keys(this.obj))delete this.obj[key]}get(key){let val=this.obj[mapKeyToLocal2(key)];return val!==void 0&&(val=mapValueToReflect2(this._field,val,this.check)),val}has(key){return Object.prototype.hasOwnProperty.call(this.obj,mapKeyToLocal2(key))}*keys(){for(let objKey of Object.keys(this.obj))yield mapKeyToReflect2(objKey,this._field.mapKey)}*entries(){for(let objEntry of Object.entries(this.obj))yield[mapKeyToReflect2(objEntry[0],this._field.mapKey),mapValueToReflect2(this._field,objEntry[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let val of Object.values(this.obj))yield mapValueToReflect2(this._field,val,this.check)}forEach(callbackfn,thisArg){for(let mapEntry of this.entries())callbackfn.call(thisArg,mapEntry[1],mapEntry[0],this)}};function messageToLocal2(field3,value){return isReflectMessage2(value)?isWrapper2(value.message)&&!field3.oneof&&field3.fieldKind=="message"?value.message.value:value.desc.typeName=="google.protobuf.Struct"&&field3.parent.typeName!="google.protobuf.Value"?wktStructToLocal2(value.message):value.message:value}function messageToReflect2(field3,value,check){return value!==void 0&&(isWrapperDesc2(field3.message)&&!field3.oneof&&field3.fieldKind=="message"?value={$typeName:field3.message.typeName,value:longToReflect2(field3.message.fields[0],value)}:field3.message.typeName=="google.protobuf.Struct"&&field3.parent.typeName!="google.protobuf.Value"&&isObject2(value)&&(value=wktStructToReflect2(value))),new ReflectMessageImpl2(field3.message,value,check)}function listItemToLocal2(field3,value){return field3.listKind=="message"?messageToLocal2(field3,value):longToLocal2(field3,value)}function listItemToReflect2(field3,value,check){return field3.listKind=="message"?messageToReflect2(field3,value,check):longToReflect2(field3,value)}function mapValueToLocal2(field3,value){return field3.mapKind=="message"?messageToLocal2(field3,value):longToLocal2(field3,value)}function mapValueToReflect2(field3,value,check){return field3.mapKind=="message"?messageToReflect2(field3,value,check):value}function mapKeyToLocal2(key){return typeof key=="string"||typeof key=="number"?key:String(key)}function mapKeyToReflect2(key,type2){switch(type2){case ScalarType2.STRING:return key;case ScalarType2.INT32:case ScalarType2.FIXED32:case ScalarType2.UINT32:case ScalarType2.SFIXED32:case ScalarType2.SINT32:{let n3=Number.parseInt(key);if(Number.isFinite(n3))return n3;break}case ScalarType2.BOOL:switch(key){case"true":return!0;case"false":return!1}break;case ScalarType2.UINT64:case ScalarType2.FIXED64:try{return protoInt642.uParse(key)}catch{}break;default:try{return protoInt642.parse(key)}catch{}break}return key}function longToReflect2(field3,value){switch(field3.scalar){case ScalarType2.INT64:case ScalarType2.SFIXED64:case ScalarType2.SINT64:"longAsString"in field3&&field3.longAsString&&typeof value=="string"&&(value=protoInt642.parse(value));break;case ScalarType2.FIXED64:case ScalarType2.UINT64:"longAsString"in field3&&field3.longAsString&&typeof value=="string"&&(value=protoInt642.uParse(value));break}return value}function longToLocal2(field3,value){switch(field3.scalar){case ScalarType2.INT64:case ScalarType2.SFIXED64:case ScalarType2.SINT64:"longAsString"in field3&&field3.longAsString?value=String(value):(typeof value=="string"||typeof value=="number")&&(value=protoInt642.parse(value));break;case ScalarType2.FIXED64:case ScalarType2.UINT64:"longAsString"in field3&&field3.longAsString?value=String(value):(typeof value=="string"||typeof value=="number")&&(value=protoInt642.uParse(value));break}return value}function wktStructToReflect2(json2){let struct2={$typeName:"google.protobuf.Struct",fields:{}};if(isObject2(json2))for(let[k5,v]of Object.entries(json2))struct2.fields[k5]=wktValueToReflect2(v);return struct2}function wktStructToLocal2(val){let json2={};for(let[k5,v]of Object.entries(val.fields))json2[k5]=wktValueToLocal2(v);return json2}function wktValueToLocal2(val){switch(val.kind.case){case"structValue":return wktStructToLocal2(val.kind.value);case"listValue":return val.kind.value.values.map(wktValueToLocal2);case"nullValue":case void 0:return null;default:return val.kind.value}}function wktValueToReflect2(json2){let value={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof json2){case"number":value.kind={case:"numberValue",value:json2};break;case"string":value.kind={case:"stringValue",value:json2};break;case"boolean":value.kind={case:"boolValue",value:json2};break;case"object":if(json2===null)value.kind={case:"nullValue",value:0};else if(Array.isArray(json2)){let listValue={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(json2))for(let e6 of json2)listValue.values.push(wktValueToReflect2(e6));value.kind={case:"listValue",value:listValue}}else value.kind={case:"structValue",value:wktStructToReflect2(json2)};break}return value}function clone(schema2,message6){return cloneReflect(reflect2(schema2,message6)).message}function cloneReflect(i6){let o3=reflect2(i6.desc);for(let f5 of i6.fields)if(i6.isSet(f5))switch(f5.fieldKind){case"list":let list12=o3.get(f5);for(let item of i6.get(f5))list12.add(cloneSingular(f5,item));break;case"map":let map5=o3.get(f5);for(let entry of i6.get(f5).entries())map5.set(entry[0],cloneSingular(f5,entry[1]));break;default:{o3.set(f5,cloneSingular(f5,i6.get(f5)));break}}let unknown=i6.getUnknown();return unknown&&unknown.length>0&&o3.setUnknown([...unknown]),o3}function cloneSingular(field3,value){return field3.message!==void 0&&isReflectMessage2(value)?cloneReflect(value):field3.scalar==ScalarType2.BYTES&&value instanceof Uint8Array?value.slice():value}function base64Decode2(base64Str){let table2=getDecodeTable2(),es=base64Str.length*3/4;base64Str[base64Str.length-2]=="="?es-=2:base64Str[base64Str.length-1]=="="&&(es-=1);let bytes=new Uint8Array(es),bytePos=0,groupPos=0,b7,p3=0;for(let i6=0;i6<base64Str.length;i6++){if(b7=table2[base64Str.charCodeAt(i6)],b7===void 0)switch(base64Str[i6]){case"=":groupPos=0;case`
|
|
472
472
|
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(groupPos){case 0:p3=b7,groupPos=1;break;case 1:bytes[bytePos++]=p3<<2|(b7&48)>>4,p3=b7,groupPos=2;break;case 2:bytes[bytePos++]=(p3&15)<<4|(b7&60)>>2,p3=b7,groupPos=3;break;case 3:bytes[bytePos++]=(p3&3)<<6|b7,groupPos=0;break}}if(groupPos==1)throw Error("invalid base64 string");return bytes.subarray(0,bytePos)}function base64Encode(bytes,encoding="std"){let table2=getEncodeTable2(encoding),pad=encoding=="std",base64="",groupPos=0,b7,p3=0;for(let i6=0;i6<bytes.length;i6++)switch(b7=bytes[i6],groupPos){case 0:base64+=table2[b7>>2],p3=(b7&3)<<4,groupPos=1;break;case 1:base64+=table2[p3|b7>>4],p3=(b7&15)<<2,groupPos=2;break;case 2:base64+=table2[p3|b7>>6],base64+=table2[b7&63],groupPos=0;break}return groupPos&&(base64+=table2[p3],pad&&(base64+="=",groupPos==1&&(base64+="="))),base64}var encodeTableStd2,encodeTableUrl2,decodeTable2;function getEncodeTable2(encoding){return encodeTableStd2||(encodeTableStd2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),encodeTableUrl2=encodeTableStd2.slice(0,-2).concat("-","_")),encoding=="url"?encodeTableUrl2:encodeTableStd2}function getDecodeTable2(){if(!decodeTable2){decodeTable2=[];let encodeTable=getEncodeTable2("std");for(let i6=0;i6<encodeTable.length;i6++)decodeTable2[encodeTable[i6].charCodeAt(0)]=i6;decodeTable2[45]=encodeTable.indexOf("+"),decodeTable2[95]=encodeTable.indexOf("/")}return decodeTable2}function protoCamelCase2(snakeCase){let capNext=!1,b7=[];for(let i6=0;i6<snakeCase.length;i6++){let c5=snakeCase.charAt(i6);switch(c5){case"_":capNext=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":b7.push(c5),capNext=!1;break;default:capNext&&(capNext=!1,c5=c5.toUpperCase()),b7.push(c5);break}}return b7.join("")}function protoSnakeCase(lowerCamelCase){return lowerCamelCase.replace(/[A-Z]/g,letter=>"_"+letter.toLowerCase())}var reservedObjectProperties2=new Set(["constructor","toString","toJSON","valueOf"]);function safeObjectProperty2(name){return reservedObjectProperties2.has(name)?name+"$":name}function restoreJsonNames2(message6){for(let f5 of message6.field)unsafeIsSetExplicit2(f5,"jsonName")||(f5.jsonName=protoCamelCase2(f5.name));message6.nestedType.forEach(restoreJsonNames2)}function parseTextFormatEnumValue2(descEnum,value){let enumValue=descEnum.values.find(v=>v.name===value);if(!enumValue)throw new Error(`cannot parse ${descEnum} default value: ${value}`);return enumValue.number}function parseTextFormatScalarValue2(type2,value){switch(type2){case ScalarType2.STRING:return value;case ScalarType2.BYTES:{let u=unescapeBytesDefaultValue2(value);if(u===!1)throw new Error(`cannot parse ${ScalarType2[type2]} default value: ${value}`);return u}case ScalarType2.INT64:case ScalarType2.SFIXED64:case ScalarType2.SINT64:return protoInt642.parse(value);case ScalarType2.UINT64:case ScalarType2.FIXED64:return protoInt642.uParse(value);case ScalarType2.DOUBLE:case ScalarType2.FLOAT:switch(value){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(value)}case ScalarType2.BOOL:return value==="true";case ScalarType2.INT32:case ScalarType2.UINT32:case ScalarType2.SINT32:case ScalarType2.FIXED32:case ScalarType2.SFIXED32:return parseInt(value,10)}}function unescapeBytesDefaultValue2(str2){let b7=[],input={tail:str2,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(n3){if(this.tail.length>=n3){let r5=this.tail.substring(0,n3);return this.tail=this.tail.substring(n3),r5}return!1}};for(;input.next();)switch(input.c){case"\\":if(input.next())switch(input.c){case"\\":b7.push(input.c.charCodeAt(0));break;case"b":b7.push(8);break;case"f":b7.push(12);break;case"n":b7.push(10);break;case"r":b7.push(13);break;case"t":b7.push(9);break;case"v":b7.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let s2=input.c,t=input.take(2);if(t===!1)return!1;let n3=parseInt(s2+t,8);if(Number.isNaN(n3))return!1;b7.push(n3);break}case"x":{let s2=input.c,t=input.take(2);if(t===!1)return!1;let n3=parseInt(s2+t,16);if(Number.isNaN(n3))return!1;b7.push(n3);break}case"u":{let s2=input.c,t=input.take(4);if(t===!1)return!1;let n3=parseInt(s2+t,16);if(Number.isNaN(n3))return!1;let chunk=new Uint8Array(4);new DataView(chunk.buffer).setInt32(0,n3,!0),b7.push(chunk[0],chunk[1],chunk[2],chunk[3]);break}case"U":{let s2=input.c,t=input.take(8);if(t===!1)return!1;let tc=protoInt642.uEnc(s2+t),chunk=new Uint8Array(8),view=new DataView(chunk.buffer);view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),b7.push(chunk[0],chunk[1],chunk[2],chunk[3],chunk[4],chunk[5],chunk[6],chunk[7]);break}}break;default:b7.push(input.c.charCodeAt(0))}return new Uint8Array(b7)}function*nestedTypes2(desc){switch(desc.kind){case"file":for(let message6 of desc.messages)yield message6,yield*nestedTypes2(message6);yield*desc.enums,yield*desc.services,yield*desc.extensions;break;case"message":for(let message6 of desc.nestedMessages)yield message6,yield*nestedTypes2(message6);yield*desc.nestedEnums,yield*desc.nestedExtensions;break}}function usedTypes(descMessage){return usedTypesInternal(descMessage,new Set)}function*usedTypesInternal(descMessage,seen){var _a3,_b2;for(let field3 of descMessage.fields){let ref=(_b2=(_a3=field3.enum)!==null&&_a3!==void 0?_a3:field3.message)!==null&&_b2!==void 0?_b2:void 0;!ref||seen.has(ref.typeName)||(seen.add(ref.typeName),yield ref,ref.kind=="message"&&(yield*usedTypesInternal(ref,seen)))}}function createRegistry(...input){return initBaseRegistry(input)}function createMutableRegistry(...input){let reg=initBaseRegistry(input);return Object.assign(Object.assign({},reg),{remove(desc){var _a3;desc.kind=="extension"&&((_a3=reg.extendees.get(desc.extendee.typeName))===null||_a3===void 0||_a3.delete(desc.number)),reg.types.delete(desc.typeName)}})}function createFileRegistry2(...args){let registry=createBaseRegistry2();if(!args.length)return registry;if("$typeName"in args[0]&&args[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let file of args[0].file)addFile2(file,registry);return registry}if("$typeName"in args[0]){let recurseDeps=function(file){let deps=[];for(let protoFileName of file.dependency){if(registry.getFile(protoFileName)!=null||seen.has(protoFileName))continue;let dep=resolve(protoFileName);if(!dep)throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);"kind"in dep?registry.addFile(dep,!1,!0):(seen.add(dep.name),deps.push(dep))}return deps.concat(...deps.map(recurseDeps))},input=args[0],resolve=args[1],seen=new Set;for(let file of[input,...recurseDeps(input)].reverse())addFile2(file,registry)}else for(let fileReg of args)for(let file of fileReg.files)registry.addFile(file);return registry}function createBaseRegistry2(){let types3=new Map,extendees=new Map,files=new Map;return{kind:"registry",types:types3,extendees,[Symbol.iterator](){return types3.values()},get files(){return files.values()},addFile(file,skipTypes,withDeps){if(files.set(file.proto.name,file),!skipTypes)for(let type2 of nestedTypes2(file))this.add(type2);if(withDeps)for(let f5 of file.dependencies)this.addFile(f5,skipTypes,withDeps)},add(desc){if(desc.kind=="extension"){let numberToExt=extendees.get(desc.extendee.typeName);numberToExt||extendees.set(desc.extendee.typeName,numberToExt=new Map),numberToExt.set(desc.number,desc)}types3.set(desc.typeName,desc)},get(typeName){return types3.get(typeName)},getFile(fileName){return files.get(fileName)},getMessage(typeName){let t=types3.get(typeName);return t?.kind=="message"?t:void 0},getEnum(typeName){let t=types3.get(typeName);return t?.kind=="enum"?t:void 0},getExtension(typeName){let t=types3.get(typeName);return t?.kind=="extension"?t:void 0},getExtensionFor(extendee,no){var _a3;return(_a3=extendees.get(extendee.typeName))===null||_a3===void 0?void 0:_a3.get(no)},getService(typeName){let t=types3.get(typeName);return t?.kind=="service"?t:void 0}}}function initBaseRegistry(inputs){let registry=createBaseRegistry2();for(let input of inputs)switch(input.kind){case"registry":for(let n3 of input)registry.add(n3);break;case"file":registry.addFile(input);break;default:registry.add(input);break}return registry}var EDITION_PROTO24=998,EDITION_PROTO34=999,EDITION_UNSTABLE2=9999,TYPE_STRING2=9,TYPE_GROUP2=10,TYPE_MESSAGE2=11,TYPE_BYTES2=12,TYPE_ENUM2=14,LABEL_REPEATED2=3,LABEL_REQUIRED2=2,JS_STRING2=1,IDEMPOTENCY_UNKNOWN2=0,EXPLICIT2=1,IMPLICIT6=2,LEGACY_REQUIRED2=3,PACKED2=1,DELIMITED2=2,OPEN2=1,VERIFY2=2;var maximumEdition2=1001,featureDefaults2={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function addFile2(proto2,reg){var _a3,_b2;let file={kind:"file",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,edition:getFileEdition2(proto2),name:proto2.name.replace(/\.proto$/,""),dependencies:findFileDependencies2(proto2,reg),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${proto2.name}`}},mapEntriesStore=new Map,mapEntries={get(typeName){return mapEntriesStore.get(typeName)},add(desc){var _a4;assert2(((_a4=desc.proto.options)===null||_a4===void 0?void 0:_a4.mapEntry)===!0),mapEntriesStore.set(desc.typeName,desc)}};for(let enumProto of proto2.enumType)addEnum2(enumProto,file,void 0,reg);for(let messageProto of proto2.messageType)addMessage2(messageProto,file,void 0,reg,mapEntries);for(let serviceProto of proto2.service)addService2(serviceProto,file,reg);addExtensions2(file,reg);for(let mapEntry of mapEntriesStore.values())addFields2(mapEntry,reg,mapEntries);for(let message6 of file.messages)addFields2(message6,reg,mapEntries),addExtensions2(message6,reg);reg.addFile(file,!0)}function addExtensions2(desc,reg){switch(desc.kind){case"file":for(let proto2 of desc.proto.extension){let ext=newField2(proto2,desc,reg);desc.extensions.push(ext),reg.add(ext)}break;case"message":for(let proto2 of desc.proto.extension){let ext=newField2(proto2,desc,reg);desc.nestedExtensions.push(ext),reg.add(ext)}for(let message6 of desc.nestedMessages)addExtensions2(message6,reg);break}}function addFields2(message6,reg,mapEntries){let allOneofs=message6.proto.oneofDecl.map(proto2=>newOneof2(proto2,message6)),oneofsSeen=new Set;for(let proto2 of message6.proto.field){let oneof2=findOneof2(proto2,allOneofs),field3=newField2(proto2,message6,reg,oneof2,mapEntries);message6.fields.push(field3),message6.field[field3.localName]=field3,oneof2===void 0?message6.members.push(field3):(oneof2.fields.push(field3),oneofsSeen.has(oneof2)||(oneofsSeen.add(oneof2),message6.members.push(oneof2)))}for(let oneof2 of allOneofs.filter(o3=>oneofsSeen.has(o3)))message6.oneofs.push(oneof2);for(let child of message6.nestedMessages)addFields2(child,reg,mapEntries)}function addEnum2(proto2,file,parent,reg){var _a3,_b2,_c5,_d,_e5;let sharedPrefix=findEnumSharedPrefix2(proto2.name,proto2.value),desc={kind:"enum",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,parent,open:!0,name:proto2.name,typeName:makeTypeName2(proto2,parent,file),value:{},values:[],sharedPrefix,toString(){return`enum ${this.typeName}`}};desc.open=isEnumOpen2(desc),reg.add(desc);for(let p3 of proto2.value){let name=p3.name;desc.values.push(desc.value[p3.number]={kind:"enum_value",proto:p3,deprecated:(_d=(_c5=p3.options)===null||_c5===void 0?void 0:_c5.deprecated)!==null&&_d!==void 0?_d:!1,parent:desc,name,localName:safeObjectProperty2(sharedPrefix==null?name:name.substring(sharedPrefix.length)),number:p3.number,toString(){return`enum value ${desc.typeName}.${name}`}})}((_e5=parent?.nestedEnums)!==null&&_e5!==void 0?_e5:file.enums).push(desc)}function addMessage2(proto2,file,parent,reg,mapEntries){var _a3,_b2,_c5,_d;let desc={kind:"message",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,parent,name:proto2.name,typeName:makeTypeName2(proto2,parent,file),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((_c5=proto2.options)===null||_c5===void 0?void 0:_c5.mapEntry)===!0?mapEntries.add(desc):(((_d=parent?.nestedMessages)!==null&&_d!==void 0?_d:file.messages).push(desc),reg.add(desc));for(let enumProto of proto2.enumType)addEnum2(enumProto,file,desc,reg);for(let messageProto of proto2.nestedType)addMessage2(messageProto,file,desc,reg,mapEntries)}function addService2(proto2,file,reg){var _a3,_b2;let desc={kind:"service",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,file,name:proto2.name,typeName:makeTypeName2(proto2,void 0,file),methods:[],method:{},toString(){return`service ${this.typeName}`}};file.services.push(desc),reg.add(desc);for(let methodProto of proto2.method){let method=newMethod2(methodProto,desc,reg);desc.methods.push(method),desc.method[method.localName]=method}}function newMethod2(proto2,parent,reg){var _a3,_b2,_c5,_d;let methodKind;proto2.clientStreaming&&proto2.serverStreaming?methodKind="bidi_streaming":proto2.clientStreaming?methodKind="client_streaming":proto2.serverStreaming?methodKind="server_streaming":methodKind="unary";let input=reg.getMessage(trimLeadingDot2(proto2.inputType)),output=reg.getMessage(trimLeadingDot2(proto2.outputType));assert2(input,`invalid MethodDescriptorProto: input_type ${proto2.inputType} not found`),assert2(output,`invalid MethodDescriptorProto: output_type ${proto2.inputType} not found`);let name=proto2.name;return{kind:"rpc",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,parent,name,localName:safeObjectProperty2(name.length?safeObjectProperty2(name[0].toLowerCase()+name.substring(1)):name),methodKind,input,output,idempotency:(_d=(_c5=proto2.options)===null||_c5===void 0?void 0:_c5.idempotencyLevel)!==null&&_d!==void 0?_d:IDEMPOTENCY_UNKNOWN2,toString(){return`rpc ${parent.typeName}.${name}`}}}function newOneof2(proto2,parent){return{kind:"oneof",proto:proto2,deprecated:!1,parent,fields:[],name:proto2.name,localName:safeObjectProperty2(protoCamelCase2(proto2.name)),toString(){return`oneof ${parent.typeName}.${this.name}`}}}function newField2(proto2,parentOrFile,reg,oneof2,mapEntries){var _a3,_b2,_c5;let isExtension=mapEntries===void 0,field3={kind:"field",proto:proto2,deprecated:(_b2=(_a3=proto2.options)===null||_a3===void 0?void 0:_a3.deprecated)!==null&&_b2!==void 0?_b2:!1,name:proto2.name,number:proto2.number,scalar:void 0,message:void 0,enum:void 0,presence:getFieldPresence2(proto2,oneof2,isExtension,parentOrFile),utf8Validation:isUtf8Validated2(proto2,parentOrFile),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(isExtension){let file=parentOrFile.kind=="file"?parentOrFile:parentOrFile.file,parent=parentOrFile.kind=="file"?void 0:parentOrFile,typeName=makeTypeName2(proto2,parent,file);field3.kind="extension",field3.file=file,field3.parent=parent,field3.oneof=void 0,field3.typeName=typeName,field3.jsonName=`[${typeName}]`,field3.toString=()=>`extension ${typeName}`;let extendee=reg.getMessage(trimLeadingDot2(proto2.extendee));assert2(extendee,`invalid FieldDescriptorProto: extendee ${proto2.extendee} not found`),field3.extendee=extendee}else{let parent=parentOrFile;assert2(parent.kind=="message"),field3.parent=parent,field3.oneof=oneof2,field3.localName=oneof2?protoCamelCase2(proto2.name):safeObjectProperty2(protoCamelCase2(proto2.name)),field3.jsonName=proto2.jsonName,field3.toString=()=>`field ${parent.typeName}.${proto2.name}`}let label2=proto2.label,type2=proto2.type,jstype=(_c5=proto2.options)===null||_c5===void 0?void 0:_c5.jstype;if(label2===LABEL_REPEATED2){let mapEntry=type2==TYPE_MESSAGE2?mapEntries?.get(trimLeadingDot2(proto2.typeName)):void 0;if(mapEntry){field3.fieldKind="map";let{key,value}=findMapEntryFields2(mapEntry);return field3.mapKey=key.scalar,field3.mapKind=value.fieldKind,field3.message=value.message,field3.delimitedEncoding=!1,field3.enum=value.enum,field3.scalar=value.scalar,field3}switch(field3.fieldKind="list",type2){case TYPE_MESSAGE2:case TYPE_GROUP2:field3.listKind="message",field3.message=reg.getMessage(trimLeadingDot2(proto2.typeName)),assert2(field3.message),field3.delimitedEncoding=isDelimitedEncoding2(proto2,parentOrFile);break;case TYPE_ENUM2:field3.listKind="enum",field3.enum=reg.getEnum(trimLeadingDot2(proto2.typeName)),assert2(field3.enum);break;default:field3.listKind="scalar",field3.scalar=type2,field3.longAsString=jstype==JS_STRING2;break}return field3.packed=isPackedField2(proto2,parentOrFile),field3}switch(type2){case TYPE_MESSAGE2:case TYPE_GROUP2:field3.fieldKind="message",field3.message=reg.getMessage(trimLeadingDot2(proto2.typeName)),assert2(field3.message,`invalid FieldDescriptorProto: type_name ${proto2.typeName} not found`),field3.delimitedEncoding=isDelimitedEncoding2(proto2,parentOrFile),field3.getDefaultValue=()=>{};break;case TYPE_ENUM2:{let enumeration=reg.getEnum(trimLeadingDot2(proto2.typeName));assert2(enumeration!==void 0,`invalid FieldDescriptorProto: type_name ${proto2.typeName} not found`),field3.fieldKind="enum",field3.enum=reg.getEnum(trimLeadingDot2(proto2.typeName)),field3.getDefaultValue=()=>unsafeIsSetExplicit2(proto2,"defaultValue")?parseTextFormatEnumValue2(enumeration,proto2.defaultValue):void 0;break}default:{field3.fieldKind="scalar",field3.scalar=type2,field3.longAsString=jstype==JS_STRING2,field3.getDefaultValue=()=>unsafeIsSetExplicit2(proto2,"defaultValue")?parseTextFormatScalarValue2(type2,proto2.defaultValue):void 0;break}}return field3}function getFileEdition2(proto2){switch(proto2.syntax){case"":case"proto2":return EDITION_PROTO24;case"proto3":return EDITION_PROTO34;case"editions":if(proto2.edition===EDITION_UNSTABLE2)return maximumEdition2;if(proto2.edition in featureDefaults2)return proto2.edition;throw new Error(`${proto2.name}: unsupported edition`);default:throw new Error(`${proto2.name}: unsupported syntax "${proto2.syntax}"`)}}function findFileDependencies2(proto2,reg){return proto2.dependency.map(wantName=>{let dep=reg.getFile(wantName);if(!dep)throw new Error(`Cannot find ${wantName}, imported by ${proto2.name}`);return dep})}function findEnumSharedPrefix2(enumName,values){let prefix=camelToSnakeCase2(enumName)+"_";for(let value of values){if(!value.name.toLowerCase().startsWith(prefix))return;let shortName=value.name.substring(prefix.length);if(shortName.length==0||/^\d/.test(shortName))return}return prefix}function camelToSnakeCase2(camel){return(camel.substring(0,1)+camel.substring(1).replace(/[A-Z]/g,c5=>"_"+c5)).toLowerCase()}function makeTypeName2(proto2,parent,file){let typeName;return parent?typeName=`${parent.typeName}.${proto2.name}`:file.proto.package.length>0?typeName=`${file.proto.package}.${proto2.name}`:typeName=`${proto2.name}`,typeName}function trimLeadingDot2(typeName){return typeName.startsWith(".")?typeName.substring(1):typeName}function findOneof2(proto2,allOneofs){if(!unsafeIsSetExplicit2(proto2,"oneofIndex")||proto2.proto3Optional)return;let oneof2=allOneofs[proto2.oneofIndex];return assert2(oneof2,`invalid FieldDescriptorProto: oneof #${proto2.oneofIndex} for field #${proto2.number} not found`),oneof2}function getFieldPresence2(proto2,oneof2,isExtension,parent){if(proto2.label==LABEL_REQUIRED2)return LEGACY_REQUIRED2;if(proto2.label==LABEL_REPEATED2)return IMPLICIT6;if(oneof2||proto2.proto3Optional||isExtension)return EXPLICIT2;let resolved=resolveFeature2("fieldPresence",{proto:proto2,parent});return resolved==IMPLICIT6&&(proto2.type==TYPE_MESSAGE2||proto2.type==TYPE_GROUP2)?EXPLICIT2:resolved}function isPackedField2(proto2,parent){if(proto2.label!=LABEL_REPEATED2)return!1;switch(proto2.type){case TYPE_STRING2:case TYPE_BYTES2:case TYPE_GROUP2:case TYPE_MESSAGE2:return!1}let o3=proto2.options;return o3&&unsafeIsSetExplicit2(o3,"packed")?o3.packed:PACKED2==resolveFeature2("repeatedFieldEncoding",{proto:proto2,parent})}function findMapEntryFields2(mapEntry){let key=mapEntry.fields.find(f5=>f5.number===1),value=mapEntry.fields.find(f5=>f5.number===2);return assert2(key&&key.fieldKind=="scalar"&&key.scalar!=ScalarType2.BYTES&&key.scalar!=ScalarType2.FLOAT&&key.scalar!=ScalarType2.DOUBLE&&value&&value.fieldKind!="list"&&value.fieldKind!="map"),{key,value}}function isEnumOpen2(desc){var _a3;return OPEN2==resolveFeature2("enumType",{proto:desc.proto,parent:(_a3=desc.parent)!==null&&_a3!==void 0?_a3:desc.file})}function isDelimitedEncoding2(proto2,parent){return proto2.type==TYPE_GROUP2?!0:DELIMITED2==resolveFeature2("messageEncoding",{proto:proto2,parent})}function isUtf8Validated2(proto2,parent){return VERIFY2==resolveFeature2("utf8Validation",{proto:proto2,parent})}function resolveFeature2(name,ref){var _a3,_b2;let featureSet=(_a3=ref.proto.options)===null||_a3===void 0?void 0:_a3.features;if(featureSet){let val=featureSet[name];if(val!=0)return val}if("kind"in ref){if(ref.kind=="message")return resolveFeature2(name,(_b2=ref.parent)!==null&&_b2!==void 0?_b2:ref.file);let editionDefaults=featureDefaults2[ref.edition];if(!editionDefaults)throw new Error(`feature default for edition ${ref.edition} not found`);return editionDefaults[name]}return resolveFeature2(name,ref.parent)}function assert2(condition,msg){if(!condition)throw new Error(msg)}function boot2(boot3){let root5=bootFileDescriptorProto2(boot3);return root5.messageType.forEach(restoreJsonNames2),createFileRegistry2(root5,()=>{}).getFile(root5.name)}function bootFileDescriptorProto2(init){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},init),{messageType:init.messageType.map(bootDescriptorProto2),enumType:init.enumType.map(bootEnumDescriptorProto2)}))}function bootDescriptorProto2(init){var _a3,_b2,_c5,_d,_e5,_f,_g,_h4;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:init.name,field:(_b2=(_a3=init.field)===null||_a3===void 0?void 0:_a3.map(bootFieldDescriptorProto2))!==null&&_b2!==void 0?_b2:[],extension:[],nestedType:(_d=(_c5=init.nestedType)===null||_c5===void 0?void 0:_c5.map(bootDescriptorProto2))!==null&&_d!==void 0?_d:[],enumType:(_f=(_e5=init.enumType)===null||_e5===void 0?void 0:_e5.map(bootEnumDescriptorProto2))!==null&&_f!==void 0?_f:[],extensionRange:(_h4=(_g=init.extensionRange)===null||_g===void 0?void 0:_g.map(e6=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},e6)))!==null&&_h4!==void 0?_h4:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function bootFieldDescriptorProto2(init){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},init),{options:init.options?bootFieldOptions2(init.options):void 0}))}function bootFieldOptions2(init){var _a3,_b2,_c5;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},init),{targets:(_a3=init.targets)!==null&&_a3!==void 0?_a3:[],editionDefaults:(_c5=(_b2=init.editionDefaults)===null||_b2===void 0?void 0:_b2.map(e6=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},e6)))!==null&&_c5!==void 0?_c5:[],uninterpretedOption:[]}))}function bootEnumDescriptorProto2(init){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:init.name,reservedName:[],reservedRange:[],value:init.value.map(e6=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},e6))})}function messageDesc3(file,path14,...paths){return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path14])}var file_google_protobuf_descriptor2=boot2({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false",options:{}},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"removal_error",number:5,type:9,label:1}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var FileDescriptorProtoSchema2=messageDesc3(file_google_protobuf_descriptor2,1);var ExtensionRangeOptions_VerificationState2;(function(ExtensionRangeOptions_VerificationState3){ExtensionRangeOptions_VerificationState3[ExtensionRangeOptions_VerificationState3.DECLARATION=0]="DECLARATION",ExtensionRangeOptions_VerificationState3[ExtensionRangeOptions_VerificationState3.UNVERIFIED=1]="UNVERIFIED"})(ExtensionRangeOptions_VerificationState2||(ExtensionRangeOptions_VerificationState2={}));var FieldDescriptorProto_Type2;(function(FieldDescriptorProto_Type3){FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.DOUBLE=1]="DOUBLE",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.FLOAT=2]="FLOAT",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.INT64=3]="INT64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.UINT64=4]="UINT64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.INT32=5]="INT32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.FIXED64=6]="FIXED64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.FIXED32=7]="FIXED32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.BOOL=8]="BOOL",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.STRING=9]="STRING",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.GROUP=10]="GROUP",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.MESSAGE=11]="MESSAGE",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.BYTES=12]="BYTES",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.UINT32=13]="UINT32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.ENUM=14]="ENUM",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SFIXED32=15]="SFIXED32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SFIXED64=16]="SFIXED64",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SINT32=17]="SINT32",FieldDescriptorProto_Type3[FieldDescriptorProto_Type3.SINT64=18]="SINT64"})(FieldDescriptorProto_Type2||(FieldDescriptorProto_Type2={}));var FieldDescriptorProto_Label2;(function(FieldDescriptorProto_Label3){FieldDescriptorProto_Label3[FieldDescriptorProto_Label3.OPTIONAL=1]="OPTIONAL",FieldDescriptorProto_Label3[FieldDescriptorProto_Label3.REPEATED=3]="REPEATED",FieldDescriptorProto_Label3[FieldDescriptorProto_Label3.REQUIRED=2]="REQUIRED"})(FieldDescriptorProto_Label2||(FieldDescriptorProto_Label2={}));var FileOptions_OptimizeMode2;(function(FileOptions_OptimizeMode3){FileOptions_OptimizeMode3[FileOptions_OptimizeMode3.SPEED=1]="SPEED",FileOptions_OptimizeMode3[FileOptions_OptimizeMode3.CODE_SIZE=2]="CODE_SIZE",FileOptions_OptimizeMode3[FileOptions_OptimizeMode3.LITE_RUNTIME=3]="LITE_RUNTIME"})(FileOptions_OptimizeMode2||(FileOptions_OptimizeMode2={}));var FieldOptions_CType2;(function(FieldOptions_CType3){FieldOptions_CType3[FieldOptions_CType3.STRING=0]="STRING",FieldOptions_CType3[FieldOptions_CType3.CORD=1]="CORD",FieldOptions_CType3[FieldOptions_CType3.STRING_PIECE=2]="STRING_PIECE"})(FieldOptions_CType2||(FieldOptions_CType2={}));var FieldOptions_JSType2;(function(FieldOptions_JSType3){FieldOptions_JSType3[FieldOptions_JSType3.JS_NORMAL=0]="JS_NORMAL",FieldOptions_JSType3[FieldOptions_JSType3.JS_STRING=1]="JS_STRING",FieldOptions_JSType3[FieldOptions_JSType3.JS_NUMBER=2]="JS_NUMBER"})(FieldOptions_JSType2||(FieldOptions_JSType2={}));var FieldOptions_OptionRetention2;(function(FieldOptions_OptionRetention3){FieldOptions_OptionRetention3[FieldOptions_OptionRetention3.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",FieldOptions_OptionRetention3[FieldOptions_OptionRetention3.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",FieldOptions_OptionRetention3[FieldOptions_OptionRetention3.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(FieldOptions_OptionRetention2||(FieldOptions_OptionRetention2={}));var FieldOptions_OptionTargetType2;(function(FieldOptions_OptionTargetType3){FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",FieldOptions_OptionTargetType3[FieldOptions_OptionTargetType3.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(FieldOptions_OptionTargetType2||(FieldOptions_OptionTargetType2={}));var MethodOptions_IdempotencyLevel2;(function(MethodOptions_IdempotencyLevel3){MethodOptions_IdempotencyLevel3[MethodOptions_IdempotencyLevel3.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",MethodOptions_IdempotencyLevel3[MethodOptions_IdempotencyLevel3.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",MethodOptions_IdempotencyLevel3[MethodOptions_IdempotencyLevel3.IDEMPOTENT=2]="IDEMPOTENT"})(MethodOptions_IdempotencyLevel2||(MethodOptions_IdempotencyLevel2={}));var FeatureSet_VisibilityFeature_DefaultSymbolVisibility2;(function(FeatureSet_VisibilityFeature_DefaultSymbolVisibility3){FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.EXPORT_ALL=1]="EXPORT_ALL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.LOCAL_ALL=3]="LOCAL_ALL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility3[FeatureSet_VisibilityFeature_DefaultSymbolVisibility3.STRICT=4]="STRICT"})(FeatureSet_VisibilityFeature_DefaultSymbolVisibility2||(FeatureSet_VisibilityFeature_DefaultSymbolVisibility2={}));var FeatureSet_FieldPresence2;(function(FeatureSet_FieldPresence3){FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.EXPLICIT=1]="EXPLICIT",FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.IMPLICIT=2]="IMPLICIT",FeatureSet_FieldPresence3[FeatureSet_FieldPresence3.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(FeatureSet_FieldPresence2||(FeatureSet_FieldPresence2={}));var FeatureSet_EnumType2;(function(FeatureSet_EnumType3){FeatureSet_EnumType3[FeatureSet_EnumType3.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",FeatureSet_EnumType3[FeatureSet_EnumType3.OPEN=1]="OPEN",FeatureSet_EnumType3[FeatureSet_EnumType3.CLOSED=2]="CLOSED"})(FeatureSet_EnumType2||(FeatureSet_EnumType2={}));var FeatureSet_RepeatedFieldEncoding2;(function(FeatureSet_RepeatedFieldEncoding3){FeatureSet_RepeatedFieldEncoding3[FeatureSet_RepeatedFieldEncoding3.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",FeatureSet_RepeatedFieldEncoding3[FeatureSet_RepeatedFieldEncoding3.PACKED=1]="PACKED",FeatureSet_RepeatedFieldEncoding3[FeatureSet_RepeatedFieldEncoding3.EXPANDED=2]="EXPANDED"})(FeatureSet_RepeatedFieldEncoding2||(FeatureSet_RepeatedFieldEncoding2={}));var FeatureSet_Utf8Validation2;(function(FeatureSet_Utf8Validation3){FeatureSet_Utf8Validation3[FeatureSet_Utf8Validation3.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",FeatureSet_Utf8Validation3[FeatureSet_Utf8Validation3.VERIFY=2]="VERIFY",FeatureSet_Utf8Validation3[FeatureSet_Utf8Validation3.NONE=3]="NONE"})(FeatureSet_Utf8Validation2||(FeatureSet_Utf8Validation2={}));var FeatureSet_MessageEncoding2;(function(FeatureSet_MessageEncoding3){FeatureSet_MessageEncoding3[FeatureSet_MessageEncoding3.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",FeatureSet_MessageEncoding3[FeatureSet_MessageEncoding3.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",FeatureSet_MessageEncoding3[FeatureSet_MessageEncoding3.DELIMITED=2]="DELIMITED"})(FeatureSet_MessageEncoding2||(FeatureSet_MessageEncoding2={}));var FeatureSet_JsonFormat2;(function(FeatureSet_JsonFormat3){FeatureSet_JsonFormat3[FeatureSet_JsonFormat3.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",FeatureSet_JsonFormat3[FeatureSet_JsonFormat3.ALLOW=1]="ALLOW",FeatureSet_JsonFormat3[FeatureSet_JsonFormat3.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(FeatureSet_JsonFormat2||(FeatureSet_JsonFormat2={}));var FeatureSet_EnforceNamingStyle2;(function(FeatureSet_EnforceNamingStyle3){FeatureSet_EnforceNamingStyle3[FeatureSet_EnforceNamingStyle3.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",FeatureSet_EnforceNamingStyle3[FeatureSet_EnforceNamingStyle3.STYLE2024=1]="STYLE2024",FeatureSet_EnforceNamingStyle3[FeatureSet_EnforceNamingStyle3.STYLE_LEGACY=2]="STYLE_LEGACY"})(FeatureSet_EnforceNamingStyle2||(FeatureSet_EnforceNamingStyle2={}));var GeneratedCodeInfo_Annotation_Semantic2;(function(GeneratedCodeInfo_Annotation_Semantic3){GeneratedCodeInfo_Annotation_Semantic3[GeneratedCodeInfo_Annotation_Semantic3.NONE=0]="NONE",GeneratedCodeInfo_Annotation_Semantic3[GeneratedCodeInfo_Annotation_Semantic3.SET=1]="SET",GeneratedCodeInfo_Annotation_Semantic3[GeneratedCodeInfo_Annotation_Semantic3.ALIAS=2]="ALIAS"})(GeneratedCodeInfo_Annotation_Semantic2||(GeneratedCodeInfo_Annotation_Semantic2={}));var Edition2;(function(Edition3){Edition3[Edition3.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",Edition3[Edition3.EDITION_LEGACY=900]="EDITION_LEGACY",Edition3[Edition3.EDITION_PROTO2=998]="EDITION_PROTO2",Edition3[Edition3.EDITION_PROTO3=999]="EDITION_PROTO3",Edition3[Edition3.EDITION_2023=1e3]="EDITION_2023",Edition3[Edition3.EDITION_2024=1001]="EDITION_2024",Edition3[Edition3.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",Edition3[Edition3.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",Edition3[Edition3.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",Edition3[Edition3.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",Edition3[Edition3.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",Edition3[Edition3.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",Edition3[Edition3.EDITION_MAX=2147483647]="EDITION_MAX"})(Edition2||(Edition2={}));var SymbolVisibility2;(function(SymbolVisibility3){SymbolVisibility3[SymbolVisibility3.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",SymbolVisibility3[SymbolVisibility3.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",SymbolVisibility3[SymbolVisibility3.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(SymbolVisibility2||(SymbolVisibility2={}));var readDefaults2={readUnknownFields:!0};function makeReadOptions2(options){return options?Object.assign(Object.assign({},readDefaults2),options):readDefaults2}function fromBinary2(schema2,bytes,options){let msg=reflect2(schema2,void 0,!1);return readMessage2(msg,new BinaryReader2(bytes),makeReadOptions2(options),!1,bytes.byteLength),msg.message}function readMessage2(message6,reader,options,delimited,lengthOrDelimitedFieldNo){var _a3;let end=delimited?reader.len:reader.pos+lengthOrDelimitedFieldNo,fieldNo,wireType,unknownFields=(_a3=message6.getUnknown())!==null&&_a3!==void 0?_a3:[];for(;reader.pos<end&&([fieldNo,wireType]=reader.tag(),!(delimited&&wireType==WireType2.EndGroup));){let field3=message6.findNumber(fieldNo);if(!field3){let data=reader.skip(wireType,fieldNo);options.readUnknownFields&&unknownFields.push({no:fieldNo,wireType,data});continue}readField2(message6,reader,field3,wireType,options)}if(delimited&&(wireType!=WireType2.EndGroup||fieldNo!==lengthOrDelimitedFieldNo))throw new Error("invalid end group tag");unknownFields.length>0&&message6.setUnknown(unknownFields)}function readField2(message6,reader,field3,wireType,options){var _a3;switch(field3.fieldKind){case"scalar":message6.set(field3,readScalar2(reader,field3.scalar,field3.utf8Validation));break;case"enum":let val=readScalar2(reader,ScalarType2.INT32);if(field3.enum.open)message6.set(field3,val);else if(field3.enum.values.some(v=>v.number===val))message6.set(field3,val);else if(options.readUnknownFields){let bytes=[];varint32write2(val,bytes);let unknownFields=(_a3=message6.getUnknown())!==null&&_a3!==void 0?_a3:[];unknownFields.push({no:field3.number,wireType,data:new Uint8Array(bytes)}),message6.setUnknown(unknownFields)}break;case"message":message6.set(field3,readMessageField2(reader,options,field3,message6.get(field3)));break;case"list":readListField2(reader,wireType,message6.get(field3),options);break;case"map":readMapEntry2(reader,message6.get(field3),options);break}}function readMapEntry2(reader,map5,options){let field3=map5.field(),key,val,len=reader.uint32(),end=reader.pos+len;for(;reader.pos<end;){let[fieldNo]=reader.tag();switch(fieldNo){case 1:key=readScalar2(reader,field3.mapKey,field3.utf8Validation);break;case 2:switch(field3.mapKind){case"scalar":val=readScalar2(reader,field3.scalar,field3.utf8Validation);break;case"enum":val=reader.int32();break;case"message":val=readMessageField2(reader,options,field3);break}break}}if(key===void 0&&(key=scalarZeroValue2(field3.mapKey,!1)),val===void 0)switch(field3.mapKind){case"scalar":val=scalarZeroValue2(field3.scalar,!1);break;case"enum":val=field3.enum.values[0].number;break;case"message":val=reflect2(field3.message,void 0,!1);break}map5.set(key,val)}function readListField2(reader,wireType,list12,options){var _a3;let field3=list12.field();if(field3.listKind==="message"){list12.add(readMessageField2(reader,options,field3));return}let scalarType=(_a3=field3.scalar)!==null&&_a3!==void 0?_a3:ScalarType2.INT32;if(!(wireType==WireType2.LengthDelimited&&scalarType!=ScalarType2.STRING&&scalarType!=ScalarType2.BYTES)){list12.add(readScalar2(reader,scalarType,field3.utf8Validation));return}let e6=reader.uint32()+reader.pos;for(;reader.pos<e6;)list12.add(readScalar2(reader,scalarType,field3.utf8Validation))}function readMessageField2(reader,options,field3,mergeMessage){let delimited=field3.delimitedEncoding,message6=mergeMessage??reflect2(field3.message,void 0,!1);return readMessage2(message6,reader,options,delimited,delimited?field3.number:reader.uint32()),message6}function readScalar2(reader,type2,validateUtf8=!1){switch(type2){case ScalarType2.STRING:return reader.string(validateUtf8);case ScalarType2.BOOL:return reader.bool();case ScalarType2.DOUBLE:return reader.double();case ScalarType2.FLOAT:return reader.float();case ScalarType2.INT32:return reader.int32();case ScalarType2.INT64:return reader.int64();case ScalarType2.UINT64:return reader.uint64();case ScalarType2.FIXED64:return reader.fixed64();case ScalarType2.BYTES:return reader.bytes();case ScalarType2.FIXED32:return reader.fixed32();case ScalarType2.SFIXED32:return reader.sfixed32();case ScalarType2.SFIXED64:return reader.sfixed64();case ScalarType2.SINT64:return reader.sint64();case ScalarType2.UINT32:return reader.uint32();case ScalarType2.SINT32:return reader.sint32()}}function fileDesc2(b64,imports){var _a3;let root5=fromBinary2(FileDescriptorProtoSchema2,base64Decode2(b64));return root5.messageType.forEach(restoreJsonNames2),root5.dependency=(_a3=imports?.map(f5=>f5.proto.name))!==null&&_a3!==void 0?_a3:[],createFileRegistry2(root5,protoFileName=>imports?.find(f5=>f5.proto.name===protoFileName)).getFile(root5.name)}var file_google_protobuf_timestamp2=fileDesc2("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),TimestampSchema=messageDesc3(file_google_protobuf_timestamp2,0);function timestampNow(){return timestampFromDate(new Date)}function timestampFromDate(date2){return timestampFromMs(date2.getTime())}function timestampDate(timestamp2){return new Date(timestampMs(timestamp2))}function timestampFromMs(timestampMs2){let seconds=Math.floor(timestampMs2/1e3);return create2(TimestampSchema,{seconds:protoInt642.parse(seconds),nanos:(timestampMs2-seconds*1e3)*1e6})}function timestampMs(timestamp2){return Number(timestamp2.seconds)*1e3+Math.round(timestamp2.nanos/1e6)}var file_google_protobuf_duration2=fileDesc2("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),DurationSchema=messageDesc3(file_google_protobuf_duration2,0);var file_google_protobuf_any=fileDesc2("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),AnySchema=messageDesc3(file_google_protobuf_any,0);var LEGACY_REQUIRED3=3,writeDefaults={writeUnknownFields:!0};function makeWriteOptions(options){return options?Object.assign(Object.assign({},writeDefaults),options):writeDefaults}function toBinary(schema2,message6,options){return writeFields(new BinaryWriter,makeWriteOptions(options),reflect2(schema2,message6)).finish()}function writeFields(writer,opts,msg){var _a3;for(let f5 of msg.sortedFields){if(!msg.isSet(f5)){if(f5.presence==LEGACY_REQUIRED3)throw new Error(`cannot encode ${f5} to binary: required field not set`);continue}writeField(writer,opts,msg,f5)}if(opts.writeUnknownFields)for(let{no,wireType,data}of(_a3=msg.getUnknown())!==null&&_a3!==void 0?_a3:[])writer.tag(no,wireType).raw(data);return writer}function writeField(writer,opts,msg,field3){var _a3;switch(field3.fieldKind){case"scalar":case"enum":writeScalar(writer,msg.desc.typeName,field3.name,(_a3=field3.scalar)!==null&&_a3!==void 0?_a3:ScalarType2.INT32,field3.number,msg.get(field3));break;case"list":writeListField(writer,opts,field3,msg.get(field3));break;case"message":writeMessageField(writer,opts,field3,msg.get(field3));break;case"map":for(let[key,val]of msg.get(field3))writeMapEntry(writer,opts,field3,key,val);break}}function writeScalar(writer,msgName,fieldName,scalarType,fieldNo,value){writeScalarValue(writer.tag(fieldNo,writeTypeOfScalar(scalarType)),msgName,fieldName,scalarType,value)}function writeMessageField(writer,opts,field3,message6){field3.delimitedEncoding?writeFields(writer.tag(field3.number,WireType2.StartGroup),opts,message6).tag(field3.number,WireType2.EndGroup):writeFields(writer.tag(field3.number,WireType2.LengthDelimited).fork(),opts,message6).join()}function writeListField(writer,opts,field3,list12){var _a3;if(field3.listKind=="message"){for(let item of list12)writeMessageField(writer,opts,field3,item);return}let scalarType=(_a3=field3.scalar)!==null&&_a3!==void 0?_a3:ScalarType2.INT32;if(field3.packed){if(!list12.size)return;writer.tag(field3.number,WireType2.LengthDelimited).fork();for(let item of list12)writeScalarValue(writer,field3.parent.typeName,field3.name,scalarType,item);writer.join();return}for(let item of list12)writeScalar(writer,field3.parent.typeName,field3.name,scalarType,field3.number,item)}function writeMapEntry(writer,opts,field3,key,value){var _a3;switch(writer.tag(field3.number,WireType2.LengthDelimited).fork(),writeScalar(writer,field3.parent.typeName,field3.name,field3.mapKey,1,key),field3.mapKind){case"scalar":case"enum":writeScalar(writer,field3.parent.typeName,field3.name,(_a3=field3.scalar)!==null&&_a3!==void 0?_a3:ScalarType2.INT32,2,value);break;case"message":writeFields(writer.tag(2,WireType2.LengthDelimited).fork(),opts,value).join();break}writer.join()}function writeScalarValue(writer,msgName,fieldName,type2,value){try{switch(type2){case ScalarType2.STRING:writer.string(value);break;case ScalarType2.BOOL:writer.bool(value);break;case ScalarType2.DOUBLE:writer.double(value);break;case ScalarType2.FLOAT:writer.float(value);break;case ScalarType2.INT32:writer.int32(value);break;case ScalarType2.INT64:writer.int64(value);break;case ScalarType2.UINT64:writer.uint64(value);break;case ScalarType2.FIXED64:writer.fixed64(value);break;case ScalarType2.BYTES:writer.bytes(value);break;case ScalarType2.FIXED32:writer.fixed32(value);break;case ScalarType2.SFIXED32:writer.sfixed32(value);break;case ScalarType2.SFIXED64:writer.sfixed64(value);break;case ScalarType2.SINT64:writer.sint64(value);break;case ScalarType2.UINT32:writer.uint32(value);break;case ScalarType2.SINT32:writer.sint32(value);break}}catch(e6){throw e6 instanceof Error?new Error(`cannot encode field ${msgName}.${fieldName} to binary: ${e6.message}`):e6}}function writeTypeOfScalar(type2){switch(type2){case ScalarType2.BYTES:case ScalarType2.STRING:return WireType2.LengthDelimited;case ScalarType2.DOUBLE:case ScalarType2.FIXED64:case ScalarType2.SFIXED64:return WireType2.Bit64;case ScalarType2.FIXED32:case ScalarType2.SFIXED32:case ScalarType2.FLOAT:return WireType2.Bit32;default:return WireType2.Varint}}function anyPack(schema2,message6,into){let ret=!1;return into||(into=create2(AnySchema),ret=!0),into.value=toBinary(schema2,message6),into.typeUrl=typeNameToUrl(message6.$typeName),ret?into:void 0}function anyIs(any,descOrTypeName){if(any.typeUrl==="")return!1;let want=typeof descOrTypeName=="string"?descOrTypeName:descOrTypeName.typeName,got=typeUrlToName(any.typeUrl);return want===got}function anyUnpack(any,registryOrMessageDesc){if(any.typeUrl==="")return;let desc=registryOrMessageDesc.kind=="message"?registryOrMessageDesc:registryOrMessageDesc.getMessage(typeUrlToName(any.typeUrl));if(!(!desc||!anyIs(any,desc)))return fromBinary2(desc,any.value)}function typeNameToUrl(name){return`type.googleapis.com/${name}`}function typeUrlToName(url){let slash=url.lastIndexOf("/"),name=slash>=0?url.substring(slash+1):url;if(!name.length)throw new Error(`invalid type url: ${url}`);return name}function extDesc2(file,path14,...paths){if(paths.length==0)return file.extensions[path14];let e6=paths.pop();return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path14]).nestedExtensions[e6]}var file_google_protobuf_empty2=fileDesc2("Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIHCgVFbXB0eUJ9ChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3RvUAFaLmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2VtcHR5cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),EmptySchema=messageDesc3(file_google_protobuf_empty2,0);var file_google_protobuf_field_mask2=fileDesc2("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),FieldMaskSchema=messageDesc3(file_google_protobuf_field_mask2,0);var file_google_protobuf_struct2=fileDesc2("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),StructSchema=messageDesc3(file_google_protobuf_struct2,0),ValueSchema=messageDesc3(file_google_protobuf_struct2,1),ListValueSchema=messageDesc3(file_google_protobuf_struct2,2),NullValue2;(function(NullValue3){NullValue3[NullValue3.NULL_VALUE=0]="NULL_VALUE"})(NullValue2||(NullValue2={}));var file_google_protobuf_wrappers=fileDesc2("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),DoubleValueSchema=messageDesc3(file_google_protobuf_wrappers,0),FloatValueSchema=messageDesc3(file_google_protobuf_wrappers,1),Int64ValueSchema=messageDesc3(file_google_protobuf_wrappers,2),UInt64ValueSchema=messageDesc3(file_google_protobuf_wrappers,3),Int32ValueSchema=messageDesc3(file_google_protobuf_wrappers,4),UInt32ValueSchema=messageDesc3(file_google_protobuf_wrappers,5),BoolValueSchema=messageDesc3(file_google_protobuf_wrappers,6),StringValueSchema=messageDesc3(file_google_protobuf_wrappers,7),BytesValueSchema=messageDesc3(file_google_protobuf_wrappers,8);function getExtension(message6,extension){assertExtendee(extension,message6);let ufs=filterUnknownFields(message6.$unknown,extension),[container,field3,get26]=createExtensionContainer(extension);for(let uf of ufs)readField2(container,new BinaryReader2(uf.data),field3,uf.wireType,{readUnknownFields:!0});return get26()}function setExtension(message6,extension,value){var _a3;assertExtendee(extension,message6);let ufs=((_a3=message6.$unknown)!==null&&_a3!==void 0?_a3:[]).filter(uf=>uf.no!==extension.number),[container,field3]=createExtensionContainer(extension,value),writer=new BinaryWriter;writeField(writer,{writeUnknownFields:!0},container,field3);let reader=new BinaryReader2(writer.finish());for(;reader.pos<reader.len;){let[no,wireType]=reader.tag(),data=reader.skip(wireType,no);ufs.push({no,wireType,data})}message6.$unknown=ufs}function hasExtension(message6,extension){var _a3;return extension.extendee.typeName===message6.$typeName&&!!(!((_a3=message6.$unknown)===null||_a3===void 0)&&_a3.find(uf=>uf.no===extension.number))}function hasOption(element,option){let message6=element.proto.options;return message6?hasExtension(message6,option):!1}function getOption(element,option){let message6=element.proto.options;if(!message6){let[,,get26]=createExtensionContainer(option);return get26()}return getExtension(message6,option)}function filterUnknownFields(unknownFields,extension){if(unknownFields===void 0)return[];if(extension.fieldKind==="enum"||extension.fieldKind==="scalar"){for(let i6=unknownFields.length-1;i6>=0;--i6)if(unknownFields[i6].no==extension.number)return[unknownFields[i6]];return[]}return unknownFields.filter(uf=>uf.no===extension.number)}function createExtensionContainer(extension,value){let localName=extension.typeName,field3=Object.assign(Object.assign({},extension),{kind:"field",parent:extension.extendee,localName}),desc=Object.assign(Object.assign({},extension.extendee),{fields:[field3],members:[field3],oneofs:[]}),container=create2(desc,value!==void 0?{[localName]:value}:void 0);return[reflect2(desc,container),field3,()=>{let value2=container[localName];if(value2===void 0){let desc2=extension.message;return isWrapperDesc2(desc2)?scalarZeroValue2(desc2.fields[0].scalar,desc2.fields[0].longAsString):create2(desc2)}return value2}]}function assertExtendee(extension,message6){if(extension.extendee.typeName!=message6.$typeName)throw new Error(`extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`)}function equals(schema2,a5,b7,options){return a5.$typeName!=schema2.typeName||b7.$typeName!=schema2.typeName?!1:a5===b7?!0:reflectEquals(reflect2(schema2,a5),reflect2(schema2,b7),options)}function reflectEquals(a5,b7,opts){if(a5.desc.typeName==="google.protobuf.Any"&&opts?.unpackAny==!0)return anyUnpackedEquals(a5.message,b7.message,opts);for(let f5 of a5.fields)if(!fieldEquals(f5,a5,b7,opts))return!1;return!(opts?.unknown==!0&&!unknownEquals(a5,b7,opts.registry)||opts?.extensions==!0&&!extensionsEquals(a5,b7,opts))}function fieldEquals(f5,a5,b7,opts){if(!a5.isSet(f5)&&!b7.isSet(f5))return!0;if(!a5.isSet(f5)||!b7.isSet(f5))return!1;switch(f5.fieldKind){case"scalar":return scalarEquals(f5.scalar,a5.get(f5),b7.get(f5));case"enum":return a5.get(f5)===b7.get(f5);case"message":return reflectEquals(a5.get(f5),b7.get(f5),opts);case"map":{let mapA=a5.get(f5),mapB=b7.get(f5),keys=[];for(let k5 of mapA.keys()){if(!mapB.has(k5))return!1;keys.push(k5)}for(let k5 of mapB.keys())if(!mapA.has(k5))return!1;for(let key of keys){let va=mapA.get(key),vb=mapB.get(key);if(va!==vb)switch(f5.mapKind){case"enum":return!1;case"message":if(!reflectEquals(va,vb,opts))return!1;break;case"scalar":if(!scalarEquals(f5.scalar,va,vb))return!1;break}}break}case"list":{let listA=a5.get(f5),listB=b7.get(f5);if(listA.size!=listB.size)return!1;for(let i6=0;i6<listA.size;i6++){let va=listA.get(i6),vb=listB.get(i6);if(va!==vb)switch(f5.listKind){case"enum":return!1;case"message":if(!reflectEquals(va,vb,opts))return!1;break;case"scalar":if(!scalarEquals(f5.scalar,va,vb))return!1;break}}break}}return!0}function anyUnpackedEquals(a5,b7,opts){if(a5.typeUrl!==b7.typeUrl)return!1;let unpackedA=anyUnpack(a5,opts.registry),unpackedB=anyUnpack(b7,opts.registry);if(unpackedA&&unpackedB){let schema2=opts.registry.getMessage(unpackedA.$typeName);if(schema2)return equals(schema2,unpackedA,unpackedB,opts)}return scalarEquals(ScalarType2.BYTES,a5.value,b7.value)}function unknownEquals(a5,b7,registry){function getTrulyUnknown(msg,registry2){var _a3;let u=(_a3=msg.getUnknown())!==null&&_a3!==void 0?_a3:[];return registry2?u.filter(uf=>!registry2.getExtensionFor(msg.desc,uf.no)):u}let unknownA=getTrulyUnknown(a5,registry),unknownB=getTrulyUnknown(b7,registry);if(unknownA.length!=unknownB.length)return!1;for(let i6=0;i6<unknownA.length;i6++){let a6=unknownA[i6],b9=unknownB[i6];if(a6.no!=b9.no||a6.wireType!=b9.wireType||!scalarEquals(ScalarType2.BYTES,a6.data,b9.data))return!1}return!0}function extensionsEquals(a5,b7,opts){function getSetExtensions(msg,registry){var _a3;return((_a3=msg.getUnknown())!==null&&_a3!==void 0?_a3:[]).map(uf=>registry.getExtensionFor(msg.desc,uf.no)).filter(e6=>e6!=null).filter((e6,index2,arr)=>arr.indexOf(e6)===index2)}let extensionsA=getSetExtensions(a5,opts.registry),extensionsB=getSetExtensions(b7,opts.registry);if(extensionsA.length!=extensionsB.length||extensionsA.some(e6=>!extensionsB.includes(e6)))return!1;for(let extension of extensionsA){let[containerA,field3]=createExtensionContainer(extension,getExtension(a5.message,extension)),[containerB]=createExtensionContainer(extension,getExtension(b7.message,extension));if(!fieldEquals(field3,containerA,containerB,opts))return!1}return!0}function isFieldSet(message6,field3){return field3.parent.typeName==message6.$typeName&&unsafeIsSet2(message6,field3)}var LEGACY_REQUIRED4=3,IMPLICIT7=2,jsonWriteDefaults={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function makeWriteOptions2(options){return options?Object.assign(Object.assign({},jsonWriteDefaults),options):jsonWriteDefaults}function toJson(schema2,message6,options){return reflectToJson(reflect2(schema2,message6),makeWriteOptions2(options))}function toJsonString(schema2,message6,options){var _a3;let jsonValue=toJson(schema2,message6,options);return JSON.stringify(jsonValue,null,(_a3=options?.prettySpaces)!==null&&_a3!==void 0?_a3:0)}function enumToJson(descEnum,value){var _a3;if(descEnum.typeName=="google.protobuf.NullValue")return null;let name=(_a3=descEnum.value[value])===null||_a3===void 0?void 0:_a3.name;if(name===void 0)throw new Error(`${value} is not a value in ${descEnum}`);return name}function reflectToJson(msg,opts){var _a3;let wktJson=tryWktToJson(msg,opts);if(wktJson!==void 0)return wktJson;let json2={};for(let f5 of msg.sortedFields){if(!msg.isSet(f5)){if(f5.presence==LEGACY_REQUIRED4)throw new Error(`cannot encode ${f5} to JSON: required field not set`);if(!opts.alwaysEmitImplicit||f5.presence!==IMPLICIT7)continue}let jsonValue=fieldToJson(f5,msg.get(f5),opts);jsonValue!==void 0&&(json2[jsonName(f5,opts)]=jsonValue)}if(opts.registry){let tagSeen=new Set;for(let{no}of(_a3=msg.getUnknown())!==null&&_a3!==void 0?_a3:[])if(!tagSeen.has(no)){tagSeen.add(no);let extension=opts.registry.getExtensionFor(msg.desc,no);if(!extension)continue;let value=getExtension(msg.message,extension),[container,field3]=createExtensionContainer(extension,value),jsonValue=fieldToJson(field3,container.get(field3),opts);jsonValue!==void 0&&(json2[extension.jsonName]=jsonValue)}}return json2}function fieldToJson(f5,val,opts){switch(f5.fieldKind){case"scalar":return scalarToJson(f5,val);case"message":return reflectToJson(val,opts);case"enum":return enumToJsonInternal(f5.enum,val,opts.enumAsInteger);case"list":return listToJson(val,opts);case"map":return mapToJson(val,opts)}}function mapToJson(map5,opts){let f5=map5.field(),jsonObj={};switch(f5.mapKind){case"scalar":for(let[entryKey,entryValue]of map5)jsonObj[entryKey]=scalarToJson(f5,entryValue);break;case"message":for(let[entryKey,entryValue]of map5)jsonObj[entryKey]=reflectToJson(entryValue,opts);break;case"enum":for(let[entryKey,entryValue]of map5)jsonObj[entryKey]=enumToJsonInternal(f5.enum,entryValue,opts.enumAsInteger);break}return opts.alwaysEmitImplicit||map5.size>0?jsonObj:void 0}function listToJson(list12,opts){let f5=list12.field(),jsonArr=[];switch(f5.listKind){case"scalar":for(let item of list12)jsonArr.push(scalarToJson(f5,item));break;case"enum":for(let item of list12)jsonArr.push(enumToJsonInternal(f5.enum,item,opts.enumAsInteger));break;case"message":for(let item of list12)jsonArr.push(reflectToJson(item,opts));break}return opts.alwaysEmitImplicit||jsonArr.length>0?jsonArr:void 0}function enumToJsonInternal(desc,value,enumAsInteger){var _a3;if(typeof value!="number")throw new Error(`cannot encode ${desc} to JSON: expected number, got ${formatVal2(value)}`);if(desc.typeName=="google.protobuf.NullValue")return null;if(enumAsInteger)return value;let val=desc.value[value];return(_a3=val?.name)!==null&&_a3!==void 0?_a3:value}function scalarToJson(field3,value){var _a3,_b2,_c5,_d,_e5,_f;switch(field3.scalar){case ScalarType2.INT32:case ScalarType2.SFIXED32:case ScalarType2.SINT32:case ScalarType2.FIXED32:case ScalarType2.UINT32:if(typeof value!="number")throw new Error(`cannot encode ${field3} to JSON: ${(_a3=checkField2(field3,value))===null||_a3===void 0?void 0:_a3.message}`);return value;case ScalarType2.FLOAT:case ScalarType2.DOUBLE:if(typeof value!="number")throw new Error(`cannot encode ${field3} to JSON: ${(_b2=checkField2(field3,value))===null||_b2===void 0?void 0:_b2.message}`);return Number.isNaN(value)?"NaN":value===Number.POSITIVE_INFINITY?"Infinity":value===Number.NEGATIVE_INFINITY?"-Infinity":value;case ScalarType2.STRING:if(typeof value!="string")throw new Error(`cannot encode ${field3} to JSON: ${(_c5=checkField2(field3,value))===null||_c5===void 0?void 0:_c5.message}`);return value;case ScalarType2.BOOL:if(typeof value!="boolean")throw new Error(`cannot encode ${field3} to JSON: ${(_d=checkField2(field3,value))===null||_d===void 0?void 0:_d.message}`);return value;case ScalarType2.UINT64:case ScalarType2.FIXED64:case ScalarType2.INT64:case ScalarType2.SFIXED64:case ScalarType2.SINT64:if(typeof value=="bigint"||typeof value=="string"||typeof value=="number"&&Number.isInteger(value))return value.toString();throw new Error(`cannot encode ${field3} to JSON: ${(_e5=checkField2(field3,value))===null||_e5===void 0?void 0:_e5.message}`);case ScalarType2.BYTES:if(value instanceof Uint8Array)return base64Encode(value);throw new Error(`cannot encode ${field3} to JSON: ${(_f=checkField2(field3,value))===null||_f===void 0?void 0:_f.message}`)}}function jsonName(f5,opts){return opts.useProtoFieldName?f5.name:f5.jsonName}function tryWktToJson(msg,opts){if(msg.desc.typeName.startsWith("google.protobuf."))switch(msg.desc.typeName){case"google.protobuf.Any":return anyToJson(msg.message,opts);case"google.protobuf.Timestamp":return timestampToJson(msg.message);case"google.protobuf.Duration":return durationToJson(msg.message);case"google.protobuf.FieldMask":return fieldMaskToJson(msg.message);case"google.protobuf.Struct":return structToJson(msg.message);case"google.protobuf.Value":return valueToJson(msg.message);case"google.protobuf.ListValue":return listValueToJson(msg.message);default:if(isWrapperDesc2(msg.desc)){let valueField=msg.desc.fields[0];return scalarToJson(valueField,msg.get(valueField))}return}}function anyToJson(val,opts){if(val.typeUrl==="")return{};let{registry}=opts,message6,desc;if(registry&&(message6=anyUnpack(val,registry),message6&&(desc=registry.getMessage(message6.$typeName))),!desc||!message6)throw new Error(`cannot encode message ${val.$typeName} to JSON: "${val.typeUrl}" is not in the type registry`);let reflected=reflect2(desc,message6),json2=hasCustomJsonRepresentation(desc)?{value:tryWktToJson(reflected,opts)}:reflectToJson(reflected,opts);return json2["@type"]=val.typeUrl,json2}function durationToJson(val){let seconds=Number(val.seconds),nanos=val.nanos;if(seconds>315576e6||seconds<-315576e6)throw new Error(`cannot encode message ${val.$typeName} to JSON: value out of range`);if(seconds>0&&nanos<0||seconds<0&&nanos>0)throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos sign must match seconds sign`);let text2=val.seconds.toString();if(nanos!==0){let nanosStr=Math.abs(nanos).toString();nanosStr="0".repeat(9-nanosStr.length)+nanosStr,nanosStr.substring(3)==="000000"?nanosStr=nanosStr.substring(0,3):nanosStr.substring(6)==="000"&&(nanosStr=nanosStr.substring(0,6)),text2+="."+nanosStr,nanos<0&&seconds==0&&(text2="-"+text2)}return text2+"s"}function fieldMaskToJson(val){return val.paths.map(p3=>{if(protoSnakeCase(protoCamelCase2(p3))!==p3)throw new Error(`cannot encode message ${val.$typeName} to JSON: lowerCamelCase of path name "${p3}" is irreversible`);return protoCamelCase2(p3)}).join(",")}function structToJson(val){let json2={};for(let[k5,v]of Object.entries(val.fields))json2[k5]=valueToJson(v);return json2}function valueToJson(val){switch(val.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(val.kind.value))throw new Error(`${val.$typeName} cannot be NaN or Infinity`);return val.kind.value;case"boolValue":return val.kind.value;case"stringValue":return val.kind.value;case"structValue":return structToJson(val.kind.value);case"listValue":return listValueToJson(val.kind.value);default:throw new Error(`${val.$typeName} must have a value`)}}function listValueToJson(val){return val.values.map(valueToJson)}function timestampToJson(val){let ms=Number(val.seconds)*1e3;if(ms<Date.parse("0001-01-01T00:00:00Z")||ms>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${val.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(val.nanos<0)throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be negative`);if(val.nanos>999999999)throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be greater than 99999999`);let z="Z";if(val.nanos>0){let nanosStr=(val.nanos+1e9).toString().substring(1);nanosStr.substring(3)==="000000"?z="."+nanosStr.substring(0,3)+"Z":nanosStr.substring(6)==="000"?z="."+nanosStr.substring(0,6)+"Z":z="."+nanosStr+"Z"}return new Date(ms).toISOString().replace(".000Z",z)}var jsonReadDefaults={ignoreUnknownFields:!1};function makeReadOptions3(options){return options?Object.assign(Object.assign({},jsonReadDefaults),options):jsonReadDefaults}function fromJsonString(schema2,json2,options){return fromJson(schema2,parseJsonString(json2,schema2.typeName),options)}function fromJson(schema2,json2,options){let msg=reflect2(schema2);try{readMessage3(msg,json2,makeReadOptions3(options))}catch(e6){throw isFieldError(e6)?new Error(`cannot decode ${e6.field()} from JSON: ${e6.message}`,{cause:e6}):e6}return msg.message}var messageJsonFields=new WeakMap;function getJsonField(desc,jsonKey){var _a3;if(!messageJsonFields.has(desc)){let jsonNames=new Map;for(let field3 of desc.fields)jsonNames.set(field3.name,field3).set(field3.jsonName,field3);messageJsonFields.set(desc,jsonNames)}return(_a3=messageJsonFields.get(desc))===null||_a3===void 0?void 0:_a3.get(jsonKey)}function readMessage3(msg,json2,opts){var _a3;if(tryWktFromJson(msg,json2,opts))return;if(json2==null||Array.isArray(json2)||typeof json2!="object")throw new Error(`cannot decode ${msg.desc} from JSON: ${formatVal2(json2)}`);let oneofSeen=new Map;for(let[jsonKey,jsonValue]of Object.entries(json2)){let field3=getJsonField(msg.desc,jsonKey);if(field3){if(field3.oneof){if(jsonValue===null&&field3.fieldKind=="scalar")continue;let seen=oneofSeen.get(field3.oneof);if(seen!==void 0)throw new FieldError2(field3.oneof,`oneof set multiple times by ${seen.name} and ${field3.name}`);oneofSeen.set(field3.oneof,field3)}readField3(msg,field3,jsonValue,opts)}else{let extension;if(jsonKey.startsWith("[")&&jsonKey.endsWith("]")&&(extension=(_a3=opts.registry)===null||_a3===void 0?void 0:_a3.getExtension(jsonKey.substring(1,jsonKey.length-1)))&&extension.extendee.typeName===msg.desc.typeName){let[container,field4,get26]=createExtensionContainer(extension);readField3(container,field4,jsonValue,opts),setExtension(msg.message,extension,get26())}if(!extension&&!opts.ignoreUnknownFields)throw new Error(`cannot decode ${msg.desc} from JSON: key "${jsonKey}" is unknown`)}}}function readField3(msg,field3,json2,opts){switch(field3.fieldKind){case"scalar":readScalarField(msg,field3,json2);break;case"enum":readEnumField(msg,field3,json2,opts);break;case"message":readMessageField3(msg,field3,json2,opts);break;case"list":readListField3(msg.get(field3),json2,opts);break;case"map":readMapField(msg.get(field3),json2,opts);break}}function readListOrMapItem(field3,json2,opts){if(field3.scalar&&json2!==null)return scalarFromJson(field3,json2);if(field3.message&&!isResetSentinelNullValue(field3,json2)){let msgValue=reflect2(field3.message);return readMessage3(msgValue,json2,opts),msgValue}if(field3.enum&&!isResetSentinelNullValue(field3,json2))return readEnum(field3.enum,json2,opts.ignoreUnknownFields);throw new FieldError2(field3,`${field3.fieldKind==="list"?"list item":"map value"} must not be null`)}function readMapField(map5,json2,opts){if(json2===null)return;let field3=map5.field();if(typeof json2!="object"||Array.isArray(json2))throw new FieldError2(field3,"expected object, got "+formatVal2(json2));for(let[jsonMapKey,jsonMapValue]of Object.entries(json2)){let key=mapKeyFromJson(field3.mapKey,jsonMapKey),value=readListOrMapItem(field3,jsonMapValue,opts);value!==tokenIgnoredUnknownEnum&&map5.set(key,value)}}function readListField3(list12,json2,opts){if(json2===null)return;let field3=list12.field();if(!Array.isArray(json2))throw new FieldError2(field3,"expected Array, got "+formatVal2(json2));for(let jsonItem of json2){let value=readListOrMapItem(field3,jsonItem,opts);value!==tokenIgnoredUnknownEnum&&list12.add(value)}}function readMessageField3(msg,field3,json2,opts){if(isResetSentinelNullValue(field3,json2)){msg.clear(field3);return}let msgValue=msg.isSet(field3)?msg.get(field3):reflect2(field3.message);readMessage3(msgValue,json2,opts),msg.set(field3,msgValue)}function readEnumField(msg,field3,json2,opts){if(isResetSentinelNullValue(field3,json2)){msg.clear(field3);return}let enumValue=readEnum(field3.enum,json2,opts.ignoreUnknownFields);enumValue!==tokenIgnoredUnknownEnum&&msg.set(field3,enumValue)}function readScalarField(msg,field3,json2){json2===null?msg.clear(field3):msg.set(field3,scalarFromJson(field3,json2))}function isResetSentinelNullValue(field3,json2){var _a3,_b2;return json2===null&&((_a3=field3.message)===null||_a3===void 0?void 0:_a3.typeName)!="google.protobuf.Value"&&((_b2=field3.enum)===null||_b2===void 0?void 0:_b2.typeName)!="google.protobuf.NullValue"}var tokenIgnoredUnknownEnum=Symbol();function readEnum(desc,json2,ignoreUnknownFields){if(json2===null)return desc.values[0].number;switch(typeof json2){case"number":if(Number.isInteger(json2))return json2;break;case"string":let value=desc.values.find(ev=>ev.name===json2);if(value!==void 0)return value.number;if(ignoreUnknownFields)return tokenIgnoredUnknownEnum;break}throw new Error(`cannot decode ${desc} from JSON: ${formatVal2(json2)}`)}function scalarFromJson(field3,json2){switch(field3.scalar){case ScalarType2.DOUBLE:case ScalarType2.FLOAT:if(json2==="NaN")return NaN;if(json2==="Infinity")return Number.POSITIVE_INFINITY;if(json2==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof json2=="number"){if(Number.isNaN(json2))throw new FieldError2(field3,"unexpected NaN number");if(!Number.isFinite(json2))throw new FieldError2(field3,"unexpected infinite number");break}if(typeof json2=="string"){if(json2===""||json2.trim().length!==json2.length)break;let float2=Number(json2);if(!Number.isFinite(float2))break;return float2}break;case ScalarType2.INT32:case ScalarType2.FIXED32:case ScalarType2.SFIXED32:case ScalarType2.SINT32:case ScalarType2.UINT32:return int32FromJson(json2);case ScalarType2.BYTES:if(typeof json2=="string"){if(json2==="")return new Uint8Array(0);try{return base64Decode2(json2)}catch(e6){let message6=e6 instanceof Error?e6.message:String(e6);throw new FieldError2(field3,message6)}}break}return json2}function mapKeyFromJson(type2,jsonString){switch(type2){case ScalarType2.BOOL:switch(jsonString){case"true":return!0;case"false":return!1}return jsonString;case ScalarType2.INT32:case ScalarType2.FIXED32:case ScalarType2.UINT32:case ScalarType2.SFIXED32:case ScalarType2.SINT32:return int32FromJson(jsonString);default:return jsonString}}function int32FromJson(json2){if(typeof json2=="string"){if(json2===""||json2.trim().length!==json2.length)return json2;let num=Number(json2);return Number.isNaN(num)?json2:num}return json2}function parseJsonString(jsonString,typeName){try{return JSON.parse(jsonString)}catch(e6){let message6=e6 instanceof Error?e6.message:String(e6);throw new Error(`cannot decode message ${typeName} from JSON: ${message6}`,{cause:e6})}}function tryWktFromJson(msg,jsonValue,opts){if(!msg.desc.typeName.startsWith("google.protobuf."))return!1;switch(msg.desc.typeName){case"google.protobuf.Any":return anyFromJson(msg.message,jsonValue,opts),!0;case"google.protobuf.Timestamp":return timestampFromJson(msg.message,jsonValue),!0;case"google.protobuf.Duration":return durationFromJson(msg.message,jsonValue),!0;case"google.protobuf.FieldMask":return fieldMaskFromJson(msg.message,jsonValue),!0;case"google.protobuf.Struct":return structFromJson(msg.message,jsonValue),!0;case"google.protobuf.Value":return valueFromJson(msg.message,jsonValue),!0;case"google.protobuf.ListValue":return listValueFromJson(msg.message,jsonValue),!0;default:if(isWrapperDesc2(msg.desc)){let valueField=msg.desc.fields[0];return jsonValue===null?msg.clear(valueField):msg.set(valueField,scalarFromJson(valueField,jsonValue)),!0}return!1}}function anyFromJson(any,json2,opts){var _a3;if(json2===null||Array.isArray(json2)||typeof json2!="object")throw new Error(`cannot decode message ${any.$typeName} from JSON: expected object but got ${formatVal2(json2)}`);if(Object.keys(json2).length==0)return;let typeUrl=json2["@type"];if(typeof typeUrl!="string"||typeUrl=="")throw new Error(`cannot decode message ${any.$typeName} from JSON: "@type" is empty`);let typeName=typeUrl.includes("/")?typeUrl.substring(typeUrl.lastIndexOf("/")+1):typeUrl;if(!typeName.length)throw new Error(`cannot decode message ${any.$typeName} from JSON: "@type" is invalid`);let desc=(_a3=opts.registry)===null||_a3===void 0?void 0:_a3.getMessage(typeName);if(!desc)throw new Error(`cannot decode message ${any.$typeName} from JSON: ${typeUrl} is not in the type registry`);let msg=reflect2(desc);if(hasCustomJsonRepresentation(desc)&&Object.prototype.hasOwnProperty.call(json2,"value")){let value=json2.value;readMessage3(msg,value,opts)}else{let copy=Object.assign({},json2);delete copy["@type"],readMessage3(msg,copy,opts)}anyPack(msg.desc,msg.message,any)}function timestampFromJson(timestamp2,json2){if(typeof json2!="string")throw new Error(`cannot decode message ${timestamp2.$typeName} from JSON: ${formatVal2(json2)}`);let matches2=json2.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!matches2)throw new Error(`cannot decode message ${timestamp2.$typeName} from JSON: invalid RFC 3339 string`);let ms=Date.parse(matches2[1]+"-"+matches2[2]+"-"+matches2[3]+"T"+matches2[4]+":"+matches2[5]+":"+matches2[6]+(matches2[8]?matches2[8]:"Z"));if(Number.isNaN(ms))throw new Error(`cannot decode message ${timestamp2.$typeName} from JSON: invalid RFC 3339 string`);if(ms<Date.parse("0001-01-01T00:00:00Z")||ms>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${timestamp2.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);timestamp2.seconds=protoInt642.parse(ms/1e3),timestamp2.nanos=0,matches2[7]&&(timestamp2.nanos=parseInt("1"+matches2[7]+"0".repeat(9-matches2[7].length))-1e9)}function durationFromJson(duration,json2){if(typeof json2!="string")throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal2(json2)}`);let match=json2.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(match===null)throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal2(json2)}`);let longSeconds=Number(match[1]);if(longSeconds>315576e6||longSeconds<-315576e6)throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal2(json2)}`);if(duration.seconds=protoInt642.parse(longSeconds),typeof match[2]!="string")return;let nanosStr=match[2]+"0".repeat(9-match[2].length);duration.nanos=parseInt(nanosStr),(longSeconds<0||Object.is(longSeconds,-0))&&(duration.nanos=-duration.nanos)}function fieldMaskFromJson(fieldMask,json2){if(typeof json2!="string")throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: ${formatVal2(json2)}`);json2!==""&&(fieldMask.paths=json2.split(",").map(path14=>{if(path14.includes("_"))throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: path names must be lowerCamelCase`);return protoSnakeCase(path14)}))}function structFromJson(struct2,json2){if(typeof json2!="object"||json2==null||Array.isArray(json2))throw new Error(`cannot decode message ${struct2.$typeName} from JSON ${formatVal2(json2)}`);for(let[k5,v]of Object.entries(json2)){let parsedV=create2(ValueSchema);valueFromJson(parsedV,v),struct2.fields[k5]=parsedV}}function valueFromJson(value,json2){switch(typeof json2){case"number":value.kind={case:"numberValue",value:json2};break;case"string":value.kind={case:"stringValue",value:json2};break;case"boolean":value.kind={case:"boolValue",value:json2};break;case"object":if(json2===null)value.kind={case:"nullValue",value:NullValue2.NULL_VALUE};else if(Array.isArray(json2)){let listValue=create2(ListValueSchema);listValueFromJson(listValue,json2),value.kind={case:"listValue",value:listValue}}else{let struct2=create2(StructSchema);structFromJson(struct2,json2),value.kind={case:"structValue",value:struct2}}break;default:throw new Error(`cannot decode message ${value.$typeName} from JSON ${formatVal2(json2)}`)}return value}function listValueFromJson(listValue,json2){if(!Array.isArray(json2))throw new Error(`cannot decode message ${listValue.$typeName} from JSON ${formatVal2(json2)}`);for(let e6 of json2){let value=create2(ValueSchema);valueFromJson(value,e6),listValue.values.push(value)}}var file_ai_stigmer_commons_apiresource_enum=fileDesc("CilhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvZW51bS5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlKnYKFEFwaVJlc291cmNlRXZlbnRUeXBlEg8KC3Vuc3BlY2lmaWVkEAASCwoHY3JlYXRlZBABEgsKB3VwZGF0ZWQQAhILCgdkZWxldGVkEAMSCwoHcmVuYW1lZBAEEhkKFXN0YWNrX291dHB1dHNfdXBkYXRlZBAFKowBCh1BcGlSZXNvdXJjZVN0YXRlT3BlcmF0aW9uVHlwZRIxCi1hcGlfcmVzb3VyY2Vfc3RhdGVfb3BlcmF0aW9uX3R5cGVfdW5zcGVjaWZpZWQQABIKCgZjcmVhdGUQARIKCgZ1cGRhdGUQAhIKCgZkZWxldGUQAxIICgRyZWFkEAQSCgoGc3RyZWFtEAUqnAEKFUFwaVJlc291cmNlVmlzaWJpbGl0eRInCiNhcGlfcmVzb3VyY2VfdmlzaWJpbGl0eV91bnNwZWNpZmllZBAAEhYKEnZpc2liaWxpdHlfcHJpdmF0ZRABEhUKEXZpc2liaWxpdHlfcHVibGljEAISEgoOdmlzaWJpbGl0eV9vcmcQAxIXChN2aXNpYmlsaXR5X3BsYXRmb3JtEARiBnByb3RvMw"),ApiResourceEventType;(function(ApiResourceEventType2){ApiResourceEventType2[ApiResourceEventType2.unspecified=0]="unspecified",ApiResourceEventType2[ApiResourceEventType2.created=1]="created",ApiResourceEventType2[ApiResourceEventType2.updated=2]="updated",ApiResourceEventType2[ApiResourceEventType2.deleted=3]="deleted",ApiResourceEventType2[ApiResourceEventType2.renamed=4]="renamed",ApiResourceEventType2[ApiResourceEventType2.stack_outputs_updated=5]="stack_outputs_updated"})(ApiResourceEventType||(ApiResourceEventType={}));var ApiResourceStateOperationType;(function(ApiResourceStateOperationType2){ApiResourceStateOperationType2[ApiResourceStateOperationType2.api_resource_state_operation_type_unspecified=0]="api_resource_state_operation_type_unspecified",ApiResourceStateOperationType2[ApiResourceStateOperationType2.create=1]="create",ApiResourceStateOperationType2[ApiResourceStateOperationType2.update=2]="update",ApiResourceStateOperationType2[ApiResourceStateOperationType2.delete=3]="delete",ApiResourceStateOperationType2[ApiResourceStateOperationType2.read=4]="read",ApiResourceStateOperationType2[ApiResourceStateOperationType2.stream=5]="stream"})(ApiResourceStateOperationType||(ApiResourceStateOperationType={}));var ApiResourceVisibility;(function(ApiResourceVisibility2){ApiResourceVisibility2[ApiResourceVisibility2.api_resource_visibility_unspecified=0]="api_resource_visibility_unspecified",ApiResourceVisibility2[ApiResourceVisibility2.visibility_private=1]="visibility_private",ApiResourceVisibility2[ApiResourceVisibility2.visibility_public=2]="visibility_public",ApiResourceVisibility2[ApiResourceVisibility2.visibility_org=3]="visibility_org",ApiResourceVisibility2[ApiResourceVisibility2.visibility_platform=4]="visibility_platform"})(ApiResourceVisibility||(ApiResourceVisibility={}));function getKindMeta(kind){let valueDesc=kindValueDescriptor(kind);if(valueDesc===void 0||!hasOption(valueDesc,kind_meta))throw new Error(`kind_meta extension not found for kind: ${kind}`);return getOption(valueDesc,kind_meta)}function inheritedAuthorizationParentOf(kind){let config2=getKindMeta(kind).authorization;if(!(config2?.scopeType!==AuthorizationScopeType.PARENT||config2.ownerType!==OwnerAttributionType.INHERITED))return config2.parent}function getIdPrefix(kind){return getKindMeta(kind).idPrefix}function getKindName(kind){return getKindMeta(kind).name}function getKindEnum(kindValue){if(kindValue==="")throw new Error("kind field is empty");let kind=kindsByCanonicalName().get(canonicalKindName(kindValue));if(kind===void 0)throw new Error(`unknown kind: ${kindValue}`);return kind}function kindByEnumName(value){return kindsByEnumName().get(value)??ApiResourceKind.api_resource_kind_unknown}function kindEnumName(kind){return(kindValueDescriptor(kind)??kindValueDescriptor(ApiResourceKind.api_resource_kind_unknown))?.name??""}function defaultVisibilityFor(kind){return getKindMeta(kind).authorization?.visibility?.defaultsToOrgVisibility===!0?ApiResourceVisibility.visibility_org:ApiResourceVisibility.visibility_private}function grantableRolesFor(kind){let valueDesc=kindValueDescriptor(kind);return valueDesc===void 0||!hasOption(valueDesc,kind_meta)?[]:getOption(valueDesc,kind_meta).authorization?.grantableRoles??[]}function teamGrantableRolesFor(kind){let valueDesc=kindValueDescriptor(kind);return valueDesc===void 0||!hasOption(valueDesc,kind_meta)?[]:getOption(valueDesc,kind_meta).authorization?.teamGrantableRoles??[]}function tierServedByEdition(tier,edition){return edition===ServerEdition.server_edition_unspecified?!0:editionRank(edition)>=tierRank(tier)}function kindServedByEdition(kind,edition){return tierServedByEdition(getKindMeta(kind).tier,edition)}function editionRank(edition){switch(edition){case ServerEdition.oss:return 1;case ServerEdition.enterprise:return 2;case ServerEdition.cloud:case ServerEdition.server_edition_unspecified:return 3;default:{let exhaustive=edition;throw new Error(`unknown server edition: ${String(exhaustive)}`)}}}function tierRank(tier){switch(tier){case ResourceTier.open_source:case ResourceTier.resource_tier_unspecified:return 1;case ResourceTier.enterprise:return 2;case ResourceTier.cloud_only:return 3;default:{let exhaustive=tier;throw new Error(`unknown resource tier: ${String(exhaustive)}`)}}}function supportsVisibility(kind,visibility){let config2=getKindMeta(kind).authorization?.visibility;switch(visibility){case ApiResourceVisibility.api_resource_visibility_unspecified:case ApiResourceVisibility.visibility_private:return!0;case ApiResourceVisibility.visibility_org:return config2?.supportsOrg===!0;case ApiResourceVisibility.visibility_platform:return config2?.supportsPlatform===!0;case ApiResourceVisibility.visibility_public:return!1;default:{let exhaustive=visibility;throw new Error(`unknown visibility level: ${String(exhaustive)}`)}}}function supportedVisibilityLevels(kind){let config2=getKindMeta(kind).authorization?.visibility,levels="visibility_private";return config2?.supportsOrg===!0&&(levels+=", visibility_org"),config2?.supportsPlatform===!0&&(levels+=", visibility_platform"),levels}function kindValueDescriptor(kind){return ApiResourceKindSchema.values.find(value=>value.number===kind)}function canonicalKindName(value){return value.toLowerCase().replaceAll("_","")}var canonicalNameCache;function kindsByCanonicalName(){return canonicalNameCache===void 0&&(canonicalNameCache=new Map(ApiResourceKindSchema.values.filter(value=>hasOption(value,kind_meta)).map(value=>[canonicalKindName(getOption(value,kind_meta).name),value.number]))),canonicalNameCache}var enumNameCache;function kindsByEnumName(){return enumNameCache===void 0&&(enumNameCache=new Map(ApiResourceKindSchema.values.map(value=>[value.name,value.number]))),enumNameCache}function kindByIdPrefix(id){let separator=id.indexOf("_");return separator<=0?ApiResourceKind.api_resource_kind_unknown:kindsByIdPrefix().get(id.slice(0,separator))??ApiResourceKind.api_resource_kind_unknown}var idPrefixCache;function kindsByIdPrefix(){return idPrefixCache===void 0&&(idPrefixCache=new Map(ApiResourceKindSchema.values.filter(value=>hasOption(value,kind_meta)).map(value=>[getOption(value,kind_meta).idPrefix,value.number]))),idPrefixCache}var file_ai_stigmer_agentic_environment_v1_spec=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvc3BlYy5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxItQBCg9FbnZpcm9ubWVudFNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSSgoEZGF0YRgCIAMoCzI8LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFNwZWMuRGF0YUVudHJ5GmAKCURhdGFFbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnRWYWx1ZToCOAEiSQoQRW52aXJvbm1lbnRWYWx1ZRINCgV2YWx1ZRgBIAEoCRIRCglpc19zZWNyZXQYAiABKAgSEwoLZGVzY3JpcHRpb24YAyABKAkiTQoRRW52VmFyRGVjbGFyYXRpb24SEQoJaXNfc2VjcmV0GAEgASgIEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhAKCG9wdGlvbmFsGAMgASgIYgZwcm90bzM"),EnvironmentSpecSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,0),EnvironmentValueSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,1),EnvVarDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,2);var file_ai_stigmer_commons_apiresource_field_options=fileDesc("CjJhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvZmllbGRfb3B0aW9ucy5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlOjsKCGNvbXB1dGVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjZwAUgASgIUghjb21wdXRlZDo9CglpbW11dGFibGUSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNrABSABKAhSCWltbXV0YWJsZTpECg1pc19leHByZXNzaW9uEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjbwAUgASgIUgxpc0V4cHJlc3Npb246hwEKDnJlZmVyZW5jZV9raW5kEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjcwAUgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRSDXJlZmVyZW5jZUtpbmQ6TQoQZGlzY3JpbWluYXRlZF9ieRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY3cAFIAEoCVIPZGlzY3JpbWluYXRlZEJ5iAEBOlUKE2Rpc2NyaW1pbmF0b3JfdmFsdWUSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYvcEFIAEoCVISZGlzY3JpbWluYXRvclZhbHVliAEBYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_google_protobuf_descriptor]);var reference_kind=extDesc(file_ai_stigmer_commons_apiresource_field_options,3);var file_ai_stigmer_commons_rpc_pagination=fileDesc("CidhaS9zdGlnbWVyL2NvbW1vbnMvcnBjL3BhZ2luYXRpb24ucHJvdG8SFmFpLnN0aWdtZXIuY29tbW9ucy5ycGMiJQoIUGFnZUluZm8SCwoDbnVtGAEgASgFEgwKBHNpemUYAiABKAUiMgoOR29vZ2xlUGFnZUluZm8SEgoKcGFnZV90b2tlbhgBIAEoCRIMCgRzaXplGAIgASgFYgZwcm90bzM");var file_ai_stigmer_commons_apiresource_io=fileDesc("CidhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvaW8ucHJvdG8SHmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZSImCg1BcGlSZXNvdXJjZUlkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiXQoWQXBpUmVzb3VyY2VEZWxldGVJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhcKD3ZlcnNpb25fbWVzc2FnZRgCIAEoCRINCgVmb3JjZRgDIAEoCCJKCh1BcGlSZXNvdXJjZUJ5T3JnQnlTbHVnUmVxdWVzdBITCgNvcmcYASABKAlCBrpIA8gBARIUCgRzbHVnGAIgASgJQga6SAPIAQEilAEKF0ZpbmRBcGlSZXNvdXJjZXNSZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEgwKBGtpbmQYAyABKAkSLgoEcGFnZRgEIAEoCzIgLmFpLnN0aWdtZXIuY29tbW9ucy5ycGMuUGFnZUluZm8SEwoLcGFnZV9udW1iZXIYBSABKAUSEQoJcGFnZV9zaXplGAYgASgFIosBChVVcGRhdGVWaXNpYmlsaXR5SW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARJVCgp2aXNpYmlsaXR5GAIgASgOMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlVmlzaWJpbGl0eUIKukgHggEEEAEgACKWAgoUQXBpUmVzb3VyY2VSZWZlcmVuY2USMgoDb3JnGAEgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEk0KBGtpbmQYAiABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBI1CgRzbHVnGAMgASgJQie6SCTIAQFyHxACGD8yGV5bYS16XVthLXowLTktXSpbYS16MC05XSQSRAoHdmVyc2lvbhgEIAEoCUIzukgwci4yLF4kfF5sYXRlc3QkfF5bYS16QS1aMC05Ll8tXSskfF5bYS1mMC05XXs2NH0kYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var ApiResourceDeleteInputSchema=messageDesc2(file_ai_stigmer_commons_apiresource_io,1);var UpdateVisibilityInputSchema=messageDesc2(file_ai_stigmer_commons_apiresource_io,4),ApiResourceReferenceSchema=messageDesc2(file_ai_stigmer_commons_apiresource_io,5);var file_ai_stigmer_agentic_agent_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxItcFCglBZ2VudFNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSEAoIaWNvbl91cmwYAiABKAkSHQoMaW5zdHJ1Y3Rpb25zGAMgASgJQge6SARyAhAKEs4BChFtY3Bfc2VydmVyX3VzYWdlcxgEIAMoCzIrLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5NY3BTZXJ2ZXJVc2FnZUKFAbpIgQGSAX4ifLoBeQoWbWNwX3NlcnZlcl91c2FnZXMua2luZBI/bWNwX3NlcnZlcl91c2FnZXMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1tY3Bfc2VydmVyGh50aGlzLm1jcF9zZXJ2ZXJfcmVmLmtpbmQgPT0gNDQSsAEKCnNraWxsX3JlZnMYBSADKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2VCZrpIX5IBXCJaugFXCg9za2lsbF9yZWZzLmtpbmQSM3NraWxsX3JlZnMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1za2lsbBoPdGhpcy5raW5kID09IDQz4IUsKxI5CgpzdWJfYWdlbnRzGAYgAygLMiUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLlN1YkFnZW50EjwKA2VudhgHIAMoCzIvLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudFNwZWMuRW52RW50cnkaYAoIRW52RW50cnkSCwoDa2V5GAEgASgJEkMKBXZhbHVlGAIgASgLMjQuYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudlZhckRlY2xhcmF0aW9uOgI4AUoECAgQCUoECAkQClIHc2hhcmluZ1IQZGF0YXN0b3JlX3VzYWdlcyLbAgoIU3ViQWdlbnQSFAoEbmFtZRgBIAEoCUIGukgDyAEBEhMKC2Rlc2NyaXB0aW9uGAIgASgJEh0KDGluc3RydWN0aW9ucxgDIAEoCUIHukgEcgIQChI6CgptY3BfYWNjZXNzGAQgAygLMiYuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLk1jcEFjY2VzcxKwAQoKc2tpbGxfcmVmcxgFIAMoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUJmukhfkgFcIlq6AVcKD3NraWxsX3JlZnMua2luZBIzc2tpbGxfcmVmcyBtdXN0IHJlZmVyZW5jZSByZXNvdXJjZXMgd2l0aCBraW5kPXNraWxsGg90aGlzLmtpbmQgPT0gNDPghSwrEhYKDm1vZGVsX292ZXJyaWRlGAYgASgJItUBCg5NY3BTZXJ2ZXJVc2FnZRJYCg5tY3Bfc2VydmVyX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUIKukgDyAEB4IUsLBIVCg1lbmFibGVkX3Rvb2xzGAIgAygJElIKF3Rvb2xfYXBwcm92YWxfb3ZlcnJpZGVzGAMgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLlRvb2xBcHByb3ZhbE92ZXJyaWRlIj4KCU1jcEFjY2VzcxIaCgptY3Bfc2VydmVyGAEgASgJQga6SAPIAQESFQoNZW5hYmxlZF90b29scxgCIAMoCSJeChRUb29sQXBwcm92YWxPdmVycmlkZRIaCgl0b29sX25hbWUYASABKAlCB7pIBHICEAESGQoRcmVxdWlyZXNfYXBwcm92YWwYAiABKAgSDwoHbWVzc2FnZRgDIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]),AgentSpecSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,0),SubAgentSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,1),McpServerUsageSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,2),McpAccessSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,3);var file_ai_stigmer_commons_apiresource_status=fileDesc("CithaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2Uvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UiWQoWQXBpUmVzb3VyY2VBdWRpdFN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0IqgBChBBcGlSZXNvdXJjZUF1ZGl0EkgKCnNwZWNfYXVkaXQYASABKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VBdWRpdEluZm8SSgoMc3RhdHVzX2F1ZGl0GAIgASgLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRJbmZvIpsCChRBcGlSZXNvdXJjZUF1ZGl0SW5mbxJJCgpjcmVhdGVkX2J5GAEgASgLMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRBY3RvchIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgp1cGRhdGVkX2J5GAMgASgLMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRBY3RvchIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVldmVudBgFIAEoCSJ0ChVBcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCgoCaWQYASABKAkSDgoGYXZhdGFyGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRINCgVlbWFpbBgEIAEoCRIaChJwbGF0Zm9ybV9jbGllbnRfaWQYBSABKAliBnByb3RvMw",[file_google_protobuf_timestamp]);var ApiResourceAuditSchema=messageDesc2(file_ai_stigmer_commons_apiresource_status,1),ApiResourceAuditInfoSchema=messageDesc2(file_ai_stigmer_commons_apiresource_status,2),ApiResourceAuditActorSchema=messageDesc2(file_ai_stigmer_commons_apiresource_status,3);var file_ai_stigmer_agentic_agent_v1_status=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvc3RhdHVzLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEigwEKC0FnZW50U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSGwoTZGVmYXVsdF9pbnN0YW5jZV9pZBgBIAEoCUoECAIQA1IQc2hhcmVfbGlua190b2tlbmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_status]),AgentStatusSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_status,0);var file_ai_stigmer_commons_apiresource_metadata=fileDesc("Ci1haS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvbWV0YWRhdGEucHJvdG8SHmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZSK4BAoTQXBpUmVzb3VyY2VNZXRhZGF0YRIUCgRuYW1lGAEgASgJQga6SAPYAQESMwoEc2x1ZxgCIAEoCUIlukgi2AEBch0QAjIZXlthLXpdW2EtejAtOS1dKlthLXowLTldJBIKCgJpZBgDIAEoCRILCgNvcmcYBCABKAkSUwoKdmlzaWJpbGl0eRgFIAEoDjI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVZpc2liaWxpdHlCCLpIBYIBAhABEk8KBmxhYmVscxgGIAMoCzI/LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhLkxhYmVsc0VudHJ5ElkKC2Fubm90YXRpb25zGAcgAygLMkQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlTWV0YWRhdGEuQW5ub3RhdGlvbnNFbnRyeRIMCgR0YWdzGAggAygJEksKB3ZlcnNpb24YCSABKAsyOi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YVZlcnNpb24aLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoyChBBbm5vdGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiYwoaQXBpUmVzb3VyY2VNZXRhZGF0YVZlcnNpb24SCgoCaWQYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIbChNwcmV2aW91c192ZXJzaW9uX2lkGAMgASgJEgsKA3RhZxgEIAEoCWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_enum,file_buf_validate_validate]),ApiResourceMetadataSchema=messageDesc2(file_ai_stigmer_commons_apiresource_metadata,0),ApiResourceMetadataVersionSchema=messageDesc2(file_ai_stigmer_commons_apiresource_metadata,1);var file_ai_stigmer_agentic_agent_v1_api=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvYXBpLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEilQIKBUFnZW50EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEhoKBGtpbmQYAiABKAlCDLpICXIHCgVBZ2VudBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESNAoEc3BlYxgEIAEoCzImLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudFNwZWMSOAoGc3RhdHVzGAUgASgLMiguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50U3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_agent_v1_spec,file_ai_stigmer_agentic_agent_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),AgentSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_api,0);var file_ai_stigmer_agentic_environment_v1_api=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvYXBpLnByb3RvEiFhaS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEiuwIKC0Vudmlyb25tZW50EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiAKBGtpbmQYAiABKAlCErpID3INCgtFbnZpcm9ubWVudBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESQAoEc3BlYxgEIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFNwZWMSRgoGc3RhdHVzGAUgASgLMjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate]),EnvironmentSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_api,0);var file_ai_stigmer_agentic_mcpserver_v1_spec=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3NwZWMucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEi6QQKDU1jcFNlcnZlclNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSEAoIaWNvbl91cmwYAiABKAkSDAoEdGFncxgDIAMoCRJDCgVzdGRpbxgEIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU3RkaW9TZXJ2ZXJDb25maWdIABJBCgRodHRwGAUgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5IdHRwU2VydmVyQ29uZmlnSAASHQoVZGVmYXVsdF9lbmFibGVkX3Rvb2xzGAcgAygJEkQKA2VudhgIIAMoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyU3BlYy5FbnZFbnRyeRJSChVwaW5uZWRfdG9vbF9hcHByb3ZhbHMYCyADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlRvb2xBcHByb3ZhbFBvbGljeRIWCg5yZXBvc2l0b3J5X3VybBgMIAEoCRIUCgxnaXRodWJfc3RhcnMYDSABKAUSPAoEYXV0aBgOIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyQXV0aBpgCghFbnZFbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52VmFyRGVjbGFyYXRpb246AjgBQhQKC3NlcnZlcl90eXBlEgW6SAIIASJPChFTdGRpb1NlcnZlckNvbmZpZxIXCgdjb21tYW5kGAEgASgJQga6SAPIAQESDAoEYXJncxgCIAMoCRITCgt3b3JraW5nX2RpchgDIAEoCSLgAgoQSHR0cFNlcnZlckNvbmZpZxIYCgN1cmwYASABKAlCC7pICMgBAXIDiAEBEk8KB2hlYWRlcnMYAiADKAsyPi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkh0dHBTZXJ2ZXJDb25maWcuSGVhZGVyc0VudHJ5ElgKDHF1ZXJ5X3BhcmFtcxgDIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuSHR0cFNlcnZlckNvbmZpZy5RdWVyeVBhcmFtc0VudHJ5EiMKD3RpbWVvdXRfc2Vjb25kcxgEIAEoBUIKukgHGgUYrAIoABouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoyChBRdWVyeVBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiYAoSVG9vbEFwcHJvdmFsUG9saWN5EhoKCXRvb2xfbmFtZRgBIAEoCUIHukgEcgIQARIPCgdtZXNzYWdlGAIgASgJEh0KFWZyb21fZGVzdHJ1Y3RpdmVfaGludBgDIAEoCCL0AgoNTWNwU2VydmVyQXV0aBLMAQoNb2F1dGhfYXBwX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUJ/ukh4ugF1ChJvYXV0aF9hcHBfcmVmLmtpbmQSO29hdXRoX2FwcF9yZWYgbXVzdCByZWZlcmVuY2UgYSByZXNvdXJjZSB3aXRoIGtpbmQ9b2F1dGhfYXBwGiJ0aGlzLnNsdWcgPT0gJycgfHwgdGhpcy5raW5kID09IDIy4IUsFhIfCg50YXJnZXRfZW52X3ZhchgCIAEoCUIHukgEcgIQARIbChN0b2tlbl9saWZldGltZV9oaW50GAMgASgJEhMKC3Njb3BlX2hpbnRzGAQgAygJEhUKDWRpc2NvdmVyeV91cmwYByABKAkSEgoKb2F1dGhfb25seRgKIAEoCEoECAUQBkoECAYQB0oECAgQCUoECAkQCmIGcHJvdG8z",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]),McpServerSpecSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,0),StdioServerConfigSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,1),HttpServerConfigSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,2),ToolApprovalPolicySchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,3),McpServerAuthSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,4);var file_ai_stigmer_iam_oauthapp_v1_spec=fileDesc("CiVhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9zcGVjLnByb3RvEhphaS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MSKvAwoMT0F1dGhBcHBTcGVjEhAKCHByb3ZpZGVyGAEgASgJEhoKCWNsaWVudF9pZBgCIAEoCUIHukgEcgIQARIeCg1jbGllbnRfc2VjcmV0GAMgASgJQge6SARyAhABEiMKEWF1dGhvcml6YXRpb25fdXJsGAQgASgJQgi6SAVyA4gBARIbCgl0b2tlbl91cmwYBSABKAlCCLpIBXIDiAEBEg4KBnNjb3BlcxgGIAMoCRIUCgx1c2VyaW5mb191cmwYByABKAkSHAoUc2NvcGVfcGFyYW1ldGVyX25hbWUYCCABKAkSUAoWdmVuZG9yX2FwcHJvdmFsX3N0YXR1cxgJIAEoDjIwLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLlZlbmRvckFwcHJvdmFsU3RhdHVzEiAKGHZlbmRvcl9hcHByb3ZhbF9kb2NzX3VybBgKIAEoCRJXChp0b2tlbl9lbmRwb2ludF9hdXRoX21ldGhvZBgLIAEoDjIzLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLlRva2VuRW5kcG9pbnRBdXRoTWV0aG9kKqwBChRWZW5kb3JBcHByb3ZhbFN0YXR1cxImCiJWRU5ET1JfQVBQUk9WQUxfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIgoeVkVORE9SX0FQUFJPVkFMX1NUQVRVU19QRU5ESU5HEAESIwofVkVORE9SX0FQUFJPVkFMX1NUQVRVU19BUFBST1ZFRBACEiMKH1ZFTkRPUl9BUFBST1ZBTF9TVEFUVVNfUkVKRUNURUQQAyqsAQoXVG9rZW5FbmRwb2ludEF1dGhNZXRob2QSKgomVE9LRU5fRU5EUE9JTlRfQVVUSF9NRVRIT0RfVU5TUEVDSUZJRUQQABIyCi5UT0tFTl9FTkRQT0lOVF9BVVRIX01FVEhPRF9DTElFTlRfU0VDUkVUX0JBU0lDEAESMQotVE9LRU5fRU5EUE9JTlRfQVVUSF9NRVRIT0RfQ0xJRU5UX1NFQ1JFVF9QT1NUEAJiBnByb3RvMw",[file_buf_validate_validate]);var VendorApprovalStatus;(function(VendorApprovalStatus2){VendorApprovalStatus2[VendorApprovalStatus2.UNSPECIFIED=0]="UNSPECIFIED",VendorApprovalStatus2[VendorApprovalStatus2.PENDING=1]="PENDING",VendorApprovalStatus2[VendorApprovalStatus2.APPROVED=2]="APPROVED",VendorApprovalStatus2[VendorApprovalStatus2.REJECTED=3]="REJECTED"})(VendorApprovalStatus||(VendorApprovalStatus={}));var TokenEndpointAuthMethod;(function(TokenEndpointAuthMethod2){TokenEndpointAuthMethod2[TokenEndpointAuthMethod2.UNSPECIFIED=0]="UNSPECIFIED",TokenEndpointAuthMethod2[TokenEndpointAuthMethod2.CLIENT_SECRET_BASIC=1]="CLIENT_SECRET_BASIC",TokenEndpointAuthMethod2[TokenEndpointAuthMethod2.CLIENT_SECRET_POST=2]="CLIENT_SECRET_POST"})(TokenEndpointAuthMethod||(TokenEndpointAuthMethod={}));var file_ai_stigmer_agentic_mcpserver_v1_status=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3N0YXR1cy5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MSLtAwoPTWNwU2VydmVyU3RhdHVzEkoKEHZhbGlkYXRpb25fc3RhdGUYASABKA4yMC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlZhbGlkYXRpb25TdGF0ZRIaChJ2YWxpZGF0aW9uX21lc3NhZ2UYAiABKAkSWAoXZGlzY292ZXJlZF9jYXBhYmlsaXRpZXMYAyABKAsyNy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2NvdmVyZWRDYXBhYmlsaXRpZXMSSwoOdG9vbF9hcHByb3ZhbHMYBCADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlRvb2xBcHByb3ZhbFBvbGljeRJCCgxvYXV0aF9zdGF0dXMYBSABKAsyLC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk9BdXRoU3RhdHVzEkYKDmNvbm5lY3Rfc3RhdHVzGAYgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db25uZWN0U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQigwIKDUNvbm5lY3RTdGF0dXMSPAoFcGhhc2UYASABKA4yLS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RQaGFzZRITCgt3b3JrZmxvd19pZBgCIAEoCRIuCgpzdGFydGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMZmFpbHVyZV9jb2RlGAUgASgJEhcKD2ZhaWx1cmVfbWVzc2FnZRgGIAEoCRIPCgd3YXJuaW5nGAcgASgJIukBChZEaXNjb3ZlcmVkQ2FwYWJpbGl0aWVzEj4KBXRvb2xzGAEgAygLMi8uYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5EaXNjb3ZlcmVkVG9vbBJXChJyZXNvdXJjZV90ZW1wbGF0ZXMYAiADKAsyOy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2NvdmVyZWRSZXNvdXJjZVRlbXBsYXRlEjYKEmxhc3RfZGlzY292ZXJlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYgoORGlzY292ZXJlZFRvb2wSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRItCgxpbnB1dF9zY2hlbWEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0ImgKGkRpc2NvdmVyZWRSZXNvdXJjZVRlbXBsYXRlEhQKDHVyaV90ZW1wbGF0ZRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhEKCW1pbWVfdHlwZRgEIAEoCSLyAQoLT0F1dGhTdGF0dXMSUAoWdmVuZG9yX2FwcHJvdmFsX3N0YXR1cxgBIAEoDjIwLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLlZlbmRvckFwcHJvdmFsU3RhdHVzEiAKGHZlbmRvcl9hcHByb3ZhbF9kb2NzX3VybBgCIAEoCRJPChZlZmZlY3RpdmVfb2F1dGhfc291cmNlGAMgASgOMi8uYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5PQXV0aEFwcFNvdXJjZRIeChZlZmZlY3RpdmVfb2F1dGhfYXBwX2lkGAQgASgJKoIBCgxDb25uZWN0UGhhc2USHQoZY29ubmVjdF9waGFzZV91bnNwZWNpZmllZBAAEhwKGGNvbm5lY3RfcGhhc2VfY29ubmVjdGluZxABEhsKF2Nvbm5lY3RfcGhhc2Vfc3VjY2VlZGVkEAISGAoUY29ubmVjdF9waGFzZV9mYWlsZWQQAypLCg9WYWxpZGF0aW9uU3RhdGUSIAocdmFsaWRhdGlvbl9zdGF0ZV91bnNwZWNpZmllZBAAEgkKBXZhbGlkEAESCwoHaW52YWxpZBACKo8BCg5PQXV0aEFwcFNvdXJjZRIgChxPQVVUSF9BUFBfU09VUkNFX1VOU1BFQ0lGSUVEEAASHQoZT0FVVEhfQVBQX1NPVVJDRV9QTEFURk9STRABEiEKHU9BVVRIX0FQUF9TT1VSQ0VfT1JHX09WRVJSSURFEAISGQoVT0FVVEhfQVBQX1NPVVJDRV9OT05FEANiBnByb3RvMw",[file_ai_stigmer_agentic_mcpserver_v1_spec,file_ai_stigmer_commons_apiresource_status,file_ai_stigmer_iam_oauthapp_v1_spec,file_google_protobuf_struct,file_google_protobuf_timestamp]),McpServerStatusSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_status,0),ConnectStatusSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_status,1),DiscoveredCapabilitiesSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_status,2),DiscoveredToolSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_status,3),DiscoveredResourceTemplateSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_status,4),OAuthStatusSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_status,5),ConnectPhase;(function(ConnectPhase2){ConnectPhase2[ConnectPhase2.unspecified=0]="unspecified",ConnectPhase2[ConnectPhase2.connecting=1]="connecting",ConnectPhase2[ConnectPhase2.succeeded=2]="succeeded",ConnectPhase2[ConnectPhase2.failed=3]="failed"})(ConnectPhase||(ConnectPhase={}));var ValidationState;(function(ValidationState3){ValidationState3[ValidationState3.validation_state_unspecified=0]="validation_state_unspecified",ValidationState3[ValidationState3.valid=1]="valid",ValidationState3[ValidationState3.invalid=2]="invalid"})(ValidationState||(ValidationState={}));var OAuthAppSource;(function(OAuthAppSource2){OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_UNSPECIFIED=0]="OAUTH_APP_SOURCE_UNSPECIFIED",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_PLATFORM=1]="OAUTH_APP_SOURCE_PLATFORM",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_ORG_OVERRIDE=2]="OAUTH_APP_SOURCE_ORG_OVERRIDE",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_NONE=3]="OAUTH_APP_SOURCE_NONE"})(OAuthAppSource||(OAuthAppSource={}));var file_ai_stigmer_agentic_mcpserver_v1_api=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2FwaS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MSKtAgoJTWNwU2VydmVyEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh4KBGtpbmQYAiABKAlCELpIDXILCglNY3BTZXJ2ZXISTQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YUIGukgDyAEBEjwKBHNwZWMYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlclNwZWMSQAoGc3RhdHVzGAUgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXJTdGF0dXMibQoNTWNwU2VydmVyTGlzdBITCgthcGlfdmVyc2lvbhgBIAEoCRIMCgRraW5kGAIgASgJEjkKBWl0ZW1zGAMgAygLMiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXJiBnByb3RvMw",[file_ai_stigmer_agentic_mcpserver_v1_spec,file_ai_stigmer_agentic_mcpserver_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),McpServerSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_api,0);var file_ai_stigmer_agentic_agentexecution_v1_enum=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvZW51bS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxKv8BCg5FeGVjdXRpb25QaGFzZRIfChtFWEVDVVRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIVChFFWEVDVVRJT05fUEVORElORxABEhkKFUVYRUNVVElPTl9JTl9QUk9HUkVTUxACEhcKE0VYRUNVVElPTl9DT01QTEVURUQQAxIUChBFWEVDVVRJT05fRkFJTEVEEAQSFwoTRVhFQ1VUSU9OX0NBTkNFTExFRBAFEhgKFEVYRUNVVElPTl9URVJNSU5BVEVEEAgSIgoeRVhFQ1VUSU9OX1dBSVRJTkdfRk9SX0FQUFJPVkFMEAYSFAoQRVhFQ1VUSU9OX1BBVVNFRBAHKooBCgtNZXNzYWdlVHlwZRIcChhNRVNTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIRCg1NRVNTQUdFX0hVTUFOEAESDgoKTUVTU0FHRV9BSRACEhAKDE1FU1NBR0VfVE9PTBADEhIKDk1FU1NBR0VfU1lTVEVNEAQSFAoQTUVTU0FHRV9USElOS0lORxAFKuEBCg5Ub29sQ2FsbFN0YXR1cxIgChxUT09MX0NBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFQoRVE9PTF9DQUxMX1BFTkRJTkcQARIVChFUT09MX0NBTExfUlVOTklORxACEhcKE1RPT0xfQ0FMTF9DT01QTEVURUQQAxIUChBUT09MX0NBTExfRkFJTEVEEAQSHgoaVE9PTF9DQUxMX1dBSVRJTkdfQVBQUk9WQUwQBRIVChFUT09MX0NBTExfU0tJUFBFRBAGEhkKFVRPT0xfQ0FMTF9JTlRFUlJVUFRFRBAHKuQCCghUb29sS2luZBIZChVUT09MX0tJTkRfVU5TUEVDSUZJRUQQABIXChNUT09MX0tJTkRfRklMRV9SRUFEEAESGAoUVE9PTF9LSU5EX0ZJTEVfV1JJVEUQAhIXChNUT09MX0tJTkRfRklMRV9FRElUEAMSGQoVVE9PTF9LSU5EX0ZJTEVfREVMRVRFEAQSEwoPVE9PTF9LSU5EX1NIRUxMEAUSFAoQVE9PTF9LSU5EX1NFQVJDSBAGEhIKDlRPT0xfS0lORF9MSVNUEAcSEwoPVE9PTF9LSU5EX0ZFVENIEAgSGAoUVE9PTF9LSU5EX1dFQl9TRUFSQ0gQCRITCg9UT09MX0tJTkRfVEhJTksQChISCg5UT09MX0tJTkRfVE9ETxALEhYKElRPT0xfS0lORF9TVUJBR0VOVBAMEhEKDVRPT0xfS0lORF9NQ1AQDRIUChBUT09MX0tJTkRfTUVNT1JZEA4qeQoKVG9kb1N0YXR1cxIbChdUT0RPX1NUQVRVU19VTlNQRUNJRklFRBAAEhAKDFRPRE9fUEVORElORxABEhQKEFRPRE9fSU5fUFJPR1JFU1MQAhISCg5UT0RPX0NPTVBMRVRFRBADEhIKDlRPRE9fQ0FOQ0VMTEVEEAQqrAEKDlN1YkFnZW50U3RhdHVzEiAKHFNVQl9BR0VOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIVChFTVUJfQUdFTlRfUEVORElORxABEhkKFVNVQl9BR0VOVF9JTl9QUk9HUkVTUxACEhcKE1NVQl9BR0VOVF9DT01QTEVURUQQAxIUChBTVUJfQUdFTlRfRkFJTEVEEAQSFwoTU1VCX0FHRU5UX0NBTkNFTExFRBAFKokBChVFeGVjdXRpb25BcnRpZmFjdEtpbmQSJwojRVhFQ1VUSU9OX0FSVElGQUNUX0tJTkRfVU5TUEVDSUZJRUQQABIgChxFWEVDVVRJT05fQVJUSUZBQ1RfS0lORF9GSUxFEAESJQohRVhFQ1VUSU9OX0FSVElGQUNUX0tJTkRfRElSRUNUT1JZEAIqXwoTU3VtbWFyaXphdGlvblNvdXJjZRIkCiBTVU1NQVJJWkFUSU9OX1NPVVJDRV9VTlNQRUNJRklFRBAAEg8KC2dyYXBoX3N0YXJ0EAESEQoNbWlkX2V4ZWN1dGlvbhACKpIBChdUb29sQ2FsbFN0cmVhbWluZ1NvdXJjZRIqCiZUT09MX0NBTExfU1RSRUFNSU5HX1NPVVJDRV9VTlNQRUNJRklFRBAAEiQKIFRPT0xfQ0FMTF9TVFJFQU1JTkdfU09VUkNFX0lOUFVUEAESJQohVE9PTF9DQUxMX1NUUkVBTUlOR19TT1VSQ0VfT1VUUFVUEAIqiwEKFkV4ZWN1dGlvbkNvbnRyb2xTaWduYWwSKAokRVhFQ1VUSU9OX0NPTlRST0xfU0lHTkFMX1VOU1BFQ0lGSUVEEAASIQodRVhFQ1VUSU9OX0NPTlRST0xfU0lHTkFMX1NUT1AQARIkCiBFWEVDVVRJT05fQ09OVFJPTF9TSUdOQUxfV0FSTklORxACKqUBCg5BcHByb3ZhbEFjdGlvbhIfChtBUFBST1ZBTF9BQ1RJT05fVU5TUEVDSUZJRUQQABIbChdBUFBST1ZBTF9BQ1RJT05fQVBQUk9WRRABEhgKFEFQUFJPVkFMX0FDVElPTl9TS0lQEAISGgoWQVBQUk9WQUxfQUNUSU9OX1JFSkVDVBADEh8KG0FQUFJPVkFMX0FDVElPTl9BUFBST1ZFX0FMTBAEKrADChRBcHByb3ZhbFBvbGljeVNvdXJjZRImCiJBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX1VOU1BFQ0lGSUVEEAASLQopQVBQUk9WQUxfUE9MSUNZX1NPVVJDRV9DTEFTU0lGSUVSX0RFRkFVTFQQARIqCiZBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX1BJTk5FRF9PVkVSUklERRACEikKJUFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfQUdFTlRfT1ZFUlJJREUQAxIrCidBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0FVVE9fQVBQUk9WRV9BTEwQBBIpCiVBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0FQUFJPVkFMX0xFQVNFEAUSKwonQVBQUk9WQUxfUE9MSUNZX1NPVVJDRV9CVUlMVElOX0NBVEVHT1JZEAYSOQo1QVBQUk9WQUxfUE9MSUNZX1NPVVJDRV9BTk5PVEFUSU9OX0RFU1RSVUNUSVZFX1RJR0hURU4QBxIqCiZBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX1VOQVRURU5ERURfU0tJUBAIKuMBChFBcHByb3ZhbEV2ZW50VHlwZRIjCh9BUFBST1ZBTF9FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASIQodQVBQUk9WQUxfRVZFTlRfVFlQRV9SRVFVRVNURUQQARIgChxBUFBST1ZBTF9FVkVOVF9UWVBFX0FQUFJPVkVEEAISIAocQVBQUk9WQUxfRVZFTlRfVFlQRV9SRUpFQ1RFRBADEh8KG0FQUFJPVkFMX0VWRU5UX1RZUEVfU0tJUFBFRBAEEiEKHUFQUFJPVkFMX0VWRU5UX1RZUEVfUkVUUkFDVEVEEAUqpAEKGEFwcHJvdmFsUmV0cmFjdGlvblJlYXNvbhIqCiZBUFBST1ZBTF9SRVRSQUNUSU9OX1JFQVNPTl9VTlNQRUNJRklFRBAAEjEKLUFQUFJPVkFMX1JFVFJBQ1RJT05fUkVBU09OX1NVQl9BR0VOVF9URVJNSU5BTBABEikKJUFQUFJPVkFMX1JFVFJBQ1RJT05fUkVBU09OX1NVUEVSU0VERUQQAipqCg9JbnRlcmFjdGlvbk1vZGUSIAocSU5URVJBQ1RJT05fTU9ERV9VTlNQRUNJRklFRBAAEhoKFklOVEVSQUNUSU9OX01PREVfQUdFTlQQARIZChVJTlRFUkFDVElPTl9NT0RFX1BMQU4QAipqCgxBcHByb3ZhbE1vZGUSHQoZQVBQUk9WQUxfTU9ERV9VTlNQRUNJRklFRBAAEh0KGUFQUFJPVkFMX01PREVfSU5URVJBQ1RJVkUQARIcChhBUFBST1ZBTF9NT0RFX1VOQVRURU5ERUQQAipdCgtTZXJ2aWNlVGllchIcChhTRVJWSUNFX1RJRVJfVU5TUEVDSUZJRUQQABIZChVTRVJWSUNFX1RJRVJfU1RBTkRBUkQQARIVChFTRVJWSUNFX1RJRVJfRkFTVBACKmQKDFRoaW5raW5nTW9kZRIdChlUSElOS0lOR19NT0RFX1VOU1BFQ0lGSUVEEAASGgoWVEhJTktJTkdfTU9ERV9ESVNBQkxFRBABEhkKFVRISU5LSU5HX01PREVfRU5BQkxFRBACKqYBCg5GaWxlQ2hhbmdlVHlwZRIgChxGSUxFX0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASGwoXRklMRV9DSEFOR0VfVFlQRV9DUkVBVEUQARIbChdGSUxFX0NIQU5HRV9UWVBFX01PRElGWRACEhsKF0ZJTEVfQ0hBTkdFX1RZUEVfREVMRVRFEAMSGwoXRklMRV9DSEFOR0VfVFlQRV9SRU5BTUUQBCqWAQoWRmlsZUNoYW5nZUNhcHR1cmVMZXZlbBIpCiVGSUxFX0NIQU5HRV9DQVBUVVJFX0xFVkVMX1VOU1BFQ0lGSUVEEAASKAokRklMRV9DSEFOR0VfQ0FQVFVSRV9MRVZFTF9XSE9MRV9GSUxFEAESJwojRklMRV9DSEFOR0VfQ0FQVFVSRV9MRVZFTF9IVU5LX09OTFkQAir9AQoTRmlsZUNoYW5nZVNldFN0YXR1cxImCiJGSUxFX0NIQU5HRV9TRVRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogRklMRV9DSEFOR0VfU0VUX1NUQVRVU19DQVBUVVJJTkcQARIqCiZGSUxFX0NIQU5HRV9TRVRfU1RBVFVTX0FXQUlUSU5HX1JFVklFVxACEiIKHkZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfREVDSURFRBADEiUKIUZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfUkVDT05DSUxFRBAEEiEKHUZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfRkFJTEVEEAUqxwEKDkZpbGVDaGFuZ2VLaW5kEiAKHEZJTEVfQ0hBTkdFX0tJTkRfVU5TUEVDSUZJRUQQABIYChRGSUxFX0NIQU5HRV9LSU5EX0FERBABEhsKF0ZJTEVfQ0hBTkdFX0tJTkRfTU9ESUZZEAISGwoXRklMRV9DSEFOR0VfS0lORF9ERUxFVEUQAxIbChdGSUxFX0NIQU5HRV9LSU5EX1JFTkFNRRAEEiIKHkZJTEVfQ0hBTkdFX0tJTkRfQklOQVJZX0NIQU5HRRAFKtoBChBGaWxlQ2FwdHVyZUNsYXNzEiIKHkZJTEVfQ0FQVFVSRV9DTEFTU19VTlNQRUNJRklFRBAAEiIKHkZJTEVfQ0FQVFVSRV9DTEFTU19HSVRfVFJBQ0tFRBABEi0KKUZJTEVfQ0FQVFVSRV9DTEFTU19HSVRfVU5UUkFDS0VEX0NBUFRVUkVEEAISKwonRklMRV9DQVBUVVJFX0NMQVNTX0dJVF9JR05PUkVEX0NBUFRVUkVEEAMSIgoeRklMRV9DQVBUVVJFX0NMQVNTX05PTl9HSVRfQ0FTEAQqpwEKEERpZmZDb21wbGV0ZW5lc3MSIQodRElGRl9DT01QTEVURU5FU1NfVU5TUEVDSUZJRUQQABIeChpESUZGX0NPTVBMRVRFTkVTU19DT01QTEVURRABEiUKIURJRkZfQ09NUExFVEVORVNTX1BBUlRJQUxfQkxPQ0tFRBACEikKJURJRkZfQ09NUExFVEVORVNTX0JJTkFSWV9TVU1NQVJZX09OTFkQAyqHAQoMU25hcHNob3RLaW5kEh0KGVNOQVBTSE9UX0tJTkRfVU5TUEVDSUZJRUQQABIeChpTTkFQU0hPVF9LSU5EX0dJVF9UUkVFX1JFRhABEh4KGlNOQVBTSE9UX0tJTkRfQ0FTX01BTklGRVNUEAISGAoUU05BUFNIT1RfS0lORF9IWUJSSUQQAyp6ChFGaWxlRGVjaXNpb25TY29wZRIjCh9GSUxFX0RFQ0lTSU9OX1NDT1BFX1VOU1BFQ0lGSUVEEAASIgoeRklMRV9ERUNJU0lPTl9TQ09QRV9DSEFOR0VfU0VUEAESHAoYRklMRV9ERUNJU0lPTl9TQ09QRV9GSUxFEAIqfQoSRmlsZURlY2lzaW9uQWN0aW9uEiQKIEZJTEVfREVDSVNJT05fQUNUSU9OX1VOU1BFQ0lGSUVEEAASIAocRklMRV9ERUNJU0lPTl9BQ1RJT05fQVBQUk9WRRABEh8KG0ZJTEVfREVDSVNJT05fQUNUSU9OX1JFSkVDVBACKosBChJGaWxlRGVjaXNpb25PcmlnaW4SJAogRklMRV9ERUNJU0lPTl9PUklHSU5fVU5TUEVDSUZJRUQQABIdChlGSUxFX0RFQ0lTSU9OX09SSUdJTl9VU0VSEAESMAosRklMRV9ERUNJU0lPTl9PUklHSU5fUE9MSUNZX0FQUFJPVkVEX0NPTU1BTkQQAiqNAgoTRmlsZVJldmlld0V2ZW50VHlwZRImCiJGSUxFX1JFVklFV19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASLAooRklMRV9SRVZJRVdfRVZFTlRfVFlQRV9CQVNFTElORV9DQVBUVVJFRBABEi0KKUZJTEVfUkVWSUVXX0VWRU5UX1RZUEVfQ0FORElEQVRFX0NBUFRVUkVEEAISJwojRklMRV9SRVZJRVdfRVZFTlRfVFlQRV9GSUxFX0RFQ0lERUQQAxIlCiFGSUxFX1JFVklFV19FVkVOVF9UWVBFX1JFQ09OQ0lMRUQQBBIhCh1GSUxFX1JFVklFV19FVkVOVF9UWVBFX0ZBSUxFRBAFKvkBChVGaWxlUmV2aWV3RmFpbHVyZUtpbmQSKAokRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX1VOU1BFQ0lGSUVEEAASKwonRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX0NBUFRVUkVfRkFJTEVEEAESLgoqRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX0RJRkZfVU5SRVZJRVdBQkxFEAISLQopRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX1JFQ09OQ0lMRV9GQUlMRUQQAxIqCiZGSUxFX1JFVklFV19GQUlMVVJFX0tJTkRfSEFTSF9NSVNNQVRDSBAEKsQBChVGaWxlUmV2aWV3QmxvY2tSZWFzb24SKAokRklMRV9SRVZJRVdfQkxPQ0tfUkVBU09OX1VOU1BFQ0lGSUVEEAASLAooRklMRV9SRVZJRVdfQkxPQ0tfUkVBU09OX1NFQ1JFVF9XSVRISEVMRBABEigKJEZJTEVfUkVWSUVXX0JMT0NLX1JFQVNPTl9TSVpFX0VMSURFRBACEikKJUZJTEVfUkVWSUVXX0JMT0NLX1JFQVNPTl9VTlJFVklFV0FCTEUQA2IGcHJvdG8z"),ExecutionPhase;(function(ExecutionPhase3){ExecutionPhase3[ExecutionPhase3.EXECUTION_PHASE_UNSPECIFIED=0]="EXECUTION_PHASE_UNSPECIFIED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PENDING=1]="EXECUTION_PENDING",ExecutionPhase3[ExecutionPhase3.EXECUTION_IN_PROGRESS=2]="EXECUTION_IN_PROGRESS",ExecutionPhase3[ExecutionPhase3.EXECUTION_COMPLETED=3]="EXECUTION_COMPLETED",ExecutionPhase3[ExecutionPhase3.EXECUTION_FAILED=4]="EXECUTION_FAILED",ExecutionPhase3[ExecutionPhase3.EXECUTION_CANCELLED=5]="EXECUTION_CANCELLED",ExecutionPhase3[ExecutionPhase3.EXECUTION_TERMINATED=8]="EXECUTION_TERMINATED",ExecutionPhase3[ExecutionPhase3.EXECUTION_WAITING_FOR_APPROVAL=6]="EXECUTION_WAITING_FOR_APPROVAL",ExecutionPhase3[ExecutionPhase3.EXECUTION_PAUSED=7]="EXECUTION_PAUSED"})(ExecutionPhase||(ExecutionPhase={}));var ExecutionPhaseSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,0),MessageType;(function(MessageType2){MessageType2[MessageType2.MESSAGE_TYPE_UNSPECIFIED=0]="MESSAGE_TYPE_UNSPECIFIED",MessageType2[MessageType2.MESSAGE_HUMAN=1]="MESSAGE_HUMAN",MessageType2[MessageType2.MESSAGE_AI=2]="MESSAGE_AI",MessageType2[MessageType2.MESSAGE_TOOL=3]="MESSAGE_TOOL",MessageType2[MessageType2.MESSAGE_SYSTEM=4]="MESSAGE_SYSTEM",MessageType2[MessageType2.MESSAGE_THINKING=5]="MESSAGE_THINKING"})(MessageType||(MessageType={}));var ToolCallStatus;(function(ToolCallStatus2){ToolCallStatus2[ToolCallStatus2.TOOL_CALL_STATUS_UNSPECIFIED=0]="TOOL_CALL_STATUS_UNSPECIFIED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_PENDING=1]="TOOL_CALL_PENDING",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_RUNNING=2]="TOOL_CALL_RUNNING",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_COMPLETED=3]="TOOL_CALL_COMPLETED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_FAILED=4]="TOOL_CALL_FAILED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_WAITING_APPROVAL=5]="TOOL_CALL_WAITING_APPROVAL",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_SKIPPED=6]="TOOL_CALL_SKIPPED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_INTERRUPTED=7]="TOOL_CALL_INTERRUPTED"})(ToolCallStatus||(ToolCallStatus={}));var ToolCallStatusSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,2),ToolKind;(function(ToolKind2){ToolKind2[ToolKind2.UNSPECIFIED=0]="UNSPECIFIED",ToolKind2[ToolKind2.FILE_READ=1]="FILE_READ",ToolKind2[ToolKind2.FILE_WRITE=2]="FILE_WRITE",ToolKind2[ToolKind2.FILE_EDIT=3]="FILE_EDIT",ToolKind2[ToolKind2.FILE_DELETE=4]="FILE_DELETE",ToolKind2[ToolKind2.SHELL=5]="SHELL",ToolKind2[ToolKind2.SEARCH=6]="SEARCH",ToolKind2[ToolKind2.LIST=7]="LIST",ToolKind2[ToolKind2.FETCH=8]="FETCH",ToolKind2[ToolKind2.WEB_SEARCH=9]="WEB_SEARCH",ToolKind2[ToolKind2.THINK=10]="THINK",ToolKind2[ToolKind2.TODO=11]="TODO",ToolKind2[ToolKind2.SUBAGENT=12]="SUBAGENT",ToolKind2[ToolKind2.MCP=13]="MCP",ToolKind2[ToolKind2.MEMORY=14]="MEMORY"})(ToolKind||(ToolKind={}));var TodoStatus;(function(TodoStatus2){TodoStatus2[TodoStatus2.TODO_STATUS_UNSPECIFIED=0]="TODO_STATUS_UNSPECIFIED",TodoStatus2[TodoStatus2.TODO_PENDING=1]="TODO_PENDING",TodoStatus2[TodoStatus2.TODO_IN_PROGRESS=2]="TODO_IN_PROGRESS",TodoStatus2[TodoStatus2.TODO_COMPLETED=3]="TODO_COMPLETED",TodoStatus2[TodoStatus2.TODO_CANCELLED=4]="TODO_CANCELLED"})(TodoStatus||(TodoStatus={}));var SubAgentStatus;(function(SubAgentStatus2){SubAgentStatus2[SubAgentStatus2.SUB_AGENT_STATUS_UNSPECIFIED=0]="SUB_AGENT_STATUS_UNSPECIFIED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_PENDING=1]="SUB_AGENT_PENDING",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_IN_PROGRESS=2]="SUB_AGENT_IN_PROGRESS",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_COMPLETED=3]="SUB_AGENT_COMPLETED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_FAILED=4]="SUB_AGENT_FAILED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_CANCELLED=5]="SUB_AGENT_CANCELLED"})(SubAgentStatus||(SubAgentStatus={}));var ExecutionArtifactKind;(function(ExecutionArtifactKind2){ExecutionArtifactKind2[ExecutionArtifactKind2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionArtifactKind2[ExecutionArtifactKind2.FILE=1]="FILE",ExecutionArtifactKind2[ExecutionArtifactKind2.DIRECTORY=2]="DIRECTORY"})(ExecutionArtifactKind||(ExecutionArtifactKind={}));var SummarizationSource;(function(SummarizationSource2){SummarizationSource2[SummarizationSource2.SUMMARIZATION_SOURCE_UNSPECIFIED=0]="SUMMARIZATION_SOURCE_UNSPECIFIED",SummarizationSource2[SummarizationSource2.graph_start=1]="graph_start",SummarizationSource2[SummarizationSource2.mid_execution=2]="mid_execution"})(SummarizationSource||(SummarizationSource={}));var ToolCallStreamingSource;(function(ToolCallStreamingSource2){ToolCallStreamingSource2[ToolCallStreamingSource2.UNSPECIFIED=0]="UNSPECIFIED",ToolCallStreamingSource2[ToolCallStreamingSource2.INPUT=1]="INPUT",ToolCallStreamingSource2[ToolCallStreamingSource2.OUTPUT=2]="OUTPUT"})(ToolCallStreamingSource||(ToolCallStreamingSource={}));var ExecutionControlSignal;(function(ExecutionControlSignal2){ExecutionControlSignal2[ExecutionControlSignal2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionControlSignal2[ExecutionControlSignal2.STOP=1]="STOP",ExecutionControlSignal2[ExecutionControlSignal2.WARNING=2]="WARNING"})(ExecutionControlSignal||(ExecutionControlSignal={}));var ApprovalAction;(function(ApprovalAction2){ApprovalAction2[ApprovalAction2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalAction2[ApprovalAction2.APPROVE=1]="APPROVE",ApprovalAction2[ApprovalAction2.SKIP=2]="SKIP",ApprovalAction2[ApprovalAction2.REJECT=3]="REJECT",ApprovalAction2[ApprovalAction2.APPROVE_ALL=4]="APPROVE_ALL"})(ApprovalAction||(ApprovalAction={}));var ApprovalActionSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,10),ApprovalPolicySource;(function(ApprovalPolicySource2){ApprovalPolicySource2[ApprovalPolicySource2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalPolicySource2[ApprovalPolicySource2.CLASSIFIER_DEFAULT=1]="CLASSIFIER_DEFAULT",ApprovalPolicySource2[ApprovalPolicySource2.PINNED_OVERRIDE=2]="PINNED_OVERRIDE",ApprovalPolicySource2[ApprovalPolicySource2.AGENT_OVERRIDE=3]="AGENT_OVERRIDE",ApprovalPolicySource2[ApprovalPolicySource2.AUTO_APPROVE_ALL=4]="AUTO_APPROVE_ALL",ApprovalPolicySource2[ApprovalPolicySource2.APPROVAL_LEASE=5]="APPROVAL_LEASE",ApprovalPolicySource2[ApprovalPolicySource2.BUILTIN_CATEGORY=6]="BUILTIN_CATEGORY",ApprovalPolicySource2[ApprovalPolicySource2.ANNOTATION_DESTRUCTIVE_TIGHTEN=7]="ANNOTATION_DESTRUCTIVE_TIGHTEN",ApprovalPolicySource2[ApprovalPolicySource2.UNATTENDED_SKIP=8]="UNATTENDED_SKIP"})(ApprovalPolicySource||(ApprovalPolicySource={}));var ApprovalEventType;(function(ApprovalEventType2){ApprovalEventType2[ApprovalEventType2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalEventType2[ApprovalEventType2.REQUESTED=1]="REQUESTED",ApprovalEventType2[ApprovalEventType2.APPROVED=2]="APPROVED",ApprovalEventType2[ApprovalEventType2.REJECTED=3]="REJECTED",ApprovalEventType2[ApprovalEventType2.SKIPPED=4]="SKIPPED",ApprovalEventType2[ApprovalEventType2.RETRACTED=5]="RETRACTED"})(ApprovalEventType||(ApprovalEventType={}));var ApprovalEventTypeSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,12),ApprovalRetractionReason;(function(ApprovalRetractionReason2){ApprovalRetractionReason2[ApprovalRetractionReason2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalRetractionReason2[ApprovalRetractionReason2.SUB_AGENT_TERMINAL=1]="SUB_AGENT_TERMINAL",ApprovalRetractionReason2[ApprovalRetractionReason2.SUPERSEDED=2]="SUPERSEDED"})(ApprovalRetractionReason||(ApprovalRetractionReason={}));var InteractionMode;(function(InteractionMode2){InteractionMode2[InteractionMode2.UNSPECIFIED=0]="UNSPECIFIED",InteractionMode2[InteractionMode2.AGENT=1]="AGENT",InteractionMode2[InteractionMode2.PLAN=2]="PLAN"})(InteractionMode||(InteractionMode={}));var ApprovalMode;(function(ApprovalMode2){ApprovalMode2[ApprovalMode2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalMode2[ApprovalMode2.INTERACTIVE=1]="INTERACTIVE",ApprovalMode2[ApprovalMode2.UNATTENDED=2]="UNATTENDED"})(ApprovalMode||(ApprovalMode={}));var ServiceTier;(function(ServiceTier2){ServiceTier2[ServiceTier2.UNSPECIFIED=0]="UNSPECIFIED",ServiceTier2[ServiceTier2.STANDARD=1]="STANDARD",ServiceTier2[ServiceTier2.FAST=2]="FAST"})(ServiceTier||(ServiceTier={}));var ThinkingMode;(function(ThinkingMode2){ThinkingMode2[ThinkingMode2.UNSPECIFIED=0]="UNSPECIFIED",ThinkingMode2[ThinkingMode2.DISABLED=1]="DISABLED",ThinkingMode2[ThinkingMode2.ENABLED=2]="ENABLED"})(ThinkingMode||(ThinkingMode={}));var FileChangeType;(function(FileChangeType2){FileChangeType2[FileChangeType2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeType2[FileChangeType2.CREATE=1]="CREATE",FileChangeType2[FileChangeType2.MODIFY=2]="MODIFY",FileChangeType2[FileChangeType2.DELETE=3]="DELETE",FileChangeType2[FileChangeType2.RENAME=4]="RENAME"})(FileChangeType||(FileChangeType={}));var FileChangeCaptureLevel;(function(FileChangeCaptureLevel2){FileChangeCaptureLevel2[FileChangeCaptureLevel2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeCaptureLevel2[FileChangeCaptureLevel2.WHOLE_FILE=1]="WHOLE_FILE",FileChangeCaptureLevel2[FileChangeCaptureLevel2.HUNK_ONLY=2]="HUNK_ONLY"})(FileChangeCaptureLevel||(FileChangeCaptureLevel={}));var FileChangeSetStatus;(function(FileChangeSetStatus2){FileChangeSetStatus2[FileChangeSetStatus2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeSetStatus2[FileChangeSetStatus2.CAPTURING=1]="CAPTURING",FileChangeSetStatus2[FileChangeSetStatus2.AWAITING_REVIEW=2]="AWAITING_REVIEW",FileChangeSetStatus2[FileChangeSetStatus2.DECIDED=3]="DECIDED",FileChangeSetStatus2[FileChangeSetStatus2.RECONCILED=4]="RECONCILED",FileChangeSetStatus2[FileChangeSetStatus2.FAILED=5]="FAILED"})(FileChangeSetStatus||(FileChangeSetStatus={}));var FileChangeKind;(function(FileChangeKind2){FileChangeKind2[FileChangeKind2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeKind2[FileChangeKind2.ADD=1]="ADD",FileChangeKind2[FileChangeKind2.MODIFY=2]="MODIFY",FileChangeKind2[FileChangeKind2.DELETE=3]="DELETE",FileChangeKind2[FileChangeKind2.RENAME=4]="RENAME",FileChangeKind2[FileChangeKind2.BINARY_CHANGE=5]="BINARY_CHANGE"})(FileChangeKind||(FileChangeKind={}));var FileCaptureClass;(function(FileCaptureClass2){FileCaptureClass2[FileCaptureClass2.UNSPECIFIED=0]="UNSPECIFIED",FileCaptureClass2[FileCaptureClass2.GIT_TRACKED=1]="GIT_TRACKED",FileCaptureClass2[FileCaptureClass2.GIT_UNTRACKED_CAPTURED=2]="GIT_UNTRACKED_CAPTURED",FileCaptureClass2[FileCaptureClass2.GIT_IGNORED_CAPTURED=3]="GIT_IGNORED_CAPTURED",FileCaptureClass2[FileCaptureClass2.NON_GIT_CAS=4]="NON_GIT_CAS"})(FileCaptureClass||(FileCaptureClass={}));var DiffCompleteness;(function(DiffCompleteness2){DiffCompleteness2[DiffCompleteness2.UNSPECIFIED=0]="UNSPECIFIED",DiffCompleteness2[DiffCompleteness2.COMPLETE=1]="COMPLETE",DiffCompleteness2[DiffCompleteness2.PARTIAL_BLOCKED=2]="PARTIAL_BLOCKED",DiffCompleteness2[DiffCompleteness2.BINARY_SUMMARY_ONLY=3]="BINARY_SUMMARY_ONLY"})(DiffCompleteness||(DiffCompleteness={}));var SnapshotKind;(function(SnapshotKind2){SnapshotKind2[SnapshotKind2.UNSPECIFIED=0]="UNSPECIFIED",SnapshotKind2[SnapshotKind2.GIT_TREE_REF=1]="GIT_TREE_REF",SnapshotKind2[SnapshotKind2.CAS_MANIFEST=2]="CAS_MANIFEST",SnapshotKind2[SnapshotKind2.HYBRID=3]="HYBRID"})(SnapshotKind||(SnapshotKind={}));var FileDecisionScope;(function(FileDecisionScope2){FileDecisionScope2[FileDecisionScope2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionScope2[FileDecisionScope2.CHANGE_SET=1]="CHANGE_SET",FileDecisionScope2[FileDecisionScope2.FILE=2]="FILE"})(FileDecisionScope||(FileDecisionScope={}));var FileDecisionScopeSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,25),FileDecisionAction;(function(FileDecisionAction2){FileDecisionAction2[FileDecisionAction2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionAction2[FileDecisionAction2.APPROVE=1]="APPROVE",FileDecisionAction2[FileDecisionAction2.REJECT=2]="REJECT"})(FileDecisionAction||(FileDecisionAction={}));var FileDecisionActionSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,26),FileDecisionOrigin;(function(FileDecisionOrigin2){FileDecisionOrigin2[FileDecisionOrigin2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionOrigin2[FileDecisionOrigin2.USER=1]="USER",FileDecisionOrigin2[FileDecisionOrigin2.POLICY_APPROVED_COMMAND=2]="POLICY_APPROVED_COMMAND"})(FileDecisionOrigin||(FileDecisionOrigin={}));var FileReviewEventType;(function(FileReviewEventType2){FileReviewEventType2[FileReviewEventType2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewEventType2[FileReviewEventType2.BASELINE_CAPTURED=1]="BASELINE_CAPTURED",FileReviewEventType2[FileReviewEventType2.CANDIDATE_CAPTURED=2]="CANDIDATE_CAPTURED",FileReviewEventType2[FileReviewEventType2.FILE_DECIDED=3]="FILE_DECIDED",FileReviewEventType2[FileReviewEventType2.RECONCILED=4]="RECONCILED",FileReviewEventType2[FileReviewEventType2.FAILED=5]="FAILED"})(FileReviewEventType||(FileReviewEventType={}));var FileReviewEventTypeSchema=enumDesc(file_ai_stigmer_agentic_agentexecution_v1_enum,28),FileReviewFailureKind;(function(FileReviewFailureKind2){FileReviewFailureKind2[FileReviewFailureKind2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewFailureKind2[FileReviewFailureKind2.CAPTURE_FAILED=1]="CAPTURE_FAILED",FileReviewFailureKind2[FileReviewFailureKind2.DIFF_UNREVIEWABLE=2]="DIFF_UNREVIEWABLE",FileReviewFailureKind2[FileReviewFailureKind2.RECONCILE_FAILED=3]="RECONCILE_FAILED",FileReviewFailureKind2[FileReviewFailureKind2.HASH_MISMATCH=4]="HASH_MISMATCH"})(FileReviewFailureKind||(FileReviewFailureKind={}));var FileReviewBlockReason;(function(FileReviewBlockReason2){FileReviewBlockReason2[FileReviewBlockReason2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewBlockReason2[FileReviewBlockReason2.SECRET_WITHHELD=1]="SECRET_WITHHELD",FileReviewBlockReason2[FileReviewBlockReason2.SIZE_ELIDED=2]="SIZE_ELIDED",FileReviewBlockReason2[FileReviewBlockReason2.UNREVIEWABLE=3]="UNREVIEWABLE"})(FileReviewBlockReason||(FileReviewBlockReason={}));var file_ai_stigmer_agentic_session_v1_enum=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9lbnVtLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MSpZChBHaXRXcml0ZUJhY2tNb2RlEiMKH0dJVF9XUklURV9CQUNLX01PREVfVU5TUEVDSUZJRUQQABIgChxHSVRfV1JJVEVfQkFDS19CUkFOQ0hfQU5EX1BSEAEqSgoHSGFybmVzcxIXChNIQVJORVNTX1VOU1BFQ0lGSUVEEAASEgoOSEFSTkVTU19OQVRJVkUQARISCg5IQVJORVNTX0NVUlNPUhACKmsKD0V4ZWN1dGlvblRhcmdldBIgChxFWEVDVVRJT05fVEFSR0VUX1VOU1BFQ0lGSUVEEAASGgoWRVhFQ1VUSU9OX1RBUkdFVF9MT0NBTBABEhoKFkVYRUNVVElPTl9UQVJHRVRfQ0xPVUQQAipXCgpDdXJzb3JNb2RlEhsKF0NVUlNPUl9NT0RFX1VOU1BFQ0lGSUVEEAASFQoRQ1VSU09SX01PREVfTE9DQUwQARIVChFDVVJTT1JfTU9ERV9DTE9VRBACYgZwcm90bzM"),GitWriteBackMode;(function(GitWriteBackMode2){GitWriteBackMode2[GitWriteBackMode2.GIT_WRITE_BACK_MODE_UNSPECIFIED=0]="GIT_WRITE_BACK_MODE_UNSPECIFIED",GitWriteBackMode2[GitWriteBackMode2.GIT_WRITE_BACK_BRANCH_AND_PR=1]="GIT_WRITE_BACK_BRANCH_AND_PR"})(GitWriteBackMode||(GitWriteBackMode={}));var Harness;(function(Harness2){Harness2[Harness2.UNSPECIFIED=0]="UNSPECIFIED",Harness2[Harness2.NATIVE=1]="NATIVE",Harness2[Harness2.CURSOR=2]="CURSOR"})(Harness||(Harness={}));var ExecutionTarget;(function(ExecutionTarget2){ExecutionTarget2[ExecutionTarget2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionTarget2[ExecutionTarget2.LOCAL=1]="LOCAL",ExecutionTarget2[ExecutionTarget2.CLOUD=2]="CLOUD"})(ExecutionTarget||(ExecutionTarget={}));var CursorMode;(function(CursorMode2){CursorMode2[CursorMode2.UNSPECIFIED=0]="UNSPECIFIED",CursorMode2[CursorMode2.LOCAL=1]="LOCAL",CursorMode2[CursorMode2.CLOUD=2]="CLOUD"})(CursorMode||(CursorMode={}));var file_ai_stigmer_agentic_session_v1_workspace=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS93b3Jrc3BhY2UucHJvdG8SHWFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxIqoBCg9Xb3Jrc3BhY2VTb3VyY2USQAoIZ2l0X3JlcG8YASABKAsyLC5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5HaXRSZXBvU291cmNlSAASRAoKbG9jYWxfcGF0aBgCIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkxvY2FsUGF0aFNvdXJjZUgAQg8KBnNvdXJjZRIFukgCCAEibwoOV29ya3NwYWNlRW50cnkSFQoEbmFtZRgBIAEoCUIHukgEcgIQARJGCgZzb3VyY2UYAiABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5Xb3Jrc3BhY2VTb3VyY2VCBrpIA8gBASIoCg9Mb2NhbFBhdGhTb3VyY2USFQoEcGF0aBgBIAEoCUIHukgEcgIQASLIAgoNR2l0UmVwb1NvdXJjZRKlAQoDdXJsGAEgASgJQpcBukiTAboBjAEKGWdpdF9yZXBvX3NvdXJjZS51cmwuaHR0cHMSUnVybCBtdXN0IHVzZSBIVFRQUyAoZS5nLiBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG8pLiBTU0ggVVJMcyBhcmUgbm90IHN1cHBvcnRlZC4aG3RoaXMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKcgBARIOCgZicmFuY2gYAiABKAkSDgoGY29tbWl0GAMgASgJEhsKBWRlcHRoGAQgASgFQge6SAQaAigASACIAQESSAoPd3JpdGVfYmFja19tb2RlGAUgASgOMi8uYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuR2l0V3JpdGVCYWNrTW9kZUIICgZfZGVwdGhiBnByb3RvMw",[file_ai_stigmer_agentic_session_v1_enum,file_buf_validate_validate]);var file_ai_stigmer_agentic_agentexecution_v1_invocation=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvaW52b2NhdGlvbi5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIvAECg9BZ2VudEludm9jYXRpb24SrAEKCWFnZW50X3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUJjukhcugFWCg5hZ2VudF9yZWYua2luZBIzYWdlbnRfcmVmIG11c3QgcmVmZXJlbmNlIGEgcmVzb3VyY2Ugd2l0aCBraW5kPWFnZW50Gg90aGlzLmtpbmQgPT0gNDDIAQHghSwoEhsKB21lc3NhZ2UYAiABKAlCCrpIB3IFEAEYgEASNwoHaGFybmVzcxgDIAEoDjImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkhhcm5lc3MSSAoRd29ya3NwYWNlX2VudHJpZXMYBCADKAsyLS5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5Xb3Jrc3BhY2VFbnRyeRLIAQoQZW52aXJvbm1lbnRfcmVmcxgFIAMoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUJ4ukhxkgFuImy6AWkKFWVudmlyb25tZW50X3JlZnMua2luZBI/ZW52aXJvbm1lbnRfcmVmcyBtdXN0IHJlZmVyZW5jZSByZXNvdXJjZXMgd2l0aCBraW5kPWVudmlyb25tZW50Gg90aGlzLmtpbmQgPT0gNTPghSw1EkMKCnJ1bl9jb25maWcYBiABKAsyLy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUnVuQ29uZmlnIo8CCglSdW5Db25maWcSEgoKbW9kZWxfbmFtZRgBIAEoCRIkCgxtYXhfY29zdF91c2QYAiABKAFCDrpICxIJKQAAAAAAAAAAEiAKD21heF90b29sX3JvdW5kcxgDIAEoBUIHukgEGgIoABJRCgxzZXJ2aWNlX3RpZXIYBCABKA4yMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU2VydmljZVRpZXJCCLpIBYIBAhABElMKDXRoaW5raW5nX21vZGUYBSABKA4yMi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVGhpbmtpbmdNb2RlQgi6SAWCAQIQAWIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_session_v1_enum,file_ai_stigmer_agentic_session_v1_workspace,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]);var file_ai_stigmer_agentic_schedule_v1_spec=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvc2NoZWR1bGUvdjEvc3BlYy5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLnNjaGVkdWxlLnYxIqsBCgxTY2hlZHVsZVNwZWMSFQoEY3JvbhgBIAEoCUIHukgEcgIQARIaCgl0aW1lX3pvbmUYAiABKAlCB7pIBHICEAESDwoHZW5hYmxlZBgDIAEoCBJGCgVhZ2VudBgEIAEoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEludm9jYXRpb25IAEIPCgZ0YXJnZXQSBbpIAggBYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_invocation,file_buf_validate_validate]);var file_ai_stigmer_agentic_schedule_v1_status=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvc2NoZWR1bGUvdjEvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMuc2NoZWR1bGUudjEihQIKDlNjaGVkdWxlU3RhdHVzEjAKDG5leHRfZmlyZV9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMbGFzdF9maXJlX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFsYXN0X2V4ZWN1dGlvbl9pZBgDIAEoCRIcChRjb25zZWN1dGl2ZV9mYWlsdXJlcxgEIAEoBRIVCg1wYXVzZWRfcmVhc29uGAUgASgJEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_status,file_google_protobuf_timestamp]),ScheduleStatusSchema=messageDesc2(file_ai_stigmer_agentic_schedule_v1_status,0);var file_ai_stigmer_agentic_schedule_v1_api=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2NoZWR1bGUvdjEvYXBpLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMuc2NoZWR1bGUudjEipwIKCFNjaGVkdWxlEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh0KBGtpbmQYAiABKAlCD7pIDHIKCghTY2hlZHVsZRJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESOgoEc3BlYxgEIAEoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy5zY2hlZHVsZS52MS5TY2hlZHVsZVNwZWMSPgoGc3RhdHVzGAUgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLnNjaGVkdWxlLnYxLlNjaGVkdWxlU3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_schedule_v1_spec,file_ai_stigmer_agentic_schedule_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),ScheduleSchema=messageDesc2(file_ai_stigmer_agentic_schedule_v1_api,0);var file_ai_stigmer_agentic_skill_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxIp0BCglTa2lsbFNwZWMSGQoIc2tpbGxfbWQYASABKAlCB7pIBHICEAESKAoDdGFnGAIgASgJQhu6SBhyFjIUXiR8XlthLXpBLVowLTkuXy1dKyQSMAoEbmFtZRgDIAEoCUIiukgfch0yG15bYS16MC05XSsoWy4tXVthLXowLTldKykqJBITCgtkZXNjcmlwdGlvbhgFIAEoCUoECAQQBWIGcHJvdG8z",[file_buf_validate_validate]),SkillSpecSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_spec,0);var file_ai_stigmer_agentic_skill_v1_status=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvc3RhdHVzLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEilQIKC1NraWxsU3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSKwoMdmVyc2lvbl9oYXNoGAEgASgJQhW6SBJyEDIOXlthLWYwLTldezY0fSQSHAoUYXJ0aWZhY3Rfc3RvcmFnZV9rZXkYAiABKAkSNgoFc3RhdGUYAyABKA4yJy5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGxTdGF0ZRJCCg5naXRfcHJvdmVuYW5jZRgEIAEoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HaXRQcm92ZW5hbmNlImIKDUdpdFByb3ZlbmFuY2USGwoKcmVtb3RlX3VybBgBIAEoCUIHukgEcgIQARILCgNyZWYYAiABKAkSFwoGY29tbWl0GAMgASgJQge6SARyAhABEg4KBnN1YmRpchgEIAEoCSpzCgpTa2lsbFN0YXRlEhsKF1NLSUxMX1NUQVRFX1VOU1BFQ0lGSUVEEAASGQoVU0tJTExfU1RBVEVfVVBMT0FESU5HEAESFQoRU0tJTExfU1RBVEVfUkVBRFkQAhIWChJTS0lMTF9TVEFURV9GQUlMRUQQA2IGcHJvdG8z",[file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate]),SkillStatusSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_status,0);var SkillState;(function(SkillState2){SkillState2[SkillState2.UNSPECIFIED=0]="UNSPECIFIED",SkillState2[SkillState2.UPLOADING=1]="UPLOADING",SkillState2[SkillState2.READY=2]="READY",SkillState2[SkillState2.FAILED=3]="FAILED"})(SkillState||(SkillState={}));var file_ai_stigmer_agentic_skill_v1_api=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvYXBpLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEilQIKBVNraWxsEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEhoKBGtpbmQYAiABKAlCDLpICXIHCgVTa2lsbBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESNAoEc3BlYxgEIAEoCzImLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbFNwZWMSOAoGc3RhdHVzGAUgASgLMiguYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsU3RhdHVzImEKCVNraWxsTGlzdBITCgthcGlfdmVyc2lvbhgBIAEoCRIMCgRraW5kGAIgASgJEjEKBWl0ZW1zGAMgAygLMiIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsYgZwcm90bzM",[file_ai_stigmer_agentic_skill_v1_spec,file_ai_stigmer_agentic_skill_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),SkillSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_api,0);var file_ai_stigmer_agentic_workflow_v1_enum=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvZW51bS5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxKt4CChBXb3JrZmxvd1Rhc2tLaW5kEiIKHndvcmtmbG93X3Rhc2tfa2luZF91bnNwZWNpZmllZBAAEgwKCHNldF92YXJzEAESDQoJaHR0cF9jYWxsEAISDQoJZ3JwY19jYWxsEAMSEQoNYWN0aXZpdHlfY2FsbBAEEg8KC3N3aXRjaF9jYXNlEAUSDAoIZm9yX2VhY2gQBhIICgRmb3JrEAcSDQoJdHJ5X2NhdGNoEAgSCgoGbGlzdGVuEAkSCAoEd2FpdBAKEg8KC3JhaXNlX2Vycm9yEAsSEAoMcnVuX3dvcmtmbG93EAwSDgoKYWdlbnRfY2FsbBANEgwKCGxsbV9jYWxsEA4SDQoJdHJhbnNmb3JtEA8SDwoLaHVtYW5faW5wdXQQEBIMCgh2YWxpZGF0ZRAREg4KCmVtaXRfZXZlbnQQEhIQCgxub3RpZmljYXRpb24QExIICgRldmFsEBQqmQEKFEJ1ZGdldEV4Y2VlZGVkUG9saWN5EiYKImJ1ZGdldF9leGNlZWRlZF9wb2xpY3lfdW5zcGVjaWZpZWQQABIdChlidWRnZXRfZXhjZWVkZWRfdGVybWluYXRlEAESIAocYnVkZ2V0X2V4Y2VlZGVkX2h1bWFuX3JldmlldxACEhgKFGJ1ZGdldF9leGNlZWRlZF93YXJuEANiBnByb3RvMw"),WorkflowTaskKind;(function(WorkflowTaskKind2){WorkflowTaskKind2[WorkflowTaskKind2.workflow_task_kind_unspecified=0]="workflow_task_kind_unspecified",WorkflowTaskKind2[WorkflowTaskKind2.set_vars=1]="set_vars",WorkflowTaskKind2[WorkflowTaskKind2.http_call=2]="http_call",WorkflowTaskKind2[WorkflowTaskKind2.grpc_call=3]="grpc_call",WorkflowTaskKind2[WorkflowTaskKind2.activity_call=4]="activity_call",WorkflowTaskKind2[WorkflowTaskKind2.switch_case=5]="switch_case",WorkflowTaskKind2[WorkflowTaskKind2.for_each=6]="for_each",WorkflowTaskKind2[WorkflowTaskKind2.fork=7]="fork",WorkflowTaskKind2[WorkflowTaskKind2.try_catch=8]="try_catch",WorkflowTaskKind2[WorkflowTaskKind2.listen=9]="listen",WorkflowTaskKind2[WorkflowTaskKind2.wait=10]="wait",WorkflowTaskKind2[WorkflowTaskKind2.raise_error=11]="raise_error",WorkflowTaskKind2[WorkflowTaskKind2.run_workflow=12]="run_workflow",WorkflowTaskKind2[WorkflowTaskKind2.agent_call=13]="agent_call",WorkflowTaskKind2[WorkflowTaskKind2.llm_call=14]="llm_call",WorkflowTaskKind2[WorkflowTaskKind2.transform=15]="transform",WorkflowTaskKind2[WorkflowTaskKind2.human_input=16]="human_input",WorkflowTaskKind2[WorkflowTaskKind2.validate=17]="validate",WorkflowTaskKind2[WorkflowTaskKind2.emit_event=18]="emit_event",WorkflowTaskKind2[WorkflowTaskKind2.notification=19]="notification",WorkflowTaskKind2[WorkflowTaskKind2.eval=20]="eval"})(WorkflowTaskKind||(WorkflowTaskKind={}));var WorkflowTaskKindSchema=enumDesc(file_ai_stigmer_agentic_workflow_v1_enum,0),BudgetExceededPolicy;(function(BudgetExceededPolicy2){BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_policy_unspecified=0]="budget_exceeded_policy_unspecified",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_terminate=1]="budget_exceeded_terminate",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_human_review=2]="budget_exceeded_human_review",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_warn=3]="budget_exceeded_warn"})(BudgetExceededPolicy||(BudgetExceededPolicy={}));var file_ai_stigmer_agentic_workflow_v1_spec=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc3BlYy5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxIpwDCgxXb3JrZmxvd1NwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSSgoIZG9jdW1lbnQYAiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dEb2N1bWVudEIGukgDyAEBEkUKBXRhc2tzGAMgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESQgoDZW52GAQgAygLMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93U3BlYy5FbnZFbnRyeRI+CgZidWRnZXQYBSABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dCdWRnZXQaYAoIRW52RW50cnkSCwoDa2V5GAEgASgJEkMKBXZhbHVlGAIgASgLMjQuYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudlZhckRlY2xhcmF0aW9uOgI4ASKsAQoOV29ya2Zsb3dCdWRnZXQSFwoPbWF4X2Nvc3RfbWljcm9zGAEgASgDEhgKEG1heF90b3RhbF90b2tlbnMYAiABKAMSHAoUbWF4X2R1cmF0aW9uX3NlY29uZHMYAyABKAUSSQoLb25fZXhjZWVkZWQYBCABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuQnVkZ2V0RXhjZWVkZWRQb2xpY3kikAEKEFdvcmtmbG93RG9jdW1lbnQSHQoDZHNsGAEgASgJQhC6SA1yCzIJXjFcLjBcLjAkEhkKCW5hbWVzcGFjZRgCIAEoCUIGukgDyAEBEhQKBG5hbWUYAyABKAlCBrpIA8gBARIXCgd2ZXJzaW9uGAQgASgJQga6SAPIAQESEwoLZGVzY3JpcHRpb24YBSABKAki+gIKDFdvcmtmbG93VGFzaxIvCgRuYW1lGAEgASgJQiG6SB5yHBABMhheW2EtekEtWl9dW2EtekEtWjAtOV9dKiQSRgoEa2luZBgCIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kQga6SAPIAQESPAoLdGFza19jb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Qg66SAPIAQHqhSwEa2luZBI2CgZleHBvcnQYBCABKAsyJi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuRXhwb3J0EjkKBGZsb3cYBSABKAsyKy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuRmxvd0NvbnRyb2wSQAoKY29tcGVuc2F0ZRgGIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2siHQoGRXhwb3J0EhMKAmFzGAEgASgJQge6SARyAhABIhsKC0Zsb3dDb250cm9sEgwKBHRoZW4YASABKAliBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_agentic_workflow_v1_enum,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]);var file_ai_stigmer_agentic_workflow_v1_serverless_validation=fileDesc("CjphaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc2VydmVybGVzcy92YWxpZGF0aW9uLnByb3RvEilhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuc2VydmVybGVzcyLrAQocU2VydmVybGVzc1dvcmtmbG93VmFsaWRhdGlvbhJJCgVzdGF0ZRgBIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5zZXJ2ZXJsZXNzLlZhbGlkYXRpb25TdGF0ZRIMCgR5YW1sGAIgASgJEg4KBmVycm9ycxgDIAMoCRIQCgh3YXJuaW5ncxgEIAMoCRIwCgx2YWxpZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh4KFnZhbGlkYXRpb25fd29ya2Zsb3dfaWQYBiABKAkqZAoPVmFsaWRhdGlvblN0YXRlEiAKHFZBTElEQVRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABILCgdQRU5ESU5HEAESCQoFVkFMSUQQAhILCgdJTlZBTElEEAMSCgoGRkFJTEVEEARiBnByb3RvMw",[file_google_protobuf_timestamp]),ServerlessWorkflowValidationSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_serverless_validation,0),ValidationState2;(function(ValidationState3){ValidationState3[ValidationState3.VALIDATION_STATE_UNSPECIFIED=0]="VALIDATION_STATE_UNSPECIFIED",ValidationState3[ValidationState3.PENDING=1]="PENDING",ValidationState3[ValidationState3.VALID=2]="VALID",ValidationState3[ValidationState3.INVALID=3]="INVALID",ValidationState3[ValidationState3.FAILED=4]="FAILED"})(ValidationState2||(ValidationState2={}));var file_ai_stigmer_agentic_workflow_v1_status=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEi9QEKDldvcmtmbG93U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSGwoTZGVmYXVsdF9pbnN0YW5jZV9pZBgBIAEoCRJvCh5zZXJ2ZXJsZXNzX3dvcmtmbG93X3ZhbGlkYXRpb24YAiABKAsyRy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuc2VydmVybGVzcy5TZXJ2ZXJsZXNzV29ya2Zsb3dWYWxpZGF0aW9uEhQKDHZlcnNpb25faGFzaBgDIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_serverless_validation,file_ai_stigmer_commons_apiresource_status]),WorkflowStatusSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_status,0);var file_ai_stigmer_agentic_workflow_v1_api=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvYXBpLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEipwIKCFdvcmtmbG93EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh0KBGtpbmQYAiABKAlCD7pIDHIKCghXb3JrZmxvdxJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESOgoEc3BlYxgEIAEoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1NwZWMSPgoGc3RhdHVzGAUgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93U3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_agentic_workflow_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),WorkflowSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_api,0);var file_ai_stigmer_iam_identityaccount_v1_enum=fileDesc("CixhaS9zdGlnbWVyL2lhbS9pZGVudGl0eWFjY291bnQvdjEvZW51bS5wcm90bxIhYWkuc3RpZ21lci5pYW0uaWRlbnRpdHlhY2NvdW50LnYxKpIBCh9JZGVudGl0eUFjY291bnRQcm92aXNpb25pbmdNb2RlEjIKLmlkZW50aXR5X2FjY291bnRfcHJvdmlzaW9uaW5nX21vZGVfdW5zcGVjaWZpZWQQABIKCgZkaXJlY3QQARINCglmZWRlcmF0ZWQQAhILCgdtYWNoaW5lEAMSEwoPcGxhdGZvcm1fY2xpZW50EARiBnByb3RvMw"),IdentityAccountProvisioningMode;(function(IdentityAccountProvisioningMode2){IdentityAccountProvisioningMode2[IdentityAccountProvisioningMode2.identity_account_provisioning_mode_unspecified=0]="identity_account_provisioning_mode_unspecified",IdentityAccountProvisioningMode2[IdentityAccountProvisioningMode2.direct=1]="direct",IdentityAccountProvisioningMode2[IdentityAccountProvisioningMode2.federated=2]="federated",IdentityAccountProvisioningMode2[IdentityAccountProvisioningMode2.machine=3]="machine",IdentityAccountProvisioningMode2[IdentityAccountProvisioningMode2.platform_client=4]="platform_client"})(IdentityAccountProvisioningMode||(IdentityAccountProvisioningMode={}));var file_ai_stigmer_iam_identityaccount_v1_spec=fileDesc("CixhaS9zdGlnbWVyL2lhbS9pZGVudGl0eWFjY291bnQvdjEvc3BlYy5wcm90bxIhYWkuc3RpZ21lci5pYW0uaWRlbnRpdHlhY2NvdW50LnYxIpwDChNJZGVudGl0eUFjY291bnRTcGVjEhYKBmlkcF9pZBgBIAEoCUIGukgDyAEBEg0KBWVtYWlsGAIgASgJEhIKCmZpcnN0X25hbWUYAyABKAkSEQoJbGFzdF9uYW1lGAQgASgJEhMKC3BpY3R1cmVfdXJsGAUgASgJEhoKEmlzX21hY2hpbmVfYWNjb3VudBgGIAEoCBJdChFwcm92aXNpb25pbmdfbW9kZRgHIAEoDjJCLmFpLnN0aWdtZXIuaWFtLmlkZW50aXR5YWNjb3VudC52MS5JZGVudGl0eUFjY291bnRQcm92aXNpb25pbmdNb2RlElMKFWlkZW50aXR5X3Byb3ZpZGVyX3JlZhgIIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRJSCgtwcmVmZXJlbmNlcxgJIAEoCzI9LmFpLnN0aWdtZXIuaWFtLmlkZW50aXR5YWNjb3VudC52MS5JZGVudGl0eUFjY291bnRQcmVmZXJlbmNlcyL3AQoaSWRlbnRpdHlBY2NvdW50UHJlZmVyZW5jZXMSIgoQc3RhbmRpbmdfY29udGV4dBgBIAEoCUIIukgFcgMY0A8SMQoPZGVmYXVsdF9oYXJuZXNzGAIgASgJQhi6SBXYAQFyEFIGbmF0aXZlUgZjdXJzb3ISJQoUZGVmYXVsdF9uYXRpdmVfbW9kZWwYAyABKAlCB7pIBHICGGQSJQoUZGVmYXVsdF9jdXJzb3JfbW9kZWwYBCABKAlCB7pIBHICGGQSFgoObWVtb3J5X2VuYWJsZWQYBSABKAgSHAoUZGVmYXVsdF9hdXRvX2FwcHJvdmUYBiABKAhiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_iam_identityaccount_v1_enum,file_buf_validate_validate]),IdentityAccountSpecSchema=messageDesc2(file_ai_stigmer_iam_identityaccount_v1_spec,0);var file_ai_stigmer_iam_identityaccount_v1_api=fileDesc("CithaS9zdGlnbWVyL2lhbS9pZGVudGl0eWFjY291bnQvdjEvYXBpLnByb3RvEiFhaS5zdGlnbWVyLmlhbS5pZGVudGl0eWFjY291bnQudjEiuwIKD0lkZW50aXR5QWNjb3VudBItCgthcGlfdmVyc2lvbhgBIAEoCUIYukgVchMKEWlhbS5zdGlnbWVyLmFpL3YxEiQKBGtpbmQYAiABKAlCFrpIE3IRCg9JZGVudGl0eUFjY291bnQSRQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YRJECgRzcGVjGAQgASgLMjYuYWkuc3RpZ21lci5pYW0uaWRlbnRpdHlhY2NvdW50LnYxLklkZW50aXR5QWNjb3VudFNwZWMSRgoGc3RhdHVzGAUgASgLMjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_ai_stigmer_iam_identityaccount_v1_spec,file_buf_validate_validate]),IdentityAccountSchema=messageDesc2(file_ai_stigmer_iam_identityaccount_v1_api,0);var file_ai_stigmer_tenancy_organization_v1_enum=fileDesc("Ci1haS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL2VudW0ucHJvdG8SImFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEqWQoOTWFuYWdlbWVudE1vZGUSHwobbWFuYWdlbWVudF9tb2RlX3Vuc3BlY2lmaWVkEAASEAoMc2VsZl9tYW5hZ2VkEAESFAoQcGxhdGZvcm1fbWFuYWdlZBACYgZwcm90bzM"),ManagementMode;(function(ManagementMode2){ManagementMode2[ManagementMode2.management_mode_unspecified=0]="management_mode_unspecified",ManagementMode2[ManagementMode2.self_managed=1]="self_managed",ManagementMode2[ManagementMode2.platform_managed=2]="platform_managed"})(ManagementMode||(ManagementMode={}));var file_ai_stigmer_tenancy_organization_v1_spec=fileDesc("Ci1haS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL3NwZWMucHJvdG8SImFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEi7wIKEE9yZ2FuaXphdGlvblNwZWMSHQoLZGVzY3JpcHRpb24YASABKAlCCLpIBXIDGPQDEhoKCGxvZ29fdXJsGAIgASgJQgi6SAVyAxiAEBJLCg9tYW5hZ2VtZW50X21vZGUYAyABKA4yMi5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk1hbmFnZW1lbnRNb2RlElMKFWlkZW50aXR5X3Byb3ZpZGVyX3JlZhgEIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRIXCg9leHRlcm5hbF9vcmdfaWQYBSABKAkSEwoLaXNfcGVyc29uYWwYBiABKAgSUAoLcHJlZmVyZW5jZXMYByABKAsyOy5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvblByZWZlcmVuY2VzIlUKF09yZ2FuaXphdGlvblByZWZlcmVuY2VzEiIKEHN0YW5kaW5nX2NvbnRleHQYASABKAlCCLpIBXIDGNAPEhYKDm1lbW9yeV9lbmFibGVkGAIgASgIYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_tenancy_organization_v1_enum,file_buf_validate_validate]);var file_ai_stigmer_tenancy_organization_v1_api=fileDesc("CixhaS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL2FwaS5wcm90bxIiYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MSK/AgoMT3JnYW5pemF0aW9uEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVdGVuYW5jeS5zdGlnbWVyLmFpL3YxEiEKBGtpbmQYAiABKAlCE7pIEHIOCgxPcmdhbml6YXRpb24STQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YUIGukgDyAEBEkIKBHNwZWMYBCABKAsyNC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvblNwZWMSRgoGc3RhdHVzGAUgASgLMjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_ai_stigmer_tenancy_organization_v1_spec,file_buf_validate_validate]),OrganizationSchema=messageDesc2(file_ai_stigmer_tenancy_organization_v1_api,0);var Code;(function(Code2){Code2[Code2.Canceled=1]="Canceled",Code2[Code2.Unknown=2]="Unknown",Code2[Code2.InvalidArgument=3]="InvalidArgument",Code2[Code2.DeadlineExceeded=4]="DeadlineExceeded",Code2[Code2.NotFound=5]="NotFound",Code2[Code2.AlreadyExists=6]="AlreadyExists",Code2[Code2.PermissionDenied=7]="PermissionDenied",Code2[Code2.ResourceExhausted=8]="ResourceExhausted",Code2[Code2.FailedPrecondition=9]="FailedPrecondition",Code2[Code2.Aborted=10]="Aborted",Code2[Code2.OutOfRange=11]="OutOfRange",Code2[Code2.Unimplemented=12]="Unimplemented",Code2[Code2.Internal=13]="Internal",Code2[Code2.Unavailable=14]="Unavailable",Code2[Code2.DataLoss=15]="DataLoss",Code2[Code2.Unauthenticated=16]="Unauthenticated"})(Code||(Code={}));function codeToString(value){let name=Code[value];return typeof name!="string"?value.toString():name[0].toLowerCase()+name.substring(1).replace(/[A-Z]/g,c5=>"_"+c5.toLowerCase())}var stringToCode;function codeFromString(value){if(!stringToCode){stringToCode={};for(let value2 of Object.values(Code))typeof value2!="string"&&(stringToCode[codeToString(value2)]=value2)}return stringToCode[value]}var ConnectError=class _ConnectError extends Error{constructor(message6,code=Code.Unknown,metadata,outgoingDetails,cause){super(createMessage(message6,code)),this.name="ConnectError",Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=message6,this.code=code,this.metadata=new Headers(metadata??{}),this.details=outgoingDetails??[],this.cause=cause}static from(reason,code=Code.Unknown){return reason instanceof _ConnectError?reason:reason instanceof Error?reason.name=="AbortError"||reason.name=="TimeoutError"?new _ConnectError(reason.message,Code.Canceled):new _ConnectError(reason.message,code,void 0,void 0,reason):new _ConnectError(String(reason),code,void 0,void 0,reason)}static[Symbol.hasInstance](v){return v instanceof Error?Object.getPrototypeOf(v)===_ConnectError.prototype?!0:v.name==="ConnectError"&&"code"in v&&typeof v.code=="number"&&"metadata"in v&&"details"in v&&Array.isArray(v.details)&&"rawMessage"in v&&typeof v.rawMessage=="string"&&"cause"in v:!1}findDetails(typeOrRegistry){let registry=typeOrRegistry.kind==="message"?{getMessage:typeName=>typeName===typeOrRegistry.typeName?typeOrRegistry:void 0}:typeOrRegistry,details=[];for(let data of this.details){if("desc"in data){registry.getMessage(data.desc.typeName)&&details.push(create2(data.desc,data.value));continue}let desc=registry.getMessage(data.type);if(desc)try{details.push(fromBinary2(desc,data.value))}catch{}}return details}};function createMessage(message6,code){return message6.length?`[${codeToString(code)}] ${message6}`:`[${codeToString(code)}]`}function encodeBinaryHeader(value,desc){let bytes;return desc!==void 0?bytes=toBinary(desc,value):typeof value=="string"?bytes=new TextEncoder().encode(value):bytes=value instanceof Uint8Array?value:new Uint8Array(value),base64Encode(bytes,"std_raw")}function appendHeaders(...headers2){let h5=new Headers;for(let e6 of headers2)e6.forEach((value,key)=>{h5.append(key,value)});return h5}function makeAnyClient(service,createMethod){let client={};for(let desc of service.methods){let method=createMethod(desc);method!=null&&(client[desc.localName]=method)}return client}var compressedFlag=1;function compressionNegotiate(available,requested,accepted,headerNameAcceptEncoding){let request=null,response=null,error2;if(requested!==null&&requested!=="identity"){let found=available.find(c5=>c5.name===requested);if(found)request=found;else{let acceptable=available.map(c5=>c5.name).join(",");error2=new ConnectError(`unknown compression "${requested}": supported encodings are ${acceptable}`,Code.Unimplemented,{[headerNameAcceptEncoding]:acceptable})}}if(accepted===null||accepted==="")response=request;else{let acceptNames=accepted.split(",").map(n3=>n3.trim());for(let name of acceptNames){let found=available.find(c5=>c5.name===name);if(found){response=found;break}}}return{request,response,error:error2}}var maxReadMaxBytes=4294967295,maxWriteMaxBytes=maxReadMaxBytes,defaultCompressMinBytes=1024;function validateReadWriteMaxBytes(readMaxBytes,writeMaxBytes,compressMinBytes){if(writeMaxBytes??(writeMaxBytes=maxWriteMaxBytes),readMaxBytes??(readMaxBytes=maxReadMaxBytes),compressMinBytes??(compressMinBytes=defaultCompressMinBytes),writeMaxBytes<1||writeMaxBytes>maxWriteMaxBytes)throw new ConnectError(`writeMaxBytes ${writeMaxBytes} must be >= 1 and <= ${maxWriteMaxBytes}`,Code.Internal);if(readMaxBytes<1||readMaxBytes>maxReadMaxBytes)throw new ConnectError(`readMaxBytes ${readMaxBytes} must be >= 1 and <= ${maxReadMaxBytes}`,Code.Internal);return{readMaxBytes,writeMaxBytes,compressMinBytes}}function assertWriteMaxBytes(writeMaxBytes,bytesWritten){if(bytesWritten>writeMaxBytes)throw new ConnectError(`message size ${bytesWritten} is larger than configured writeMaxBytes ${writeMaxBytes}`,Code.ResourceExhausted)}function assertReadMaxBytes(readMaxBytes,bytesRead,totalSizeKnown=!1){if(bytesRead>readMaxBytes){let message6=`message size is larger than configured readMaxBytes ${readMaxBytes}`;throw totalSizeKnown&&(message6=`message size ${bytesRead} is larger than configured readMaxBytes ${readMaxBytes}`),new ConnectError(message6,Code.ResourceExhausted)}}function createEnvelopeDecoder(readMaxBytes){return new EnvelopeDecoderImpl(readMaxBytes)}var EnvelopeDecoderImpl=class{constructor(readMaxBytes){this.readMaxBytes=readMaxBytes,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((a5,b7)=>a5+b7.byteLength,0)}decode(chunk){this.buf.push(chunk);let envs=[];for(;;){let env2=this.pop();if(!env2)break;envs.push(env2)}return envs}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){let env2=this.env;return this.env=void 0,env2}}head(){if(!this.cons(this.header))return;let flags=this.headerView.getUint8(0),length=this.headerView.getUint32(1);return assertReadMaxBytes(this.readMaxBytes,length,!0),{flags,data:new Uint8Array(length)}}cons(target){let wantLength=target.byteLength;if(this.byteLength<wantLength)return!1;let offset=0;for(;offset<wantLength;){let chunk=this.buf.shift();chunk.byteLength>wantLength-offset?(target.set(chunk.subarray(0,wantLength-offset),offset),this.buf.unshift(chunk.subarray(wantLength-offset)),offset+=wantLength-offset):(target.set(chunk,offset),offset+=chunk.byteLength)}return!0}};async function envelopeCompress(envelope,compression,compressMinBytes){let{flags,data}=envelope;if((flags&compressedFlag)===compressedFlag)throw new ConnectError("invalid envelope, already compressed",Code.Internal);return compression&&data.byteLength>=compressMinBytes&&(data=await compression.compress(data),flags=flags|compressedFlag),{data,flags}}async function envelopeDecompress(envelope,compression,readMaxBytes){let{flags,data}=envelope;if((flags&compressedFlag)===compressedFlag){if(!compression)throw new ConnectError("received compressed envelope, but do not know how to decompress",Code.Internal);data=await compression.decompress(data,readMaxBytes),flags=flags^compressedFlag}return{data,flags}}function encodeEnvelope(flags,data){let bytes=new Uint8Array(data.length+5);bytes.set(data,5);let v=new DataView(bytes.buffer,bytes.byteOffset,bytes.byteLength);return v.setUint8(0,flags),v.setUint32(1,data.length),bytes}var __asyncValues=function(o3){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m3=o3[Symbol.asyncIterator],i6;return m3?m3.call(o3):(o3=typeof __values=="function"?__values(o3):o3[Symbol.iterator](),i6={},verb("next"),verb("throw"),verb("return"),i6[Symbol.asyncIterator]=function(){return this},i6);function verb(n3){i6[n3]=o3[n3]&&function(v){return new Promise(function(resolve,reject2){v=o3[n3](v),settle(resolve,reject2,v.done,v.value)})}}function settle(resolve,reject2,d5,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d5})},reject2)}},__await=function(v){return this instanceof __await?(this.v=v,this):new __await(v)},__asyncGenerator=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g5=generator.apply(thisArg,_arguments||[]),i6,q4=[];return i6=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i6[Symbol.asyncIterator]=function(){return this},i6;function awaitReturn(f5){return function(v){return Promise.resolve(v).then(f5,reject2)}}function verb(n3,f5){g5[n3]&&(i6[n3]=function(v){return new Promise(function(a5,b7){q4.push([n3,v,a5,b7])>1||resume2(n3,v)})},f5&&(i6[n3]=f5(i6[n3])))}function resume2(n3,v){try{step(g5[n3](v))}catch(e6){settle(q4[0][3],e6)}}function step(r5){r5.value instanceof __await?Promise.resolve(r5.value.v).then(fulfill,reject2):settle(q4[0][2],r5)}function fulfill(value){resume2("next",value)}function reject2(value){resume2("throw",value)}function settle(f5,v){f5(v),q4.shift(),q4.length&&resume2(q4[0][0],q4[0][1])}},__asyncDelegator=function(o3){var i6,p3;return i6={},verb("next"),verb("throw",function(e6){throw e6}),verb("return"),i6[Symbol.iterator]=function(){return this},i6;function verb(n3,f5){i6[n3]=o3[n3]?function(v){return(p3=!p3)?{value:__await(o3[n3](v)),done:!1}:f5?f5(v):v}:f5}};function pipeTo(source,...rest){let[transforms,sink,opt]=pickTransformsAndSink(rest),iterable=source,abortable;return opt?.propagateDownStreamError===!0&&(iterable=abortable=makeIterableAbortable(iterable)),iterable=pipe(iterable,...transforms,{propagateDownStreamError:!1}),sink(iterable).catch(reason=>abortable?abortable.abort(reason).then(()=>Promise.reject(reason)):Promise.reject(reason))}function pickTransformsAndSink(rest){let opt;typeof rest[rest.length-1]!="function"&&(opt=rest.pop());let sink=rest.pop();return[rest,sink,opt]}function sinkAllBytes(readMaxBytes,lengthHint){return async iterable=>await readAllBytes(iterable,readMaxBytes,lengthHint)}function pipe(source,...rest){return __asyncGenerator(this,arguments,function*(){var _a3;let[transforms,opt]=pickTransforms(rest),abortable,sourceIt=source[Symbol.asyncIterator](),iterable={[Symbol.asyncIterator](){return sourceIt}};opt?.propagateDownStreamError===!0&&(iterable=abortable=makeIterableAbortable(iterable));for(let t of transforms)iterable=t(iterable);let it=iterable[Symbol.asyncIterator]();try{for(;;){let r5=yield __await(it.next());if(r5.done===!0)break;if(!abortable){yield yield __await(r5.value);continue}try{yield yield __await(r5.value)}catch(e6){throw yield __await(abortable.abort(e6)),e6}}}finally{opt?.propagateDownStreamError===!0&&((_a3=sourceIt.return)===null||_a3===void 0||_a3.call(sourceIt).catch(()=>{}))}})}function pickTransforms(rest){let opt;return typeof rest[rest.length-1]!="function"&&(opt=rest.pop()),[rest,opt]}function transformCatchFinally(catchFinally){return function(iterable){return __asyncGenerator(this,arguments,function*(){let err2,it=iterable[Symbol.asyncIterator]();for(;;){let r5;try{r5=yield __await(it.next())}catch(e6){err2=e6;break}if(r5.done===!0)break;yield yield __await(r5.value)}let caught=yield __await(catchFinally(err2));caught!==void 0&&(yield yield __await(caught))})}}function transformPrepend(provide){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_3,_b2,_c5;let prepend=yield __await(provide());prepend!==void 0&&(yield yield __await(prepend));try{for(var _d=!0,iterable_3=__asyncValues(iterable),iterable_3_1;iterable_3_1=yield __await(iterable_3.next()),_a3=iterable_3_1.done,!_a3;_d=!0)_c5=iterable_3_1.value,_d=!1,yield yield __await(_c5)}catch(e_3_1){e_3={error:e_3_1}}finally{try{!_d&&!_a3&&(_b2=iterable_3.return)&&(yield __await(_b2.call(iterable_3)))}finally{if(e_3)throw e_3.error}}})}}function transformSerializeEnvelope(serialization,endStreamFlag2,endSerialization){return endStreamFlag2===void 0||endSerialization===void 0?function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_4,_b2,_c5;try{for(var _d=!0,iterable_4=__asyncValues(iterable),iterable_4_1;iterable_4_1=yield __await(iterable_4.next()),_a3=iterable_4_1.done,!_a3;_d=!0){_c5=iterable_4_1.value,_d=!1;let chunk=_c5,data=serialization.serialize(chunk);yield yield __await({flags:0,data})}}catch(e_4_1){e_4={error:e_4_1}}finally{try{!_d&&!_a3&&(_b2=iterable_4.return)&&(yield __await(_b2.call(iterable_4)))}finally{if(e_4)throw e_4.error}}})}:function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_5,_b2,_c5;try{for(var _d=!0,iterable_5=__asyncValues(iterable),iterable_5_1;iterable_5_1=yield __await(iterable_5.next()),_a3=iterable_5_1.done,!_a3;_d=!0){_c5=iterable_5_1.value,_d=!1;let chunk=_c5,data,flags=0;chunk.end?(flags=flags|endStreamFlag2,data=endSerialization.serialize(chunk.value)):data=serialization.serialize(chunk.value),yield yield __await({flags,data})}}catch(e_5_1){e_5={error:e_5_1}}finally{try{!_d&&!_a3&&(_b2=iterable_5.return)&&(yield __await(_b2.call(iterable_5)))}finally{if(e_5)throw e_5.error}}})}}function transformParseEnvelope(serialization,endStreamFlag2,endSerialization){return endSerialization&&endStreamFlag2!==void 0?function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_6,_b2,_c5;try{for(var _d=!0,iterable_6=__asyncValues(iterable),iterable_6_1;iterable_6_1=yield __await(iterable_6.next()),_a3=iterable_6_1.done,!_a3;_d=!0){_c5=iterable_6_1.value,_d=!1;let{flags,data}=_c5;(flags&endStreamFlag2)===endStreamFlag2?yield yield __await({value:endSerialization.parse(data),end:!0}):yield yield __await({value:serialization.parse(data),end:!1})}}catch(e_6_1){e_6={error:e_6_1}}finally{try{!_d&&!_a3&&(_b2=iterable_6.return)&&(yield __await(_b2.call(iterable_6)))}finally{if(e_6)throw e_6.error}}})}:function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_7,_b2,_c5;try{for(var _d=!0,iterable_7=__asyncValues(iterable),iterable_7_1;iterable_7_1=yield __await(iterable_7.next()),_a3=iterable_7_1.done,!_a3;_d=!0){_c5=iterable_7_1.value,_d=!1;let{flags,data}=_c5;if(endStreamFlag2!==void 0&&(flags&endStreamFlag2)===endStreamFlag2){if(endSerialization===null)throw new ConnectError("unexpected end flag",Code.InvalidArgument);continue}yield yield __await(serialization.parse(data))}}catch(e_7_1){e_7={error:e_7_1}}finally{try{!_d&&!_a3&&(_b2=iterable_7.return)&&(yield __await(_b2.call(iterable_7)))}finally{if(e_7)throw e_7.error}}})}}function transformCompressEnvelope(compression,compressMinBytes){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_8,_b2,_c5;try{for(var _d=!0,iterable_8=__asyncValues(iterable),iterable_8_1;iterable_8_1=yield __await(iterable_8.next()),_a3=iterable_8_1.done,!_a3;_d=!0)_c5=iterable_8_1.value,_d=!1,yield yield __await(yield __await(envelopeCompress(_c5,compression,compressMinBytes)))}catch(e_8_1){e_8={error:e_8_1}}finally{try{!_d&&!_a3&&(_b2=iterable_8.return)&&(yield __await(_b2.call(iterable_8)))}finally{if(e_8)throw e_8.error}}})}}function transformDecompressEnvelope(compression,readMaxBytes){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_9,_b2,_c5;try{for(var _d=!0,iterable_9=__asyncValues(iterable),iterable_9_1;iterable_9_1=yield __await(iterable_9.next()),_a3=iterable_9_1.done,!_a3;_d=!0)_c5=iterable_9_1.value,_d=!1,yield yield __await(yield __await(envelopeDecompress(_c5,compression,readMaxBytes)))}catch(e_9_1){e_9={error:e_9_1}}finally{try{!_d&&!_a3&&(_b2=iterable_9.return)&&(yield __await(_b2.call(iterable_9)))}finally{if(e_9)throw e_9.error}}})}}function transformJoinEnvelopes(){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_10,_b2,_c5;try{for(var _d=!0,iterable_10=__asyncValues(iterable),iterable_10_1;iterable_10_1=yield __await(iterable_10.next()),_a3=iterable_10_1.done,!_a3;_d=!0){_c5=iterable_10_1.value,_d=!1;let{flags,data}=_c5;yield yield __await(encodeEnvelope(flags,data))}}catch(e_10_1){e_10={error:e_10_1}}finally{try{!_d&&!_a3&&(_b2=iterable_10.return)&&(yield __await(_b2.call(iterable_10)))}finally{if(e_10)throw e_10.error}}})}}function transformSplitEnvelope(readMaxBytes){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a3,e_11,_b2,_c5;let buffer=createEnvelopeDecoder(readMaxBytes);try{for(var _d=!0,iterable_11=__asyncValues(iterable),iterable_11_1;iterable_11_1=yield __await(iterable_11.next()),_a3=iterable_11_1.done,!_a3;_d=!0){_c5=iterable_11_1.value,_d=!1;let chunk=_c5;for(let env2 of buffer.decode(chunk))yield yield __await(env2)}}catch(e_11_1){e_11={error:e_11_1}}finally{try{!_d&&!_a3&&(_b2=iterable_11.return)&&(yield __await(_b2.call(iterable_11)))}finally{if(e_11)throw e_11.error}}if(buffer.byteLength>0)throw new ConnectError("protocol error: incomplete envelope",Code.InvalidArgument)})}}async function readAllBytes(iterable,readMaxBytes,lengthHint){var _a3,e_12,_b2,_c5,_d,e_13,_e5,_f;let[ok,hint]=parseLengthHint(lengthHint);if(ok){hint>readMaxBytes&&assertReadMaxBytes(readMaxBytes,hint,!0);let buffer=new Uint8Array(hint),offset2=0;try{for(var _g=!0,iterable_12=__asyncValues(iterable),iterable_12_1;iterable_12_1=await iterable_12.next(),_a3=iterable_12_1.done,!_a3;_g=!0){_c5=iterable_12_1.value,_g=!1;let chunk=_c5;if(offset2+chunk.byteLength>hint)throw new ConnectError(`protocol error: promised ${hint} bytes, received ${offset2+chunk.byteLength}`,Code.InvalidArgument);buffer.set(chunk,offset2),offset2+=chunk.byteLength}}catch(e_12_1){e_12={error:e_12_1}}finally{try{!_g&&!_a3&&(_b2=iterable_12.return)&&await _b2.call(iterable_12)}finally{if(e_12)throw e_12.error}}if(offset2<hint)throw new ConnectError(`protocol error: promised ${hint} bytes, received ${offset2}`,Code.InvalidArgument);return buffer}let chunks=[],count=0;try{for(var _h4=!0,iterable_13=__asyncValues(iterable),iterable_13_1;iterable_13_1=await iterable_13.next(),_d=iterable_13_1.done,!_d;_h4=!0){_f=iterable_13_1.value,_h4=!1;let chunk=_f;count+=chunk.byteLength,assertReadMaxBytes(readMaxBytes,count),chunks.push(chunk)}}catch(e_13_1){e_13={error:e_13_1}}finally{try{!_h4&&!_d&&(_e5=iterable_13.return)&&await _e5.call(iterable_13)}finally{if(e_13)throw e_13.error}}let all=new Uint8Array(count),offset=0;for(let chunk=chunks.shift();chunk;chunk=chunks.shift())all.set(chunk,offset),offset+=chunk.byteLength;return all}function parseLengthHint(lengthHint){if(lengthHint==null)return[!1,0];let n3=typeof lengthHint=="string"?parseInt(lengthHint,10):lengthHint;return!Number.isSafeInteger(n3)||n3<0?[!1,n3]:[!0,n3]}async function untilFirst(iterable){let it=iterable[Symbol.asyncIterator](),first=await it.next();return{[Symbol.asyncIterator](){let w={async next(){if(first!==null){let n3=first;return first=null,n3}return await it.next()}};return it.throw!==void 0&&(w.throw=e6=>it.throw(e6)),it.return!==void 0&&(w.return=value=>it.return(value)),w}}}function makeIterableAbortable(iterable){let innerCandidate=iterable[Symbol.asyncIterator]();if(innerCandidate.throw===void 0)throw new Error("AsyncIterable does not implement throw");let inner=innerCandidate,aborted,resultPromise,it={next(){return resultPromise=inner.next().finally(()=>{resultPromise=void 0}),resultPromise},throw(e6){return inner.throw(e6)}};innerCandidate.return!==void 0&&(it=Object.assign(Object.assign({},it),{return(value){return inner.return(value)}}));let used=!1;return{abort(reason){if(aborted)return aborted.state;let f5=()=>inner.throw(reason).then(r5=>r5.done===!0?"completed":"caught",()=>"rethrown");return resultPromise?(aborted={reason,state:resultPromise.then(f5,f5)},aborted.state):(aborted={reason,state:f5()},aborted.state)},[Symbol.asyncIterator](){if(used)throw new Error("AsyncIterable cannot be re-used");return used=!0,it}}}function createAsyncIterable(items){return __asyncGenerator(this,arguments,function*(){yield __await(yield*__asyncDelegator(__asyncValues(items)))})}var __asyncValues2=function(o3){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m3=o3[Symbol.asyncIterator],i6;return m3?m3.call(o3):(o3=typeof __values=="function"?__values(o3):o3[Symbol.iterator](),i6={},verb("next"),verb("throw"),verb("return"),i6[Symbol.asyncIterator]=function(){return this},i6);function verb(n3){i6[n3]=o3[n3]&&function(v){return new Promise(function(resolve,reject2){v=o3[n3](v),settle(resolve,reject2,v.done,v.value)})}}function settle(resolve,reject2,d5,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d5})},reject2)}},__await2=function(v){return this instanceof __await2?(this.v=v,this):new __await2(v)},__asyncDelegator2=function(o3){var i6,p3;return i6={},verb("next"),verb("throw",function(e6){throw e6}),verb("return"),i6[Symbol.iterator]=function(){return this},i6;function verb(n3,f5){i6[n3]=o3[n3]?function(v){return(p3=!p3)?{value:__await2(o3[n3](v)),done:!1}:f5?f5(v):v}:f5}},__asyncGenerator2=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g5=generator.apply(thisArg,_arguments||[]),i6,q4=[];return i6=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i6[Symbol.asyncIterator]=function(){return this},i6;function awaitReturn(f5){return function(v){return Promise.resolve(v).then(f5,reject2)}}function verb(n3,f5){g5[n3]&&(i6[n3]=function(v){return new Promise(function(a5,b7){q4.push([n3,v,a5,b7])>1||resume2(n3,v)})},f5&&(i6[n3]=f5(i6[n3])))}function resume2(n3,v){try{step(g5[n3](v))}catch(e6){settle(q4[0][3],e6)}}function step(r5){r5.value instanceof __await2?Promise.resolve(r5.value.v).then(fulfill,reject2):settle(q4[0][2],r5)}function fulfill(value){resume2("next",value)}function reject2(value){resume2("throw",value)}function settle(f5,v){f5(v),q4.shift(),q4.length&&resume2(q4[0][0],q4[0][1])}};function createClient(service,transport){return makeAnyClient(service,method=>{switch(method.methodKind){case"unary":return createUnaryFn(transport,method);case"server_streaming":return createServerStreamingFn(transport,method);case"client_streaming":return createClientStreamingFn(transport,method);case"bidi_streaming":return createBiDiStreamingFn(transport,method);default:return null}})}function createUnaryFn(transport,method){return async(input,options)=>{var _a3,_b2;let response=await transport.unary(method,options?.signal,options?.timeoutMs,options?.headers,input,options?.contextValues);return(_a3=options?.onHeader)===null||_a3===void 0||_a3.call(options,response.header),(_b2=options?.onTrailer)===null||_b2===void 0||_b2.call(options,response.trailer),response.message}}function createServerStreamingFn(transport,method){return(input,options)=>handleStreamResponse(transport.stream(method,options?.signal,options?.timeoutMs,options?.headers,createAsyncIterable([input]),options?.contextValues),options)}function createClientStreamingFn(transport,method){return async(request,options)=>{var _a3,e_1,_b2,_c5,_d,_e5;let response=await transport.stream(method,options?.signal,options?.timeoutMs,options?.headers,request,options?.contextValues);(_d=options?.onHeader)===null||_d===void 0||_d.call(options,response.header);let singleMessage,count=0;try{for(var _f=!0,_g=__asyncValues2(response.message),_h4;_h4=await _g.next(),_a3=_h4.done,!_a3;_f=!0)_c5=_h4.value,_f=!1,singleMessage=_c5,count++}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_f&&!_a3&&(_b2=_g.return)&&await _b2.call(_g)}finally{if(e_1)throw e_1.error}}if(!singleMessage)throw new ConnectError("protocol error: missing response message",Code.Unimplemented);if(count>1)throw new ConnectError("protocol error: received extra messages for client streaming method",Code.Unimplemented);return(_e5=options?.onTrailer)===null||_e5===void 0||_e5.call(options,response.trailer),singleMessage}}function createBiDiStreamingFn(transport,method){return(request,options)=>handleStreamResponse(transport.stream(method,options?.signal,options?.timeoutMs,options?.headers,request,options?.contextValues),options)}function handleStreamResponse(stream,options){let it=(function(){return __asyncGenerator2(this,arguments,function*(){var _a3,_b2;let response=yield __await2(stream);(_a3=options?.onHeader)===null||_a3===void 0||_a3.call(options,response.header),yield __await2(yield*__asyncDelegator2(__asyncValues2(response.message))),(_b2=options?.onTrailer)===null||_b2===void 0||_b2.call(options,response.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>it.next()})}}function createLinkedAbortController(...signals){let controller=new AbortController,sa=signals.filter(s2=>s2!==void 0).concat(controller.signal);for(let signal3 of sa){if(signal3.aborted){onAbort.apply(signal3);break}signal3.addEventListener("abort",onAbort)}function onAbort(){controller.signal.aborted||controller.abort(getAbortSignalReason(this));for(let signal3 of sa)signal3.removeEventListener("abort",onAbort)}return controller}function createDeadlineSignal(timeoutMs){let controller=new AbortController,listener=()=>{controller.abort(new ConnectError("the operation timed out",Code.DeadlineExceeded))},timeoutId;return timeoutMs!==void 0&&(timeoutMs<=0?listener():timeoutId=setTimeout(listener,timeoutMs)),{signal:controller.signal,cleanup:()=>clearTimeout(timeoutId)}}function getAbortSignalReason(signal3){if(!signal3.aborted)return;if(signal3.reason!==void 0)return signal3.reason;let e6=new Error("This operation was aborted");return e6.name="AbortError",e6}function createContextValues(){return{get(key){return key.id in this?this[key.id]:key.defaultValue},set(key,value){return this[key.id]=value,this},delete(key){return delete this[key.id],this}}}function createContextKey(defaultValue,options){return{id:Symbol(options?.description),defaultValue}}function createHandlerContext(init){var _a3;let timeoutMs;if(init.timeoutMs!==void 0){let date2=new Date(Date.now()+init.timeoutMs);timeoutMs=()=>date2.getTime()-Date.now()}else timeoutMs=()=>{};let deadline=createDeadlineSignal(init.timeoutMs),abortController=createLinkedAbortController(deadline.signal,init.requestSignal,init.shutdownSignal);return Object.assign(Object.assign({},init),{signal:abortController.signal,timeoutMs,requestHeader:new Headers(init.requestHeader),responseHeader:new Headers(init.responseHeader),responseTrailer:new Headers(init.responseTrailer),abort(reason){deadline.cleanup(),abortController.abort(reason)},values:(_a3=init.contextValues)!==null&&_a3!==void 0?_a3:createContextValues()})}function createMethodImplSpec(method,impl){return{kind:method.methodKind,method,impl}}function createServiceImplSpec(service,impl){let s2={service,methods:{}};for(let method of service.methods){let fn=impl[method.localName];if(typeof fn=="function")fn=fn.bind(impl);else{let message6=`${service.typeName}.${method.name} is not implemented`;fn=function(){throw new ConnectError(message6,Code.Unimplemented)}}s2.methods[method.localName]=createMethodImplSpec(method,fn)}return s2}function trailerParse(data){let headers2=new Headers,lines=new TextDecoder().decode(data).split(`\r
|
|
473
473
|
`);for(let line of lines){if(line==="")continue;let i6=line.indexOf(":");if(i6>0){let name=line.substring(0,i6).trim(),value=line.substring(i6+1).trim();headers2.append(name,value)}}return headers2}function trailerSerialize(trailer){let lines=[];return trailer.forEach((value,key)=>{lines.push(`${key}: ${value}\r
|
|
@@ -485,7 +485,7 @@ caused by: ${_Layerr.fullStack(cause)}`:err2.stack??""}static info(err2){assertE
|
|
|
485
485
|
`);return}let root5=import_node_path10.default.resolve(basePath),filePath=import_node_path10.default.resolve(root5,key);if(filePath!==root5&&!filePath.startsWith(root5+import_node_path10.default.sep)){res.writeHead(404),res.end(`404 page not found
|
|
486
486
|
`);return}let info;try{info=await(0,import_promises5.stat)(filePath)}catch{res.writeHead(404),res.end(`404 page not found
|
|
487
487
|
`);return}if(!info.isFile()){res.writeHead(404),res.end(`404 page not found
|
|
488
|
-
`);return}let headers2={"Content-Length":String(info.size)},downloadName=url.searchParams.get(LOCAL_DOWNLOAD_QUERY_PARAM)??"";if(downloadName!==""&&(headers2["Content-Disposition"]=contentDispositionAttachment(downloadName)),res.writeHead(200,headers2),req.method==="HEAD"){res.end();return}let stream=(0,import_node_fs7.createReadStream)(filePath);stream.on("error",error2=>{logger2.error("artifact file stream failed",{key,error:error2.message}),res.destroy()}),stream.pipe(res)}catch(error2){logger2.error("artifact file server request failed",{error:error2 instanceof Error?error2.message:String(error2)}),res.headersSent||res.writeHead(500),res.end()}}async function warnOnLegacyArtifactLayout(basePath,logger2){for(let sub of["attachments","artifacts"]){let legacy=import_node_path10.default.join(basePath,"artifacts",sub);try{if((await(0,import_promises5.stat)(legacy)).isDirectory()){logger2.warn("Detected artifacts under a pre-#285 layout at <base>/artifacts/*. The artifact root is now <base> itself. Move <base>/artifacts/* up into <base> (or set ARTIFACT_LOCAL_BASE_PATH to the old <base>/artifacts) so existing artifacts remain reachable.",{legacyDir:import_node_path10.default.join(basePath,"artifacts"),artifactRoot:basePath});return}}catch{}}}var file_ai_stigmer_agentic_channelapp_v1_command=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvY2hhbm5lbGFwcC92MS9jb21tYW5kLnByb3RvEiBhaS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MTKOBQobQ2hhbm5lbEFwcENvbW1hbmRDb250cm9sbGVyEmMKBWFwcGx5EiwuYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEuQ2hhbm5lbEFwcBosLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAStQEKBmNyZWF0ZRIsLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAaLC5haS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MS5DaGFubmVsQXBwIk/CuBhLCB8QHiIMbWV0YWRhdGEub3JnKjd1bmF1dGhvcml6ZWQgdG8gY3JlYXRlIGNoYW5uZWwgYXBwIGluIHRoaXMgb3JnYW5pemF0aW9uEp8BCgZ1cGRhdGUSLC5haS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MS5DaGFubmVsQXBwGiwuYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEuQ2hhbm5lbEFwcCI5wrgYNQgCEDAiC21ldGFkYXRhLmlkKiJ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGNoYW5uZWwgYXBwEqkBCgZkZWxldGUSNi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VEZWxldGVJbnB1dBosLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAiOcK4GDUIAxAwIgtyZXNvdXJjZV9pZCoidW5hdXRob3JpemVkIHRvIGRlbGV0ZSBjaGFubmVsIGFwcBoEoP8rMGIGcHJvdG8z",[file_ai_stigmer_agentic_channelapp_v1_api,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ChannelAppCommandController=serviceDesc(file_ai_stigmer_agentic_channelapp_v1_command,0);var file_ai_stigmer_agentic_channelapp_v1_io=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvY2hhbm5lbGFwcC92MS9pby5wcm90bxIgYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEiTAoLQ2hhbm5lbEFwcHMSPQoHZW50cmllcxgBIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAiMQoZTGlzdENoYW5uZWxBcHBzQnlPcmdJbnB1dBIUCgNvcmcYASABKAlCB7pIBHICEAFiBnByb3RvMw",[file_ai_stigmer_agentic_channelapp_v1_api,file_buf_validate_validate]),ChannelAppsSchema=messageDesc2(file_ai_stigmer_agentic_channelapp_v1_io,0);var file_ai_stigmer_agentic_channelapp_v1_query=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvY2hhbm5lbGFwcC92MS9xdWVyeS5wcm90bxIgYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEy9gMKGUNoYW5uZWxBcHBRdWVyeUNvbnRyb2xsZXISlQEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiwuYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEuQ2hhbm5lbEFwcCIxwrgYLQgBEDAiBXZhbHVlKiB1bmF1dGhvcml6ZWQgdG8gdmlldyBjaGFubmVsIGFwcBJ6Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRosLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAiBNC4GAESvgEKCWxpc3RCeU9yZxI7LmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkxpc3RDaGFubmVsQXBwc0J5T3JnSW5wdXQaLS5haS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MS5DaGFubmVsQXBwcyJFwrgYQQgBEB4iA29yZyo2dW5hdXRob3JpemVkIHRvIGxpc3QgY2hhbm5lbCBhcHBzIGluIHRoaXMgb3JnYW5pemF0aW9uGgSg/yswYgZwcm90bzM",[file_ai_stigmer_agentic_channelapp_v1_api,file_ai_stigmer_agentic_channelapp_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ChannelAppQueryController=serviceDesc(file_ai_stigmer_agentic_channelapp_v1_query,0);async function destroySecretBackingState(secretService,logger2,fields2,storedValues){for(let storedValue of storedValues)if(storedValue!=="")try{await secretService.delete(storedValue)}catch(error2){logger2.error("secret backing-state destruction failed after persist \u2014 external state may be orphaned",{...fields2,error:error2 instanceof Error?error2.message:String(error2)})}}function newDestroySecretBackingStateStep(secretService,logger2,extractSecretValues){return{name:"DestroySecretBackingState",async execute(ctx){let deleted=ctx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)return;let metadata=deleted.metadata;await destroySecretBackingState(secretService,logger2,{kind:getKindName(ctx.apiResourceKind),resourceId:metadata?.id??""},extractSecretValues(deleted))}}}var REDACTED_MARKER2="***REDACTED***";function plaintextRequiredMessage(fieldName){return`${fieldName} must be plaintext \u2014 values carrying the 'enc:' encryption prefix are not accepted from clients`}function markerOnCreateMessage(fieldName){return`cannot use the redaction marker as ${fieldName} on create`}function noExistingSecretMessage(fieldName){return`cannot preserve ${fieldName}: no existing secret value found`}var PROVIDER_IMMUTABLE_MESSAGE="the provider of a channel app cannot be changed";function deleteBlockedByChannelMessage(org,slug,channelName){return`cannot delete ChannelApp '${org}/${slug}': referenced by agent channel '${channelName}'`}function redactChannelApp(app){let provider=app.spec?.providerConfig;switch(provider?.case){case"slack":redactSlack(provider.value);return;case"whatsapp":redactWhatsApp(provider.value);return;case void 0:return;default:{let exhaustive=provider;throw new Error(`unhandled provider arm: ${String(exhaustive)}`)}}}function redactSlack(slack){slack.clientSecret!==""&&(slack.clientSecret=REDACTED_MARKER2),slack.signingSecret!==""&&(slack.signingSecret=REDACTED_MARKER2)}function redactWhatsApp(whatsapp){whatsapp.appSecret!==""&&(whatsapp.appSecret=REDACTED_MARKER2),whatsapp.accessToken!==""&&(whatsapp.accessToken=REDACTED_MARKER2),whatsapp.verifyToken!==""&&(whatsapp.verifyToken=REDACTED_MARKER2)}function secretValuesOfChannelApp(app){let provider=app.spec?.providerConfig;switch(provider?.case){case"slack":return[provider.value.clientSecret,provider.value.signingSecret];case"whatsapp":return[provider.value.appSecret,provider.value.accessToken,provider.value.verifyToken];case void 0:return[];default:{let exhaustive=provider;throw new Error(`unhandled provider arm: ${String(exhaustive)}`)}}}function newEncryptChannelAppSecretsForCreateStep(secretService,logger2){return newEncryptChannelAppSecretsStep(secretService,logger2,!0)}function newEncryptChannelAppSecretsForUpdateStep(secretService,logger2){return newEncryptChannelAppSecretsStep(secretService,logger2,!1)}function newEncryptChannelAppSecretsStep(secretService,logger2,isCreate){async function resolveSecret(ctx,fieldName,requestValue,readExisting){if(requestValue==="")return requestValue;if(requestValue===REDACTED_MARKER2)return preserveExistingSecret2(ctx,fieldName,readExisting);if(isCiphertextShaped(requestValue))throw invalidArgumentError(plaintextRequiredMessage(fieldName));if(!secretService.isEnabled())return logger2.warn(`Encryption disabled: ${fieldName} will be stored in plaintext`),requestValue;try{return await secretService.encrypt(requestValue,EncryptionScope.forOrganization(ctx.newState.metadata?.org??""))}catch(error2){throw internalError(error2,`failed to encrypt ${fieldName}`)}}function preserveExistingSecret2(ctx,fieldName,readExisting){if(isCreate)throw invalidArgumentError(markerOnCreateMessage(fieldName));let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing resource not loaded"),`cannot preserve ${fieldName}: existing resource not loaded`);let existingSecret=readExisting(existing);if(existingSecret==="")throw invalidArgumentError(noExistingSecretMessage(fieldName));return existingSecret}return{name:"EncryptChannelAppSecrets",async execute(ctx){let provider=ctx.newState.spec?.providerConfig;switch(provider?.case){case"slack":{let slack=provider.value;slack.clientSecret=await resolveSecret(ctx,"client_secret",slack.clientSecret,existing=>existing.spec?.providerConfig.case==="slack"?existing.spec.providerConfig.value.clientSecret:""),slack.signingSecret=await resolveSecret(ctx,"signing_secret",slack.signingSecret,existing=>existing.spec?.providerConfig.case==="slack"?existing.spec.providerConfig.value.signingSecret:"");return}case"whatsapp":{let whatsapp=provider.value;whatsapp.appSecret=await resolveSecret(ctx,"app_secret",whatsapp.appSecret,existing=>existing.spec?.providerConfig.case==="whatsapp"?existing.spec.providerConfig.value.appSecret:""),whatsapp.accessToken=await resolveSecret(ctx,"access_token",whatsapp.accessToken,existing=>existing.spec?.providerConfig.case==="whatsapp"?existing.spec.providerConfig.value.accessToken:""),whatsapp.verifyToken=await resolveSecret(ctx,"verify_token",whatsapp.verifyToken,existing=>existing.spec?.providerConfig.case==="whatsapp"?existing.spec.providerConfig.value.verifyToken:"");return}case void 0:return;default:{let exhaustive=provider;throw new Error(`unhandled provider arm: ${String(exhaustive)}`)}}}}}function newValidateProviderImmutableStep(){return{name:"ValidateProviderImmutable",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing channel app not found in context"),"existing channel app not found in context");let existingCase=existing.spec?.providerConfig.case,inputCase=ctx.input.spec?.providerConfig.case;if(existingCase!==inputCase)throw invalidArgumentError(PROVIDER_IMMUTABLE_MESSAGE)}}}function newCheckNoReferencingChannelsStep(store,logger2){return{name:"CheckNoReferencingChannels",async execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing ChannelApp not loaded in delete pipeline"),"existing ChannelApp not loaded in delete pipeline");let org=existing.metadata?.org??"",slug=existing.metadata?.slug??"",rows;try{rows=await store.listResources(ApiResourceKind.agent_channel)}catch(error2){throw internalError(error2,"failed to list agent channels for referential integrity check")}for(let bytes of rows){let channel;try{channel=fromBinary2(AgentChannelSchema,bytes)}catch{logger2.warn("Failed to unmarshal agent channel during referential integrity check, skipping");continue}let ref=channel.spec?.appRef;if(ref===void 0||ref.slug==="")continue;if((ref.org!==""?ref.org:channel.metadata?.org??"")===org&&ref.slug===slug)throw failedPreconditionError(deleteBlockedByChannelMessage(org,slug,channel.metadata?.name??""))}}}}function registerChannelAppServices(router,deps){router.service(ChannelAppCommandController,{apply:(app,ctx)=>apply6(deps,app,ctx),create:(app,ctx)=>createChannelApp(deps,app,ctx),update:(app,ctx)=>update9(deps,app,ctx),delete:(input,ctx)=>deleteChannelApp(deps,input,ctx)}),router.service(ChannelAppQueryController,{get:(id,ctx)=>get12(deps,id,ctx),getByReference:(ref,ctx)=>getByReference6(deps,ref,ctx),listByOrg:(req,ctx)=>listByOrg(deps,req,ctx)})}function kindOf11(ctx){return ctx.values.get(apiResourceKindKey)}async function createChannelApp(deps,app,ctx){let reqCtx=new RequestContext(ChannelAppSchema,app,callerIdentityOf(ctx),kindOf11(ctx));return await newPipeline("channelapp-create",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newEncryptChannelAppSecretsForCreateStep(deps.secretService,deps.logger)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),redactChannelApp(reqCtx.newState),reqCtx.newState}async function update9(deps,app,ctx){let reqCtx=new RequestContext(ChannelAppSchema,app,callerIdentityOf(ctx),kindOf11(ctx));return await newPipeline("channelapp-update",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newValidateProviderImmutableStep()).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newEncryptChannelAppSecretsForUpdateStep(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).build().execute(reqCtx),redactChannelApp(reqCtx.newState),reqCtx.newState}async function apply6(deps,app,ctx){let reqCtx=new RequestContext(ChannelAppSchema,app,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-apply",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createChannelApp(deps,app,ctx):update9(deps,withResolvedApplyId(ChannelAppSchema,app,reqCtx),ctx)}async function deleteChannelApp(deps,input,ctx){let reqCtx=new RequestContext(ChannelAppCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf11(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("channelapp-delete",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,ChannelAppSchema)).addStep(newCheckNoReferencingChannelsStep(deps.store,deps.logger)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDestroySecretBackingStateStep(deps.secretService,deps.logger,secretValuesOfChannelApp)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted ChannelApp not found in context"),"deleted ChannelApp not found in context");let app=deleted;return redactChannelApp(app),app}async function get12(deps,id,ctx){let reqCtx=new RequestContext(ChannelAppQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-get",deps.logger).addStep(newAuthorizeStep(ChannelAppQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,ChannelAppSchema)).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactChannelApp(app),app}async function getByReference6(deps,ref,ctx){let reqCtx=new RequestContext(ChannelAppQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-get-by-reference",deps.logger).addStep(newAuthorizeStep(ChannelAppQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,ChannelAppSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(ChannelAppQueryController.method.get))).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactChannelApp(app),app}var LIST_RESULT_KEY4="listResult";async function listByOrg(deps,req,ctx){let reqCtx=new RequestContext(ChannelAppQueryController.method.listByOrg.input,req,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-list-by-org",deps.logger).addStep(newAuthorizeStep(ChannelAppQueryController.method.listByOrg,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListByOrgStep(deps.store,deps.logger)).build().execute(reqCtx);let result=reqCtx.get(LIST_RESULT_KEY4);if(result===void 0)throw internalError(new Error("ChannelApp list not found in context"),"ChannelApp list not found in context");return result}function newListByOrgStep(store,logger2){return{name:"ListByOrg",async execute(ctx){let org=ctx.input.org,rows;try{rows=await store.listResources(ApiResourceKind.channel_app)}catch(error2){throw internalError(error2,"failed to list ChannelApps")}let apps=[];for(let bytes of rows){let app;try{app=fromBinary2(ChannelAppSchema,bytes)}catch{logger2.warn("Failed to unmarshal ChannelApp, skipping");continue}(app.metadata?.org??"")===org&&(redactChannelApp(app),apps.push(app))}apps.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),ctx.set(LIST_RESULT_KEY4,create2(ChannelAppsSchema,{entries:apps}))}}}var file_ai_stigmer_agentic_environment_v1_command=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvY29tbWFuZC5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxMoMKChxFbnZpcm9ubWVudENvbW1hbmRDb250cm9sbGVyEmcKBWFwcGx5Ei4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50ErkBCgZjcmVhdGUSLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiT8K4GEsIDBAeIgxtZXRhZGF0YS5vcmcqN3VuYXV0aG9yaXplZCB0byBjcmVhdGUgZW52aXJvbm1lbnQgaW4gdGhpcyBvcmdhbml6YXRpb24SowEKBnVwZGF0ZRIuLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCI5wrgYNQgCEDUiC21ldGFkYXRhLmlkKiJ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50Er8BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCJEwrgYQAgCEDUiC3Jlc291cmNlX2lkKi11bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50IHZpc2liaWxpdHkSqwEKBmRlbGV0ZRI2LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZURlbGV0ZUlucHV0Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjnCuBg1CAIQNSILcmVzb3VyY2VfaWQqInVuYXV0aG9yaXplZCB0byBkZWxldGUgZW52aXJvbm1lbnQSzwEKD3VwZGF0ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5VcGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMSzwEKD3JlbW92ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5SZW1vdmVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHJlbW92ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentCommandController=serviceDesc(file_ai_stigmer_agentic_environment_v1_command,0);var file_ai_stigmer_agentic_environment_v1_query=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvcXVlcnkucHJvdG8SIWFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MTKMBQoaRW52aXJvbm1lbnRRdWVyeUNvbnRyb2xsZXISlgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjDCuBgsCAEQNSIFdmFsdWUqH3VuYXV0aG9yaXplZCB0byBnZXQgZW52aXJvbm1lbnQSfAoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiBNC4GAES0gEKDmdldFNlY3JldFZhbHVlEj4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50U2VjcmV0VmFsdWVJbnB1dBozLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFZhbHVlIkvCuBhHCBAQNSIOZW52aXJvbm1lbnRfaWQqMXVuYXV0aG9yaXplZCB0byByZWFkIHNlY3JldCB2YWx1ZXMgKGNyZWF0b3Itb25seSkSfAoEbGlzdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5MaXN0RW52aXJvbm1lbnRzUmVxdWVzdBoyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudExpc3QiBNC4GAEaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentQueryController=serviceDesc(file_ai_stigmer_agentic_environment_v1_query,0);function redactEnvironmentSecrets(env2){let data=env2?.spec?.data;if(data!==void 0)for(let value of Object.values(data))value.isSecret&&value.value!==""&&(value.value=REDACTED_MARKER)}function shareRestrictionReason(metadata){let labels=metadata?.labels??{};return labels[PERSONAL_LABEL_KEY]===PERSONAL_LABEL_VALUE?PERSONAL_SHARE_RESTRICTION:labels[MANAGED_LABEL_KEY]===MANAGED_LABEL_VALUE?MANAGED_SHARE_RESTRICTION:""}var environmentSearchExtractor={kind:ApiResourceKind.environment,schema:EnvironmentSchema,getSearchSummary(resource){return resource.spec?.description??""},toSearchResult(resource,score){let env2=resource;return buildSearchResult({kind:ApiResourceKind.environment,metadata:env2.metadata,summary:env2.spec?.description??"",score,createdAt:env2.status?.audit?.specAudit?.createdAt,updatedAt:env2.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let env2=resource,metadata=env2.metadata;if(metadata!==void 0)return{name:metadata.name,description:env2.spec?.description??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(env2.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};var SECRET_VALUE_KEY="secretValue",UPDATED_ENVIRONMENT_KEY="updatedEnvironment";function newPreserveRedactedSecretsStep(){return{name:"PreserveRedactedSecrets",execute(ctx){let data=ctx.newState.spec?.data;if(data===void 0||Object.keys(data).length===0)return;let existingData=ctx.get(EXISTING_RESOURCE_KEY)?.spec?.data??{};for(let[key,value]of Object.entries(data))if(value.isSecret){if(value.value===REDACTED_MARKER){let existingEntry=existingData[key];if(existingEntry!==void 0&&existingEntry.isSecret){data[key]=existingEntry;continue}throw invalidArgumentError(markerRejectionMessage(key))}if(isCiphertextShaped(value.value))throw invalidArgumentError(forgedCiphertextMessage(key))}}}}function newEncryptSecretValuesStep(secretService,logger2){return{name:"EncryptSecretValues",async execute(ctx){let env2=ctx.newState,data=env2.spec?.data;if(!(data===void 0||Object.keys(data).length===0)){if(!secretService.isEnabled()){hasNonEmptySecret(data)&&logger2.warn("Encryption disabled: environment secret values will be stored in plaintext",{environmentId:env2.metadata?.id??""});return}for(let[key,value]of Object.entries(data))if(!(!value.isSecret||value.value===""))try{value.value=await secretService.encrypt(value.value,EncryptionScope.forOrganization(env2.metadata?.org??""))}catch(error2){throw internalError(error2,`failed to encrypt secret value for variable '${key}'`)}}}}}function hasNonEmptySecret(data){return Object.values(data).some(v=>v.isSecret&&v.value!=="")}function newEnforcePersonalUniquenessStep(store){return{name:"EnforcePersonalEnvUniqueness",async execute(ctx){let metadata=ctx.newState.metadata;if(metadata===void 0||metadata.labels[PERSONAL_LABEL_KEY]!==PERSONAL_LABEL_VALUE)return;let existing;try{existing=await findResourceByLabelAndOrg(store,ctx.apiResourceKind,EnvironmentSchema,PERSONAL_LABEL_KEY,PERSONAL_LABEL_VALUE,metadata.org)}catch(error2){throw internalError(error2,"failed to check personal environment uniqueness")}if(existing!==void 0)throw new ConnectError(personalEnvironmentExistsMessage(existing.metadata?.id??""),Code.AlreadyExists)}}}function newLoadEnvironmentByIdStep(store){return{name:"LoadEnvironmentByID",async execute(ctx){let environmentId=ctx.input.environmentId;if(typeof environmentId!="string"||environmentId==="")throw invalidArgumentError("environment_id is required");let env2;try{env2=await store.getResource(ctx.apiResourceKind,environmentId,EnvironmentSchema)}catch{throw notFoundError("environment",environmentId)}ctx.set(TARGET_RESOURCE_KEY,env2)}}}function newExtractAndDecryptSingleKeyStep(secretService,logger2){return{name:"ExtractAndDecryptSingleKey",async execute(ctx){let key=ctx.input.key,env2=ctx.get(TARGET_RESOURCE_KEY);if(env2===void 0)throw internalError(new Error("targetResource missing or wrong type"),"environment not loaded in context");let envValue=env2.spec?.data[key];if(envValue===void 0)throw notFoundError("environment key",key);if(envValue.isSecret&&envValue.value!==""){let decrypted;try{decrypted=await secretService.decrypt(envValue.value)}catch(error2){throw logger2.error("Failed to decrypt secret value",{key,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to decrypt secret value")}ctx.set(SECRET_VALUE_KEY,create2(EnvironmentValueSchema,{value:decrypted,isSecret:!0,description:envValue.description}));return}ctx.set(SECRET_VALUE_KEY,envValue)}}}function newMergeVariablesAndPersistStep(store,secretService,logger2){return{name:"MergeVariablesAndPersist",async execute(ctx){let env2=ctx.get(TARGET_RESOURCE_KEY);if(env2===void 0)throw internalError(new Error("targetResource missing or wrong type"),"environment not loaded in context");env2.spec===void 0&&(env2.spec=create2(EnvironmentSpecSchema,{}));let incoming=ctx.input.variables;for(let[key,incomingValue]of Object.entries(incoming)){let value=incomingValue;if(value.isSecret&&value.value===REDACTED_MARKER){let existing=env2.spec.data[key];if(existing!==void 0&&existing.isSecret)continue;throw invalidArgumentError(markerRejectionMessage(key))}if(value.isSecret&&isCiphertextShaped(value.value))throw invalidArgumentError(forgedCiphertextMessage(key));if(value.isSecret&&value.value!=="")if(!secretService.isEnabled())logger2.warn("Encryption disabled: environment secret value will be stored in plaintext",{key});else{let encrypted;try{encrypted=await secretService.encrypt(value.value,EncryptionScope.forOrganization(env2.metadata?.org??""))}catch(error2){throw internalError(error2,`failed to encrypt secret value for variable '${key}'`)}value=create2(EnvironmentValueSchema,{value:encrypted,isSecret:!0,description:value.description})}env2.spec.data[key]=value}try{setAuditFieldsForUpdate(EnvironmentSchema,env2,"spec_audit",ctx.callerIdentity)}catch(error2){throw internalError(error2,"failed to set audit fields")}try{await store.saveResource(ctx.apiResourceKind,env2.metadata?.id??"",EnvironmentSchema,env2)}catch(error2){throw internalError(error2,"failed to persist environment after merging variables")}ctx.set(UPDATED_ENVIRONMENT_KEY,env2)}}}function newRemoveVariableKeysAndPersistStep(store,secretService,logger2){return{name:"RemoveVariableKeysAndPersist",async execute(ctx){let env2=ctx.get(TARGET_RESOURCE_KEY);if(env2===void 0)throw internalError(new Error("targetResource missing or wrong type"),"environment not loaded in context");let keys=ctx.input.keys,removedSecretValues=[];if(env2.spec?.data!==void 0)for(let key of keys){let removed=env2.spec.data[key];removed!==void 0&&removed.isSecret&&removedSecretValues.push(removed.value),delete env2.spec.data[key]}try{setAuditFieldsForUpdate(EnvironmentSchema,env2,"spec_audit",ctx.callerIdentity)}catch(error2){throw internalError(error2,"failed to set audit fields")}try{await store.saveResource(ctx.apiResourceKind,env2.metadata?.id??"",EnvironmentSchema,env2)}catch(error2){throw internalError(error2,"failed to persist environment after removing variables")}await destroySecretBackingState(secretService,logger2,{kind:"environment",resourceId:env2.metadata?.id??"",operation:"removeVariables"},removedSecretValues),ctx.set(UPDATED_ENVIRONMENT_KEY,env2)}}}function newDestroyDroppedEnvironmentSecretsStep(secretService,logger2){return{name:"DestroyDroppedEnvironmentSecrets",async execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY),oldData=existing?.spec?.data;if(oldData===void 0)return;let newData=ctx.newState.spec?.data??{},droppedSecretValues=Object.entries(oldData).filter(([key,value])=>value.isSecret&&newData[key]===void 0).map(([,value])=>value.value);await destroySecretBackingState(secretService,logger2,{kind:"environment",resourceId:existing?.metadata?.id??"",operation:"update"},droppedSecretValues)}}}function secretValuesOfEnvironment(env2){return Object.values(env2.spec?.data??{}).filter(value=>value.isSecret).map(value=>value.value)}function registerEnvironmentServices(router,deps){router.service(EnvironmentCommandController,{apply:(env2,ctx)=>apply7(deps,env2,ctx),create:(env2,ctx)=>createEnvironment(deps,env2,ctx),update:(env2,ctx)=>update10(deps,env2,ctx),updateVisibility:(input,ctx)=>updateVisibility3(deps,input,ctx),delete:(input,ctx)=>deleteEnvironment(deps,input,ctx),updateVariables:(req,ctx)=>updateVariables(deps,req,ctx),removeVariables:(req,ctx)=>removeVariables(deps,req,ctx)}),router.service(EnvironmentQueryController,{get:(id,ctx)=>get13(deps,id,ctx),getByReference:(ref,ctx)=>getByReference7(deps,ref,ctx),getSecretValue:(input,ctx)=>getSecretValue(deps,input,ctx),list:(req,ctx)=>list8(deps,req,ctx)})}function kindOf12(ctx){return ctx.values.get(apiResourceKindKey)}async function createEnvironment(deps,env2,ctx){let reqCtx=new RequestContext(EnvironmentSchema,env2,callerIdentityOf(ctx),kindOf12(ctx));return await newPipeline("environment-create",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newEnforcePersonalUniquenessStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPreserveRedactedSecretsStep()).addStep(newEncryptSecretValuesStep(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,environmentSearchExtractor,deps.logger)).build().execute(reqCtx),redactEnvironmentSecrets(reqCtx.newState),reqCtx.newState}async function update10(deps,env2,ctx){let reqCtx=new RequestContext(EnvironmentSchema,env2,callerIdentityOf(ctx),kindOf12(ctx));return await newPipeline("environment-update",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPreserveRedactedSecretsStep()).addStep(newEncryptSecretValuesStep(deps.secretService,deps.logger)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPersistStep(deps.store)).addStep(newDestroyDroppedEnvironmentSecretsStep(deps.secretService,deps.logger)).addStep(newIndexSearchStep(deps.store,environmentSearchExtractor,deps.logger)).build().execute(reqCtx),redactEnvironmentSecrets(reqCtx.newState),reqCtx.newState}async function apply7(deps,env2,ctx){let reqCtx=new RequestContext(EnvironmentSchema,env2,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-apply",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createEnvironment(deps,env2,ctx):update10(deps,withResolvedApplyId(EnvironmentSchema,env2,reqCtx),ctx)}async function deleteEnvironment(deps,input,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf12(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("environment-delete",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,EnvironmentSchema)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDestroySecretBackingStateStep(deps.secretService,deps.logger,secretValuesOfEnvironment)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted environment not found in context"),"deleted environment not found in context");let env2=deleted;return redactEnvironmentSecrets(env2),env2}var UPDATE_VISIBILITY_ENVIRONMENT_KEY="updateVisibilityEnvironment";async function updateVisibility3(deps,input,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.updateVisibility.input,input,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-update-visibility",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.updateVisibility,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentForVisibilityUpdateStep(deps.store)).addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_ENVIRONMENT_KEY)).addStep(newValidateVisibilityUpdateStep()).addStep(newValidateEnvironmentShareRestrictionStep()).addStep(newSetEnvironmentVisibilityStep()).addStep(newPersistEnvironmentForVisibilityUpdateStep(deps.store)).addStep(newUpdateVisibilityTuplesStep(deps.authorizationLifecycle,UPDATE_VISIBILITY_ENVIRONMENT_KEY)).addStep(newIndexEnvironmentAfterVisibilityUpdateStep(deps.store,deps.logger)).build().execute(reqCtx);let env2=reqCtx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY);return redactEnvironmentSecrets(env2),env2}function newLoadEnvironmentForVisibilityUpdateStep(store){return{name:"LoadEnvironmentForVisibilityUpdate",async execute(ctx){let input=ctx.input,env2;try{env2=await store.getResource(ctx.apiResourceKind,input.resourceId,EnvironmentSchema)}catch{throw notFoundError("environment",input.resourceId)}ctx.set(UPDATE_VISIBILITY_ENVIRONMENT_KEY,env2)}}}function newValidateEnvironmentShareRestrictionStep(){return{name:"ValidateEnvironmentShareRestriction",execute(ctx){if(ctx.input.visibility!==ApiResourceVisibility.visibility_org)return;let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY),reason=shareRestrictionReason(env2.metadata);if(reason!=="")throw failedPreconditionError(reason)}}}function newSetEnvironmentVisibilityStep(){return{name:"SetVisibility",execute(ctx){let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY);env2.metadata!==void 0&&(env2.metadata.visibility=ctx.input.visibility),setAuditFieldsForUpdate(EnvironmentSchema,env2,"status_audit",ctx.callerIdentity)}}}function newPersistEnvironmentForVisibilityUpdateStep(store){return{name:"PersistEnvironmentForVisibilityUpdate",async execute(ctx){let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY);try{await store.saveResource(ctx.apiResourceKind,env2.metadata?.id??"",EnvironmentSchema,env2)}catch(error2){throw internalError(error2,"failed to save environment")}}}}function newIndexEnvironmentAfterVisibilityUpdateStep(store,logger2){return{name:"IndexEnvironmentAfterVisibilityUpdate",async execute(ctx){let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY),entry=environmentSearchExtractor.getSearchIndexEntry(env2);if(entry===void 0){logger2.warn("IndexEnvironmentAfterVisibilityUpdate: extractor returned nil, skipping",{id:env2.metadata?.id??""});return}try{await store.upsertSearchIndex(ctx.apiResourceKind,env2.metadata?.id??"",entry)}catch(error2){logger2.warn("IndexEnvironmentAfterVisibilityUpdate: failed (best-effort)",{id:env2.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}}}}async function updateVariables(deps,req,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.updateVariables.input,req,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-update-variables",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.updateVariables,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentByIdStep(deps.store)).addStep(newMergeVariablesAndPersistStep(deps.store,deps.secretService,deps.logger)).build().execute(reqCtx);let updated=reqCtx.get(UPDATED_ENVIRONMENT_KEY);return redactEnvironmentSecrets(updated),updated}async function removeVariables(deps,req,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.removeVariables.input,req,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-remove-variables",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.removeVariables,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentByIdStep(deps.store)).addStep(newRemoveVariableKeysAndPersistStep(deps.store,deps.secretService,deps.logger)).build().execute(reqCtx);let updated=reqCtx.get(UPDATED_ENVIRONMENT_KEY);return redactEnvironmentSecrets(updated),updated}async function get13(deps,id,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-get",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,EnvironmentSchema)).build().execute(reqCtx);let env2=reqCtx.get(TARGET_RESOURCE_KEY);return redactEnvironmentSecrets(env2),env2}async function getByReference7(deps,ref,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-get-by-reference",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,EnvironmentSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(EnvironmentQueryController.method.get))).build().execute(reqCtx);let env2=reqCtx.get(TARGET_RESOURCE_KEY);return redactEnvironmentSecrets(env2),env2}async function getSecretValue(deps,input,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.getSecretValue.input,input,callerIdentityOf(ctx),kindOf12(ctx));return await newPipeline("environment-get-secret-value",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.getSecretValue,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentByIdStep(deps.store)).addStep(newExtractAndDecryptSingleKeyStep(deps.secretService,deps.logger)).build().execute(reqCtx),reqCtx.get(SECRET_VALUE_KEY)}var LIST_RESULT_KEY5="listResult";async function list8(deps,req,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.list.input,req,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-list",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.list,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListByOrgAndLabelsStep5(deps.store,deps.listReadScope)).build().execute(reqCtx);let result=reqCtx.get(LIST_RESULT_KEY5);if(result===void 0)throw internalError(new Error("environment list not found in context"),"environment list not found in context");return result}function newListByOrgAndLabelsStep5(store,listReadScope){return{name:"ListByOrgAndLabels",async execute(ctx){let{org,labels:filterLabels}=ctx.input,rows;try{rows=await store.listResources(ctx.apiResourceKind)}catch(error2){throw internalError(error2,"failed to list environments")}let decoded=[];for(let bytes of rows)try{decoded.push(fromBinary2(EnvironmentSchema,bytes))}catch{continue}let requested=decoded.filter(env2=>(env2.metadata?.org??"")===org&&matchesAllLabels(env2.metadata?.labels??{},filterLabels)),environments=await restrictListByReadScope(listReadScope,ctx.callerIdentity,ApiResourceKind.environment,requested,"");for(let env2 of environments)redactEnvironmentSecrets(env2);environments.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),ctx.set(LIST_RESULT_KEY5,create2(EnvironmentListSchema,{totalCount:environments.length,items:environments}))}}}var file_ai_stigmer_agentic_executioncontext_v1_command=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9jb21tYW5kLnByb3RvEiZhaS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MTLpAwohRXhlY3V0aW9uQ29udGV4dENvbW1hbmRDb250cm9sbGVyEnsKBWFwcGx5EjguYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEuRXhlY3V0aW9uQ29udGV4dBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQSggEKBmNyZWF0ZRI4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQaOC5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0IgTQuBgBErsBCgZkZWxldGUSNi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VEZWxldGVJbnB1dBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQiP8K4GDsIAhA2IgtyZXNvdXJjZV9pZCoodW5hdXRob3JpemVkIHRvIGRlbGV0ZSBleGVjdXRpb24gY29udGV4dBoEoP8rNmIGcHJvdG8z",[file_ai_stigmer_agentic_executioncontext_v1_api,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ExecutionContextCommandController=serviceDesc(file_ai_stigmer_agentic_executioncontext_v1_command,0);var file_ai_stigmer_agentic_executioncontext_v1_io=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9pby5wcm90bxImYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEiKwoSRXhlY3V0aW9uQ29udGV4dElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiQQogRXhlY3V0aW9uQ29udGV4dEV4ZWN1dGlvbklkSW5wdXQSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABYgZwcm90bzM",[file_buf_validate_validate]);var file_ai_stigmer_agentic_executioncontext_v1_query=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9xdWVyeS5wcm90bxImYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEyhQQKH0V4ZWN1dGlvbkNvbnRleHRRdWVyeUNvbnRyb2xsZXISswEKA2dldBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHRJZBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQiNsK4GDIIARA2IgV2YWx1ZSoldW5hdXRob3JpemVkIHRvIGdldCBleGVjdXRpb24gY29udGV4dBKGAQoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaOC5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0IgTQuBgBEpwBChBnZXRCeUV4ZWN1dGlvbklkEkguYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEuRXhlY3V0aW9uQ29udGV4dEV4ZWN1dGlvbklkSW5wdXQaOC5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0IgTQuBgBGgSg/ys2YgZwcm90bzM",[file_ai_stigmer_agentic_executioncontext_v1_api,file_ai_stigmer_agentic_executioncontext_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ExecutionContextQueryController=serviceDesc(file_ai_stigmer_agentic_executioncontext_v1_query,0);function redactExecutionContextSecrets(ec2){let data=ec2?.spec?.data;if(data!==void 0)for(let value of Object.values(data))value.isSecret&&value.value!==""&&(value.value=REDACTED_MARKER)}var import_node_crypto18=require("node:crypto"),CONNECT_EXECUTION_ID_PREFIX="connect-";function newConnectExecutionId(mcpServerId){return`${CONNECT_EXECUTION_ID_PREFIX}${mcpServerId}-${(0,import_node_crypto18.randomUUID)().slice(0,8)}`}function isConnectExecutionId(executionId){return executionId.startsWith(CONNECT_EXECUTION_ID_PREFIX)}function isTerminalWorkflowExecutionPhase(phase){switch(phase){case ExecutionPhase2.EXECUTION_COMPLETED:case ExecutionPhase2.EXECUTION_FAILED:case ExecutionPhase2.EXECUTION_CANCELLED:case ExecutionPhase2.EXECUTION_TERMINATED:return!0;default:return!1}}var RUNNER_VERIFIER_NAME="runner",RUNNER_CREDENTIAL_INVALID_MESSAGE="runner credential is not valid on this server",RUNNER_CREDENTIAL_NOT_LIVE_MESSAGE="runner credential names a run that is over or belongs to nobody this server recognizes",RUN_CREDENTIAL_NOT_RUNS_PERSON_MESSAGE="a run credential is minted only for the person whose run it is",WORKFLOW_LINEAGE_BINDING_MISMATCH_MESSAGE="workflow lineage label names a workflow execution this runner credential is not bound to",MEMORY_CAPTURE_ORG_MISMATCH_MESSAGE="memory capture is scoped to the session's organization";function boundExecutionKindOf(executionId){switch(kindByIdPrefix(executionId)){case ApiResourceKind.agent_execution:return"agent-execution";case ApiResourceKind.workflow_execution:return"workflow-execution";default:return isConnectExecutionId(executionId)?"mcp-connect":void 0}}function bindsARun(kind){switch(kind){case"agent-execution":case"workflow-execution":return!0;case"mcp-connect":return!1;default:{let exhaustive=kind;throw new Error(`unknown bound execution kind ${String(exhaustive)}`)}}}async function loadBoundExecution(store,executionId,now=Date.now()){let kind=boundExecutionKindOf(executionId);if(kind!==void 0)switch(kind){case"agent-execution":{let row=await getRow(store,ApiResourceKind.agent_execution,executionId,AgentExecutionSchema);return row===void 0?void 0:{kind,executionId,org:row.metadata?.org??"",createdBy:creatorStampOf(AgentExecutionSchema,row),sessionId:row.spec?.sessionId??"",live:isLive(row.status!==void 0&&isTerminalExecutionPhase(row.status.phase),row.status?.completedAt??"",now)}}case"workflow-execution":{let row=await getRow(store,ApiResourceKind.workflow_execution,executionId,WorkflowExecutionSchema);return row===void 0?void 0:{kind,executionId,org:row.metadata?.org??"",createdBy:creatorStampOf(WorkflowExecutionSchema,row),sessionId:"",live:isLive(row.status!==void 0&&isTerminalWorkflowExecutionPhase(row.status.phase),row.status?.completedAt??"",now)}}case"mcp-connect":{let row=await getExecutionContextRow(store,executionId);return row===void 0?void 0:{kind,executionId,org:row.metadata?.org??"",createdBy:creatorStampOf(ExecutionContextSchema,row),sessionId:"",live:!0}}default:{let exhaustive=kind;throw new Error(`unknown bound execution kind ${String(exhaustive)}`)}}}function isLive(terminal,completedAt,now){if(!terminal)return!0;let finishedAt=Date.parse(completedAt);return Number.isNaN(finishedAt)?!1:now-finishedAt<6e5}function creatorStampOf(schema2,row){return auditOf(schema2,row)?.specAudit?.createdBy?.id??""}async function getRow(store,kind,id,schema2){try{return await store.getResource(kind,id,schema2)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}async function getExecutionContextRow(store,executionId){try{return await store.findByField(ApiResourceKind.execution_context,"spec.executionId",executionId,ExecutionContextSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}function ciphertextShapedMessage(key){return`value for '${key}' looks like stored ciphertext (enc:v<N>: prefix); supply the plaintext value`}var ENCRYPT_BATCH_FAILURE_MESSAGE="failed to encrypt secret values";function encryptionKeyMissingMessage(executionId,key){return`execution context for ${executionId} holds encrypted secret '${key}' but no encryption key is configured`}async function resolveValuesForCaller(deps,ctx,ec2){if(await runnerMayDecrypt(deps,ctx,ec2)){await decryptSecretValues(deps,ec2);return}redactExecutionContextSecrets(ec2)}async function runnerMayDecrypt(deps,ctx,ec2){let authorizeRead=deps.runnerAuthService.authorizeExecutionContextRead?.bind(deps.runnerAuthService);if(authorizeRead!==void 0){let token2=bearerToken(ctx);if(token2==="")return!1;try{return await authorizeRead(token2,ec2.spec?.executionId??"")}catch(error2){return deps.logger.warn("ExecutionContext read authorization failed \u2014 redacting secrets",{error:error2 instanceof Error?error2.message:String(error2)}),!1}}let token=bearerToken(ctx),executionId=verifyRunnerToken(deps,token,ec2);return executionId===void 0?!1:!isClockedToken(token)&&!await runIsLive(deps,executionId)?(deps.logger.debug("Run credential presented for a run that is over - redacting execution context secrets",{executionId}),!1):(deps.logger.debug("Scope-bound runner token presented - decrypting execution context secrets",{executionId}),!0)}function verifyRunnerToken(deps,token,ec2){if(token==="")return;let tokenExecutionId;try{tokenExecutionId=deps.runnerAuthService.verify(TOKEN_TYPE_EXECUTION_SCOPED,token)}catch{deps.logger.debug("Presented runner token failed verification - redacting execution context secrets");return}if(tokenExecutionId!==(ec2.spec?.executionId??"")){deps.logger.warn("Runner token is not scope-bound to this execution context - redacting secrets",{tokenExecutionId,executionId:ec2.spec?.executionId??""});return}return tokenExecutionId}async function runIsLive(deps,executionId){try{let execution=await loadBoundExecution(deps.store,executionId);return execution!==void 0&&bindsARun(execution.kind)&&execution.live}catch(error2){throw internalError(error2,"failed to load the run credential's execution")}}function bearerToken(ctx){return parseBearerToken(ctx.requestHeader.get("authorization")??"")}async function decryptSecretValues(deps,ec2){let executionId=ec2.spec?.executionId??"",data=ec2.spec?.data??{};for(let[key,value]of Object.entries(data))if(!(!value.isSecret||!deps.secretService.isEncrypted(value.value)))try{value.value=await deps.secretService.decrypt(value.value)}catch(error2){if(error2 instanceof EncryptionUnavailableError)throw internalError(error2,encryptionKeyMissingMessage(executionId,key));deps.logger.warn("Undecryptable ciphertext in execution context \u2014 dropping this value from the runner read",{key,executionId,error:error2 instanceof Error?error2.message:String(error2)}),delete data[key]}}var executionContextSearchExtractor={kind:ApiResourceKind.execution_context,schema:ExecutionContextSchema,getSearchSummary(){return""},toSearchResult(resource,score){let ec2=resource;return buildSearchResult({kind:ApiResourceKind.execution_context,metadata:ec2.metadata,summary:"",score,createdAt:ec2.status?.audit?.specAudit?.createdAt,updatedAt:ec2.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let ec2=resource,metadata=ec2.metadata;if(metadata!==void 0)return{name:metadata.name,description:"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(ec2.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};function newRejectCiphertextShapedStep(){return{name:"RejectCiphertextShapedValues",execute(ctx){let data=ctx.input.spec?.data??{};for(let[key,value]of Object.entries(data))if(isCiphertextShaped(value.value))throw invalidArgumentError(ciphertextShapedMessage(key))}}}function newEncryptSecretValuesStep2(secretService,logger2){return{name:"EncryptSecretValues",async execute(ctx){let ec2=ctx.newState,data=ec2.spec?.data;if(data===void 0||Object.keys(data).length===0)return;if(!secretService.isEnabled()){hasNonEmptySecret2(data)&&logger2.warn("Encryption disabled: execution context secret values will be stored in plaintext",{executionId:ec2.spec?.executionId??""});return}let toSeal=new Map;for(let[key,value]of Object.entries(data))!value.isSecret||value.value===""||toSeal.set(key,value.value);if(toSeal.size===0)return;let sealed;try{sealed=await secretService.encryptAllAtMostV2(toSeal,EncryptionScope.forOrganization(ec2.metadata?.org??""))}catch(error2){throw internalError(error2,ENCRYPT_BATCH_FAILURE_MESSAGE)}for(let[key,value]of Object.entries(data)){let sealedValue=sealed.get(key);sealedValue!==void 0&&(value.value=sealedValue)}}}}function hasNonEmptySecret2(data){return Object.values(data).some(v=>v.isSecret&&v.value!=="")}function newLoadByExecutionIdStep(store){return{name:"LoadByExecutionId",async execute(ctx){let input=ctx.input;if(input.executionId==="")throw invalidArgumentError("execution_id is required");let executionContext;try{executionContext=await store.findByField(ctx.apiResourceKind,"spec.executionId",input.executionId,ExecutionContextSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("execution_context",`execution_id=${input.executionId}`):internalError(error2,"failed to query execution context")}ctx.set(TARGET_RESOURCE_KEY,executionContext)}}}function newAuthorizeExecutionContextCreateStep(authorizer){return{name:"AuthorizeCreate",async execute(ctx){let caller=ctx.callerIdentity;if(isServerComposedRequest(caller))return;let decision;try{decision=await authorizer.authorize(caller,{permission:IamPermission.can_create_execution_in,resourceKind:ApiResourceKind.organization,resourceId:ctx.newState.metadata?.org??""})}catch(error2){throw internalError(error2 instanceof Error?error2:new Error(String(error2)),"execution-context create authorization could not be completed")}switch(decision.kind){case"allow":return;case"deny":case"not-found":throw new ConnectError("unauthorized to create execution context in this organization",Code.PermissionDenied);case"unavailable":throw internalError(decision.cause,"execution-context create authorization could not be completed");default:{let exhaustive=decision;throw internalError(new Error(`unknown decision ${JSON.stringify(exhaustive)}`),"execution-context create authorization could not be completed")}}}}}function registerExecutionContextServices(router,deps){router.service(ExecutionContextCommandController,{apply:(ec2,ctx)=>apply8(deps,ec2,ctx),create:(ec2,ctx)=>createExecutionContext(deps,ec2,ctx),delete:(input,ctx)=>deleteExecutionContext(deps,input,ctx)}),router.service(ExecutionContextQueryController,{get:(id,ctx)=>get14(deps,id,ctx),getByReference:(ref,ctx)=>getByReference8(deps,ref,ctx),getByExecutionId:(input,ctx)=>getByExecutionId(deps,input,ctx)})}function kindOf13(ctx){return ctx.values.get(apiResourceKindKey)}async function createExecutionContext(deps,ec2,ctx){let reqCtx=new RequestContext(ExecutionContextSchema,ec2,callerIdentityOf(ctx),kindOf13(ctx));return await newPipeline("execution-context-create",deps.logger).addStep(newAuthorizeStep(ExecutionContextCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newAuthorizeExecutionContextCreateStep(deps.authorizer)).addStep(newValidateVisibilityStep()).addStep(newRejectCiphertextShapedStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newEncryptSecretValuesStep2(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,executionContextSearchExtractor,deps.logger)).build().execute(reqCtx),redactExecutionContextSecrets(reqCtx.newState),reqCtx.newState}async function apply8(deps,ec2,ctx){let reqCtx=new RequestContext(ExecutionContextSchema,ec2,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-apply",deps.logger).addStep(newAuthorizeStep(ExecutionContextCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");if(shouldCreate)return createExecutionContext(deps,ec2,ctx);throw deps.logger.warn("ExecutionContext already exists - UPDATE not supported",{slug:ec2.metadata?.name??"",id:ec2.metadata?.id??""}),alreadyExistsError("ExecutionContext",ec2.metadata?.name??"")}async function deleteExecutionContext(deps,input,ctx){let reqCtx=new RequestContext(ExecutionContextCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf13(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("execution-context-delete",deps.logger).addStep(newAuthorizeStep(ExecutionContextCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,ExecutionContextSchema)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted execution context not found in context"),"deleted execution context not found in context");let ec2=deleted;return redactExecutionContextSecrets(ec2),ec2}async function get14(deps,id,ctx){let reqCtx=new RequestContext(ExecutionContextQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-get",deps.logger).addStep(newAuthorizeStep(ExecutionContextQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,ExecutionContextSchema)).build().execute(reqCtx);let ec2=reqCtx.get(TARGET_RESOURCE_KEY);return redactExecutionContextSecrets(ec2),ec2}async function getByReference8(deps,ref,ctx){let reqCtx=new RequestContext(ExecutionContextQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-get-by-reference",deps.logger).addStep(newAuthorizeStep(ExecutionContextQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,ExecutionContextSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(ExecutionContextQueryController.method.get))).build().execute(reqCtx);let ec2=reqCtx.get(TARGET_RESOURCE_KEY);return redactExecutionContextSecrets(ec2),ec2}async function getByExecutionId(deps,input,ctx){let reqCtx=new RequestContext(ExecutionContextQueryController.method.getByExecutionId.input,input,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-get-by-execution-id",deps.logger).addStep(newAuthorizeStep(ExecutionContextQueryController.method.getByExecutionId,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByExecutionIdStep(deps.store)).build().execute(reqCtx);let ec2=reqCtx.get(TARGET_RESOURCE_KEY);return await resolveValuesForCaller(deps,ctx,ec2),ec2}var import_node_crypto19=require("node:crypto");var file_ai_stigmer_platform_github_v1_service=fileDesc("CithaS9zdGlnbWVyL3BsYXRmb3JtL2dpdGh1Yi92MS9zZXJ2aWNlLnByb3RvEh1haS5zdGlnbWVyLnBsYXRmb3JtLmdpdGh1Yi52MSI8ChtHZXRPQXV0aEF1dGhvcml6ZVVybFJlcXVlc3QSHQoMcmVkaXJlY3RfdXJpGAEgASgJQge6SARyAhABIkQKHEdldE9BdXRoQXV0aG9yaXplVXJsUmVzcG9uc2USFQoNYXV0aG9yaXplX3VybBgBIAEoCRINCgVzdGF0ZRgCIAEoCSJoChhFeGNoYW5nZU9BdXRoQ29kZVJlcXVlc3QSFQoEY29kZRgBIAEoCUIHukgEcgIQARIWCgVzdGF0ZRgCIAEoCUIHukgEcgIQARIdCgxyZWRpcmVjdF91cmkYAyABKAlCB7pIBHICEAEiVAoZRXhjaGFuZ2VPQXV0aENvZGVSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEgoKdG9rZW5fdHlwZRgCIAEoCRINCgVzY29wZRgDIAEoCTK2AgoNR2l0SHViU2VydmljZRKVAQoUZ2V0T0F1dGhBdXRob3JpemVVcmwSOi5haS5zdGlnbWVyLnBsYXRmb3JtLmdpdGh1Yi52MS5HZXRPQXV0aEF1dGhvcml6ZVVybFJlcXVlc3QaOy5haS5zdGlnbWVyLnBsYXRmb3JtLmdpdGh1Yi52MS5HZXRPQXV0aEF1dGhvcml6ZVVybFJlc3BvbnNlIgTQuBgBEowBChFleGNoYW5nZU9BdXRoQ29kZRI3LmFpLnN0aWdtZXIucGxhdGZvcm0uZ2l0aHViLnYxLkV4Y2hhbmdlT0F1dGhDb2RlUmVxdWVzdBo4LmFpLnN0aWdtZXIucGxhdGZvcm0uZ2l0aHViLnYxLkV4Y2hhbmdlT0F1dGhDb2RlUmVzcG9uc2UiBNC4GAFiBnByb3RvMw",[file_ai_stigmer_commons_rpc_method_options,file_buf_validate_validate]);var GetOAuthAuthorizeUrlResponseSchema=messageDesc2(file_ai_stigmer_platform_github_v1_service,1);var ExchangeOAuthCodeResponseSchema=messageDesc2(file_ai_stigmer_platform_github_v1_service,3),GitHubService=serviceDesc(file_ai_stigmer_platform_github_v1_service,0);var GITHUB_AUTHORIZE_URL="https://github.com/login/oauth/authorize",GITHUB_TOKEN_URL="https://github.com/login/oauth/access_token",OAUTH_SCOPES="repo,read:user",HTTP_TIMEOUT_MS=1e4;function registerGitHubServices(router,deps){router.service(GitHubService,{getOAuthAuthorizeUrl:req=>getOAuthAuthorizeUrl(deps,req),exchangeOAuthCode:req=>exchangeOAuthCode(deps,req)})}function getOAuthAuthorizeUrl(deps,req){if(deps.clientId==="")throw failedPreconditionError("GitHub OAuth is not configured (STIGMER_GITHUB_CLIENT_ID not set)");let state2;try{state2=(0,import_node_crypto19.randomBytes)(16).toString("hex")}catch(error2){throw deps.logger.error("failed to generate OAuth state",{error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to generate OAuth state")}let authorizeUrl=GITHUB_AUTHORIZE_URL+"?"+goUrlValuesEncode({client_id:deps.clientId,redirect_uri:req.redirectUri,scope:OAUTH_SCOPES,state:state2});return create2(GetOAuthAuthorizeUrlResponseSchema,{authorizeUrl,state:state2})}async function exchangeOAuthCode(deps,req){if(deps.clientId===""||deps.clientSecret==="")throw failedPreconditionError("GitHub OAuth is not configured");let body=goUrlValuesEncode({client_id:deps.clientId,client_secret:deps.clientSecret,code:req.code,redirect_uri:req.redirectUri}),fetchImpl=deps.fetchImpl??fetch,response;try{response=await fetchImpl(GITHUB_TOKEN_URL,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body,signal:AbortSignal.timeout(HTTP_TIMEOUT_MS)})}catch(error2){throw deps.logger.error("GitHub token exchange failed",{error:error2 instanceof Error?error2.message:String(error2)}),unavailableError("failed to reach GitHub for token exchange")}let raw;try{raw=await response.text()}catch(error2){throw deps.logger.error("failed to read GitHub token response",{error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to read GitHub response")}let tokenResponse;try{tokenResponse=JSON.parse(raw)}catch(error2){throw deps.logger.error("failed to parse GitHub token response",{error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to parse GitHub response")}if(tokenResponse.error!==void 0&&tokenResponse.error!=="")throw deps.logger.warn("GitHub OAuth error",{error:tokenResponse.error,description:tokenResponse.error_description??""}),invalidArgumentError(`GitHub OAuth error: ${tokenResponse.error_description??""}`);return create2(ExchangeOAuthCodeResponseSchema,{accessToken:tokenResponse.access_token??"",tokenType:tokenResponse.token_type??"",scope:tokenResponse.scope??""})}var file_ai_stigmer_agentic_memory_v1_io=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvbWVtb3J5L3YxL2lvLnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxIiEKCE1lbW9yeUlkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiYAoTTGlzdE1lbW9yaWVzUmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAESMwoJcGFnZV9pbmZvGAIgASgLMiAuYWkuc3RpZ21lci5jb21tb25zLnJwYy5QYWdlSW5mbyJWCgpNZW1vcnlMaXN0EhMKC3RvdGFsX2NvdW50GAEgASgFEjMKBWl0ZW1zGAIgAygLMiQuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnliBnByb3RvMw",[file_ai_stigmer_agentic_memory_v1_api,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]),MemoryIdSchema=messageDesc2(file_ai_stigmer_agentic_memory_v1_io,0);var MemoryListSchema=messageDesc2(file_ai_stigmer_agentic_memory_v1_io,2);var file_ai_stigmer_agentic_memory_v1_command=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvbWVtb3J5L3YxL2NvbW1hbmQucHJvdG8SHGFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEypQUKF01lbW9yeUNvbW1hbmRDb250cm9sbGVyEloKBmNyZWF0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5GiQuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnkiBNC4GAESigEKBnVwZGF0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5GiQuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnkiNMK4GDAIAhA5IgttZXRhZGF0YS5pZCoddW5hdXRob3JpemVkIHRvIHVwZGF0ZSBtZW1vcnkShgEKBmRlbGV0ZRImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIuwrgYKggDEDkiBXZhbHVlKh11bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG1lbW9yeRKIAQoHY29uZmlybRImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIvwrgYKwgCEDkiBXZhbHVlKh51bmF1dGhvcml6ZWQgdG8gY29uZmlybSBtZW1vcnkShgEKBnJlamVjdBImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIuwrgYKggCEDkiBXZhbHVlKh11bmF1dGhvcml6ZWQgdG8gcmVqZWN0IG1lbW9yeRoEoP8rOWIGcHJvdG8z",[file_ai_stigmer_agentic_memory_v1_api,file_ai_stigmer_agentic_memory_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),MemoryCommandController=serviceDesc(file_ai_stigmer_agentic_memory_v1_command,0);var file_ai_stigmer_agentic_memory_v1_query=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvbWVtb3J5L3YxL3F1ZXJ5LnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxMosCChVNZW1vcnlRdWVyeUNvbnRyb2xsZXISgAEKA2dldBImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIrwrgYJwgBEDkiBXZhbHVlKhp1bmF1dGhvcml6ZWQgdG8gZ2V0IG1lbW9yeRJpCgRsaXN0EjEuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5MaXN0TWVtb3JpZXNSZXF1ZXN0GiguYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnlMaXN0IgTQuBgBGgSg/ys5YgZwcm90bzM",[file_ai_stigmer_agentic_memory_v1_api,file_ai_stigmer_agentic_memory_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),MemoryQueryController=serviceDesc(file_ai_stigmer_agentic_memory_v1_query,0);var PLATFORM_CLIENT_KIND_NAME="PlatformClient",SYSTEM_SHARE_CLIENT_SLUG="system-share-client",RESERVED_PLATFORM_CLIENT_SLUGS=new Set([SYSTEM_SHARE_CLIENT_SLUG]),USER_TOKEN_CLAIMS={subject:"sub",externalUserId:"ext_user_id",email:"email",name:"name",org:"org",platformClientId:"platform_client_id"},BEARER_TOKEN_TYPE="Bearer";function reservedSlugMessage(slug){return`The slug '${slug}' is reserved for the platform's system-managed resources and cannot be used. If you did not provide a slug explicitly, it was derived from the resource name \u2014 choose a different name or provide an explicit slug.`}function systemManagedMessage(verb){return`This platform client is system-managed and cannot be ${verb}`}function referenceNotFoundMessage(org,slug){return`PlatformClient '${org}/${slug}' not found`}var INVALID_CLIENT_CREDENTIALS_MESSAGE="Invalid client_id or client_secret",EXPIRED_CLIENT_SECRET_MESSAGE="PlatformClient secret has expired. Rotating the secret does not extend it; the client's owner must set a later expires_at or set never_expires.";function organizationMismatchMessage(owningOrg){return`org_id must be empty or the PlatformClient's owning organization ('${owningOrg}'); cross-organization minting is not supported`}function noAccountMessage(externalUserId,org){return`User '${externalUserId}' has no Stigmer account in organization '${org}'. Enable auto_provision_accounts on the PlatformClient or create the account first.`}var OWNER_AUTO_GRANT_MESSAGE="auto_grant_role cannot be 'owner'; organization ownership must be assigned explicitly.",PROVISIONING_FAILED_MESSAGE="Account provisioning failed. No partial account was left behind; the request is safe to retry.";function blankSubjectPartMessage(part){return`${part} must not be null or blank`}function subjectSeparatorMessage(part,value){return`${part} must not contain the separator character '|': ${value}`}function foreignAccountMessage(externalUserId,org){return`User '${externalUserId}' in organization '${org}' resolves to an account no platform client provisioned \u2014 refusing to mint a token for it`}var MINTING_REQUIRES_AUTHENTICATION_MESSAGE="mintUserToken requires a server that authenticates its callers: this server trusts every request, so nothing would verify the token \u2014 configure an identity provider (STIGMER_OIDC_ISSUER) to enable PlatformClient token minting",MINTING_DISABLED_MESSAGE="mintUserToken is disabled: this server's platform-token key ring holds no signing key",GUEST_MINT_UNIMPLEMENTED_MESSAGE="PlatformClientTokenController.mintGuestToken is not implemented: guest tokens for shared agents are served by the Cloud edition",TOKEN_NAMES_NO_CLIENT_MESSAGE="platform token names no platform client",DELETED_CLIENT_MESSAGE="The platform client that minted this token has been deleted, so the token is no longer accepted. Mint a new user token from an active platform client.";function originRefusalMessage(origin){return`Request origin '${origin}' is not in this platform client's allowed_origins. Add it to the PlatformClient's allowed_origins to permit browser requests from this origin.`}var import_node_crypto20=require("node:crypto"),PLATFORM_TOKEN_ISSUER="stigmer",TOKEN_TYPE_CLAIM="token_type",ENVELOPE_CLAIMS=new Set(["iss","iat","exp","jti","aud"]),PLATFORM_TOKEN_REFUSAL_MESSAGES={signature:"platform token signature verification failed",expired:"platform token is expired",audience:"platform token was minted for another environment",subject:"platform token carries no subject"};function signPlatformToken(ring,claims,options={}){for(let name of Object.keys(claims))if(ENVELOPE_CLAIMS.has(name))throw new Error(`platform-token claim '${name}' belongs to the envelope and cannot be set by a lane`);let ttlSeconds=options.ttlSeconds??ring.ttlSeconds;if(!Number.isInteger(ttlSeconds)||ttlSeconds<=0)throw new Error(`platform-token lifetime must be a positive integer number of seconds, got ${ttlSeconds}`);let issuedAt=Math.floor((options.now??new Date).getTime()/1e3),expiresAtSeconds=issuedAt+ttlSeconds,header={alg:"RS256",typ:"JWT",kid:ring.signer.kid},payload={iss:PLATFORM_TOKEN_ISSUER,iat:issuedAt,exp:expiresAtSeconds,jti:(0,import_node_crypto20.randomUUID)(),...ring.audience!==""?{aud:ring.audience}:{},...claims},signingInput=`${base64UrlJson(header)}.${base64UrlJson(payload)}`,signature=(0,import_node_crypto20.sign)("sha256",Buffer.from(signingInput),ring.signer.key);return{token:`${signingInput}.${signature.toString("base64url")}`,expiresAt:new Date(expiresAtSeconds*1e3)}}function verifyPlatformToken(ring,token,now=new Date){let decoded=decode2(token);if(decoded===void 0||decoded.payload.iss!==PLATFORM_TOKEN_ISSUER)return{outcome:"foreign"};let signingInput=Buffer.from(`${decoded.encodedHeader}.${decoded.encodedPayload}`);if(!ring.verificationKeys.some(key=>(0,import_node_crypto20.verify)("sha256",signingInput,key,decoded.signature)))return{outcome:"refused",refusal:"signature"};let exp=decoded.payload.exp;if(typeof exp!="number"||exp*1e3<=now.getTime())return{outcome:"refused",refusal:"expired"};let aud=decoded.payload.aud;if(ring.audience!==""&&aud!==void 0&&!audienceMatches(aud,ring.audience))return{outcome:"refused",refusal:"audience"};let sub=decoded.payload.sub;return typeof sub!="string"||sub===""?{outcome:"refused",refusal:"subject"}:{outcome:"verified",token:{subject:sub,tokenType:stringClaim(decoded.payload,TOKEN_TYPE_CLAIM),payload:decoded.payload}}}function platformTokenRefusalError(refusal2){return new ConnectError(PLATFORM_TOKEN_REFUSAL_MESSAGES[refusal2],Code.Unauthenticated)}function decodeVerifiedPlatformTokenPayload(token){let decoded=decode2(token);return decoded!==void 0&&decoded.payload.iss===PLATFORM_TOKEN_ISSUER?decoded.payload:void 0}function stringClaim(payload,name){let value=payload[name];return typeof value=="string"&&value!==""?value:void 0}function decode2(token){let parts=token.split(".");if(parts.length!==3)return;let[encodedHeader="",encodedPayload="",encodedSignature=""]=parts,header=parseJsonObject(encodedHeader),payload=parseJsonObject(encodedPayload);if(!(header===void 0||payload===void 0))return{encodedHeader,encodedPayload,payload,signature:Buffer.from(encodedSignature,"base64url")}}function parseJsonObject(segment){try{let value=JSON.parse(Buffer.from(segment,"base64url").toString("utf8"));return typeof value=="object"&&value!==null&&!Array.isArray(value)?value:void 0}catch{return}}function audienceMatches(aud,expected){return typeof aud=="string"?aud===expected:Array.isArray(aud)&&aud.includes(expected)}function base64UrlJson(value){return Buffer.from(JSON.stringify(value)).toString("base64url")}var MEMORY_CAPTURE_CALLER_MESSAGE="memory can only be captured for a first-party human operator",MEMORY_CAPTURE_CREDENTIAL_KEY="memoryCaptureCredential";function newGuardMemoryCaptureStep(provider){return{name:"GuardMemoryCapture",async execute(ctx){let caller=ctx.callerIdentity;if(isServerComposedRequest(caller))return;let decide=provider?.authorizeMemoryCapture;if(decide!==void 0){let org=metadataOf(ctx.newState)?.org??"",decision=await decide.call(provider,caller,org);switch(decision.verdict){case"admit":ctx.set(MEMORY_CAPTURE_CREDENTIAL_KEY,{subjectIdentityAccountId:decision.subjectIdentityAccountId,provedSessionId:decision.provedSessionId});return;case"refuse":throw new ConnectError(MEMORY_CAPTURE_CALLER_MESSAGE,Code.PermissionDenied);case"no-opinion":break;default:{let exhaustive=decision;throw new Error(`unknown memory capture decision ${JSON.stringify(exhaustive)}`)}}}if(caller.callerClass==="machine"||carriesPlatformClientClaim(caller.rawToken))throw new ConnectError(MEMORY_CAPTURE_CALLER_MESSAGE,Code.PermissionDenied)}}}function memoryCaptureCredentialOf(ctx){let payload=ctx.get(MEMORY_CAPTURE_CREDENTIAL_KEY);if(typeof payload=="object"&&payload!==null&&"subjectIdentityAccountId"in payload&&"provedSessionId"in payload)return payload}function carriesPlatformClientClaim(rawToken){let payload=decodeVerifiedPlatformTokenPayload(rawToken);return payload!==void 0&&stringClaim(payload,USER_TOKEN_CLAIMS.platformClientId)!==void 0}var MEMORY_FULL_MESSAGE="memory is full \u2014 review and delete existing memories";function memoryDisabledMessage(org){return`memory is not enabled for organization ${org} \u2014 an organization admin can enable it in organization preferences`}var MEMORY_CONFIRM_REJECTED_MESSAGE="memory was rejected \u2014 delete it and let the agent propose it again",MEMORY_REJECT_CONFIRMED_MESSAGE="memory was confirmed \u2014 delete it to stop it from being recalled",MEMORY_SUBJECT_IMMUTABLE_MESSAGE="spec.subject_identity_account_id is immutable \u2014 it is derived from the capturing credential at create",MEMORY_PROVENANCE_IMMUTABLE_MESSAGE="spec.provenance is immutable \u2014 it records where the fact came from";var LIST_RESULT_KEY6="listResult";function newResolveMemoryDefaultsStep(){return{name:"ResolveMemoryDefaults",execute(ctx){let memory=ctx.newState,metadata=memory.metadata;if((metadata?.org??"")==="")throw invalidArgumentError("metadata.org is required for a memory");if(metadata===void 0)throw internalError(new Error("metadata is nil"),"metadata is nil");metadata.id===""&&(metadata.id=generateId("mem")),metadata.name===""&&metadata.slug===""&&(metadata.name=metadata.id);let spec=memory.spec;if(spec===void 0)throw internalError(new Error("memory spec is nil"),"memory spec is nil");let captureCredential=memoryCaptureCredentialOf(ctx);spec.subjectIdentityAccountId=captureCredential?.subjectIdentityAccountId??"",spec.provenance!==void 0&&(spec.provenance.toolCallId=""),captureCredential!==void 0&&(spec.provenance===void 0&&(spec.provenance=create2(MemoryProvenanceSchema,{})),spec.provenance.sessionId=captureCredential.provedSessionId)}}}var MEMORY_CREATE_DENIED_MESSAGE="unauthorized to capture memory in this organization";function resolveMemoryCreateTargets(ctx){return isServerComposedRequest(ctx.callerIdentity)?[]:[{permission:IamPermission.can_create_session,resourceKind:ApiResourceKind.organization,resourceId:ctx.newState.metadata?.org??"",deniedMessage:MEMORY_CREATE_DENIED_MESSAGE}]}function newCheckMemoryEnablementStep(store){return{name:"CheckMemoryEnablement",async execute(ctx){let orgID=ctx.newState.metadata?.org??"",org;try{org=await store.getResource(ApiResourceKind.organization,orgID,OrganizationSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("Organization",orgID):internalError(error2,"failed to load organization for memory enablement check")}if(org.spec?.preferences?.memoryEnabled!==!0)throw failedPreconditionError(memoryDisabledMessage(orgID))}}}function newCheckMemoryCapStep(store){return{name:"CheckMemoryCap",async execute(ctx){let newState=ctx.newState,org=newState.metadata?.org??"",subject=newState.spec?.subjectIdentityAccountId??"",rows;try{rows=await store.listResources(ApiResourceKind.memory)}catch(error2){throw internalError(error2,"failed to count memories for cap check")}let count=0;for(let bytes of rows){let existing=unmarshalMemory(bytes);existing!==void 0&&(existing.metadata?.org??"")===org&&(existing.spec?.subjectIdentityAccountId??"")===subject&&count++}if(count>=100)throw failedPreconditionError(MEMORY_FULL_MESSAGE)}}}function newInitializeMemoryLifecycleStep(){return{name:"InitializeMemoryLifecycle",execute(ctx){let memory=ctx.newState;memory.status===void 0&&(memory.status=create2(MemoryStatusSchema,{})),memory.status.lifecycleState=MemoryLifecycleState.lifecycle_state_proposed,memory.status.stateChangedAt=timestampNow()}}}function newValidateMemoryUpdateStep(){return{name:"ValidateMemoryUpdate",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing memory not found in context"),"existing memory not found in context");let newState=ctx.newState;if((newState.spec?.subjectIdentityAccountId??"")!==(existing.spec?.subjectIdentityAccountId??""))throw failedPreconditionError(MEMORY_SUBJECT_IMMUTABLE_MESSAGE);let newProvenance=newState.spec?.provenance,existingProvenance=existing.spec?.provenance;if(!(newProvenance===void 0||existingProvenance===void 0?newProvenance===existingProvenance:equals(MemoryProvenanceSchema,newProvenance,existingProvenance)))throw failedPreconditionError(MEMORY_PROVENANCE_IMMUTABLE_MESSAGE)}}}function newPersistMemoryUpdateStep(store){return{name:"PersistMemoryUpdate",async execute(ctx){let newState=ctx.newState,memoryId=newState.metadata?.id??"",live;try{live=await store.updateResource(ApiResourceKind.memory,memoryId,MemorySchema,row=>{row.apiVersion=newState.apiVersion,row.kind=newState.kind,row.metadata=newState.metadata,row.spec=newState.spec,newState.status?.audit!==void 0&&(row.status===void 0&&(row.status=create2(MemoryStatusSchema,{})),row.status.audit=newState.status.audit)})}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("Memory",memoryId):internalError(error2,"failed to persist memory update")}ctx.setNewState(live)}}}function newTransitionMemoryLifecycleStep(store,target,blockedMessage){return{name:"TransitionMemoryLifecycle",async execute(ctx){let memoryId=ctx.get(EXISTING_RESOURCE_KEY).metadata?.id??"",transitionNoOp=new Error("memory already in target state"),blocked,live;try{live=await store.updateResource(ApiResourceKind.memory,memoryId,MemorySchema,row=>{live=row;let current=row.status?.lifecycleState??MemoryLifecycleState.lifecycle_state_unspecified;if(current===target)throw transitionNoOp;if(current!==MemoryLifecycleState.lifecycle_state_proposed&¤t!==MemoryLifecycleState.lifecycle_state_unspecified)throw blocked=failedPreconditionError(blockedMessage),blocked;row.status===void 0&&(row.status=create2(MemoryStatusSchema,{})),row.status.lifecycleState=target,row.status.stateChangedAt=timestampNow(),setAuditFieldsForUpdate(MemorySchema,row,"status_audit",ctx.callerIdentity)})}catch(error2){if(error2!==transitionNoOp)throw blocked!==void 0&&error2===blocked?blocked:error2 instanceof ResourceNotFoundError?notFoundError("Memory",memoryId):internalError(error2,"failed to transition memory lifecycle")}if(live===void 0)throw internalError(new Error("transition closure did not observe the row"),"failed to transition memory lifecycle");ctx.set(EXISTING_RESOURCE_KEY,live)}}}function newListMemoriesByOrgStep(store,listReadScope){return{name:"ListMemoriesByOrg",async execute(ctx){let org=ctx.input.org,rows;try{rows=await store.listResources(ApiResourceKind.memory)}catch(error2){throw internalError(error2,"failed to list memories")}let decoded=[];for(let bytes of rows){let memory=unmarshalMemory(bytes);memory!==void 0&&decoded.push(memory)}let memories=await restrictListByReadScope(listReadScope,ctx.callerIdentity,ApiResourceKind.memory,decoded.filter(memory=>(memory.metadata?.org??"")===org),"");memories.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),ctx.set(LIST_RESULT_KEY6,create2(MemoryListSchema,{totalCount:memories.length,items:memories}))}}}function unmarshalMemory(data){try{return fromBinary2(MemorySchema,data)}catch{return}}function registerMemoryServices(router,deps){router.service(MemoryCommandController,{create:(memory,ctx)=>createMemory(deps,memory,ctx),update:(memory,ctx)=>update11(deps,memory,ctx),delete:(id,ctx)=>deleteMemory(deps,id,ctx),confirm:(id,ctx)=>confirm(deps,id,ctx),reject:(id,ctx)=>reject(deps,id,ctx)}),router.service(MemoryQueryController,{get:(id,ctx)=>get15(deps,id,ctx),list:(req,ctx)=>list9(deps,req,ctx)})}function kindOf14(ctx){return ctx.values.get(apiResourceKindKey)}async function createMemory(deps,memory,ctx){let reqCtx=new RequestContext(MemorySchema,memory,callerIdentityOf(ctx),kindOf14(ctx));return await newPipeline("memory-create",deps.logger).addStep(newAuthorizeStep(MemoryCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newGuardMemoryCaptureStep(deps.runnerCredentialProvider)).addStep(newValidateVisibilityStep()).addStep(newResolveMemoryDefaultsStep()).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,resolveMemoryCreateTargets)).addStep(newCheckMemoryEnablementStep(deps.store)).addStep(newCheckMemoryCapStep(deps.store)).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newInitializeMemoryLifecycleStep()).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update11(deps,memory,ctx){let reqCtx=new RequestContext(MemorySchema,memory,callerIdentityOf(ctx),kindOf14(ctx));return await newPipeline("memory-update",deps.logger).addStep(newAuthorizeStep(MemoryCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingStep(deps.store)).addStep(newValidateMemoryUpdateStep()).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistMemoryUpdateStep(deps.store)).build().execute(reqCtx),reqCtx.newState}async function confirm(deps,memoryId,ctx){return runTransition(deps,memoryId,ctx,"memory-confirm",MemoryCommandController.method.confirm,MemoryLifecycleState.lifecycle_state_confirmed,MEMORY_CONFIRM_REJECTED_MESSAGE)}async function reject(deps,memoryId,ctx){return runTransition(deps,memoryId,ctx,"memory-reject",MemoryCommandController.method.reject,MemoryLifecycleState.lifecycle_state_rejected,MEMORY_REJECT_CONFIRMED_MESSAGE)}async function runTransition(deps,memoryId,ctx,name,method,target,blockedMessage){let reqCtx=new RequestContext(MemoryIdSchema,memoryId,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline(name,deps.logger).addStep(newAuthorizeStep(method,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,MemorySchema)).addStep(newTransitionMemoryLifecycleStep(deps.store,target,blockedMessage)).build().execute(reqCtx);let transitioned=reqCtx.get(EXISTING_RESOURCE_KEY);if(transitioned===void 0)throw internalError(new Error("transitioned memory not found in context"),"transitioned memory not found in context");return transitioned}async function deleteMemory(deps,memoryId,ctx){let reqCtx=new RequestContext(MemoryIdSchema,memoryId,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline("memory-delete",deps.logger).addStep(newAuthorizeStep(MemoryCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,MemorySchema)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted memory not found in context"),"deleted memory not found in context");return deleted}async function get15(deps,memoryId,ctx){let reqCtx=new RequestContext(MemoryIdSchema,memoryId,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline("memory-get",deps.logger).addStep(newAuthorizeStep(MemoryQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadTargetStep(deps.store,MemorySchema)).build().execute(reqCtx);let target=reqCtx.get(TARGET_RESOURCE_KEY);if(target===void 0)throw internalError(new Error("target memory not found in context"),"target memory not found in context");return target}async function list9(deps,req,ctx){let reqCtx=new RequestContext(MemoryQueryController.method.list.input,req,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline("memory-list",deps.logger).addStep(newAuthorizeStep(MemoryQueryController.method.list,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListMemoriesByOrgStep(deps.store,deps.listReadScope)).build().execute(reqCtx);let result=reqCtx.get(LIST_RESULT_KEY6);if(result===void 0)throw internalError(new Error("memory list not found in context"),"memory list not found in context");return result}var file_ai_stigmer_iam_oauthapp_v1_command=fileDesc("CihhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9jb21tYW5kLnByb3RvEhphaS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MTLOBAoZT0F1dGhBcHBDb21tYW5kQ29udHJvbGxlchJTCgVhcHBseRIkLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwGiQuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuT0F1dGhBcHASowEKBmNyZWF0ZRIkLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwGiQuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuT0F1dGhBcHAiTcK4GEkIFxAeIgxtZXRhZGF0YS5vcmcqNXVuYXV0aG9yaXplZCB0byBjcmVhdGUgb2F1dGggYXBwIGluIHRoaXMgb3JnYW5pemF0aW9uEo0BCgZ1cGRhdGUSJC5haS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MS5PQXV0aEFwcBokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIjfCuBgzCAIQFiILbWV0YWRhdGEuaWQqIHVuYXV0aG9yaXplZCB0byB1cGRhdGUgb2F1dGggYXBwEp8BCgZkZWxldGUSNi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VEZWxldGVJbnB1dBokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIjfCuBgzCAMQFiILcmVzb3VyY2VfaWQqIHVuYXV0aG9yaXplZCB0byBkZWxldGUgb2F1dGggYXBwGgSg/ysWYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_oauthapp_v1_api]),OAuthAppCommandController=serviceDesc(file_ai_stigmer_iam_oauthapp_v1_command,0);var file_ai_stigmer_iam_oauthapp_v1_io=fileDesc("CiNhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9pby5wcm90bxIaYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEiJgoKT0F1dGhBcHBJZBIYCgV2YWx1ZRgBIAEoCUIJukgGcgQQARhAIkIKCU9BdXRoQXBwcxI1CgdlbnRyaWVzGAEgAygLMiQuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuT0F1dGhBcHAiLwoXTGlzdE9BdXRoQXBwc0J5T3JnSW5wdXQSFAoDb3JnGAEgASgJQge6SARyAhABYgZwcm90bzM",[file_ai_stigmer_iam_oauthapp_v1_api,file_buf_validate_validate]);var OAuthAppsSchema=messageDesc2(file_ai_stigmer_iam_oauthapp_v1_io,1);var file_ai_stigmer_iam_oauthapp_v1_query=fileDesc("CiZhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9xdWVyeS5wcm90bxIaYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEy0AMKF09BdXRoQXBwUXVlcnlDb250cm9sbGVyEosBCgNnZXQSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIi/CuBgrCAEQFiIFdmFsdWUqHnVuYXV0aG9yaXplZCB0byB2aWV3IG9hdXRoIGFwcBJyCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIgTQuBgBEqwBCglsaXN0QnlPcmcSMy5haS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MS5MaXN0T0F1dGhBcHBzQnlPcmdJbnB1dBolLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwcyJDwrgYPwgBEB4iA29yZyo0dW5hdXRob3JpemVkIHRvIGxpc3Qgb2F1dGggYXBwcyBpbiB0aGlzIG9yZ2FuaXphdGlvbhoEoP8rFmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_oauthapp_v1_api,file_ai_stigmer_iam_oauthapp_v1_io]),OAuthAppQueryController=serviceDesc(file_ai_stigmer_iam_oauthapp_v1_query,0);var REDACTED_MARKER3="***REDACTED***",MARKER_ON_CREATE_MESSAGE="cannot use the redaction marker as client_secret on create",PRESERVE_NO_EXISTING_SECRET_MESSAGE="cannot preserve client_secret: no existing secret value found",CIPHERTEXT_SHAPED_SECRET_MESSAGE="client_secret must be plaintext \u2014 values carrying the 'enc:' encryption prefix are not accepted from clients";function deleteBlockedByMcpServerMessage(org,slug,mcpServerName){return`cannot delete OAuthApp '${org}/${slug}': referenced by MCP server '${mcpServerName}'`}async function resolveOAuthAppRef(store,ref,logger2){let slug=ref?.slug??"";if(slug==="")return;let rows=await store.listResources(ApiResourceKind.oauth_app),slugMatches=[];for(let data of rows){let app;try{app=fromBinary2(OAuthAppSchema,data)}catch{continue}if((app.metadata?.slug??"")!==slug)continue;let refOrg=ref?.org??"";if(refOrg!==""&&app.metadata?.org===refOrg)return app;slugMatches.push(app)}if(slugMatches.length!==0){if(slugMatches.length===1)return slugMatches[0];logger2.warn("oauth_app_ref is ambiguous (slug exists in several orgs, none matching the ref); refusing to pick \u2014 pin the ref's org to resolve",{oauthAppSlug:slug,refOrg:ref?.org??"",candidateOrgs:slugMatches.map(app=>app.metadata?.org??"")})}}function redactOAuthApp(app){app.spec!==void 0&&app.spec.clientSecret!==""&&(app.spec.clientSecret=REDACTED_MARKER3)}function newEncryptClientSecretForCreateStep(secretService,logger2){return newEncryptClientSecretStep(secretService,logger2,!0)}function newEncryptClientSecretForUpdateStep(secretService,logger2){return newEncryptClientSecretStep(secretService,logger2,!1)}function newEncryptClientSecretStep(secretService,logger2,isCreate){return{name:"EncryptClientSecret",async execute(ctx){let app=ctx.newState;if(app.spec===void 0)return;let clientSecret=app.spec.clientSecret;if(clientSecret!==""){if(clientSecret===REDACTED_MARKER3){preserveExistingSecret(ctx,app,isCreate,logger2);return}if(isCiphertextShaped(clientSecret))throw invalidArgumentError(CIPHERTEXT_SHAPED_SECRET_MESSAGE);if(!secretService.isEnabled()){logger2.warn("encryption disabled: client_secret will be stored in plaintext");return}try{app.spec.clientSecret=await secretService.encrypt(clientSecret,EncryptionScope.forOrganization(app.metadata?.org??""))}catch(error2){throw internalError(error2,"failed to encrypt client_secret")}}}}}function preserveExistingSecret(ctx,app,isCreate,logger2){if(isCreate)throw invalidArgumentError(MARKER_ON_CREATE_MESSAGE);let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing resource not loaded"),"cannot preserve client_secret: existing resource not loaded");let existingSecret=existing.spec?.clientSecret??"";if(existingSecret==="")throw invalidArgumentError(PRESERVE_NO_EXISTING_SECRET_MESSAGE);app.spec!==void 0&&(app.spec.clientSecret=existingSecret),logger2.debug("preserved existing encrypted client_secret",{oauthAppId:app.metadata?.id??""})}function newCheckNoReferencingMcpServersStep(store,logger2){return{name:"CheckNoReferencingMcpServers",async execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing OAuthApp missing from pipeline context"),"existing OAuthApp not loaded in delete pipeline");let resources;try{resources=await store.listResources(ApiResourceKind.mcp_server)}catch(error2){throw internalError(error2,"failed to list MCP servers for referential integrity check")}for(let data of resources){let mcp;try{mcp=fromBinary2(McpServerSchema,data)}catch(error2){logger2.warn("failed to unmarshal MCP server during referential integrity check, skipping",{error:error2 instanceof Error?error2.message:String(error2)});continue}let ref=mcp.spec?.auth?.oauthAppRef;if(ref===void 0)continue;let resolved;try{resolved=await resolveOAuthAppRef(store,ref,logger2)}catch(error2){throw internalError(error2,"failed to resolve oauth_app_ref during referential integrity check")}if(resolved!==void 0&&(resolved.metadata?.id??"")===(existing.metadata?.id??""))throw failedPreconditionError(deleteBlockedByMcpServerMessage(existing.metadata?.org??"",existing.metadata?.slug??"",mcp.metadata?.name??""))}}}}function registerOAuthAppServices(router,deps){router.service(OAuthAppCommandController,{apply:(app,ctx)=>apply9(deps,app,ctx),create:(app,ctx)=>createOAuthApp(deps,app,ctx),update:(app,ctx)=>update12(deps,app,ctx),delete:(input,ctx)=>deleteOAuthApp(deps,input,ctx)}),router.service(OAuthAppQueryController,{get:(id,ctx)=>get16(deps,id,ctx),getByReference:(ref,ctx)=>getByReference9(deps,ref,ctx),listByOrg:(req,ctx)=>listByOrg2(deps,req,ctx)})}function kindOf15(ctx){return ctx.values.get(apiResourceKindKey)}async function createOAuthApp(deps,app,ctx){let reqCtx=new RequestContext(OAuthAppSchema,app,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-create",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newEncryptClientSecretForCreateStep(deps.secretService,deps.logger)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx);let result=reqCtx.newState;return redactOAuthApp(result),result}async function update12(deps,app,ctx){let reqCtx=new RequestContext(OAuthAppSchema,app,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-update",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newEncryptClientSecretForUpdateStep(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).build().execute(reqCtx);let result=reqCtx.newState;return redactOAuthApp(result),result}async function apply9(deps,app,ctx){let reqCtx=new RequestContext(OAuthAppSchema,app,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-apply",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createOAuthApp(deps,app,ctx):update12(deps,withResolvedApplyId(OAuthAppSchema,app,reqCtx),ctx)}async function deleteOAuthApp(deps,input,ctx){let reqCtx=new RequestContext(OAuthAppCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf15(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("oauthapp-delete",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,OAuthAppSchema)).addStep(newCheckNoReferencingMcpServersStep(deps.store,deps.logger)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDestroySecretBackingStateStep(deps.secretService,deps.logger,app2=>app2.spec===void 0?[]:[app2.spec.clientSecret])).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted OAuthApp not found in context"),"deleted OAuthApp not found in context");let app=deleted;return redactOAuthApp(app),app}async function get16(deps,id,ctx){let reqCtx=new RequestContext(OAuthAppQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-get",deps.logger).addStep(newAuthorizeStep(OAuthAppQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,OAuthAppSchema)).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactOAuthApp(app),app}async function getByReference9(deps,ref,ctx){let reqCtx=new RequestContext(OAuthAppQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-get-by-reference",deps.logger).addStep(newAuthorizeStep(OAuthAppQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,OAuthAppSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(OAuthAppQueryController.method.get))).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactOAuthApp(app),app}var LIST_RESULT_KEY7="listResult";async function listByOrg2(deps,req,ctx){let reqCtx=new RequestContext(OAuthAppQueryController.method.listByOrg.input,req,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-list-by-org",deps.logger).addStep(newAuthorizeStep(OAuthAppQueryController.method.listByOrg,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListByOrgStep2(deps.store,deps.listReadScope,deps.logger)).build().execute(reqCtx);let list12=reqCtx.get(LIST_RESULT_KEY7);if(list12===void 0)throw internalError(new Error("list result missing from pipeline context"),"OAuthApp list not found in context");return list12}function newListByOrgStep2(store,listReadScope,logger2){return{name:"ListByOrg",async execute(ctx){let org=ctx.input.org,resources;try{resources=await store.listResources(ApiResourceKind.oauth_app)}catch(error2){throw internalError(error2,"failed to list OAuthApps")}let requested=[];for(let data of resources){let app;try{app=fromBinary2(OAuthAppSchema,data)}catch(error2){logger2.warn("failed to unmarshal OAuthApp, skipping",{error:error2 instanceof Error?error2.message:String(error2)});continue}(app.metadata?.org??"")===org&&requested.push(app)}let apps=await restrictListByReadScope(listReadScope,ctx.callerIdentity,ApiResourceKind.oauth_app,requested,"");for(let app of apps)redactOAuthApp(app);apps.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),logger2.info("listed OAuthApps by organization",{org,matchCount:apps.length}),ctx.set(LIST_RESULT_KEY7,create2(OAuthAppsSchema,{entries:apps}))}}}var file_ai_stigmer_iam_platformclient_v1_io=fileDesc("CilhaS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS9pby5wcm90bxIgYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEiLAoQUGxhdGZvcm1DbGllbnRJZBIYCgV2YWx1ZRgBIAEoCUIJukgGcgQQARhAIlQKD1BsYXRmb3JtQ2xpZW50cxJBCgdlbnRyaWVzGAEgAygLMjAuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnQiNQodTGlzdFBsYXRmb3JtQ2xpZW50c0J5T3JnSW5wdXQSFAoDb3JnGAEgASgJQge6SARyAhABIoABChxQbGF0Zm9ybUNsaWVudENyZWF0ZVJlc3BvbnNlEkkKD3BsYXRmb3JtX2NsaWVudBgBIAEoCzIwLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50EhUKDWNsaWVudF9zZWNyZXQYAiABKAliBnByb3RvMw",[file_ai_stigmer_iam_platformclient_v1_api,file_buf_validate_validate]);var PlatformClientsSchema=messageDesc2(file_ai_stigmer_iam_platformclient_v1_io,1);var PlatformClientCreateResponseSchema=messageDesc2(file_ai_stigmer_iam_platformclient_v1_io,3);var file_ai_stigmer_iam_platformclient_v1_command=fileDesc("Ci5haS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS9jb21tYW5kLnByb3RvEiBhaS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MTKgBgofUGxhdGZvcm1DbGllbnRDb21tYW5kQ29udHJvbGxlchLPAQoGY3JlYXRlEjAuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnQaPi5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5QbGF0Zm9ybUNsaWVudENyZWF0ZVJlc3BvbnNlIlPCuBhPCBgQHiIMbWV0YWRhdGEub3JnKjt1bmF1dGhvcml6ZWQgdG8gY3JlYXRlIHBsYXRmb3JtIGNsaWVudCBpbiB0aGlzIG9yZ2FuaXphdGlvbhKrAQoGdXBkYXRlEjAuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnQaMC5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5QbGF0Zm9ybUNsaWVudCI9wrgYOQgCEBciC21ldGFkYXRhLmlkKiZ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHBsYXRmb3JtIGNsaWVudBKxAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaMC5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5QbGF0Zm9ybUNsaWVudCI9wrgYOQgDEBciC3Jlc291cmNlX2lkKiZ1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIHBsYXRmb3JtIGNsaWVudBLCAQoMcm90YXRlU2VjcmV0EjIuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnRJZBo+LmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50Q3JlYXRlUmVzcG9uc2UiPsK4GDoIAhAXIgV2YWx1ZSotdW5hdXRob3JpemVkIHRvIHJvdGF0ZSBwbGF0Zm9ybSBjbGllbnQgc2VjcmV0GgSg/ysXYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_platformclient_v1_api,file_ai_stigmer_iam_platformclient_v1_io]),PlatformClientCommandController=serviceDesc(file_ai_stigmer_iam_platformclient_v1_command,0);var file_ai_stigmer_iam_platformclient_v1_query=fileDesc("CixhaS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS9xdWVyeS5wcm90bxIgYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEykgQKHVBsYXRmb3JtQ2xpZW50UXVlcnlDb250cm9sbGVyEp0BCgNnZXQSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBowLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50IjXCuBgxCAEQFyIFdmFsdWUqJHVuYXV0aG9yaXplZCB0byB2aWV3IHBsYXRmb3JtIGNsaWVudBJ+Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRowLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50IgTQuBgBEsoBCglsaXN0QnlPcmcSPy5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5MaXN0UGxhdGZvcm1DbGllbnRzQnlPcmdJbnB1dBoxLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50cyJJwrgYRQgBEB4iA29yZyo6dW5hdXRob3JpemVkIHRvIGxpc3QgcGxhdGZvcm0gY2xpZW50cyBpbiB0aGlzIG9yZ2FuaXphdGlvbhoEoP8rF2IGcHJvdG8z",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_platformclient_v1_api,file_ai_stigmer_iam_platformclient_v1_io]),PlatformClientQueryController=serviceDesc(file_ai_stigmer_iam_platformclient_v1_query,0);var import_node_crypto21=require("node:crypto"),CLIENT_ID_PREFIX="stgm_cid_",CLIENT_SECRET_PREFIX="stgm_cs_",CLIENT_ID_BYTES=32,CLIENT_SECRET_BYTES=48,SECRET_FINGERPRINT_LENGTH=6;function generateClientId(){return CLIENT_ID_PREFIX+(0,import_node_crypto21.randomBytes)(CLIENT_ID_BYTES).toString("base64url")}function generateClientSecret(){return CLIENT_SECRET_PREFIX+(0,import_node_crypto21.randomBytes)(CLIENT_SECRET_BYTES).toString("base64url")}function hashClientSecret(secret){return(0,import_node_crypto21.createHash)("sha256").update(secret,"utf8").digest("base64url")}function secretFingerprint(secret){return secret.length<=SECRET_FINGERPRINT_LENGTH?secret:secret.slice(-SECRET_FINGERPRINT_LENGTH)}function secretMatchesHash(secret,storedHash){if(storedHash==="")return!1;let presented=Buffer.from(hashClientSecret(secret),"utf8"),stored=Buffer.from(storedHash,"utf8");return presented.length===stored.length&&(0,import_node_crypto21.timingSafeEqual)(presented,stored)}var DuplicatePlatformClientError=class extends Error{constructor(message6,options){super(message6,options),this.name="DuplicatePlatformClientError"}};var CLIENT_SECRET_PLAINTEXT_KEY="platformClientSecretPlaintext";function redactPlatformClient(client){return client.spec!==void 0&&(client.spec.clientSecretHash=""),client}function parkedClientSecret(ctx){let secret=ctx.get(CLIENT_SECRET_PLAINTEXT_KEY);if(typeof secret!="string"||secret==="")throw internalError(new Error("no client secret parked \u2014 a credential step must run first"),"platform client credentials");return secret}function newRefuseReservedSlugStep(){return{name:"RefuseReservedSlug",execute(ctx){let slug=metadataOf(ctx.newState)?.slug??"";if(RESERVED_PLATFORM_CLIENT_SLUGS.has(slug))throw invalidArgumentError(reservedSlugMessage(slug))}}}function newCheckDuplicateStep3(clients){return{name:"CheckDuplicate",async execute(ctx){let metadata=requireMetadata2(ctx,"duplicate check"),existing=await clients.findByOrgAndSlug(metadata.org,metadata.slug);if(existing!==void 0)throw alreadyExistsError(PLATFORM_CLIENT_KIND_NAME,`slug '${metadata.slug}' in org '${metadata.org}' (id: ${existing.metadata?.id??""})`)}}}function newGenerateClientCredentialsStep(){return{name:"GenerateClientCredentials",execute(ctx){let spec=specOf3(ctx.newState),secret=generateClientSecret();spec.clientId=generateClientId(),spec.clientSecretHash=hashClientSecret(secret),spec.secretFingerprint=secretFingerprint(secret),ctx.set(CLIENT_SECRET_PLAINTEXT_KEY,secret)}}}function newPersistNewClientStep(clients){return{name:"Persist",async execute(ctx){try{await clients.save(ctx.newState)}catch(error2){if(error2 instanceof DuplicatePlatformClientError){let metadata=requireMetadata2(ctx,"persist");throw alreadyExistsError(PLATFORM_CLIENT_KIND_NAME,`slug '${metadata.slug}' in org '${metadata.org}'`)}throw internalError(error2,"failed to save platform client")}}}}function newLoadExistingClientStep(clients){return{name:"LoadExisting",async execute(ctx){let metadata=requireMetadata2(ctx,"load existing"),existing;if(metadata.id!==""){if(existing=await clients.findById(metadata.id),existing===void 0)throw notFoundError(PLATFORM_CLIENT_KIND_NAME,metadata.id)}else if(metadata.slug!==""){if(existing=await clients.findByOrgAndSlug(metadata.org,metadata.slug),existing===void 0)throw notFoundError(PLATFORM_CLIENT_KIND_NAME,metadata.slug);metadata.id=existing.metadata?.id??""}else throw invalidArgumentError("resource id or slug is required for update");ctx.set(EXISTING_RESOURCE_KEY,existing)}}}function newPreserveClientCredentialsStep(){return{name:"PreserveClientCredentials",execute(ctx){let existing=storedClientOf(ctx,EXISTING_RESOURCE_KEY),spec=specOf3(ctx.newState);spec.clientId=existing.spec?.clientId??"",spec.clientSecretHash=existing.spec?.clientSecretHash??"",spec.secretFingerprint=existing.spec?.secretFingerprint??""}}}function newPersistUpdatedClientStep(clients){return{name:"Persist",async execute(ctx){try{await clients.update(ctx.newState)}catch(error2){throw internalError(error2,"failed to save platform client")}}}}function newRefuseSystemManagedStep(verb,key){return{name:"RefuseSystemManaged",execute(ctx){if(storedClientOf(ctx,key).metadata?.labels[SYSTEM_MANAGED_LABEL]===RESERVED_LABEL_TRUE)throw failedPreconditionError(systemManagedMessage(verb))}}}function newLoadTargetClientStep(clients){return{name:"LoadTarget",async execute(ctx){let id=idValueOf(ctx.input);if(id==="")throw invalidArgumentError("resource id is required");ctx.set(TARGET_RESOURCE_KEY,await readClient(clients,id))}}}function newLoadClientByReferenceStep(clients){return{name:"LoadByReference",async execute(ctx){let ref=ctx.input;if(ref.slug==="")throw invalidArgumentError("slug is required in reference");if(ref.kind!==ApiResourceKind.api_resource_kind_unknown&&ref.kind!==ApiResourceKind.platform_client)throw invalidArgumentError(`kind mismatch: expected platform_client, got ${ApiResourceKind[ref.kind]??String(ref.kind)}`);requireOrgForReference(ApiResourceKind.platform_client,ref.org);let client=await clients.findByOrgAndSlug(ref.org,ref.slug);if(client===void 0)throw new ConnectError(referenceNotFoundMessage(ref.org,ref.slug),Code.NotFound);ctx.set(TARGET_RESOURCE_KEY,client)}}}function newRotateClientCredentialsStep(){return{name:"RotateClientCredentials",execute(ctx){let client=storedClientOf(ctx,TARGET_RESOURCE_KEY),spec=specOf3(client),secret=generateClientSecret();spec.clientSecretHash=hashClientSecret(secret),spec.secretFingerprint=secretFingerprint(secret),updateAuditFields(PlatformClientSchema,client,client,ctx.callerIdentity),ctx.set(CLIENT_SECRET_PLAINTEXT_KEY,secret)}}}function newPersistTargetClientStep(clients){return{name:"Persist",async execute(ctx){try{await clients.update(storedClientOf(ctx,TARGET_RESOURCE_KEY))}catch(error2){throw internalError(error2,"failed to save platform client")}}}}function newLoadExistingClientForDeleteStep(clients){return{name:"LoadExistingForDelete",async execute(ctx){ctx.set(EXISTING_RESOURCE_KEY,await readClient(clients,requireResourceId3(ctx)))}}}function newDeleteClientStep(clients){return{name:"DeleteResource",async execute(ctx){try{await clients.deleteById(requireResourceId3(ctx))}catch(error2){throw internalError(error2,"failed to delete platform client")}}}}async function readClient(clients,id){let client=await clients.findById(id);if(client===void 0)throw notFoundError(PLATFORM_CLIENT_KIND_NAME,id);return client}function storedClientOf(ctx,key){let client=ctx.get(key);if(client===void 0)throw internalError(new Error(`no platform client under '${key}' \u2014 its load step must run first`),"platform client chain ordering");return client}function requireMetadata2(ctx,operation2){let metadata=metadataOf(ctx.newState);if(metadata===void 0)throw internalError(new Error("platform client metadata is nil"),operation2);return metadata}function specOf3(client){return client.spec===void 0&&(client.spec=create2(PlatformClientSpecSchema)),client.spec}function requireResourceId3(ctx){let id=ctx.get(RESOURCE_ID_KEY);if(typeof id!="string"||id==="")throw internalError(new Error("resource id not found in context (the delete handler sets it)"),"platform client delete ordering");return id}function registerPlatformClientServices(router,deps){router.service(PlatformClientCommandController,{create:(client,ctx)=>createClient2(deps,client,ctx),update:(client,ctx)=>updateClient(deps,client,ctx),delete:(input,ctx)=>deleteClient(deps,input,ctx),rotateSecret:(id,ctx)=>rotateSecret(deps,id,ctx)}),router.service(PlatformClientQueryController,{get:(id,ctx)=>get17(deps,id,ctx),getByReference:(ref,ctx)=>getByReference10(deps,ref,ctx),listByOrg:(input,ctx)=>listByOrg3(deps,input,ctx)})}function kindOf16(ctx){return ctx.values.get(apiResourceKindKey)}async function createClient2(deps,client,ctx){let reqCtx=new RequestContext(PlatformClientSchema,client,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-create",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newRefuseReservedSlugStep()).addStep(newCheckDuplicateStep3(deps.clients)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newGenerateClientCredentialsStep()).addStep(newPersistNewClientStep(deps.clients)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),create2(PlatformClientCreateResponseSchema,{platformClient:redactPlatformClient(reqCtx.newState),clientSecret:parkedClientSecret(reqCtx)})}async function updateClient(deps,client,ctx){let reqCtx=new RequestContext(PlatformClientSchema,client,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-update",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingClientStep(deps.clients)).addStep(newRefuseSystemManagedStep("updated",EXISTING_RESOURCE_KEY)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPreserveClientCredentialsStep()).addStep(newPersistUpdatedClientStep(deps.clients)).build().execute(reqCtx),redactPlatformClient(reqCtx.newState)}async function deleteClient(deps,input,ctx){let reqCtx=new RequestContext(PlatformClientCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf16(ctx));return reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("platformclient-delete",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingClientForDeleteStep(deps.clients)).addStep(newRefuseSystemManagedStep("deleted",EXISTING_RESOURCE_KEY)).addStep(newDeleteClientStep(deps.clients)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),redactPlatformClient(storedClientOf(reqCtx,EXISTING_RESOURCE_KEY))}async function rotateSecret(deps,id,ctx){let reqCtx=new RequestContext(PlatformClientCommandController.method.rotateSecret.input,id,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-rotate-secret",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.rotateSecret,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetClientStep(deps.clients)).addStep(newRefuseSystemManagedStep("rotated",TARGET_RESOURCE_KEY)).addStep(newRotateClientCredentialsStep()).addStep(newPersistTargetClientStep(deps.clients)).build().execute(reqCtx),create2(PlatformClientCreateResponseSchema,{platformClient:redactPlatformClient(storedClientOf(reqCtx,TARGET_RESOURCE_KEY)),clientSecret:parkedClientSecret(reqCtx)})}async function get17(deps,id,ctx){let reqCtx=new RequestContext(PlatformClientQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-get",deps.logger).addStep(newAuthorizeStep(PlatformClientQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetClientStep(deps.clients)).build().execute(reqCtx),redactPlatformClient(storedClientOf(reqCtx,TARGET_RESOURCE_KEY))}async function getByReference10(deps,ref,ctx){let reqCtx=new RequestContext(PlatformClientQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-get-by-reference",deps.logger).addStep(newAuthorizeStep(PlatformClientQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadClientByReferenceStep(deps.clients)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(PlatformClientQueryController.method.get))).build().execute(reqCtx),redactPlatformClient(storedClientOf(reqCtx,TARGET_RESOURCE_KEY))}async function listByOrg3(deps,input,ctx){let caller=callerIdentityOf(ctx),reqCtx=new RequestContext(PlatformClientQueryController.method.listByOrg.input,input,caller,kindOf16(ctx));await newPipeline("platformclient-list-by-org",deps.logger).addStep(newAuthorizeStep(PlatformClientQueryController.method.listByOrg,deps.authorizer)).addStep(newValidateProtoStep()).build().execute(reqCtx);let candidates;try{candidates=await deps.clients.findByOrg(input.org)}catch(error2){throw internalError(error2,"failed to list platform clients")}let entries=[...await restrictListByReadScope(deps.listReadScope,caller,ApiResourceKind.platform_client,candidates,input.org)].sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)).map(redactPlatformClient);return create2(PlatformClientsSchema,{entries})}var OPAQUE_ORIGIN="null";function newPlatformClientOriginGuard(deps){return{name:"platform-client-origin",async guard(caller,method,headers2){let origin=headers2.get("origin")??"";if(origin.trim()==="")return;let platformClientId=mintingClientOf(caller);if(platformClientId===void 0)return;let procedure=`/${method.parent.typeName}/${method.name}`,client=await deps.clients.findById(platformClientId);if(client===void 0)throw new ConnectError(DELETED_CLIENT_MESSAGE,Code.Unauthenticated);if(!originAllowed(origin,client.spec?.allowedOrigins??[]))throw deps.logger.warn("origin refusal: origin not in allowed_origins",{procedure,platformClientId,origin}),new ConnectError(originRefusalMessage(origin),Code.PermissionDenied)}}}function mintingClientOf(caller){let payload=decodeVerifiedPlatformTokenPayload(caller.rawToken);if(!(payload===void 0||stringClaim(payload,TOKEN_TYPE_CLAIM)!==void 0))return stringClaim(payload,USER_TOKEN_CLAIMS.platformClientId)}function originAllowed(origin,allowed){if(allowed.length===0)return!0;if(origin===OPAQUE_ORIGIN)return!1;let presented=origin.toLowerCase();return allowed.some(entry=>entry.toLowerCase()===presented)}var KIND5=ApiResourceKind.platform_client;function newResourcePlatformClientStore(store){async function readById(id){try{return await store.getResource(KIND5,id,PlatformClientSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}async function readByClientId(clientId){if(clientId!=="")try{return await store.findByField(KIND5,"spec.clientId",clientId,PlatformClientSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}async function listOrg(org){let clients=[];for(let data of await store.listResources(KIND5)){let client;try{client=fromBinary2(PlatformClientSchema,data)}catch{continue}(client.metadata?.org??"")===org&&clients.push(client)}return clients}async function readByOrgAndSlug(org,slug){if(!(org===""||slug===""))return(await listOrg(org)).find(client=>(client.metadata?.slug??"")===slug)}return{async save(client){let id=client.metadata?.id??"",org=client.metadata?.org??"",slug=client.metadata?.slug??"";if(await readById(id)!==void 0)throw new DuplicatePlatformClientError(`platform client '${id}' already exists`);if(await readByOrgAndSlug(org,slug)!==void 0)throw new DuplicatePlatformClientError(`platform client '${org}/${slug}' already exists`);if(await readByClientId(client.spec?.clientId??"")!==void 0)throw new DuplicatePlatformClientError("a platform client already holds this client_id");await store.saveResource(KIND5,id,PlatformClientSchema,client)},async update(client){let id=client.metadata?.id??"";await readById(id)!==void 0&&await store.saveResource(KIND5,id,PlatformClientSchema,client)},async modifyById(id,modify){try{return await store.updateResource(KIND5,id,PlatformClientSchema,modify)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}},async deleteById(id){await store.deleteResource(KIND5,id)},findById:readById,findByClientId:readByClientId,findByOrgAndSlug:readByOrgAndSlug,findByOrg:listOrg}}var file_ai_stigmer_iam_platformclient_v1_token=fileDesc("CixhaS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS90b2tlbi5wcm90bxIgYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEiugEKFE1pbnRVc2VyVG9rZW5SZXF1ZXN0EhoKCWNsaWVudF9pZBgBIAEoCUIHukgEcgIQARIeCg1jbGllbnRfc2VjcmV0GAIgASgJQge6SARyAhABEhsKB3VzZXJfaWQYAyABKAlCCrpIB3IFEAEYgAISHAoKdXNlcl9lbWFpbBgEIAEoCUIIukgFcgMYwAISGwoJdXNlcl9uYW1lGAUgASgJQgi6SAVyAxiAAhIOCgZvcmdfaWQYBiABKAkiVQoVTWludFVzZXJUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgp0b2tlbl90eXBlGAIgASgJEhIKCmV4cGlyZXNfaW4YAyABKAUiyQMKFU1pbnRHdWVzdFRva2VuUmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAESFQoEc2x1ZxgCIAEoCUIHukgEcgIQARIXCg9ndWVzdF9jb29raWVfaWQYAyABKAkSywIKDGVtYmVkX29yaWdpbhgEIAEoCUK0ArpIsAK6AawCChNlbWJlZF9vcmlnaW4uZm9ybWF0EndlbWJlZF9vcmlnaW4gbXVzdCBiZSBlbXB0eSwgIm51bGwiLCBvciBhbiBleGFjdCB3ZWIgb3JpZ2luIGxpa2UgaHR0cHM6Ly9leGFtcGxlLmNvbSAobm8gcGF0aCwgcXVlcnksIG9yIHRyYWlsaW5nIHNsYXNoKRqbAXRoaXMgPT0gJycgfHwgdGhpcyA9PSAnbnVsbCcgfHwgdGhpcy5tYXRjaGVzKCdeaHR0cHM/Oi8vW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKT8oXFwuW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKT8pKig6WzAtOV17MSw1fSk/JCcpEhwKCmxpbmtfdG9rZW4YBSABKAlCCLpIBXIDGIABIm8KFk1pbnRHdWVzdFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnRva2VuX3R5cGUYAiABKAkSEgoKZXhwaXJlc19pbhgDIAEoBRIXCg9ndWVzdF9jb29raWVfaWQYBCABKAkytAIKHVBsYXRmb3JtQ2xpZW50VG9rZW5Db250cm9sbGVyEoYBCg1taW50VXNlclRva2VuEjYuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuTWludFVzZXJUb2tlblJlcXVlc3QaNy5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5NaW50VXNlclRva2VuUmVzcG9uc2UiBMi4GAESiQEKDm1pbnRHdWVzdFRva2VuEjcuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuTWludEd1ZXN0VG9rZW5SZXF1ZXN0GjguYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuTWludEd1ZXN0VG9rZW5SZXNwb25zZSIEyLgYAWIGcHJvdG8z",[file_ai_stigmer_commons_rpc_method_options,file_buf_validate_validate]);var MintUserTokenResponseSchema=messageDesc2(file_ai_stigmer_iam_platformclient_v1_token,1);var PlatformClientTokenController=serviceDesc(file_ai_stigmer_iam_platformclient_v1_token,0);var import_node_crypto22=require("node:crypto");var PLATFORM_TOKEN_KEY_ENV_VAR="STIGMER_PLATFORM_TOKEN_KEY",PLATFORM_TOKEN_KEY_FILE_NAME="platform-token.key",DEFAULT_PLATFORM_TOKEN_TTL_SECONDS=900,MIN_RSA_MODULUS_BITS=2048;function canSign(ring){return ring.signer!==void 0}function resolvePlatformTokenKeys(input){if(input.requireAuthentication){if(input.supplied!==void 0)return input.supplied;if(input.edition!==ServerEdition.oss)throw new Error(`the ${ServerEdition[input.edition]} edition requires authentication but registers no platform-token key ring \u2014 register drivers.platformTokenKeys; only open source generates its own key`);return openSourcePlatformTokenKeyRing(input.options)}}function openSourcePlatformTokenKeyRing(options={}){let privateKey=getOrCreateKey(RSA_PRIVATE_KEY,PLATFORM_TOKEN_KEY_ENV_VAR,PLATFORM_TOKEN_KEY_FILE_NAME,options);return{signer:{key:privateKey,kid:kidOf(privateKey)},verificationKeys:[(0,import_node_crypto22.createPublicKey)(privateKey)],audience:"",ttlSeconds:DEFAULT_PLATFORM_TOKEN_TTL_SECONDS}}var RSA_PRIVATE_KEY={fromEnv(envVar,decoded){let key=parseKey2(()=>(0,import_node_crypto22.createPrivateKey)(decoded.toString("utf8")),envVar);return requireRsa(key,envVar)},fromFile(content){try{let key=(0,import_node_crypto22.createPrivateKey)(content.toString("utf8"));return isUsableRsa(key)?key:void 0}catch{return}},generate(){return(0,import_node_crypto22.generateKeyPairSync)("rsa",{modulusLength:MIN_RSA_MODULUS_BITS}).privateKey},toFile(key){return Buffer.from(key.export({format:"pem",type:"pkcs8"}))}};function kidOf(key){let publicKey=key.type==="private"?(0,import_node_crypto22.createPublicKey)(key):key;return(0,import_node_crypto22.createHash)("sha256").update(spkiOf(publicKey)).digest("base64url").slice(0,16)}function spkiOf(publicKey){return publicKey.export({format:"der",type:"spki"})}function parseKey2(parse5,what){try{return parse5()}catch(error2){throw new Error(`${what} is not a readable PEM key: ${error2 instanceof Error?error2.message:String(error2)}`)}}function requireRsa(key,what){if(!isUsableRsa(key))throw new Error(`${what} must be an RSA key of at least ${MIN_RSA_MODULUS_BITS} bits`);return key}function isUsableRsa(key){return key.asymmetricKeyType==="rsa"&&(key.asymmetricKeyDetails?.modulusLength??0)>=MIN_RSA_MODULUS_BITS}var SUBJECT_SEPARATOR="|",DEFAULT_AUTO_GRANT_ROLE=IamRole.viewer;async function mintUserToken(deps,request){let keys=deps.keys;if(keys===void 0)throw new ConnectError(MINTING_REQUIRES_AUTHENTICATION_MESSAGE,Code.FailedPrecondition);if(!canSign(keys))throw new ConnectError(MINTING_DISABLED_MESSAGE,Code.FailedPrecondition);let client=await authenticateClient(deps,request),owningOrg=client.metadata?.org??"";if(request.orgId!==""&&request.orgId!==owningOrg)throw new ConnectError(organizationMismatchMessage(owningOrg),Code.InvalidArgument);let user={externalUserId:request.userId,email:request.userEmail,name:request.userName},accountId=await resolveOrProvisionAccount(deps,client,owningOrg,user),now=deps.now(),signed=signPlatformToken(keys,{[USER_TOKEN_CLAIMS.subject]:accountId,[USER_TOKEN_CLAIMS.externalUserId]:user.externalUserId,[USER_TOKEN_CLAIMS.email]:user.email,[USER_TOKEN_CLAIMS.name]:user.name,[USER_TOKEN_CLAIMS.org]:owningOrg,[USER_TOKEN_CLAIMS.platformClientId]:client.metadata?.id??""},{now});return await recordClientUse(deps,client,now),create2(MintUserTokenResponseSchema,{accessToken:signed.token,tokenType:BEARER_TOKEN_TYPE,expiresIn:keys.ttlSeconds})}async function authenticateClient(deps,request){let client;try{client=await deps.clients.findByClientId(request.clientId)}catch(error2){throw internalError(error2,"failed to authenticate platform client")}if(client===void 0||!secretMatchesHash(request.clientSecret,client.spec?.clientSecretHash??""))throw new ConnectError(INVALID_CLIENT_CREDENTIALS_MESSAGE,Code.Unauthenticated);let spec=client.spec;if(spec?.neverExpires!==!0&&spec?.expiresAt!==void 0&&deps.now().getTime()>timestampDate(spec.expiresAt).getTime())throw new ConnectError(EXPIRED_CLIENT_SECRET_MESSAGE,Code.FailedPrecondition);return client}function recordClientUse(deps,client,now){let id=client.metadata?.id??"";return recordCredentialUse({credential:"platform client",id,lastUsedAt:client.status?.lastUsedAt,now,logger:deps.logger,write:stamp2=>deps.clients.modifyById(id,live=>{live.status??=create2(PlatformClientStatusSchema),stamp2(live.status)})})}async function resolveOrProvisionAccount(deps,client,org,user){let idpId=platformClientSubject(org,user.externalUserId),existing=await findAccount(deps,idpId);if(existing!==void 0)return platformClientAccountId(existing,user,org);let spec=client.spec;if(spec?.autoProvisionAccounts!==!0)throw new ConnectError(noAccountMessage(user.externalUserId,org),Code.FailedPrecondition);let input=accountInput(idpId,org,user),actor=serverActingFor(client.metadata?.id??"");spec.autoGrantOnOrg&&await grantAutoRole(deps,client,org,accountIdFor(idpId),actor);try{return(await deps.createAccount(input,actor)).metadata?.id??""}catch(error2){let winner=await resolveCreateRace(error2,()=>deps.accounts.findByIdpId(idpId));return platformClientAccountId(winner,user,org)}}async function findAccount(deps,idpId){try{return await deps.accounts.findByIdpId(idpId)}catch(error2){throw internalError(error2,"failed to resolve platform client user")}}function platformClientAccountId(account2,user,org){if(account2.spec?.provisioningMode!==IdentityAccountProvisioningMode.platform_client)throw new ConnectError(foreignAccountMessage(user.externalUserId,org),Code.FailedPrecondition);return account2.metadata?.id??""}function accountInput(idpId,org,user){let input={name:user.email!==""?user.email:user.externalUserId,spec:create2(IdentityAccountSpecSchema,{idpId,email:user.email,...splitName(user.name,user.email)}),provisioning:{mode:"platform_client",org}},result=validator().validate(IdentityAccountSchema,create2(IdentityAccountSchema,{apiVersion:"iam.stigmer.ai/v1",kind:"IdentityAccount",metadata:{name:input.name,org},spec:input.spec}));if(result.kind==="invalid")throw new ConnectError(result.error.message,Code.InvalidArgument);if(result.kind==="error")throw new ConnectError(`validation could not run: ${result.error.message}`,Code.Internal);return input}async function grantAutoRole(deps,client,org,accountId,actor){let configured=client.spec?.autoGrantRole??IamRole.iam_role_unspecified;if(configured===IamRole.owner)throw new ConnectError(OWNER_AUTO_GRANT_MESSAGE,Code.InvalidArgument);let role=configured===IamRole.iam_role_unspecified?DEFAULT_AUTO_GRANT_ROLE:configured;try{await deps.grantPath.grant(organizationRole(accountId,role,org),actor)}catch(error2){throw deps.logger.error("platform client auto-grant failed; nothing was provisioned",{accountId,platformClientId:client.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)}),new ConnectError(PROVISIONING_FAILED_MESSAGE,Code.Internal)}}function platformClientSubject(org,externalUserId){return requireSubjectPart("org",org),requireSubjectPart("externalUserId",externalUserId),`${PLATFORM_CLIENT_SUBJECT_PREFIX}${org}${SUBJECT_SEPARATOR}${externalUserId}`}function requireSubjectPart(part,value){if(value.trim()==="")throw new ConnectError(blankSubjectPartMessage(part),Code.InvalidArgument);if(value.includes(SUBJECT_SEPARATOR))throw new ConnectError(subjectSeparatorMessage(part,value),Code.InvalidArgument)}function splitName(name,email){if(name!==""){let space=name.indexOf(" ");return space>0?{firstName:name.slice(0,space),lastName:name.slice(space+1)}:{firstName:name,lastName:""}}let at2=email.indexOf("@");return{firstName:at2>=0?email.slice(0,at2):email,lastName:""}}function registerPlatformClientTokenService(router,deps){router.service(PlatformClientTokenController,{mintUserToken:request=>mintUserToken(deps.mint,request),mintGuestToken:(request,ctx)=>{if(deps.guestTokenMinting===void 0)throw new ConnectError(GUEST_MINT_UNIMPLEMENTED_MESSAGE,Code.Unimplemented);return deps.guestTokenMinting.mintGuestToken(request,ctx.requestHeader)}})}function newPlatformClientTokenVerifier(deps){return{name:"platform-client",async verify(token){let result=verifyPlatformToken(deps.keys,token,deps.now?.());switch(result.outcome){case"foreign":return null;case"refused":throw platformTokenRefusalError(result.refusal);case"verified":break;default:{let exhaustive=result;throw new Error(`unknown verification ${JSON.stringify(exhaustive)}`)}}let verified=result.token;if(verified.tokenType!==void 0)return null;let platformClientId=stringClaim(verified.payload,USER_TOKEN_CLAIMS.platformClientId);if(platformClientId===void 0)throw new ConnectError(TOKEN_NAMES_NO_CLIENT_MESSAGE,Code.Unauthenticated);if(await deps.clients.findById(platformClientId)===void 0)throw new ConnectError(DELETED_CLIENT_MESSAGE,Code.Unauthenticated);let email=stringClaim(verified.payload,USER_TOKEN_CLAIMS.email),displayName=stringClaim(verified.payload,USER_TOKEN_CLAIMS.name);return{identityId:verified.subject,callerClass:"user",issuer:PLATFORM_TOKEN_ISSUER,rawToken:token,...email!==void 0?{email}:{},...displayName!==void 0?{displayName}:{},platformClientId}}}}var file_ai_stigmer_tenancy_organization_v1_io=fileDesc("CithaS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL2lvLnByb3RvEiJhaS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxIlIKDU9yZ2FuaXphdGlvbnMSQQoHZW50cmllcxgBIAMoCzIwLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uImoKEE9yZ2FuaXphdGlvbkxpc3QSEwoLdG90YWxfcGFnZXMYASABKAUSQQoHZW50cmllcxgCIAMoCzIwLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uIioKDk9yZ2FuaXphdGlvbklkEhgKBXZhbHVlGAEgASgJQgm6SAZyBBABGEAimwEKGk9yZ2FuaXphdGlvbkV4dGVybmFsTG9va3VwElsKFWlkZW50aXR5X3Byb3ZpZGVyX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUIGukgDyAEBEiAKD2V4dGVybmFsX29yZ19pZBgCIAEoCUIHukgEcgIQAWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_tenancy_organization_v1_api,file_buf_validate_validate]),OrganizationsSchema=messageDesc2(file_ai_stigmer_tenancy_organization_v1_io,0),OrganizationListSchema=messageDesc2(file_ai_stigmer_tenancy_organization_v1_io,1);var file_ai_stigmer_tenancy_organization_v1_command=fileDesc("CjBhaS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL2NvbW1hbmQucHJvdG8SImFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEy2AQKHU9yZ2FuaXphdGlvbkNvbW1hbmRDb250cm9sbGVyEmsKBWFwcGx5EjAuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb24aMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbhJyCgZjcmVhdGUSMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbhowLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uIgTQuBgBEqgBCgZ1cGRhdGUSMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbhowLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uIjrCuBg2CAIQHiILbWV0YWRhdGEuaWQqI3VuYXV0aG9yaXplZCB0byB1cGRhdGUgb3JnYW5pemF0aW9uEqQBCgZkZWxldGUSMi5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbklkGjAuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb24iNMK4GDAIAxAeIgV2YWx1ZSojdW5hdXRob3JpemVkIHRvIGRlbGV0ZSBvcmdhbml6YXRpb24aBKD/Kx5iBnByb3RvMw",[file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_tenancy_organization_v1_api,file_ai_stigmer_tenancy_organization_v1_io]),OrganizationCommandController=serviceDesc(file_ai_stigmer_tenancy_organization_v1_command,0);var file_ai_stigmer_tenancy_organization_v1_query=fileDesc("Ci5haS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL3F1ZXJ5LnByb3RvEiJhaS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxMrkEChtPcmdhbml6YXRpb25RdWVyeUNvbnRyb2xsZXISnwEKA2dldBIyLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uSWQaMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbiIywrgYLggBEB4iBXZhbHVlKiF1bmF1dGhvcml6ZWQgdG8gdmlldyBvcmdhbml6YXRpb24SewoEZmluZBI3LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5GaW5kQXBpUmVzb3VyY2VzUmVxdWVzdBo0LmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uTGlzdCIE0LgYARJmChNmaW5kTXlPcmdhbml6YXRpb25zEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GjEuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb25zIgTQuBgBEowBChJnZXRCeUV4dGVybmFsT3JnSWQSPi5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbkV4dGVybmFsTG9va3VwGjAuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb24iBNC4GAEaBKD/Kx5iBnByb3RvMw",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_tenancy_organization_v1_api,file_ai_stigmer_tenancy_organization_v1_io,file_google_protobuf_empty]),OrganizationQueryController=serviceDesc(file_ai_stigmer_tenancy_organization_v1_query,0);var organizationSearchExtractor={kind:ApiResourceKind.organization,schema:OrganizationSchema,getSearchSummary(resource){return resource.spec?.description??""},toSearchResult(resource,score){let org=resource;return buildSearchResult({kind:ApiResourceKind.organization,metadata:org.metadata,summary:org.spec?.description??"",score,createdAt:org.status?.audit?.specAudit?.createdAt,updatedAt:org.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let org=resource,metadata=org.metadata;if(metadata!==void 0)return{name:metadata.name,description:org.spec?.description??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(org.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};function newCheckOrgDuplicateStep(store){return{name:"CheckDuplicate",async execute(ctx){let metadata=metadataOf(ctx.newState);if(metadata===void 0)throw internalError(new Error("organization metadata is nil"),"duplicate check");if(metadata.slug==="")throw internalError(new Error("organization slug is empty"),"duplicate check");try{await store.getResource(ctx.apiResourceKind,metadata.slug,OrganizationSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw internalError(error2,"failed to check for duplicate organization")}throw alreadyExistsError("Organization",`slug '${metadata.slug}'`)}}}function newCopySlugToIdStep(){return{name:"CopySlugToId",execute(ctx){let metadata=metadataOf(ctx.newState);if(metadata===void 0)throw internalError(new Error("organization metadata is nil"),"copy slug to id");if(metadata.slug==="")throw internalError(new Error("organization slug is empty"),"copy slug to id");metadata.id=metadata.slug}}}function newRevokeOrganizationPoliciesStep(grantPath){return{name:"RevokeOrganizationPolicies",async execute(ctx){let id=ctx.get(EXISTING_RESOURCE_KEY)?.metadata?.id??"";if(id==="")throw internalError(new Error("organization delete reached RevokeOrganizationPolicies without its loaded row"),"failed to remove the organization's access policies");try{await grantPath.cleanupResource(create2(ApiResourceRefSchema,{kind:ApiResourceKind[ApiResourceKind.organization],id}))}catch(error2){throw internalError(error2,"failed to remove the organization's access policies")}}}}function registerOrganizationServices(router,deps){router.service(OrganizationCommandController,{apply:(org,ctx)=>apply10(deps,org,ctx),create:(org,ctx)=>createOrganization(deps,org,ctx),update:(org,ctx)=>update13(deps,org,ctx),delete:(orgId,ctx)=>deleteOrganization(deps,orgId,ctx)});let externalLookup=deps.organizationDirectory?.lookupExternalOrganization?.bind(deps.organizationDirectory);router.service(OrganizationQueryController,{get:(orgId,ctx)=>get18(deps,orgId,ctx),find:(req,ctx)=>find(deps,req,ctx),findMyOrganizations:(_,ctx)=>findMyOrganizations(deps,ctx),...externalLookup===void 0?{}:{getByExternalOrgId:(lookup3,ctx)=>getByExternalOrgId(deps,externalLookup,lookup3,ctx)}})}function kindOf17(ctx){return ctx.values.get(apiResourceKindKey)}async function createOrganization(deps,org,ctx){let reqCtx=new RequestContext(OrganizationSchema,org,callerIdentityOf(ctx),kindOf17(ctx)),builder2=newPipeline("organization-create",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newCheckOrgDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newCopySlugToIdStep());for(let step of stepsForSlot(deps.gateSteps,"org-create:pre-side-effect-gate"))builder2.addStep(step);builder2.addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger));for(let step of stepsForSlot(deps.gateSteps,"org-create:post-persist"))builder2.addStep(step);return await builder2.addStep(newIndexSearchStep(deps.store,organizationSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update13(deps,org,ctx){let reqCtx=new RequestContext(OrganizationSchema,org,callerIdentityOf(ctx),kindOf17(ctx));return await newPipeline("organization-update",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistStep(deps.store)).addStep(newIndexSearchStep(deps.store,organizationSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function apply10(deps,org,ctx){let reqCtx=new RequestContext(OrganizationSchema,org,callerIdentityOf(ctx),kindOf17(ctx));await newPipeline("organization-apply",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createOrganization(deps,org,ctx):update13(deps,withResolvedApplyId(OrganizationSchema,org,reqCtx),ctx)}async function deleteOrganization(deps,orgId,ctx){let reqCtx=new RequestContext(OrganizationCommandController.method.delete.input,orgId,callerIdentityOf(ctx),kindOf17(ctx)),builder2=newPipeline("organization-delete",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,OrganizationSchema));for(let step of stepsForSlot(deps.gateSteps,"org-delete:pre-delete"))builder2.addStep(step);await builder2.addStep(newRevokeOrganizationPoliciesStep(deps.grantPath)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted organization not found in context"),"delete operation lost its loaded resource");return deleted}async function get18(deps,orgId,ctx){let reqCtx=new RequestContext(OrganizationQueryController.method.get.input,orgId,callerIdentityOf(ctx),kindOf17(ctx));return await newPipeline("organization-get",deps.logger).addStep(newAuthorizeStep(OrganizationQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,OrganizationSchema)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}var FIND_RESULT_KEY="findResult";async function find(deps,req,ctx){if(deps.organizationDirectory?.refusesEnumeration===!0)throw new ConnectError("ai.stigmer.tenancy.organization.v1.OrganizationQueryController.find is not implemented",Code.Unimplemented);let reqCtx=new RequestContext(OrganizationQueryController.method.find.input,req,callerIdentityOf(ctx),kindOf17(ctx));return await newPipeline("organization-find",deps.logger).addStep(newAuthorizeStep(OrganizationQueryController.method.find,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListAllOrganizationsStep(deps.store)).build().execute(reqCtx),reqCtx.get(FIND_RESULT_KEY)}function newListAllOrganizationsStep(store){return{name:"ListAllOrganizations",async execute(ctx){let data;try{data=await store.listResources(ctx.apiResourceKind)}catch(error2){throw internalError(error2,"failed to list organizations")}let orgs=[];for(let bytes of data)try{orgs.push(fromBinary2(OrganizationSchema,bytes))}catch{continue}let req=ctx.input,pageSize=req.pageSize,pageNumber=req.pageNumber;req.page!==void 0&&(req.page.size>0&&(pageSize=req.page.size),req.page.num>0&&(pageNumber=req.page.num)),pageSize<=0&&(pageSize=20),pageSize>100&&(pageSize=100),pageNumber<=0&&(pageNumber=1);let totalPages=Math.ceil(orgs.length/pageSize),start=(pageNumber-1)*pageSize,entries=start>=orgs.length?[]:orgs.slice(start,start+pageSize);ctx.set(FIND_RESULT_KEY,create2(OrganizationListSchema,{totalPages,entries}))}}}async function findMyOrganizations(deps,ctx){let directory=deps.organizationDirectory;if(directory!==void 0){let authorized=await directory.listMyOrganizationIds(callerIdentityOf(ctx));if(authorized!=="all"){let entries2=[];for(let id of authorized)try{entries2.push(await deps.store.getResource(ApiResourceKind.organization,id,OrganizationSchema))}catch(error2){if(error2 instanceof ResourceNotFoundError)continue;throw internalError(error2,"failed to list organizations")}return create2(OrganizationsSchema,{entries:entries2})}}let data;try{data=await deps.store.listResources(ApiResourceKind.organization)}catch(error2){throw internalError(error2,"failed to list organizations")}let entries=[];for(let bytes of data)try{entries.push(fromBinary2(OrganizationSchema,bytes))}catch{continue}return create2(OrganizationsSchema,{entries})}async function getByExternalOrgId(deps,lookup3,input,ctx){let reqCtx=new RequestContext(OrganizationQueryController.method.getByExternalOrgId.input,input,callerIdentityOf(ctx),kindOf17(ctx));if(await newPipeline("organization-get-by-external-org-id",deps.logger).addStep(newAuthorizeStep(OrganizationQueryController.method.getByExternalOrgId,deps.authorizer)).addStep(newValidateProtoStep()).build().execute(reqCtx),input.externalOrgId==="")throw invalidArgumentError("external_org_id is required");let found=await lookup3({org:input.identityProviderRef?.org??"",slug:input.identityProviderRef?.slug??""},input.externalOrgId);if(found.kind==="no-identity-provider")throw notFoundError("Organization",input.externalOrgId);await authorizeResolvedResource(deps.authorizer,reqCtx.callerIdentity,{permission:IamPermission.can_view,resourceKind:ApiResourceKind.identity_provider,resourceId:found.identityProviderId},EXTERNAL_LOOKUP_DENIED_MESSAGE);let orgId=found.organizationId;if(orgId===void 0)throw notFoundError("Organization",input.externalOrgId);try{return await deps.store.getResource(ApiResourceKind.organization,orgId,OrganizationSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("Organization",input.externalOrgId):internalError(error2,"failed to load organization")}}var EXTERNAL_LOOKUP_DENIED_MESSAGE="unauthorized to view identity provider";var file_ai_stigmer_agentic_mcpserver_v1_io=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2lvLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxIiQKC01jcFNlcnZlcklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiggIKDENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESUgoLcnVudGltZV9lbnYYAiADKAsyPS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dC5SdW50aW1lRW52RW50cnkSFAoDb3JnGAMgASgJQge6SARyAhABGmkKD1J1bnRpbWVFbnZFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25WYWx1ZToCOAEiUAoZSW5pdGlhdGVPQXV0aENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIm0KGkluaXRpYXRlT0F1dGhDb25uZWN0T3V0cHV0EhkKEWF1dGhvcml6YXRpb25fdXJsGAEgASgJEg0KBXN0YXRlGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1wcm92aWRlcl9uYW1lGAQgASgJIncKGUNvbXBsZXRlT0F1dGhDb25uZWN0SW5wdXQSHQoNbWNwX3NlcnZlcl9pZBgBIAEoCUIGukgDyAEBEiMKEmF1dGhvcml6YXRpb25fY29kZRgCIAEoCUIHukgEcgIQARIWCgVzdGF0ZRgDIAEoCUIHukgEcgIQASJkChpDb21wbGV0ZU9BdXRoQ29ubmVjdE91dHB1dBIRCgljb25uZWN0ZWQYASABKAgSFgoOdGFyZ2V0X2Vudl92YXIYAiABKAkSGwoTdG9rZW5fbGlmZXRpbWVfaGludBgDIAEoCSJNChhHZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEizwEKGUdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQSEQoJY29ubmVjdGVkGAEgASgIEh8KF2FjY2Vzc190b2tlbl9leHBpcmVzX2F0GAIgASgDEhYKDnRhcmdldF9lbnZfdmFyGAMgASgJEhMKC2F1dGhfbWV0aG9kGAQgASgJElEKEWNvbm5lY3Rpb25faGVhbHRoGAUgASgOMjYuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5PQXV0aENvbm5lY3Rpb25IZWFsdGgiSQoURGlzY29ubmVjdE9BdXRoSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEiLQoVRGlzY29ubmVjdE9BdXRoT3V0cHV0EhQKDGRpc2Nvbm5lY3RlZBgBIAEoCCKEAQoTU2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQARIaCgljbGllbnRfaWQYAyABKAlCB7pIBHICEAESHgoNY2xpZW50X3NlY3JldBgEIAEoCUIHukgEcgIQASIsChRTZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxvYXV0aF9hcHBfaWQYASABKAkiSAoTR2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQASJVChRHZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxoYXNfb3ZlcnJpZGUYASABKAgSFAoMb2F1dGhfYXBwX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCSJLChZEZWxldGVPcmdPQXV0aEFwcElucHV0EhsKC3Jlc291cmNlX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIioKF0RlbGV0ZU9yZ09BdXRoQXBwT3V0cHV0Eg8KB2RlbGV0ZWQYASABKAgq7QEKFU9BdXRoQ29ubmVjdGlvbkhlYWx0aBInCiNPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9VTlNQRUNJRklFRBAAEiMKH09BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX0hFQUxUSFkQARIpCiVPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9UT0tFTl9FWFBJUkVEEAISNQoxT0FVVEhfQ09OTkVDVElPTl9IRUFMVEhfVE9LRU5fRVhQSVJFRF9SRUZSRVNIQUJMRRADEiQKIE9BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX05PX0dSQU5UEARiBnByb3RvMw",[file_ai_stigmer_agentic_executioncontext_v1_spec,file_buf_validate_validate]);var InitiateOAuthConnectOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,3);var CompleteOAuthConnectOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,5);var GetOAuthGrantStatusOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,7);var DisconnectOAuthOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,9);var OAuthConnectionHealth;(function(OAuthConnectionHealth2){OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_UNSPECIFIED=0]="OAUTH_CONNECTION_HEALTH_UNSPECIFIED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_HEALTHY=1]="OAUTH_CONNECTION_HEALTH_HEALTHY",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED=2]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE=3]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_NO_GRANT=4]="OAUTH_CONNECTION_HEALTH_NO_GRANT"})(OAuthConnectionHealth||(OAuthConnectionHealth={}));var file_ai_stigmer_agentic_mcpserver_v1_command=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2NvbW1hbmQucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEynREKGk1jcFNlcnZlckNvbW1hbmRDb250cm9sbGVyEl8KBWFwcGx5EiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchKwAQoGY3JlYXRlEiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciJOwrgYSggrEB4iDG1ldGFkYXRhLm9yZyo2dW5hdXRob3JpemVkIHRvIGNyZWF0ZSBtY3Agc2VydmVyIGluIHRoaXMgb3JnYW5pemF0aW9uEpoBCgZ1cGRhdGUSKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIjjCuBg0CAIQLCILbWV0YWRhdGEuaWQqIXVuYXV0aG9yaXplZCB0byB1cGRhdGUgbWNwIHNlcnZlchKmAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciI4wrgYNAgDECwiC3Jlc291cmNlX2lkKiF1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG1jcCBzZXJ2ZXISugEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiQ8K4GD8IAhAsIgtyZXNvdXJjZV9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBtY3Agc2VydmVyIHZpc2liaWxpdHkSpAEKB2Nvbm5lY3QSLS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dBoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIj7CuBg6CBYQLCINbWNwX3NlcnZlcl9pZColdW5hdXRob3JpemVkIHRvIGNvbm5lY3QgdG8gbWNwIHNlcnZlchKpAQoMc3RhcnRDb25uZWN0Ei0uYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db25uZWN0SW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciI+wrgYOggWECwiDW1jcF9zZXJ2ZXJfaWQqJXVuYXV0aG9yaXplZCB0byBjb25uZWN0IHRvIG1jcCBzZXJ2ZXIS3wEKFGluaXRpYXRlT0F1dGhDb25uZWN0EjouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Jbml0aWF0ZU9BdXRoQ29ubmVjdElucHV0GjsuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Jbml0aWF0ZU9BdXRoQ29ubmVjdE91dHB1dCJOwrgYSggWECwiDW1jcF9zZXJ2ZXJfaWQqNXVuYXV0aG9yaXplZCB0byBpbml0aWF0ZSBvYXV0aCBjb25uZWN0IGZvciBtY3Agc2VydmVyEt8BChRjb21wbGV0ZU9BdXRoQ29ubmVjdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuQ29tcGxldGVPQXV0aENvbm5lY3RJbnB1dBo7LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuQ29tcGxldGVPQXV0aENvbm5lY3RPdXRwdXQiTsK4GEoIFhAsIg1tY3Bfc2VydmVyX2lkKjV1bmF1dGhvcml6ZWQgdG8gY29tcGxldGUgb2F1dGggY29ubmVjdCBmb3IgbWNwIHNlcnZlchLIAQoPZGlzY29ubmVjdE9BdXRoEjUuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5EaXNjb25uZWN0T0F1dGhJbnB1dBo2LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGlzY29ubmVjdE9BdXRoT3V0cHV0IkbCuBhCCBYQLCILcmVzb3VyY2VfaWQqL3VuYXV0aG9yaXplZCB0byBkaXNjb25uZWN0IG9hdXRoIGZvciBtY3Agc2VydmVyErgBCg5zZXRPcmdPQXV0aEFwcBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU2V0T3JnT0F1dGhBcHBJbnB1dBo1LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU2V0T3JnT0F1dGhBcHBPdXRwdXQiOcK4GDUIFxAeIgNvcmcqKnVuYXV0aG9yaXplZCB0byBzZXQgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRLEAQoRZGVsZXRlT3JnT0F1dGhBcHASNy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRlbGV0ZU9yZ09BdXRoQXBwSW5wdXQaOC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRlbGV0ZU9yZ09BdXRoQXBwT3V0cHV0IjzCuBg4CBcQHiIDb3JnKi11bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG9yZyBvYXV0aCBhcHAgb3ZlcnJpZGUaBKD/KyxiBnByb3RvMw",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerCommandController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_command,0);var file_ai_stigmer_agentic_mcpserver_v1_query=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3F1ZXJ5LnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxMssFChhNY3BTZXJ2ZXJRdWVyeUNvbnRyb2xsZXISkgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiMMK4GCwIARAsIgV2YWx1ZSofdW5hdXRob3JpemVkIHRvIHZpZXcgbWNwIHNlcnZlchJ4Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIgTQuBgBEtUBChNnZXRPQXV0aEdyYW50U3RhdHVzEjkuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5HZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQiR8K4GEMIARAsIgtyZXNvdXJjZV9pZCowdW5hdXRob3JpemVkIHRvIHZpZXcgb2F1dGggc3RhdHVzIGZvciBtY3Agc2VydmVyEsEBCg5nZXRPcmdPQXV0aEFwcBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBJbnB1dBo1LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBPdXRwdXQiQsK4GD4IARAsIgtyZXNvdXJjZV9pZCordW5hdXRob3JpemVkIHRvIHZpZXcgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRoEoP8rLGIGcHJvdG8z",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerQueryController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_query,0);async function completeOAuthConnect(deps,input,identity2){let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");let stateParam=input.state;if(stateParam==="")throw invalidArgumentError("state is required");let code=input.authorizationCode;if(code==="")throw invalidArgumentError("authorization_code is required");let pendingState;try{pendingState=await deps.pendingOAuthStates.getAndDelete(stateParam)}catch(error2){throw internalError(error2,"failed to load pending OAuth state")}if(pendingState===void 0)throw failedPreconditionError("no pending OAuth state found for the given state parameter (expired or already used)");if(pendingState.mcpServerId!==mcpServerId)throw failedPreconditionError("state parameter does not match the requested mcp_server_id");await authorizeDirect(McpServerCommandController.method.completeOAuthConnect,deps.authorizer,identity2,input,{resourceId:pendingState.mcpServerId});try{pendingState=await unsealPendingOAuthState(deps.secretService,pendingState)}catch(error2){throw deps.logger.error("Failed to decrypt pending OAuth state secrets",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to decrypt OAuth handshake secrets \u2014 please retry the connect flow")}let tokenResponse;try{tokenResponse=await exchangeCode(pendingState.tokenEndpoint,code,pendingState.redirectUri,pendingState.codeVerifier,pendingState.clientId,pendingState.clientSecret,pendingState.tokenAuthMethod,deps.outboundFetch)}catch(error2){throw unavailableError(`token exchange failed: ${error2 instanceof Error?error2.message:String(error2)}`)}let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch{throw notFoundError("mcp_server",mcpServerId)}let org=pendingState.org;org===""&&(org=mcpServer.metadata?.org??"");let managedEnvId=await resolveOrCreateManagedEnvironment(deps,pendingState.identityAccountId,mcpServerId,org,mcpServer.metadata?.name??"",identity2),tokenVars={[pendingState.targetEnvVar]:create2(EnvironmentValueSchema,{value:tokenResponse.accessToken,isSecret:!0})},refreshTokenEnvVar=`${pendingState.targetEnvVar}_REFRESH_TOKEN`;tokenResponse.refreshToken!==""&&(tokenVars[refreshTokenEnvVar]=create2(EnvironmentValueSchema,{value:tokenResponse.refreshToken,isSecret:!0}));try{await deps.managedEnv.updateSecrets(managedEnvId,tokenVars)}catch(error2){throw internalError(error2,"failed to store OAuth tokens in managed environment")}let expiresAt=0;tokenResponse.expiresIn>0&&(expiresAt=Math.floor(Date.now()/1e3)+tokenResponse.expiresIn);try{await deps.oauthGrants.upsert({identityAccountId:pendingState.identityAccountId,resourceId:mcpServerId,resourceKind:"mcp_server",orgId:org,accessTokenExpiresAt:expiresAt,clientId:pendingState.clientId,authMethod:pendingState.authMethod,tokenEndpoint:pendingState.tokenEndpoint,accessTokenEnvVar:pendingState.targetEnvVar,refreshTokenEnvVar,environmentId:managedEnvId,createdAt:0,updatedAt:0})}catch(error2){throw internalError(error2,"failed to create OAuth grant record")}let auth=mcpServer.spec?.auth;return deps.logger.info("OAuth Connect completed: tokens stored in managed environment",{mcp_server_id:mcpServerId,auth_method:pendingState.authMethod,target_env_var:pendingState.targetEnvVar,managed_env_id:managedEnvId,expires_at:expiresAt,has_refresh_token:tokenResponse.refreshToken!==""}),create2(CompleteOAuthConnectOutputSchema,{connected:!0,targetEnvVar:pendingState.targetEnvVar,tokenLifetimeHint:auth?.tokenLifetimeHint??""})}async function unsealPendingOAuthState(secretService,state2){let verifier;try{verifier=await secretService.decrypt(state2.codeVerifier)}catch(error2){throw new Error(`failed to decrypt code_verifier: ${error2 instanceof Error?error2.message:String(error2)}`)}let secret;try{secret=await secretService.decrypt(state2.clientSecret)}catch(error2){throw new Error(`failed to decrypt client_secret: ${error2 instanceof Error?error2.message:String(error2)}`)}return{...state2,codeVerifier:verifier,clientSecret:secret}}async function resolveOrCreateManagedEnvironment(deps,identityAccountId,mcpServerId,org,mcpServerName,caller){let existingGrant;try{existingGrant=await deps.oauthGrants.find(identityAccountId,mcpServerId,org)}catch(error2){deps.logger.warn("Failed to look up existing OAuth grant (non-fatal, will create new managed env)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}if(existingGrant!==void 0&&existingGrant.environmentId!=="")return deps.logger.info("Reusing existing managed environment for OAuth re-connect",{mcp_server_id:mcpServerId,environment_id:existingGrant.environmentId}),existingGrant.environmentId;let envName=`OAuth: ${mcpServerName}`;try{return await deps.managedEnv.createManagedEnvironment(envName,org,caller)}catch(error2){throw internalError(error2,"failed to create managed environment for OAuth tokens")}}function convertToDiscoveredCapabilities(output){let capabilities=create2(DiscoveredCapabilitiesSchema,{lastDiscoveredAt:timestampNow()});for(let t of output.tools??[]){let tool=create2(DiscoveredToolSchema,{name:t.name??"",description:t.description??""});t.input_schema!==void 0&&(tool.inputSchema=t.input_schema),capabilities.tools.push(tool)}for(let rt of output.resource_templates??[])capabilities.resourceTemplates.push(create2(DiscoveredResourceTemplateSchema,{uriTemplate:rt.uri_template??"",name:rt.name??"",description:rt.description??"",mimeType:rt.mime_type??""}));return capabilities}function convertToToolApprovals(output){let approvals=[];for(let a5 of output.tool_approvals??[])a5.requires_approval!==!0||(a5.tool_name??"")===""||approvals.push(create2(ToolApprovalPolicySchema,{toolName:a5.tool_name,message:a5.message??"",fromDestructiveHint:a5.from_destructive_hint??!1}));return approvals}function setToolApprovalsFromConnect(status,output){let approvals=convertToToolApprovals(output);return approvals.length>0&&(status.toolApprovals=approvals),approvals.length}function settleConnectStatus(mcpStatus,workflowId,failure){let cs=mcpStatus.connectStatus;if(cs===void 0&&(cs=create2(ConnectStatusSchema),mcpStatus.connectStatus=cs),cs.workflowId=workflowId,cs.finishedAt=timestampNow(),cs.warning="",failure===void 0){cs.phase=ConnectPhase.succeeded,cs.failureCode="",cs.failureMessage="";return}cs.phase=ConnectPhase.failed,cs.failureCode=grpcCodeName(failure.code),cs.failureMessage=failure.rawMessage}async function persistConnectResult(store,mcpServerId,workflowId,output){let toolApprovalCount=0;return{persisted:await store.updateResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema,mcpServer=>{mcpServer.status===void 0&&(mcpServer.status=create2(McpServerStatusSchema)),mcpServer.status.discoveredCapabilities=convertToDiscoveredCapabilities(output),toolApprovalCount=setToolApprovalsFromConnect(mcpServer.status,output),settleConnectStatus(mcpServer.status,workflowId,void 0)}),toolApprovalCount}}async function persistConnectStarting(store,mcpServerId,workflowId,warning2){return store.updateResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema,mcpServer=>{mcpServer.status===void 0&&(mcpServer.status=create2(McpServerStatusSchema)),mcpServer.status.connectStatus=create2(ConnectStatusSchema,{phase:ConnectPhase.connecting,workflowId,startedAt:timestampNow(),warning:warning2})})}async function persistConnectFailure(store,logger2,mcpServerId,failure){try{await store.updateResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema,mcpServer=>{mcpServer.status===void 0&&(mcpServer.status=create2(McpServerStatusSchema)),settleConnectStatus(mcpServer.status,mcpServer.status.connectStatus?.workflowId??"",failure)})}catch(error2){if(error2 instanceof ResourceNotFoundError){logger2.info("Skipping connect failure persistence: MCP server deleted before connect settled",{mcp_server_id:mcpServerId});return}logger2.warn("Failed to record connect failure on connect_status (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}}var CONNECT_TIMEOUT={ms:42e4,goLabel:"7m0s"},ASYNC_CONNECT_TIMEOUT={ms:3600*1e3,goLabel:"1h0m0s"},BEST_EFFORT_CONNECT_GET_BUFFER_MS=15e3;async function connect(deps,input,identity2){let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");if(input.org==="")throw invalidArgumentError("org is required for connect");let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch{throw notFoundError("mcp_server",mcpServerId)}await authorizeDirect(McpServerCommandController.method.connect,deps.authorizer,identity2,input);let engineState=deps.engineState();if(!engineState.connected)throw failedPreconditionError("connect is not available: Temporal not configured");let prepared=await prepareConnect(deps,mcpServer,input,identity2);try{let run;try{run=await engineState.engine.startOrAttachConnect(mcpServerId,prepared.workflowInput,CONNECT_TIMEOUT.ms)}catch(error2){throw deps.logger.error("Failed to start MCP connect workflow",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to start connect workflow")}if(!run.attached)try{await persistConnectStarting(deps.store,mcpServerId,run.workflowId,"")}catch(error2){deps.logger.warn("Failed to record CONNECTING on connect_status (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}let outcome=await run.result(CONNECT_TIMEOUT.ms+BEST_EFFORT_CONNECT_GET_BUFFER_MS);if(!outcome.ok){let failure=mapConnectFailure(deps.logger,mcpServer,run.workflowId,outcome.failure,CONNECT_TIMEOUT);throw await persistConnectFailure(deps.store,deps.logger,mcpServerId,failure),failure}let persisted,toolApprovalCount;try{({persisted,toolApprovalCount}=await persistConnectResult(deps.store,mcpServerId,run.workflowId,outcome.output))}catch(error2){throw internalError(error2,"failed to save mcp server after connect")}return deps.logger.info("MCP server connect completed and stored",{mcp_server_id:mcpServerId,tools:persisted.status?.discoveredCapabilities?.tools.length??0,resource_templates:persisted.status?.discoveredCapabilities?.resourceTemplates.length??0,tool_approvals:toolApprovalCount}),persisted}finally{prepared.ecResourceId!==""&&await deleteConnectExecutionContext(deps,prepared.ecResourceId,prepared.executionId)}}async function prepareConnect(deps,mcpServer,input,identity2){let mcpServerId=mcpServer.metadata?.id??"",callerOrg=input.org;Object.keys(input.runtimeEnv).length===0&&await refreshOAuthTokenIfNeeded(deps,mcpServer,callerOrg);let executionId=newConnectExecutionId(mcpServerId),ecResourceId=await createConnectExecutionContext(deps,mcpServer,executionId,callerOrg,input.runtimeEnv,identity2),workflowInput={mcp_server_id:mcpServerId,...ecResourceId!==""?{execution_context_id:executionId}:{}};if(ecResourceId!==""&&deps.runnerAuth.isEnabled(TOKEN_TYPE_EXECUTION_SCOPED))try{let minted=deps.runnerAuth.mint(TOKEN_TYPE_EXECUTION_SCOPED,executionId,0);return{workflowInput:{...workflowInput,execution_context_token:minted.token},ecResourceId,executionId}}catch(error2){deps.logger.warn("Failed to mint connect EC token \u2014 discovery will read redacted credentials",{execution_id:executionId,error:error2 instanceof Error?error2.message:String(error2)})}return{workflowInput,ecResourceId,executionId}}async function createConnectExecutionContext(deps,mcpServer,executionId,callerOrg,runtimeEnv,caller){let ecData;if(Object.keys(runtimeEnv).length>0)ecData=runtimeEnv,deps.logger.info("Using runtime_env for connect ExecutionContext (one-time use)",{execution_id:executionId,runtime_env_count:Object.keys(runtimeEnv).length});else{let envDecls=mcpServer.spec?.env??{};if(Object.keys(envDecls).length===0)return deps.logger.debug("MCP server has no env declarations \u2014 skipping ExecutionContext creation",{execution_id:executionId}),"";let mcpServerId=mcpServer.metadata?.id??"",{oauthVars,remainingDecls}=await resolveOAuthVarsFromManagedEnv(deps,mcpServerId,callerOrg,envDecls),personalVars={};Object.keys(remainingDecls).length>0&&(personalVars=await resolveFromPersonalEnvironment(deps,callerOrg,remainingDecls)),ecData={...personalVars,...oauthVars},deps.logger.info("Resolved env vars for connect ExecutionContext",{execution_id:executionId,oauth_count:Object.keys(oauthVars).length,personal_count:Object.keys(personalVars).length})}if(Object.keys(ecData).length===0)return"";let created;try{created=await deps.executionContext.create(create2(ExecutionContextSchema,{apiVersion:"agentic.stigmer.ai/v1",kind:"ExecutionContext",metadata:{name:`exec-ctx-${executionId}`,org:callerOrg},spec:{executionId,data:ecData}}),caller)}catch(error2){throw internalError(error2,"failed to create connect ExecutionContext")}let resourceId=created.metadata?.id??"";return deps.logger.info("Created ephemeral ExecutionContext for MCP connect",{execution_context_id:resourceId,execution_id:executionId,data_entries:Object.keys(ecData).length}),resourceId}async function resolveOAuthVarsFromManagedEnv(deps,mcpServerId,org,envDecls){let grant;try{grant=await deps.oauthGrants.find("",mcpServerId,org)}catch{return{oauthVars:{},remainingDecls:envDecls}}if(grant===void 0||grant.environmentId==="")return{oauthVars:{},remainingDecls:envDecls};let oauthKey=grant.accessTokenEnvVar;if(!(oauthKey in envDecls))return{oauthVars:{},remainingDecls:envDecls};let tokenValue="";try{tokenValue=await deps.managedEnv.readSecretValue(grant.environmentId,oauthKey)}catch(error2){return deps.logger.warn("Failed to read OAuth token from managed environment \u2014 falling back to personal env",{mcp_server_id:mcpServerId,oauth_key:oauthKey,managed_env_id:grant.environmentId,error:error2 instanceof Error?error2.message:String(error2)}),{oauthVars:{},remainingDecls:envDecls}}if(tokenValue==="")return deps.logger.warn("Failed to read OAuth token from managed environment \u2014 falling back to personal env",{mcp_server_id:mcpServerId,oauth_key:oauthKey,managed_env_id:grant.environmentId}),{oauthVars:{},remainingDecls:envDecls};let remainingDecls={};for(let[k5,v]of Object.entries(envDecls))k5!==oauthKey&&(remainingDecls[k5]=v);return deps.logger.debug("Resolved OAuth token from managed environment",{mcp_server_id:mcpServerId,oauth_key:oauthKey,managed_env_id:grant.environmentId}),{oauthVars:{[oauthKey]:create2(ExecutionValueSchema,{value:tokenValue,isSecret:!0})},remainingDecls}}async function resolveFromPersonalEnvironment(deps,org,envDecls){let resolution=await resolveDeclaredFromPersonalEnvironment(deps.environmentReader,deps.logger,org,envDecls);if(resolution.kind==="no-personal-environment"){let requiredKeys=Object.entries(envDecls).filter(([,decl])=>!decl.optional).map(([key])=>key);if(requiredKeys.length===0)return{};throw failedPreconditionError(`personal environment not found for org '${org}'; save required credentials first: [${requiredKeys.join(" ")}]`)}if(resolution.missing.length>0)throw failedPreconditionError(`missing required credentials in personal environment: [${resolution.missing.join(" ")}]`);return{...resolution.values}}async function deleteConnectExecutionContext(deps,resourceId,executionId){try{await deps.executionContext.delete({resourceId})}catch(error2){deps.logger.warn("Failed to delete connect ExecutionContext (non-fatal)",{resource_id:resourceId,execution_id:executionId,error:error2 instanceof Error?error2.message:String(error2)});return}deps.logger.debug("Deleted ephemeral connect ExecutionContext",{resource_id:resourceId,execution_id:executionId})}function mapConnectFailure(logger2,mcpServer,workflowId,failure,budget){let mcpServerId=mcpServer.metadata?.id??"";switch(logger2.error("MCP connect workflow failed",{workflow_id:workflowId,mcp_server_id:mcpServerId,failure_kind:failure.kind}),failure.kind){case"application":return failedPreconditionError(buildConnectFailureMessage(mcpServer,failure.message));case"timeout":return new ConnectError(`connect did not complete within the ${budget.goLabel} budget for MCP server '${mcpServerId}' \u2014 if this repeats, check that your runner is running and healthy`,Code.DeadlineExceeded);case"service-not-found":return unavailableError(`connect service temporarily unavailable for MCP server '${mcpServerId}'`);case"other":return new ConnectError(buildConnectFailureMessage(mcpServer,failure.message),Code.Internal);default:{let exhaustive=failure;throw new Error(`unhandled connect failure ${String(exhaustive)}`)}}}function buildConnectFailureMessage(mcpServer,cause){let name=mcpServer.metadata?.name??"";if(cause.includes("requires OAuth"))return cause;if(mcpServer.spec?.serverType.case==="stdio"){let slug=mcpServer.metadata?.slug??"";return`connect failed for MCP server '${name}': ${cause}. This is a stdio server launched by your local runner \u2014 verify the command is installed and its arguments and environment variables are correct. Preview discovery locally with: stigmer connect mcp-server ${slug} --dry-run`}return`connect failed for MCP server '${name}': ${cause}. Check that the server URL is reachable and your credentials are valid.`}async function refreshOAuthTokenIfNeeded(deps,mcpServer,callerOrg){if(mcpServer.spec?.auth===void 0)return;let mcpServerId=mcpServer.metadata?.id??"",grant;try{grant=await deps.oauthGrants.find("",mcpServerId,callerOrg)}catch(error2){deps.logger.warn("Failed to load OAuth grant for pre-flight check (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}if(grant===void 0)return;if(grant.environmentId===""){deps.logger.warn("OAuth grant has no managed environment ID \u2014 user must re-authenticate via OAuth Connect",{mcp_server_id:mcpServerId});return}let refreshTokenValue;try{refreshTokenValue=await deps.managedEnv.readSecretValue(grant.environmentId,grant.refreshTokenEnvVar)}catch(error2){deps.logger.debug("No refresh token found in managed environment (may not be OAuth-connected)",{mcp_server_id:mcpServerId,refresh_token_var:grant.refreshTokenEnvVar,managed_env_id:grant.environmentId,error:error2 instanceof Error?error2.message:String(error2)});return}let clientSecret="",tokenAuthMethod="";if(grant.authMethod==="vendor_oauth")try{({clientSecret,tokenAuthMethod}=await loadOAuthAppClientCredentials(deps,mcpServer))}catch(error2){deps.logger.warn("Failed to load OAuthApp client secret for refresh",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}let result;try{result=await refreshTokenIfExpired(grant,refreshTokenValue,clientSecret,tokenAuthMethod,deps.logger,deps.outboundFetch)}catch(error2){throw failedPreconditionError(error2 instanceof Error?error2.message:String(error2))}if(!result.refreshed)return;let tokenVars={[grant.accessTokenEnvVar]:create2(EnvironmentValueSchema,{value:result.newAccessToken,isSecret:!0})};result.newRefreshToken!==refreshTokenValue&&(tokenVars[grant.refreshTokenEnvVar]=create2(EnvironmentValueSchema,{value:result.newRefreshToken,isSecret:!0}));try{await deps.managedEnv.updateSecrets(grant.environmentId,tokenVars)}catch(error2){throw internalError(error2,"failed to update refreshed tokens in managed environment")}try{await deps.oauthGrants.upsert({...grant,accessTokenExpiresAt:result.newExpiresAt})}catch(error2){deps.logger.warn("Failed to update OAuth grant after refresh (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}}async function loadOAuthAppClientCredentials(deps,mcpServer){let ref=mcpServer.spec?.auth?.oauthAppRef;if(ref===void 0||ref.slug==="")return{clientSecret:"",tokenAuthMethod:""};let app;try{app=await resolveOAuthAppRef(deps.store,ref,deps.logger)}catch(error2){throw new Error(`failed to list oauth apps: ${error2 instanceof Error?error2.message:String(error2)}`)}if(app===void 0)throw new Error(`OAuthApp '${ref.slug}' not found`);let tokenAuthMethod=tokenAuthMethodFromSpec(app.spec?.tokenEndpointAuthMethod??TokenEndpointAuthMethod.UNSPECIFIED),secret=app.spec?.clientSecret??"";return deps.secretService.isEncrypted(secret)&&(secret=await deps.secretService.decrypt(secret)),{clientSecret:secret,tokenAuthMethod}}function tokenAuthMethodFromSpec(method){return method===TokenEndpointAuthMethod.CLIENT_SECRET_POST?TOKEN_AUTH_METHOD_POST:TOKEN_AUTH_METHOD_BASIC}async function startBestEffortConnect(deps,mcpServer){let engineState=deps.engineState();if(!engineState.connected)return;let envKeys=Object.keys(mcpServer.spec?.env??{}).length;if(envKeys>0){deps.logger.debug("Skipping best-effort auto-connect: MCP server has env declarations (requires manual connect)",{mcp_server_id:mcpServer.metadata?.id??"",env_keys:envKeys});return}let mcpServerId=mcpServer.metadata?.id??"",run;try{run=await engineState.engine.startOrAttachConnect(mcpServerId,{mcp_server_id:mcpServerId},CONNECT_TIMEOUT.ms)}catch(error2){deps.logger.warn("Failed to start best-effort connect workflow (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}if(!run.attached)try{await persistConnectStarting(deps.store,mcpServerId,run.workflowId,"")}catch(error2){deps.logger.warn("Failed to record CONNECTING for best-effort connect (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}let outcome=await run.result(CONNECT_TIMEOUT.ms+BEST_EFFORT_CONNECT_GET_BUFFER_MS);if(!outcome.ok){let failure=mapConnectFailure(deps.logger,mcpServer,run.workflowId,outcome.failure,CONNECT_TIMEOUT);await persistConnectFailure(deps.store,deps.logger,mcpServerId,failure);return}let persisted,toolApprovalCount;try{({persisted,toolApprovalCount}=await persistConnectResult(deps.store,mcpServerId,run.workflowId,outcome.output))}catch(error2){if(error2 instanceof ResourceNotFoundError){deps.logger.info("Skipping best-effort connect persistence: MCP server deleted before connect completed",{mcp_server_id:mcpServerId});return}deps.logger.warn("Failed to persist best-effort connect result (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}deps.logger.info("Best-effort auto-connect completed and stored",{workflow_id:run.workflowId,mcp_server_id:mcpServerId,tools:persisted.status?.discoveredCapabilities?.tools.length??0,resource_templates:persisted.status?.discoveredCapabilities?.resourceTemplates.length??0,tool_approvals:toolApprovalCount})}async function disconnectOAuth(deps,input,identity2){let resourceId=input.resourceId;if(resourceId==="")throw invalidArgumentError("resource_id is required");let org=input.org;if(org==="")throw invalidArgumentError("org is required");await authorizeDirect(McpServerCommandController.method.disconnectOAuth,deps.authorizer,identity2,input);let grant;try{grant=await deps.oauthGrants.find("",resourceId,org)}catch(error2){throw internalError(error2,"failed to look up OAuth grant")}if(grant===void 0)return deps.logger.debug("No OAuth grant to disconnect",{resource_id:resourceId,org}),create2(DisconnectOAuthOutputSchema,{disconnected:!1});let envId=grant.environmentId;if(envId!=="")try{await deps.managedEnv.deleteManagedEnvironment(envId)}catch(error2){deps.logger.warn("Failed to delete managed environment \u2014 may already be deleted",{resource_id:resourceId,environment_id:envId,error:error2 instanceof Error?error2.message:String(error2)})}try{await deps.oauthGrants.delete("",resourceId,org)}catch(error2){throw internalError(error2,"failed to delete OAuth grant")}return deps.logger.info("OAuth connection disconnected",{resource_id:resourceId,org,env_deleted:envId!==""}),create2(DisconnectOAuthOutputSchema,{disconnected:!0})}function isOAuthChallenge(wwwAuthenticate){let value=wwwAuthenticate.toLowerCase();return value.includes("bearer")?value.includes("oauth")||value.includes("resource_metadata"):!1}function parseResourceMetadataUrl(wwwAuthenticate){return/resource_metadata="([^"]+)"/i.exec(wwwAuthenticate)?.[1]}function protectedResourceMetadataUrls(resource){let bare=`${resource.origin}/.well-known/oauth-protected-resource`,path14=resource.pathname.replace(/\/+$/,"");return path14===""?[bare]:[`${bare}${path14}`,bare]}function authorizationServerMetadataUrls(issuer){let path14=issuer.pathname.replace(/\/+$/,""),urls=[...path14===""?[]:[`${issuer.origin}/.well-known/oauth-authorization-server${path14}`],`${issuer.origin}/.well-known/oauth-authorization-server`,...path14===""?[]:[`${issuer.origin}${path14}/.well-known/openid-configuration`],`${issuer.origin}/.well-known/openid-configuration`];return[...new Set(urls)]}async function resolveAuthorizationServers(resourceUrl,pointer,deps){let attempts=[],candidates=pointer!==void 0?[pointer]:protectedResourceMetadataUrls(new URL(resourceUrl));for(let candidate of candidates){let read3=await readJson(candidate,deps,attempts);if(read3===void 0)continue;let issuers=readStringArray(read3,"authorization_servers");if(issuers.length>0)return{issuers,attempts}}return{issuers:[],attempts}}async function readAuthorizationServerMetadata(issuer,deps){let attempts=[],parsed;try{parsed=new URL(issuer)}catch{return{kind:"not-found",attempts}}for(let metadataUrl of authorizationServerMetadataUrls(parsed)){let document2=await readJson(metadataUrl,deps,attempts);if(document2===void 0)continue;let authorizationEndpoint=readString(document2,"authorization_endpoint"),tokenEndpoint=readString(document2,"token_endpoint");if(authorizationEndpoint===""||tokenEndpoint===""){let last=attempts.pop();last!==void 0&&attempts.push({...last,missing:authorizationEndpoint===""?"authorization_endpoint":"token_endpoint"});continue}return{kind:"found",attempts,metadata:{metadataUrl,issuer:readString(document2,"issuer"),authorizationEndpoint,tokenEndpoint,registrationEndpoint:readString(document2,"registration_endpoint"),scopesSupported:readStringArray(document2,"scopes_supported"),codeChallengeMethodsSupported:readStringArray(document2,"code_challenge_methods_supported")}}}return{kind:"not-found",attempts}}async function readJson(url,deps,attempts){let response;try{response=await deps.fetchImpl(url,{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(deps.timeoutMs)})}catch(error2){attempts.push({url,error:error2 instanceof Error?error2.message:String(error2)});return}if(attempts.push({url,status:response.status}),response.status!==200){await response.body?.cancel().catch(()=>{});return}try{let parsed=await response.json();return isRecord(parsed)?parsed:void 0}catch{return}}function readString(record2,key){let value=record2[key];return typeof value=="string"?value:""}function readStringArray(record2,key){let list12=record2[key];return Array.isArray(list12)?list12.filter(item=>typeof item=="string"):[]}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}var MCP_PROTOCOL_VERSION="2025-06-18";function baseHeaders(headers2){return{"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":MCP_PROTOCOL_VERSION,...headers2??{}}}function initializeRequest(clientName,headers2){return{method:"POST",headers:baseHeaders(headers2),body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:MCP_PROTOCOL_VERSION,capabilities:{},clientInfo:{name:clientName,version:"0"}}})}}async function probeEndpointAuth(url,headers2,deps){let request=initializeRequest(deps.clientName,headers2),response;try{response=await deps.fetchImpl(url,{method:request.method,headers:{...request.headers},body:request.body,signal:AbortSignal.timeout(deps.timeoutMs)})}catch(error2){return{kind:"unreachable",error:describeError(error2)}}if(await response.body?.cancel().catch(()=>{}),response.status===401){let challenge=response.headers.get("www-authenticate")??"";return isOAuthChallenge(challenge)?{kind:"oauth",challenge,resourceMetadataUrl:parseResourceMetadataUrl(challenge)}:{kind:"challenge-not-oauth",challenge}}return response.status>=200&&response.status<300?{kind:"accepted",status:response.status}:{kind:"http-other",status:response.status}}function describeError(error2){return error2 instanceof Error?`${error2.name}: ${error2.message}`:String(error2)}var ENDPOINT_PROBE_TIMEOUT_MS=3e3,PROBE_CLIENT_NAME="stigmer-server",ACCESS_TOKEN_VAR_SUFFIX="_ACCESS_TOKEN",AUTHORIZATION_HEADER="authorization";function newCompleteEndpointAuthStep(deps){return{name:"CompleteEndpointAuth",async execute(ctx){let server=ctx.newState,spec=server.spec;if(spec===void 0)return;applyTokenPathDefault(spec,server.metadata?.slug??"");let existing=ctx.get(EXISTING_RESOURCE_KEY),derived=existing!==void 0?derivedCompletionOf(existing):void 0,url=authorShapeUrl(spec);if(url===void 0){derived!==void 0&&echoesDerived(spec,derived)?stamp(ctx,server):dropLabel(server);return}if(derived!==void 0&&derived.url===url){applyCompletion(spec,derived.variable,derived.description),stamp(ctx,server);return}if(await probe(url,spec,deps)!=="oauth"){dropLabel(server);return}let variable=accessTokenVariable(server.metadata?.slug??"");applyCompletion(spec,variable,tokenDescription(server.metadata?.slug??"")),stamp(ctx,server)}}}function authorShapeUrl(spec){if(spec.serverType.case==="http"&&spec.auth===void 0&&!(Object.keys(spec.env).length>0)){for(let[name,value]of Object.entries(spec.serverType.value.headers))if(name.toLowerCase()===AUTHORIZATION_HEADER||value.includes("${"))return;return spec.serverType.value.url}}function derivedCompletionOf(existing){if(existing.metadata?.labels[MCP_AUTH_LABEL]!==MCP_AUTH_ENDPOINT)return;let spec=existing.spec;if(spec===void 0||spec.serverType.case!=="http")return;let variable=spec.auth?.targetEnvVar??"";if(variable!=="")return{url:spec.serverType.value.url,variable,description:spec.env[variable]?.description??""}}function echoesDerived(spec,derived){if(spec.serverType.case!=="http"||spec.serverType.value.url!==derived.url)return!1;let auth=spec.auth;if(auth===void 0||auth.targetEnvVar!==derived.variable||!auth.oauthOnly||(auth.oauthAppRef?.slug??"")!==""||auth.discoveryUrl!==""||auth.scopeHints.length>0||auth.tokenLifetimeHint!=="")return!1;let envKeys=Object.keys(spec.env);if(envKeys.length!==1||envKeys[0]!==derived.variable)return!1;let declaration=spec.env[derived.variable];if(declaration===void 0||!declaration.isSecret||declaration.optional)return!1;let headers2=Object.entries(spec.serverType.value.headers),authorization=headers2.filter(([name])=>name.toLowerCase()===AUTHORIZATION_HEADER);return authorization.length!==1||authorization[0]?.[1]!==bearerHeader(derived.variable)?!1:headers2.every(([name,value])=>name.toLowerCase()===AUTHORIZATION_HEADER||!value.includes("${"))}function applyCompletion(spec,variable,description){spec.auth=create2(McpServerAuthSchema,{targetEnvVar:variable,oauthOnly:!0}),spec.env[variable]=create2(EnvVarDeclarationSchema,{isSecret:!0,optional:!1,description}),applyTokenPathDefault(spec,"")}function applyTokenPathDefault(spec,slug){let variable=spec.auth?.targetEnvVar??"";if(variable===""||(spec.env[variable]===void 0&&(spec.env[variable]=create2(EnvVarDeclarationSchema,{isSecret:!0,optional:!1,description:tokenDescription(slug)})),spec.serverType.case!=="http"))return;let headers2=spec.serverType.value.headers,reference=`\${${variable}}`;Object.values(headers2).some(value=>value.includes(reference))||(headers2.Authorization=bearerHeader(variable))}function bearerHeader(variable){return`Bearer \${${variable}}`}function accessTokenVariable(slug){let stem=slug.toUpperCase().replace(/[^A-Z0-9]+/g,"_").replace(/^_+|_+$/g,"");return`${stem===""?"MCP":stem}${ACCESS_TOKEN_VAR_SUFFIX}`}function tokenDescription(slug){return`OAuth access token for the '${slug}' MCP server; Sign in fills it`}function stamp(ctx,server){server.metadata!==void 0&&(server.metadata.labels[MCP_AUTH_LABEL]=MCP_AUTH_ENDPOINT,recordServerStampedReservedLabels(ctx,MCP_AUTH_LABEL))}function dropLabel(server){server.metadata!==void 0&&delete server.metadata.labels[MCP_AUTH_LABEL]}async function probe(url,spec,deps){let headers2=spec.serverType.case==="http"?spec.serverType.value.headers:{};try{let outcome=await probeEndpointAuth(url,headers2,{fetchImpl:deps.outboundFetch,timeoutMs:ENDPOINT_PROBE_TIMEOUT_MS,clientName:PROBE_CLIENT_NAME});return outcome.kind==="unreachable"&&deps.logger.debug("MCP endpoint probe got no answer; saving the spec as sent",{url,error:outcome.error}),outcome.kind==="oauth"?"oauth":"other"}catch(error2){return deps.logger.warn("MCP endpoint probe threw; saving the spec as sent",{url,error:error2 instanceof Error?error2.message:String(error2)}),"other"}}async function getOAuthGrantStatus(deps,input,identity2){if(input.resourceId==="")throw invalidArgumentError("resource_id is required");if(input.org==="")throw invalidArgumentError("org is required");await authorizeDirect(McpServerQueryController.method.getOAuthGrantStatus,deps.authorizer,identity2,input);let grant;try{grant=await deps.oauthGrants.find("",input.resourceId,input.org)}catch(error2){throw internalError(error2,"failed to look up OAuth grant")}return grant===void 0?create2(GetOAuthGrantStatusOutputSchema,{connected:!1,connectionHealth:OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_NO_GRANT}):create2(GetOAuthGrantStatusOutputSchema,{connected:!0,accessTokenExpiresAt:BigInt(grant.accessTokenExpiresAt),targetEnvVar:grant.accessTokenEnvVar,authMethod:grant.authMethod,connectionHealth:evaluateHealth(grant)})}function evaluateHealth(grant){return grant.accessTokenExpiresAt===0?OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_HEALTHY:Math.floor(Date.now()/1e3)<grant.accessTokenExpiresAt-REFRESH_EXPIRY_BUFFER_SECONDS?OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_HEALTHY:grant.refreshTokenEnvVar!==""?OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE:OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED}var import_node_crypto24=require("node:crypto");var import_node_crypto23=require("node:crypto");function generatePkce(){let verifier=(0,import_node_crypto23.randomBytes)(32).toString("base64url"),challenge=(0,import_node_crypto23.createHash)("sha256").update(verifier).digest().toString("base64url");return{codeVerifier:verifier,codeChallenge:challenge}}var DISCOVERY_REQUEST_TIMEOUT_MS=1e4;async function discoverForResource(mcpUrl,fetchImpl){let resource=parseDiscoveryUrl(mcpUrl),deps={fetchImpl,timeoutMs:DISCOVERY_REQUEST_TIMEOUT_MS},resolved=await resolveAuthorizationServers(resource.href,void 0,deps),issuers=resolved.issuers.length>0?resolved.issuers:[resource.origin];return readIssuers(issuers,deps)}async function discoverAtIssuer(issuerUrl,fetchImpl){let issuer=parseDiscoveryUrl(issuerUrl);return readIssuers([issuer.href],{fetchImpl,timeoutMs:DISCOVERY_REQUEST_TIMEOUT_MS})}async function readIssuers(issuers,deps){let attempts=[];for(let issuer of issuers){let read3=await readAuthorizationServerMetadata(issuer,deps);if(attempts.push(...read3.attempts),read3.kind==="found"){let metadata=toAuthServerMetadata(read3.metadata);return validateMetadata(metadata,read3.metadata.metadataUrl),metadata}}throw discoveryFailure(issuers,attempts)}function toAuthServerMetadata(m3){return{issuer:m3.issuer,authorizationEndpoint:m3.authorizationEndpoint,tokenEndpoint:m3.tokenEndpoint,registrationEndpoint:m3.registrationEndpoint,scopesSupported:[...m3.scopesSupported],codeChallengeMethodsSupported:[...m3.codeChallengeMethodsSupported]}}function discoveryFailure(issuers,attempts){let firstIssuer=issuers[0]??"",named=firstDocumentFor(firstIssuer),attempt=attempts.find(a5=>a5.url===named)??attempts[0];if(attempt?.error!==void 0)return new Error(`discovery request to ${attempt.url} failed: ${attempt.error}`);if(attempt?.missing!==void 0)return new Error(`authorization server at ${attempt.url} is missing ${attempt.missing}`);let status=attempt?.status??0;return new Error(`authorization server discovery failed: ${named} returned HTTP ${status} (expected 200). This MCP server may not support the MCP Authorization specification`)}function firstDocumentFor(issuer){try{return authorizationServerMetadataUrls(new URL(issuer))[0]??issuer}catch{return issuer}}function parseDiscoveryUrl(serverUrl){let parsed;try{parsed=new URL(serverUrl)}catch(error2){throw new Error(`invalid server URL for discovery: ${error2 instanceof Error?error2.message:String(error2)}`)}let scheme=parsed.protocol.replace(/:$/,"");if(scheme!=="http"&&scheme!=="https")throw new Error(`invalid server URL for discovery: unsupported scheme "${scheme}": only http and https are supported`);if(parsed.host==="")throw new Error("invalid server URL for discovery: server URL has no host");return parsed}function validateMetadata(m3,sourceUrl){if(m3.authorizationEndpoint==="")throw new Error(`authorization server at ${sourceUrl} is missing authorization_endpoint`);if(m3.tokenEndpoint==="")throw new Error(`authorization server at ${sourceUrl} is missing token_endpoint`);if(m3.codeChallengeMethodsSupported.length>0&&!m3.codeChallengeMethodsSupported.includes("S256"))throw new Error(`authorization server at ${sourceUrl} does not support S256 PKCE (supports: [${m3.codeChallengeMethodsSupported.join(" ")}]). S256 is required by the MCP Authorization specification`)}var DCR_REQUEST_TIMEOUT_MS=15e3;async function registerClient(registrationEndpoint,redirectUri,clientName,fetchImpl){let requestBody=JSON.stringify({redirect_uris:[redirectUri],client_name:clientName,grant_types:["authorization_code"],response_types:["code"],token_endpoint_auth_method:"none"}),response;try{response=await fetchImpl(registrationEndpoint,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:requestBody,signal:AbortSignal.timeout(DCR_REQUEST_TIMEOUT_MS)})}catch(error2){throw new Error(`DCR request to ${registrationEndpoint} failed: ${error2 instanceof Error?error2.message:String(error2)}`)}let body=await response.text();if(response.status!==201&&response.status!==200)throw new Error(`DCR at ${registrationEndpoint} returned HTTP ${response.status}: ${truncateBody(body)}`);let raw;try{raw=JSON.parse(body)}catch(error2){throw new Error(`failed to parse DCR response: ${error2 instanceof Error?error2.message:String(error2)}`)}if((raw.client_id??"")==="")throw new Error(`DCR response from ${registrationEndpoint} is missing client_id`);return{clientId:raw.client_id,clientSecret:raw.client_secret??"",clientName:raw.client_name??"",tokenEndpointAuthMethod:raw.token_endpoint_auth_method??""}}var PREFLIGHT_REQUEST_TIMEOUT_MS=4e3,PREFLIGHT_BODY_READ_CAP=4096;async function preflightAuthorize(authorizationUrl,fetchImpl){let response=await fetchImpl(authorizationUrl,{method:"GET",redirect:"manual",signal:AbortSignal.timeout(PREFLIGHT_REQUEST_TIMEOUT_MS)});if(response.status!==400){await response.text().catch(()=>"");return}let body=(await response.text()).slice(0,PREFLIGHT_BODY_READ_CAP);return{statusCode:response.status,vendorDetail:extractVendorDetail(body),bodySnippet:truncateBody(body)}}function extractVendorDetail(body){let parsed;try{parsed=JSON.parse(body)}catch{return""}return(parsed.error_description??"")!==""?parsed.error_description:parsed.error??""}async function initiateOAuthConnect(deps,input,identity2){if(deps.oauthRedirectUri==="")throw failedPreconditionError("OAuth Connect is not configured: STIGMER_OAUTH_REDIRECT_URI is not set");let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch{throw notFoundError("mcp_server",mcpServerId)}await authorizeDirect(McpServerCommandController.method.initiateOAuthConnect,deps.authorizer,identity2,input);let auth=mcpServer.spec?.auth;if(auth===void 0)throw failedPreconditionError(`MCP server '${mcpServerId}' does not have an auth block configured`);let pkcePair=generatePkce(),stateParam=generateState(),oauthAppRef=auth.oauthAppRef,isDcr=oauthAppRef===void 0||oauthAppRef.slug==="",result=isDcr?await initiateDcr(deps,mcpServer,pkcePair,stateParam):await initiateVendorOAuth(deps,mcpServer,pkcePair,stateParam),authMethod=isDcr?"mcp_oauth":"vendor_oauth",pendingState={state:stateParam,codeVerifier:pkcePair.codeVerifier,clientId:result.clientId,clientSecret:result.clientSecret,tokenEndpoint:result.tokenEndpoint,mcpServerId,identityAccountId:"",targetEnvVar:auth.targetEnvVar,authMethod,tokenAuthMethod:result.tokenAuthMethod,redirectUri:deps.oauthRedirectUri,org:input.org,createdAt:0},sealed;try{sealed=await sealPendingOAuthState(deps.secretService,deps.logger,pendingState)}catch(error2){throw internalError(error2,"failed to encrypt OAuth handshake secrets")}try{await deps.pendingOAuthStates.save(sealed)}catch(error2){throw internalError(error2,"failed to save pending OAuth state")}return deps.logger.info("Initiated OAuth Connect flow",{mcp_server_id:mcpServerId,auth_method:authMethod,provider:result.providerName}),create2(InitiateOAuthConnectOutputSchema,{authorizationUrl:result.authorizationUrl,state:stateParam,scopes:result.scopes,providerName:result.providerName})}async function initiateDcr(deps,mcpServer,pkcePair,stateParam){let discoveryUrl2=mcpServer.spec?.auth?.discoveryUrl??"",serverType=mcpServer.spec?.serverType,resourceUrl=serverType?.case==="http"?serverType.value.url:"",serverUrl=discoveryUrl2!==""?discoveryUrl2:resourceUrl;if(serverUrl==="")throw failedPreconditionError(`DCR requires a discoverable URL. MCP server '${mcpServer.metadata?.id??""}' has no http.url and no auth.discovery_url. Set auth.discovery_url for stdio servers, oauth_app_ref for vendor OAuth, or switch to HTTP transport`);let metadata;try{metadata=discoveryUrl2!==""?await discoverAtIssuer(discoveryUrl2,deps.outboundFetch):await discoverForResource(resourceUrl,deps.outboundFetch)}catch(error2){throw failedPreconditionError(`OAuth authorization server discovery failed for ${serverUrl}: ${error2 instanceof Error?error2.message:String(error2)}`)}if(metadata.registrationEndpoint==="")throw failedPreconditionError(`MCP server at ${serverUrl} does not advertise a registration_endpoint for DCR: ${loginServerHost(metadata,serverUrl)} does not allow automatic client registration, so this server needs an OAuth app registered with the vendor and referenced from its definition (auth.oauth_app_ref)`);let clientName=`Stigmer (${mcpServer.metadata?.name??""})`,dcrResponse;try{dcrResponse=await registerClient(metadata.registrationEndpoint,deps.oauthRedirectUri,clientName,deps.outboundFetch)}catch(error2){throw failedPreconditionError(`DCR registration failed: ${error2 instanceof Error?error2.message:String(error2)}`)}let scopes=mcpServer.spec?.auth?.scopeHints??[];scopes.length===0&&metadata.scopesSupported.length>0&&(scopes=metadata.scopesSupported);let authUrl=buildAuthorizationUrl(metadata.authorizationEndpoint,dcrResponse.clientId,deps.oauthRedirectUri,pkcePair.codeChallenge,stateParam,scopes,"scope"),rejection;try{rejection=await preflightAuthorize(authUrl,deps.outboundFetch)}catch(probeError){deps.logger.debug("authorize pre-flight probe inconclusive; proceeding",{mcp_server_id:mcpServer.metadata?.id??"",error:probeError instanceof Error?probeError.message:String(probeError)})}if(rejection!==void 0)throw deps.logger.warn("authorization endpoint rejected the sign-in request pre-flight",{status_code:rejection.statusCode,mcp_server_id:mcpServer.metadata?.id??"",body_snippet:rejection.bodySnippet}),failedPreconditionError(dcrRejectionMessage(mcpServer.metadata?.name??"",deps.oauthRedirectUri,rejection));return{authorizationUrl:authUrl,providerName:mcpServer.metadata?.name??"",scopes,clientId:dcrResponse.clientId,clientSecret:"",tokenEndpoint:metadata.tokenEndpoint,tokenAuthMethod:""}}function loginServerHost(metadata,serverUrl){for(let candidate of[metadata.issuer,metadata.authorizationEndpoint,serverUrl])try{let host=new URL(candidate).host;if(host!=="")return host}catch{}return serverUrl}async function initiateVendorOAuth(deps,mcpServer,pkcePair,stateParam){let ref=mcpServer.spec?.auth?.oauthAppRef,oauthApp;try{oauthApp=await resolveOAuthAppRef(deps.store,ref,deps.logger)}catch(error2){throw internalError(error2,"failed to list oauth apps")}if(oauthApp===void 0)throw notFoundError("oauth_app",ref?.slug??"");let approvalStatus=oauthApp.spec?.vendorApprovalStatus;if(approvalStatus===VendorApprovalStatus.PENDING||approvalStatus===VendorApprovalStatus.REJECTED){let statusLabel=approvalStatus===VendorApprovalStatus.REJECTED?"rejected":"pending approval",alternative=mcpServer.spec?.auth?.oauthOnly?"This server only accepts OAuth sign-in; an org admin can configure your own OAuth app instead.":"Please enter a token manually instead.";throw failedPreconditionError(`OAuth sign-in is unavailable: the platform's OAuth app for '${oauthApp.spec?.provider??""}' is ${statusLabel} by the vendor. ${alternative}`)}let clientSecret=oauthApp.spec?.clientSecret??"";if(deps.secretService.isEncrypted(clientSecret))try{clientSecret=await deps.secretService.decrypt(clientSecret)}catch(error2){throw internalError(error2,"failed to decrypt OAuthApp client secret")}let scopes=oauthApp.spec?.scopes??[];return{authorizationUrl:buildAuthorizationUrl(oauthApp.spec?.authorizationUrl??"",oauthApp.spec?.clientId??"",deps.oauthRedirectUri,pkcePair.codeChallenge,stateParam,scopes,oauthApp.spec?.scopeParameterName??""),providerName:oauthApp.spec?.provider??"",scopes,clientId:oauthApp.spec?.clientId??"",clientSecret,tokenEndpoint:oauthApp.spec?.tokenUrl??"",tokenAuthMethod:tokenAuthMethodFromSpec(oauthApp.spec?.tokenEndpointAuthMethod??TokenEndpointAuthMethod.UNSPECIFIED)}}function buildAuthorizationUrl(authEndpoint,clientId,redirectUri,codeChallenge,state2,scopes,scopeParamName){let scopeParam=scopeParamName===""?"scope":scopeParamName,params=new URLSearchParams({response_type:"code",client_id:clientId,redirect_uri:redirectUri,code_challenge:codeChallenge,code_challenge_method:"S256",state:state2});scopes.length>0&¶ms.set(scopeParam,scopes.join(" ")),params.sort();let separator=authEndpoint.includes("?")?"&":"?";return authEndpoint+separator+params.toString()}function dcrRejectionMessage(providerName,redirectUri,rejection){let callbackHost=redirectUri;try{let parsed=new URL(redirectUri);parsed.host!==""&&(callbackHost=parsed.host)}catch{}let message6=`${providerName} rejected the sign-in request before showing a login page (HTTP ${rejection.statusCode}). The most common cause is a redirect-host allowlist: this deployment's OAuth callback host (${callbackHost}) is not on the provider's approved list. Self-hosted deployments with a localhost callback are typically unaffected.`;return rejection.vendorDetail!==""&&(message6+=" Provider detail: "+rejection.vendorDetail),message6}function generateState(){return(0,import_node_crypto24.randomBytes)(32).toString("base64url")}async function sealPendingOAuthState(secretService,logger2,state2){if(!secretService.isEnabled())return logger2.warn("Encryption disabled: pending OAuth state secrets will be stored in plaintext"),state2;let scope=EncryptionScope.forOrganization(state2.org),sealedVerifier;try{sealedVerifier=await secretService.encrypt(state2.codeVerifier,scope)}catch(error2){throw new Error(`failed to encrypt code_verifier: ${error2 instanceof Error?error2.message:String(error2)}`)}let sealedSecret=state2.clientSecret;if(state2.clientSecret!=="")try{sealedSecret=await secretService.encrypt(state2.clientSecret,scope)}catch(error2){throw new Error(`failed to encrypt client_secret: ${error2 instanceof Error?error2.message:String(error2)}`)}return{...state2,codeVerifier:sealedVerifier,clientSecret:sealedSecret}}var mcpServerSearchExtractor={kind:ApiResourceKind.mcp_server,schema:McpServerSchema,getSearchSummary(resource){return resource.spec?.description??""},toSearchResult(resource,score){let mcpServer=resource;return buildSearchResult({kind:ApiResourceKind.mcp_server,metadata:mcpServer.metadata,summary:mcpServer.spec?.description??"",score,createdAt:mcpServer.status?.audit?.specAudit?.createdAt,updatedAt:mcpServer.status?.audit?.specAudit?.updatedAt,iconUrl:mcpServer.spec?.iconUrl??""})},getSearchIndexEntry(resource){let mcpServer=resource,metadata=mcpServer.metadata;if(metadata!==void 0)return{name:metadata.name,description:mcpServer.spec?.description??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(mcpServer.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};var RUNNER_QUEUE_WARNING="no runner appears to be polling the task queue \u2014 the connect will wait for one to come up (start your local runner if it is not running)";async function startConnect(deps,input,identity2){let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");if(input.org==="")throw invalidArgumentError("org is required for connect");let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch{throw notFoundError("mcp_server",mcpServerId)}await authorizeDirect(McpServerCommandController.method.startConnect,deps.authorizer,identity2,input);let engineState=deps.engineState();if(!engineState.connected)throw failedPreconditionError("connect is not available: Temporal not configured");let connectStatus=mcpServer.status?.connectStatus;if(connectStatus?.phase===ConnectPhase.connecting&&await engineState.engine.isConnectRunRunning(connectStatus.workflowId))return deps.logger.info("StartConnect attached to in-flight connect operation",{mcp_server_id:mcpServerId,workflow_id:connectStatus.workflowId}),mcpServer;let prepared=await prepareConnect(deps,mcpServer,input,identity2),warning2=await runnerQueueWarning(engineState.engine),run;try{run=await engineState.engine.startOrAttachConnect(mcpServerId,prepared.workflowInput,ASYNC_CONNECT_TIMEOUT.ms)}catch(error2){throw prepared.ecResourceId!==""&&await deleteConnectExecutionContext(deps,prepared.ecResourceId,prepared.executionId),deps.logger.error("Failed to start MCP connect workflow",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to start connect workflow")}if(run.attached){prepared.ecResourceId!==""&&await deleteConnectExecutionContext(deps,prepared.ecResourceId,prepared.executionId);try{return await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch{throw notFoundError("mcp_server",mcpServerId)}}let persisted;try{persisted=await persistConnectStarting(deps.store,mcpServerId,run.workflowId,warning2)}catch(error2){throw detachSettle(deps,mcpServer,run,prepared),internalError(error2,"failed to record connect operation")}return detachSettle(deps,mcpServer,run,prepared),persisted}function detachSettle(deps,mcpServer,run,prepared){settleConnectAsync(deps,mcpServer,run,prepared.ecResourceId,prepared.executionId).catch(error2=>{deps.logger.warn("Async connect settle task failed unexpectedly",{mcp_server_id:mcpServer.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})})}async function settleConnectAsync(deps,mcpServer,run,ecResourceId,executionId){let mcpServerId=mcpServer.metadata?.id??"";try{let outcome=await run.result(ASYNC_CONNECT_TIMEOUT.ms+BEST_EFFORT_CONNECT_GET_BUFFER_MS);if(!outcome.ok){let failure=mapConnectFailure(deps.logger,mcpServer,run.workflowId,outcome.failure,ASYNC_CONNECT_TIMEOUT);await persistConnectFailure(deps.store,deps.logger,mcpServerId,failure);return}let persisted,toolApprovalCount;try{({persisted,toolApprovalCount}=await persistConnectResult(deps.store,mcpServerId,run.workflowId,outcome.output))}catch(error2){if(error2 instanceof ResourceNotFoundError){deps.logger.info("Skipping async connect persistence: MCP server deleted before connect completed",{mcp_server_id:mcpServerId});return}deps.logger.warn("Failed to persist async connect result",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}deps.logger.info("Async MCP server connect completed and stored",{workflow_id:run.workflowId,mcp_server_id:mcpServerId,tools:persisted.status?.discoveredCapabilities?.tools.length??0,resource_templates:persisted.status?.discoveredCapabilities?.resourceTemplates.length??0,tool_approvals:toolApprovalCount})}finally{ecResourceId!==""&&await deleteConnectExecutionContext(deps,ecResourceId,executionId)}}async function runnerQueueWarning(engine){let hasPollers=await engine.hasRunnerQueuePollers();return hasPollers===void 0||hasPollers?"":RUNNER_QUEUE_WARNING}function newValidateDefaultEnabledToolsStep(){return{name:"ValidateDefaultEnabledTools",execute(ctx){let mcpServer=ctx.newState,requested=mcpServer.spec?.defaultEnabledTools??[];if(requested.length===0)return;let caps=mcpServer.status?.discoveredCapabilities;if(caps===void 0)return;let classification=classify(caps,requested);if(isValidClassification(classification))return;let problems=[];throw classification.unknown.length>0&&problems.push(`default_enabled_tools names tool(s) this server does not expose: ${quoteJoin(classification.unknown)}`),classification.resourceTemplates.length>0&&problems.push(`default_enabled_tools names resource template(s): ${quoteJoin(classification.resourceTemplates)} \u2014 resource templates are read-only data endpoints, not callable tools, and must not appear in default_enabled_tools`),invalidArgumentError(`MCP server '${mcpServer.metadata?.slug??""}': ${problems.join("; ")}. Discovered tools: ${quoteJoin(toolNames(caps))}. If the server's toolset changed, run 'stigmer connect' on it to refresh discovered capabilities.`)}}}function newEnrichOAuthStatusStep(store,logger2){return{name:"EnrichOAuthStatus",async execute(ctx){let mcpServer=ctx.get(TARGET_RESOURCE_KEY);if(mcpServer===void 0)return;let ref=mcpServer.spec?.auth?.oauthAppRef;if((ref?.slug??"")==="")return;let oauthApp;try{oauthApp=await resolveOAuthAppRef(store,ref,logger2)}catch(error2){logger2.warn("OAuthApp lookup failed; returning MCP server without oauth_status enrichment",{mcpServerId:mcpServer.metadata?.id??"",oauthAppSlug:ref?.slug??"",error:error2 instanceof Error?error2.message:String(error2)});return}if(oauthApp===void 0){logger2.debug("OAuthApp not found for ref; skipping oauth_status enrichment",{mcpServerId:mcpServer.metadata?.id??"",oauthAppSlug:ref?.slug??""});return}let approvalStatus=oauthApp.spec?.vendorApprovalStatus??VendorApprovalStatus.UNSPECIFIED,docsUrl=oauthApp.spec?.vendorApprovalDocsUrl??"";approvalStatus===VendorApprovalStatus.UNSPECIFIED&&docsUrl===""||(mcpServer.status??=create2(McpServerStatusSchema,{}),mcpServer.status.oauthStatus=create2(OAuthStatusSchema,{vendorApprovalStatus:approvalStatus,vendorApprovalDocsUrl:docsUrl}))}}}function registerMcpServerServices(router,deps){router.service(McpServerCommandController,{apply:(server,ctx)=>apply11(deps,server,ctx),create:(server,ctx)=>createMcpServer(deps,server,ctx),update:(server,ctx)=>update14(deps,server,ctx),updateVisibility:(input,ctx)=>updateVisibility4(deps,input,ctx),delete:(input,ctx)=>deleteMcpServer(deps,input,ctx),connect:(input,ctx)=>connect(deps.connect,input,callerIdentityOf(ctx)),startConnect:(input,ctx)=>startConnect(deps.connect,input,callerIdentityOf(ctx)),initiateOAuthConnect:(input,ctx)=>initiateOAuthConnect(deps.connect,input,callerIdentityOf(ctx)),completeOAuthConnect:(input,ctx)=>completeOAuthConnect(deps.connect,input,callerIdentityOf(ctx)),disconnectOAuth:(input,ctx)=>disconnectOAuth(deps.connect,input,callerIdentityOf(ctx)),setOrgOAuthApp:()=>{throw orgOAuthAppUnimplemented("SetOrgOAuthApp")},deleteOrgOAuthApp:()=>{throw orgOAuthAppUnimplemented("DeleteOrgOAuthApp")}}),router.service(McpServerQueryController,{get:(id,ctx)=>get19(deps,id,ctx),getByReference:(ref,ctx)=>getByReference11(deps,ref,ctx),getOAuthGrantStatus:(input,ctx)=>getOAuthGrantStatus(deps.connect,input,callerIdentityOf(ctx)),getOrgOAuthApp:()=>{throw orgOAuthAppUnimplemented("GetOrgOAuthApp")}})}function orgOAuthAppUnimplemented(method){return new ConnectError(`method ${method} not implemented`,Code.Unimplemented)}function kindOf18(ctx){return ctx.values.get(apiResourceKindKey)}function endpointAuthDeps(deps){return{outboundFetch:deps.connect.outboundFetch,logger:deps.logger}}async function createMcpServer(deps,server,ctx){let reqCtx=new RequestContext(McpServerSchema,server,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-create",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newCompleteEndpointAuthStep(endpointAuthDeps(deps))).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,mcpServerSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update14(deps,server,ctx){let reqCtx=new RequestContext(McpServerSchema,server,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-update",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newGuardPluginManagedStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newCompleteEndpointAuthStep(endpointAuthDeps(deps))).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newValidateDefaultEnabledToolsStep()).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPersistStep(deps.store)).addStep(newIndexSearchStep(deps.store,mcpServerSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function apply11(deps,server,ctx){let reqCtx=new RequestContext(McpServerSchema,server,callerIdentityOf(ctx),kindOf18(ctx));await newPipeline("mcpserver-apply",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");let result=shouldCreate?await createMcpServer(deps,server,ctx):await update14(deps,withResolvedApplyId(McpServerSchema,server,reqCtx),ctx);return startBestEffortConnect(deps.connect,result).catch(error2=>{deps.logger.warn("Best-effort connect task failed unexpectedly",{mcp_server_id:result.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}),result}async function deleteMcpServer(deps,input,ctx){let reqCtx=new RequestContext(McpServerCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf18(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("mcpserver-delete",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,McpServerSchema)).addStep(newGuardPluginManagedStep(deps.store)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted mcp server not found in context"),"deleted mcp server not found in context");return deleted}var UPDATE_VISIBILITY_MCP_SERVER_KEY="updateVisibilityMcpServer";async function updateVisibility4(deps,input,ctx){let reqCtx=new RequestContext(McpServerCommandController.method.updateVisibility.input,input,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-update-visibility",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.updateVisibility,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadMcpServerForVisibilityUpdateStep(deps.store)).addStep(newGuardPluginManagedStep(deps.store,{existingKey:UPDATE_VISIBILITY_MCP_SERVER_KEY})).addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_MCP_SERVER_KEY)).addStep(newValidateVisibilityUpdateStep()).addStep(newSetMcpServerVisibilityStep()).addStep(newPersistMcpServerForVisibilityUpdateStep(deps.store)).addStep(newUpdateVisibilityTuplesStep(deps.authorizationLifecycle,UPDATE_VISIBILITY_MCP_SERVER_KEY)).addStep(newIndexMcpServerAfterVisibilityUpdateStep(deps.store,deps.logger)).build().execute(reqCtx),reqCtx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY)}function newLoadMcpServerForVisibilityUpdateStep(store){return{name:"LoadMcpServerForVisibilityUpdate",async execute(ctx){let input=ctx.input,mcpServer;try{mcpServer=await store.getResource(ctx.apiResourceKind,input.resourceId,McpServerSchema)}catch{throw notFoundError("mcp_server",input.resourceId)}ctx.set(UPDATE_VISIBILITY_MCP_SERVER_KEY,mcpServer)}}}function newSetMcpServerVisibilityStep(){return{name:"SetMcpServerVisibility",execute(ctx){let mcpServer=ctx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY);mcpServer.metadata!==void 0&&(mcpServer.metadata.visibility=ctx.input.visibility),setAuditFieldsForUpdate(McpServerSchema,mcpServer,"status_audit",ctx.callerIdentity)}}}function newPersistMcpServerForVisibilityUpdateStep(store){return{name:"PersistMcpServerForVisibilityUpdate",async execute(ctx){let mcpServer=ctx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY);try{await store.saveResource(ctx.apiResourceKind,mcpServer.metadata?.id??"",McpServerSchema,mcpServer)}catch(error2){throw internalError(error2,"failed to save mcp server")}}}}function newIndexMcpServerAfterVisibilityUpdateStep(store,logger2){return{name:"IndexMcpServerAfterVisibilityUpdate",async execute(ctx){let mcpServer=ctx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY),entry=mcpServerSearchExtractor.getSearchIndexEntry(mcpServer);if(entry===void 0){logger2.warn("IndexMcpServerAfterVisibilityUpdate: extractor returned nil, skipping",{id:mcpServer.metadata?.id??""});return}try{await store.upsertSearchIndex(ctx.apiResourceKind,mcpServer.metadata?.id??"",entry)}catch(error2){logger2.warn("IndexMcpServerAfterVisibilityUpdate: failed (best-effort)",{id:mcpServer.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}}}}async function get19(deps,id,ctx){let reqCtx=new RequestContext(McpServerQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-get",deps.logger).addStep(newAuthorizeStep(McpServerQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,McpServerSchema)).addStep(newEnrichOAuthStatusStep(deps.store,deps.logger)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}async function getByReference11(deps,ref,ctx){let reqCtx=new RequestContext(McpServerQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-get-by-reference",deps.logger).addStep(newAuthorizeStep(McpServerQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,McpServerSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(McpServerQueryController.method.get))).addStep(newEnrichOAuthStatusStep(deps.store,deps.logger)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}function registerPlatformServices(router,deps){router.service(PlatformQueryController,{getServerInfo:()=>getServerInfo(deps),getLicenseStatus:()=>getLicenseStatus(deps),getRunnerBootstrapConfig:(_input,ctx)=>getRunnerBootstrapConfig(deps,ctx),getRunnerScopedToken:(input,ctx)=>getRunnerScopedToken(deps,input,ctx)})}function getServerInfo(deps){return create2(GetServerInfoOutputSchema,{edition:deps.edition,version:deps.version,authenticationRequired:deps.authenticationRequired})}async function getLicenseStatus(deps){let now=deps.now(),report=await deps.licenseStatus.status(now),output=create2(GetLicenseStatusOutputSchema,{state:report.state,checkedAt:timestampFromDate(now)});switch(report.state){case LicenseState.absent:return output;case LicenseState.invalid:return output.keyId=report.keyId,output;case LicenseState.valid:case LicenseState.expiring:case LicenseState.grace:case LicenseState.expired:return output.keyId=report.keyId,output.claims=report.claims,output;default:{let exhaustive=report;throw new Error(`unhandled license report: ${JSON.stringify(exhaustive)}`)}}}async function getRunnerBootstrapConfig(deps,ctx){let output=create2(GetRunnerBootstrapConfigOutputSchema,{temporalAddress:deps.temporalHostPort,temporalNamespace:deps.temporalNamespace}),bootstrapCredentials=deps.runnerAuthService.bootstrapCredentials?.bind(deps.runnerAuthService);if(bootstrapCredentials===void 0)return output;try{let credentials=await bootstrapCredentials(callerIdentityOf(ctx));credentials.accessToken!==void 0&&(output.runnerAccessToken=credentials.accessToken.token,output.tokenType="Bearer",output.runnerAccessTokenExpiresInSeconds=credentials.accessToken.expiresInSeconds),credentials.payloadKeys!==void 0&&(output.payloadEncryptionKey=credentials.payloadKeys.keyBase64,output.payloadEncryptionKeyId=credentials.payloadKeys.keyId,output.payloadEncryptionSecondaryKey=credentials.payloadKeys.secondaryKeyBase64??"",output.payloadEncryptionSecondaryKeyId=credentials.payloadKeys.secondaryKeyId??"")}catch(error2){deps.logger.warn("Bootstrap credentials unavailable \u2014 answering coordinates without them",{error:error2 instanceof Error?error2.message:String(error2)})}return output}async function getRunnerScopedToken(deps,input,ctx){let exchange=deps.runnerAuthService.exchangeScopedToken?.bind(deps.runnerAuthService);if(exchange!==void 0){let minted=await exchange(exchangeRequestOf(input),callerIdentityOf(ctx));return minted.minted?create2(GetRunnerScopedTokenOutputSchema,{runnerScopedToken:minted.token,tokenType:"Bearer",expiresInSeconds:minted.expiresInSeconds}):create2(GetRunnerScopedTokenOutputSchema)}let executionId;switch(input.scope.case){case"agentExecutionId":executionId=input.scope.value;break;case"workflowExecutionId":executionId=input.scope.value;break;case"poolClaim":case"renewal":case void 0:return create2(GetRunnerScopedTokenOutputSchema);default:{let exhaustive=input.scope;throw new Error(`unhandled scope arm: ${JSON.stringify(exhaustive)}`)}}if(executionId===""||!deps.runnerAuthService.isEnabled(TOKEN_TYPE_EXECUTION_SCOPED))return create2(GetRunnerScopedTokenOutputSchema);try{let minted=deps.runnerAuthService.mint(TOKEN_TYPE_EXECUTION_SCOPED,executionId,0);return create2(GetRunnerScopedTokenOutputSchema,{runnerScopedToken:minted.token,tokenType:"Bearer",expiresInSeconds:minted.ttlSeconds})}catch(error2){return deps.logger.warn("failed to mint runner scoped token \u2014 answering not-minted",{executionId,error:error2 instanceof Error?error2.message:String(error2)}),create2(GetRunnerScopedTokenOutputSchema)}}function exchangeRequestOf(input){switch(input.scope.case){case"agentExecutionId":return{arm:"agent-execution",executionId:input.scope.value};case"workflowExecutionId":return{arm:"workflow-execution",executionId:input.scope.value};case"poolClaim":return{arm:"pool-claim",sessionId:input.scope.value.sessionId};case"renewal":return{arm:"renewal"};case void 0:return{arm:"unset"};default:{let exhaustive=input.scope;throw new Error(`unhandled scope arm: ${JSON.stringify(exhaustive)}`)}}}var SERVER_VERSION="3.38.0";var file_ai_stigmer_agentic_session_v1_io=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9pby5wcm90bxIdYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEiIgoJU2Vzc2lvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiIAoHQWdlbnRJZBIVCgV2YWx1ZRgBIAEoCUIGukgDyAEBInQKC1Nlc3Npb25MaXN0EhMKC3RvdGFsX3BhZ2VzGAEgASgFEjcKB2VudHJpZXMYAiADKAsyJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uEhcKD25leHRfcGFnZV90b2tlbhgDIAEoCSJgChNMaXN0U2Vzc2lvbnNSZXF1ZXN0EhoKCXBhZ2Vfc2l6ZRgBIAEoBUIHukgEGgIoABISCgpwYWdlX3Rva2VuGAIgASgJEgwKBHRhZ3MYAyADKAkSCwoDb3JnGAQgASgJIncKIkxpc3RTZXNzaW9uc0J5QWdlbnRJbnN0YW5jZVJlcXVlc3QSIQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCBrpIA8gBARIaCglwYWdlX3NpemUYAiABKAVCB7pIBBoCKAASEgoKcGFnZV90b2tlbhgDIAEoCSJqChxMaXN0U2Vzc2lvbnNCeUNoYW5uZWxSZXF1ZXN0EhoKCmNoYW5uZWxfaWQYASABKAlCBrpIA8gBARIaCglwYWdlX3NpemUYAiABKAVCB7pIBBoCKAASEgoKcGFnZV90b2tlbhgDIAEoCSJCChtVcGRhdGVTZXNzaW9uU3ViamVjdFJlcXVlc3QSEgoCaWQYASABKAlCBrpIA8gBARIPCgdzdWJqZWN0GAIgASgJYgZwcm90bzM",[file_ai_stigmer_agentic_session_v1_api,file_buf_validate_validate]),SessionIdSchema=messageDesc2(file_ai_stigmer_agentic_session_v1_io,0);var SessionListSchema=messageDesc2(file_ai_stigmer_agentic_session_v1_io,2);var file_ai_stigmer_agentic_session_v1_command=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9jb21tYW5kLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MTLtBQoYU2Vzc2lvbkNvbW1hbmRDb250cm9sbGVyElcKBWFwcGx5EiYuYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuU2Vzc2lvbhomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24SpQEKBmNyZWF0ZRImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24aJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uIkvCuBhHCAgQHiIMbWV0YWRhdGEub3JnKjN1bmF1dGhvcml6ZWQgdG8gY3JlYXRlIHNlc3Npb24gaW4gdGhpcyBvcmdhbml6YXRpb24SjwEKBnVwZGF0ZRImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24aJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uIjXCuBgxCAIQKiILbWV0YWRhdGEuaWQqHnVuYXV0aG9yaXplZCB0byB1cGRhdGUgc2Vzc2lvbhKpAQoNdXBkYXRlU3ViamVjdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25TdWJqZWN0UmVxdWVzdBomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24iNMK4GDAIAhAqIgJpZComdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBzZXNzaW9uIHN1YmplY3QSiwEKBmRlbGV0ZRIoLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb25JZBomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24iL8K4GCsIAxAqIgV2YWx1ZSoedW5hdXRob3JpemVkIHRvIGRlbGV0ZSBzZXNzaW9uGgSg/ysqYgZwcm90bzM",[file_ai_stigmer_agentic_session_v1_api,file_ai_stigmer_agentic_session_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SessionCommandController=serviceDesc(file_ai_stigmer_agentic_session_v1_command,0);var file_ai_stigmer_agentic_session_v1_query=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9xdWVyeS5wcm90bxIdYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEyoQQKFlNlc3Npb25RdWVyeUNvbnRyb2xsZXIShQEKA2dldBIoLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb25JZBomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24iLMK4GCgIARAqIgV2YWx1ZSobdW5hdXRob3JpemVkIHRvIGdldCBzZXNzaW9uEmwKBGxpc3QSMi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5MaXN0U2Vzc2lvbnNSZXF1ZXN0GiouYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuU2Vzc2lvbkxpc3QiBNC4GAESigEKE2xpc3RCeUFnZW50SW5zdGFuY2USQS5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5MaXN0U2Vzc2lvbnNCeUFnZW50SW5zdGFuY2VSZXF1ZXN0GiouYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuU2Vzc2lvbkxpc3QiBNC4GAESfgoNbGlzdEJ5Q2hhbm5lbBI7LmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc0J5Q2hhbm5lbFJlcXVlc3QaKi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdCIE0LgYARoEoP8rKmIGcHJvdG8z",[file_ai_stigmer_agentic_session_v1_api,file_ai_stigmer_agentic_session_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SessionQueryController=serviceDesc(file_ai_stigmer_agentic_session_v1_query,0);function runAgentInstanceDeniedMessage2(agentInstanceId){return`unauthorized to run agent instance '${agentInstanceId}'`}function sessionRunTarget(session){let agentInstanceId=session.spec?.agentInstanceId??"";if(agentInstanceId!=="")return{...RUN_GATE_CHECKS.agentInstance,resourceId:agentInstanceId,deniedMessage:runAgentInstanceDeniedMessage2(agentInstanceId)}}var sessionSearchExtractor={kind:ApiResourceKind.session,schema:SessionSchema,getSearchSummary(resource){return resource.spec?.subject??""},toSearchResult(resource,score){let session=resource;return buildSearchResult({kind:ApiResourceKind.session,metadata:session.metadata,summary:session.spec?.subject??"",score,createdAt:session.status?.audit?.specAudit?.createdAt,updatedAt:session.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let session=resource,metadata=session.metadata;if(metadata!==void 0)return{name:metadata.name,description:session.spec?.subject??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(session.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};var SESSION_CHANNEL_ID_LABEL="stigmer.ai/channel-id",sessionListIndex=declareListIndex({kind:ApiResourceKind.session,schema:SessionSchema,revision:1,keys:{agent_instance:field2("spec.agent_instance_id"),channel:label(SESSION_CHANNEL_ID_LABEL)}});var LIST_RESULT_KEY8="listResult";function newValidateHarnessImmutabilityStep(){return{name:"ValidateHarnessImmutability",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)return;let existingSpec=existing.spec;if(existingSpec===void 0||existingSpec.harnessStateId==="")return;let inputSpec=ctx.input.spec;if(inputSpec===void 0)return;let existingHarness=existingSpec.harness,inputHarness=inputSpec.harness;if(existingHarness===Harness.UNSPECIFIED&&(existingHarness=Harness.NATIVE),inputHarness===Harness.UNSPECIFIED&&(inputHarness=Harness.NATIVE),inputHarness!==existingHarness)throw failedPreconditionError("session harness cannot be changed after the first execution \u2014 each harness owns its conversation state independently")}}}var EXECUTION_TARGET_GO_NAMES={[ExecutionTarget.UNSPECIFIED]:"EXECUTION_TARGET_UNSPECIFIED",[ExecutionTarget.LOCAL]:"EXECUTION_TARGET_LOCAL",[ExecutionTarget.CLOUD]:"EXECUTION_TARGET_CLOUD"};function newValidateExecutionTargetImmutabilityStep(temporalConfig){return{name:"ValidateExecutionTargetImmutability",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)return;let existingSpec=existing.spec;if(existingSpec===void 0||existingSpec.harnessStateId==="")return;let inputSpec=ctx.input.spec;if(inputSpec===void 0)return;let existingTarget=temporalConfig.resolveExecutionTarget(existingSpec.executionTarget),inputTarget=temporalConfig.resolveExecutionTarget(inputSpec.executionTarget);if(inputTarget!==existingTarget)throw failedPreconditionError(`session execution_target cannot be changed after the first execution (${EXECUTION_TARGET_GO_NAMES[existingTarget]} \u2192 ${EXECUTION_TARGET_GO_NAMES[inputTarget]}; unset resolves to the deployment default, ${temporalConfig.defaultExecutionTarget}) \u2014 workspace state may not be portable between local and cloud environments`)}}}function newRecordHarnessStateHistoryStep(){return{name:"RecordHarnessStateHistory",execute(ctx){let mergedSpec=ctx.newState.spec;if(mergedSpec===void 0)return;let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0||existing.spec===void 0)return;let existingSpec=existing.spec,history=[...existingSpec.harnessStateIdHistory],previousId=existingSpec.harnessStateId;previousId!==""&&previousId!==mergedSpec.harnessStateId&&!history.includes(previousId)&&history.push(previousId),mergedSpec.harnessStateIdHistory=history}}}function isActiveExecutionPhase(phase){switch(phase){case ExecutionPhase.EXECUTION_PENDING:case ExecutionPhase.EXECUTION_IN_PROGRESS:case ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL:case ExecutionPhase.EXECUTION_PAUSED:return!0;default:return!1}}async function listExecutionsBySession(store,logger2,sessionId){let rows;try{rows=await store.queryResources(agentExecutionListIndex,{anyKey:[{name:"session",value:sessionId}]})}catch(error2){throw internalError(error2,"failed to list agent executions")}let executions=[];for(let row of rows)try{executions.push(fromBinary2(AgentExecutionSchema,row.data))}catch(error2){logger2.warn("Failed to unmarshal execution, skipping",{error:error2 instanceof Error?error2.message:String(error2)})}return executions}function newRejectDeleteWithActiveExecutionsStep(store,logger2){return{name:"RejectDeleteWithActiveExecutions",async execute(ctx){let sessionId=requireSessionId(ctx),executions=await listExecutionsBySession(store,logger2,sessionId),activeCount=0;for(let execution of executions)isActiveExecutionPhase(execution.status?.phase??ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED)&&activeCount++;if(activeCount>0)throw failedPreconditionError(`session has ${activeCount} active execution(s); cancel them or wait for completion before deleting`)}}}function newCascadeDeleteAgentExecutionsStep(store,logger2){return{name:"CascadeDeleteAgentExecutions",async execute(ctx){let sessionId=requireSessionId(ctx),executions=await listExecutionsBySession(store,logger2,sessionId);if(executions.length!==0){for(let execution of executions){let executionId=execution.metadata?.id??"";try{await store.deleteResource(ApiResourceKind.agent_execution,executionId)}catch(error2){throw internalError(error2,`failed to cascade-delete execution ${executionId} of session ${sessionId}`)}try{await store.deleteSearchIndex(ApiResourceKind.agent_execution,executionId)}catch(error2){logger2.warn("CascadeDeleteAgentExecutions: failed to remove search index entry (best-effort)",{executionId,error:error2 instanceof Error?error2.message:String(error2)})}}logger2.info("Cascade-deleted executions of session",{sessionId,count:executions.length})}}}}function requireSessionId(ctx){let sessionId=ctx.get(RESOURCE_ID_KEY);if(typeof sessionId!="string"||sessionId==="")throw internalError(new Error("session id not found in context (ExtractResourceId must run first)"),"session id not found in context (ExtractResourceId must run first)");return sessionId}function newListAllSessionsStep(store,logger2,listReadScope){return{name:"ListAllSessions",async execute(ctx){let input=ctx.input,page=await readSessionPage(store,logger2,listReadScope,ctx.callerIdentity,ctx.input,{query:{org:input.org},fingerprint:{lane:"session.list",org:input.org,tags:input.tags}});ctx.set(LIST_RESULT_KEY8,page)}}}function newFilterByAgentInstanceStep(store,logger2,listReadScope){return{name:"FilterByAgentInstance",async execute(ctx){let agentInstanceId=ctx.input.agentInstanceId;if(agentInstanceId==="")throw invalidArgumentError("agent_instance_id is required");let page=await readSessionPage(store,logger2,listReadScope,ctx.callerIdentity,ctx.input,{query:{anyKey:[{name:"agent_instance",value:agentInstanceId}]},fingerprint:{lane:"session.listByAgentInstance",agentInstanceId}});ctx.set(LIST_RESULT_KEY8,page)}}}function newAuthorizeChannelAccessStep(authorizer){return newAuthorizeResolvedTargetStep(authorizer,({input})=>input.channelId===""?[]:[{permission:IamPermission.can_view,resourceKind:ApiResourceKind.agent_channel,resourceId:input.channelId,deniedMessage:"unauthorized to list channel conversations"}],"AuthorizeChannelAccess")}function newFilterByChannelStep(store,logger2,listReadScope){return{name:"FilterByChannel",async execute(ctx){let channelId=ctx.input.channelId;if(channelId==="")throw invalidArgumentError("channel_id is required");let page=await readSessionPage(store,logger2,listReadScope,ctx.callerIdentity,ctx.input,{query:{anyKey:[{name:"channel",value:channelId}]},fingerprint:{lane:"session.listByChannel",channelId}});ctx.set(LIST_RESULT_KEY8,page)}}}async function readSessionPage(store,logger2,listReadScope,caller,request,lane){let page=await readListPage({store,declaration:sessionListIndex,query:lane.query,request,fingerprint:listPageFingerprint(lane.fingerprint),decode:data=>{try{return fromBinary2(SessionSchema,data)}catch(error2){logger2.warn("Failed to unmarshal session, skipping",{error:error2 instanceof Error?error2.message:String(error2)});return}},scope:sessions=>restrictListByReadScope(listReadScope,caller,ApiResourceKind.session,sessions,""),failure:"failed to list sessions"});return create2(SessionListSchema,{entries:page.entries,nextPageToken:page.nextPageToken,totalPages:page.nextPageToken===""?1:0})}function registerSessionServices(router,deps){router.service(SessionCommandController,{apply:(session,ctx)=>apply12(deps,session,ctx),create:(session,ctx)=>createSession(deps,session,ctx),update:(session,ctx)=>update15(deps,session,ctx),updateSubject:(req,ctx)=>updateSubject(deps,req,callerIdentityOf(ctx)),delete:(id,ctx)=>deleteSession(deps,id,ctx)}),router.service(SessionQueryController,{get:(id,ctx)=>get20(deps,id,ctx),list:(req,ctx)=>list10(deps,req,ctx),listByAgentInstance:(req,ctx)=>listByAgentInstance(deps,req,ctx),listByChannel:(req,ctx)=>listByChannel(deps,req,ctx)})}function kindOf19(ctx){return ctx.values.get(apiResourceKindKey)}async function createSession(deps,session,ctx){let reqCtx=new RequestContext(SessionSchema,session,callerIdentityOf(ctx),kindOf19(ctx)),builder2=newPipeline("session-create",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.create,deps.authorizer)).addStep(newAuthorizeRunTargetStep(deps.authorizer,sessionRunTarget)).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store));for(let step of stepsForSlot(deps.gateSteps,"session-create:pre-side-effect-gate"))builder2.addStep(step);return await builder2.addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,sessionSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update15(deps,session,ctx){let reqCtx=new RequestContext(SessionSchema,session,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-update",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newValidateHarnessImmutabilityStep()).addStep(newValidateExecutionTargetImmutabilityStep(deps.temporalConfig)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newRecordHarnessStateHistoryStep()).addStep(newPersistStep(deps.store)).addStep(newIndexSearchStep(deps.store,sessionSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function apply12(deps,session,ctx){let reqCtx=new RequestContext(SessionSchema,session,callerIdentityOf(ctx),kindOf19(ctx));await newPipeline("session-apply",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createSession(deps,session,ctx):update15(deps,withResolvedApplyId(SessionSchema,session,reqCtx),ctx)}async function deleteSession(deps,sessionId,ctx){let reqCtx=new RequestContext(SessionCommandController.method.delete.input,sessionId,callerIdentityOf(ctx),kindOf19(ctx));await newPipeline("session-delete",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,SessionSchema)).addStep(newRejectDeleteWithActiveExecutionsStep(deps.store,deps.logger)).addStep(newCascadeDeleteAgentExecutionsStep(deps.store,deps.logger)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted session not found in context"),"deleted session not found in context");return await deprovisionSessionSandboxBestEffort(deps.sandboxLane,deps.logger,deleted.metadata?.id??""),deleted}async function updateSubject(deps,req,identity2){if(req.id==="")throw invalidArgumentError("id is required");let kind=ApiResourceKind.session,session;try{session=await deps.store.getResource(kind,req.id,SessionSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("session",req.id):internalError(error2,"failed to load session")}await authorizeDirect(SessionCommandController.method.updateSubject,deps.authorizer,identity2,req),session.spec===void 0&&(session.spec=create2(SessionSpecSchema,{})),session.spec.subject=req.subject,setAuditFieldsForUpdate(SessionSchema,session,"spec_audit",identity2);try{await deps.store.saveResource(kind,req.id,SessionSchema,session)}catch(error2){throw internalError(error2,"failed to persist session")}return await indexSessionSearch(deps,kind,session),session}async function indexSessionSearch(deps,kind,session){let entry=sessionSearchExtractor.getSearchIndexEntry(session);if(entry!==void 0)try{await deps.store.upsertSearchIndex(kind,session.metadata?.id??"",entry)}catch(error2){deps.logger.warn("UpdateSubject: failed to update search index (best-effort)",{id:session.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}}async function get20(deps,id,ctx){let reqCtx=new RequestContext(SessionQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-get",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,SessionSchema)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}async function list10(deps,req,ctx){let reqCtx=new RequestContext(SessionQueryController.method.list.input,req,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-list",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.list,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListAllSessionsStep(deps.store,deps.logger,deps.listReadScope)).build().execute(reqCtx),requireListResult2(reqCtx.get(LIST_RESULT_KEY8))}async function listByAgentInstance(deps,req,ctx){let reqCtx=new RequestContext(SessionQueryController.method.listByAgentInstance.input,req,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-list-by-agent-instance",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.listByAgentInstance,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newFilterByAgentInstanceStep(deps.store,deps.logger,deps.listReadScope)).build().execute(reqCtx),requireListResult2(reqCtx.get(LIST_RESULT_KEY8))}async function listByChannel(deps,req,ctx){let reqCtx=new RequestContext(SessionQueryController.method.listByChannel.input,req,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-list-by-channel",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.listByChannel,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newAuthorizeChannelAccessStep(deps.authorizer)).addStep(newFilterByChannelStep(deps.store,deps.logger,deps.listReadScope)).build().execute(reqCtx),requireListResult2(reqCtx.get(LIST_RESULT_KEY8))}function requireListResult2(result){if(result===void 0)throw internalError(new Error("session list not found in context"),"session list not found in context");return result}var file_ai_stigmer_agentic_plugin_v1_io=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvcGx1Z2luL3YxL2lvLnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxIiEKCFBsdWdpbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEi9wIKEVB1c2hQbHVnaW5SZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEhAKCGFydGlmYWN0GAIgASgMEhsKE2FydGlmYWN0X3VwbG9hZF9yZWYYAyABKAkSUwoKdmlzaWJpbGl0eRgEIAEoDjI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVZpc2liaWxpdHlCCLpIBYIBAhABEg8KB21lc3NhZ2UYBSABKAk6twG6SLMBGrABCiNwdXNoX3BsdWdpbl9yZXF1ZXN0LmFydGlmYWN0X3NvdXJjZRJJZXhhY3RseSBvbmUgb2YgYXJ0aWZhY3QgKGlubGluZSBieXRlcykgb3IgYXJ0aWZhY3RfdXBsb2FkX3JlZiBtdXN0IGJlIHNldBo+KHRoaXMuYXJ0aWZhY3Quc2l6ZSgpID4gMCkgIT0gKHRoaXMuYXJ0aWZhY3RfdXBsb2FkX3JlZiAhPSAnJykiWAokQ3JlYXRlUGx1Z2luQXJ0aWZhY3RVcGxvYWRVcmxSZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEhsKCnNpemVfYnl0ZXMYAiABKANCB7pIBCICIAAiWAoXUGx1Z2luQXJ0aWZhY3RVcGxvYWRVcmwSCwoDdXJsGAEgASgJEhsKE2FydGlmYWN0X3VwbG9hZF9yZWYYAiABKAkSEwoLdHRsX3NlY29uZHMYAyABKAUihQEKDFBsdWdpbk1lbWJlchJNCgRraW5kGAEgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmQSCgoCaWQYAiABKAkSDAoEc2x1ZxgDIAEoCRIMCgRuYW1lGAQgASgJIlgKGUxpc3RQbHVnaW5NZW1iZXJzUmVzcG9uc2USOwoHbWVtYmVycxgBIAMoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luTWVtYmVyImsKF0xpc3RQbHVnaW5WZXJzaW9uc0lucHV0EhMKA29yZxgBIAEoCUIGukgDyAEBEhQKBHNsdWcYAiABKAlCBrpIA8gBARISCgpwYWdlX3Rva2VuGAMgASgJEhEKCXBhZ2Vfc2l6ZRgEIAEoBSLtAQoSUGx1Z2luVmVyc2lvbkVudHJ5Eg4KBmRpZ2VzdBgBIAEoCRItCglwdXNoZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkgKCXB1c2hlZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSDwoHbWVzc2FnZRgGIAEoCRIcChRhcnRpZmFjdF9zdG9yYWdlX2tleRgHIAEoCSKOAQoaTGlzdFBsdWdpblZlcnNpb25zUmVzcG9uc2USQgoIdmVyc2lvbnMYASADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLlBsdWdpblZlcnNpb25FbnRyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAViBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]);var PushPluginRequestSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,1);var PluginArtifactUploadUrlSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,3),PluginMemberSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,4),ListPluginMembersResponseSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,5);var PluginVersionEntrySchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,7),ListPluginVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,8);var file_ai_stigmer_agentic_plugin_v1_command=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvcGx1Z2luL3YxL2NvbW1hbmQucHJvdG8SHGFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEy2gUKF1BsdWdpbkNvbW1hbmRDb250cm9sbGVyEqEBCgRwdXNoEi8uYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5QdXNoUGx1Z2luUmVxdWVzdBokLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luIkLCuBg+CCgQHiIDb3JnKjN1bmF1dGhvcml6ZWQgdG8gaW5zdGFsbCBwbHVnaW4gaW4gdGhpcyBvcmdhbml6YXRpb24S2AEKF2NyZWF0ZUFydGlmYWN0VXBsb2FkVXJsEkIuYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5DcmVhdGVQbHVnaW5BcnRpZmFjdFVwbG9hZFVybFJlcXVlc3QaNS5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLlBsdWdpbkFydGlmYWN0VXBsb2FkVXJsIkLCuBg+CCgQHiIDb3JnKjN1bmF1dGhvcml6ZWQgdG8gaW5zdGFsbCBwbHVnaW4gaW4gdGhpcyBvcmdhbml6YXRpb24SsAEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiQuYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5QbHVnaW4iP8K4GDsIAhA6IgtyZXNvdXJjZV9pZCoodW5hdXRob3JpemVkIHRvIHVwZGF0ZSBwbHVnaW4gdmlzaWJpbGl0eRKGAQoGZGVsZXRlEiYuYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5QbHVnaW5JZBokLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luIi7CuBgqCAMQOiIFdmFsdWUqHXVuYXV0aG9yaXplZCB0byBkZWxldGUgcGx1Z2luGgSg/ys6YgZwcm90bzM",[file_ai_stigmer_agentic_plugin_v1_api,file_ai_stigmer_agentic_plugin_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),PluginCommandController=serviceDesc(file_ai_stigmer_agentic_plugin_v1_command,0);var file_ai_stigmer_agentic_plugin_v1_query=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvcGx1Z2luL3YxL3F1ZXJ5LnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxMsMEChVQbHVnaW5RdWVyeUNvbnRyb2xsZXISgAEKA2dldBImLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luSWQaJC5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLlBsdWdpbiIrwrgYJwgBEDoiBXZhbHVlKhp1bmF1dGhvcml6ZWQgdG8gZ2V0IHBsdWdpbhJyCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRokLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luIgTQuBgBEqQBCgtsaXN0TWVtYmVycxImLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luSWQaNy5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLkxpc3RQbHVnaW5NZW1iZXJzUmVzcG9uc2UiNMK4GDAIARA6IgV2YWx1ZSojdW5hdXRob3JpemVkIHRvIGxpc3QgcGx1Z2luIG1lbWJlcnMShQEKDGxpc3RWZXJzaW9ucxI1LmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuTGlzdFBsdWdpblZlcnNpb25zSW5wdXQaOC5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLkxpc3RQbHVnaW5WZXJzaW9uc1Jlc3BvbnNlIgTQuBgBGgSg/ys6YgZwcm90bzM",[file_ai_stigmer_agentic_plugin_v1_api,file_ai_stigmer_agentic_plugin_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),PluginQueryController=serviceDesc(file_ai_stigmer_agentic_plugin_v1_query,0);var PLATFORM_ARCHIVE_LIMITS={maxFiles:1e4,maxUncompressedSize:524288e3,maxCompressionRatio:100};var import_node_fs8=__toESM(require("node:fs"),1),import_node_path11=__toESM(require("node:path"),1),import_promises6=require("node:stream/promises"),SlotUnknownError=class extends Error{constructor(){super("upload reference unknown or expired"),this.name="SlotUnknownError"}},SlotConsumedError=class extends Error{constructor(){super("upload reference already carries an upload"),this.name="SlotConsumedError"}},SizeMismatchError=class extends Error{constructor(received,declared){super(`upload size mismatch: received ${received} bytes, declared ${declared}`),this.name="SizeMismatchError"}},STAGED_FILE_NAME=/^[0-9a-f]+\.zip$/,UploadSlots=class{root;stagingPrefix;ttlMs;maxSize;slots=new Map;stagingDir;now;constructor(root5,stagingPrefix,ttlMs,maxSize,now=Date.now){this.root=root5,this.stagingPrefix=stagingPrefix,this.ttlMs=ttlMs,this.maxSize=maxSize,this.stagingDir=import_node_path11.default.join(root5,stagingPrefix),import_node_fs8.default.rmSync(this.stagingDir,{recursive:!0,force:!0}),import_node_fs8.default.mkdirSync(this.stagingDir,{recursive:!0,mode:448}),this.now=now}reserve(key,declaredSize){if(declaredSize<=0||declaredSize>this.maxSize)throw new Error(`declared size ${declaredSize} outside (0, ${this.maxSize}]`);if(this.stagePath(key),this.slots.has(key))throw new Error(`staging key ${key} is already reserved`);return this.sweep(),this.slots.set(key,{declaredSize,expiresAtMs:this.now()+this.ttlMs,uploaded:!1}),{ttlMs:this.ttlMs}}async receive(key,body){let slot=this.slots.get(key);if(slot===void 0||this.now()>slot.expiresAtMs)throw new SlotUnknownError;if(slot.uploaded)throw new SlotConsumedError;let declared=slot.declaredSize,filePath=this.stagePath(key),written=0;try{await import_node_fs8.default.promises.mkdir(import_node_path11.default.dirname(filePath),{recursive:!0,mode:448}),await(0,import_promises6.pipeline)(body,limitBytes(declared+1,n3=>{written+=n3}),import_node_fs8.default.createWriteStream(filePath,{flags:"w",mode:384}))}catch(error2){throw await import_node_fs8.default.promises.rm(filePath,{force:!0}),new Error(`failed to receive upload: ${error2 instanceof Error?error2.message:String(error2)}`)}if(written!==declared)throw await import_node_fs8.default.promises.rm(filePath,{force:!0}),new SizeMismatchError(written,declared);let current=this.slots.get(key);if(current===void 0||this.now()>current.expiresAtMs)throw await import_node_fs8.default.promises.rm(filePath,{force:!0}),new SlotUnknownError;current.uploaded=!0}sweep(){let nowMs=this.now();for(let[key,slot]of this.slots)nowMs>slot.expiresAtMs&&(this.slots.delete(key),import_node_fs8.default.rmSync(this.stagePath(key),{force:!0}))}stagePath(key){if(!key.startsWith(this.stagingPrefix))throw new Error(`staging key ${key} is outside ${this.stagingPrefix}`);let fileName=key.slice(this.stagingPrefix.length);if(!STAGED_FILE_NAME.test(fileName))throw new Error(`staging key ${key} does not name a staged archive`);return import_node_path11.default.join(this.root,key)}};function limitBytes(limit,onBytes){return async function*(source){let remaining=limit;for await(let chunk of source){if(remaining<=0)return;let slice=chunk.length<=remaining?chunk:chunk.subarray(0,remaining);remaining-=slice.length,onBytes(slice.length),yield slice}}}var ARTIFACT_BYTES_KEY="pushArtifactBytes";function newResolveArtifactSourceStep(staging,binding){return{name:"ResolveArtifactSource",async execute(ctx){let{artifact,artifactUploadRef}=binding.source(ctx.input);if(artifactUploadRef===""){ctx.set(ARTIFACT_BYTES_KEY,artifact);return}if(staging===void 0)throw failedPreconditionError(binding.laneNotConfigured);let data;try{data=await staging.consume(artifactUploadRef)}catch(error2){throw error2 instanceof SlotUnknownError?invalidArgumentError(`artifact_upload_ref not usable: ${error2.message} \u2014 request a new upload URL via createArtifactUploadUrl`):error2}ctx.set(ARTIFACT_BYTES_KEY,data)}}}function newArchiveCurrentVersionStep(store,logger2,binding){return{name:binding.stepName,async execute(ctx){let resource=ctx.get(binding.resourceKey),versionHash=binding.headHashOf(resource);if(versionHash==="")return;let tag2=binding.liveTagOf(resource),resourceId=metadataOf(resource)?.id??"",idField=`${binding.noun}Id`,alreadyArchived=!1;try{await store.getAuditByHash(ctx.apiResourceKind,resourceId,versionHash,binding.schema),alreadyArchived=!0}catch(error2){error2 instanceof AuditNotFoundError||logger2.warn(`Could not check for an existing archived ${binding.noun} version \u2014 archiving anyway`,{[idField]:resourceId,versionHash,error:error2 instanceof Error?error2.message:String(error2)})}if(!alreadyArchived)try{await store.saveAudit(ctx.apiResourceKind,resourceId,binding.schema,resource,versionHash,"")}catch(error2){logger2.error(`Failed to archive ${binding.noun} version \u2014 reverting the version hash to maintain the audit-resolvability invariant`,{[idField]:resourceId,versionHash,error:error2 instanceof Error?error2.message:String(error2)}),binding.clearHeadHash(resource);return}if(tag2!=="")try{await store.setAuditTag(ctx.apiResourceKind,resourceId,versionHash,tag2)}catch(error2){logger2.error(`Archived ${binding.noun} version but failed to assign its tag \u2014 clearing the live tag to stay consistent with the audit column`,{[idField]:resourceId,versionHash,tag:tag2,error:error2 instanceof Error?error2.message:String(error2)}),binding.clearLiveTag(resource)}alreadyArchived?logger2.info(`${capitalize(binding.noun)} version content already archived \u2014 repointed head without a new history row`,{[idField]:resourceId,versionHash,tag:tag2}):logger2.info(`Archived ${binding.noun} version to audit history`,{[idField]:resourceId,versionHash,tag:tag2})}}}function newDeleteVersionArchivesStep(store,logger2,binding){return{name:binding.stepName,async execute(ctx){let resourceId=ctx.get(RESOURCE_ID_KEY);if(typeof resourceId!="string")throw new Error("resource id not found in context (ExtractResourceIdStep must run first)");let idField=`${binding.noun}Id`;try{let deletedCount=await store.deleteAuditByResourceId(ctx.apiResourceKind,resourceId);deletedCount>0&&logger2.info(`Deleted archive records for ${binding.noun}`,{[idField]:resourceId,count:deletedCount})}catch(error2){logger2.warn(`failed to delete ${binding.noun} archives (best-effort)`,{[idField]:resourceId,error:error2 instanceof Error?error2.message:String(error2)})}}}}function capitalize(word){return word.charAt(0).toUpperCase()+word.slice(1)}var HASH_PATTERN=/^[a-f0-9]{64}$/;function isVersionHash(version){return HASH_PATTERN.test(version)}function newLoadByReferenceWithVersionStep(store,binding,stepName){return{name:stepName,async execute(ctx){let ref=ctx.input;if(ref.slug==="")throw invalidArgumentError("slug is required in reference");if(requireOrgForReference(ctx.apiResourceKind,ref.org),ref.kind!==ApiResourceKind.api_resource_kind_unknown&&ref.kind!==binding.kind)throw invalidArgumentError(`kind mismatch: expected ${ApiResourceKind[binding.kind]}, got ${ApiResourceKind[ref.kind]}`);let head;try{head=await findResourceBySlug(store,ctx.apiResourceKind,binding.schema,ref.slug,ref.org)}catch(error2){throw internalError(error2,`failed to list ${binding.noun}s`)}if(head===void 0)throw notFoundError(binding.noun,ref.slug);let version=ref.version.trim();if(version===""||version==="latest"){ctx.set(TARGET_RESOURCE_KEY,head);return}if(headMatchesVersion(binding,head,version)){ctx.set(TARGET_RESOURCE_KEY,head);return}let archived=await findAuditByVersion(store,ctx.apiResourceKind,binding.schema,idOf(head),version);if(archived===void 0)throw notFoundError(`${binding.noun} version`,`${ref.slug}:${version}`);ctx.set(TARGET_RESOURCE_KEY,archived)}}}function headMatchesVersion(binding,head,version){if(isVersionHash(version))return binding.headHashOf(head)===version;let liveTag=binding.liveTagOf(head);return liveTag!==""&&liveTag===version}async function findAuditByVersion(store,kind,schema2,resourceId,version){if(isVersionHash(version))try{return await store.getAuditByHash(kind,resourceId,version,schema2)}catch(error2){if(error2 instanceof AuditNotFoundError)return;throw internalError(error2,"failed to query audit by hash")}try{return await store.getAuditByTag(kind,resourceId,version,schema2)}catch(error2){if(error2 instanceof AuditNotFoundError)return;throw internalError(error2,"failed to query audit by tag")}}var DEFAULT_PAGE_SIZE=50,MAX_PAGE_SIZE=100,LIST_VERSIONS_RESOURCE_ID_KEY="listVersionsResourceId",LIST_VERSIONS_HEAD_HASH_KEY="listVersionsHeadHash",LIST_VERSIONS_RESPONSE_KEY="listVersionsResponse";function versionHistoryTarget(kind,deniedMessage,idKey=LIST_VERSIONS_RESOURCE_ID_KEY){return ctx=>{let resourceId=ctx.get(idKey);if(typeof resourceId!="string"||resourceId==="")throw new Error(`ListVersions: no resolved resource id under ${idKey}; the slug resolver must run first`);return[{permission:IamPermission.can_view,resourceKind:kind,resourceId,deniedMessage}]}}function newResolveBySlugForVersionsStep(store,binding,stepName){return{name:stepName,async execute(ctx){let req=binding.input(ctx.input),head;try{head=await findResourceBySlug(store,ctx.apiResourceKind,binding.schema,req.slug,req.org)}catch(error2){throw internalError(error2,`failed to search for ${binding.noun}`)}if(head===void 0)throw notFoundError(binding.noun,`${req.slug} (org: ${req.org})`);ctx.set(LIST_VERSIONS_RESOURCE_ID_KEY,idOf(head)),ctx.set(LIST_VERSIONS_HEAD_HASH_KEY,binding.headHashOf(head))}}}function newLoadAndMapVersionsStep(store,binding,stepName){return{name:stepName,async execute(ctx){let req=binding.input(ctx.input),resourceId=ctx.get(LIST_VERSIONS_RESOURCE_ID_KEY),records;try{records=await store.listAuditRecords(ctx.apiResourceKind,resourceId)}catch(error2){throw internalError(error2,"failed to load version history")}let headHash=ctx.get(LIST_VERSIONS_HEAD_HASH_KEY),currentMarked=!1,entries=[];for(let record2 of records){let snapshot;try{snapshot=fromBinary2(binding.schema,record2.data)}catch{continue}let isCurrent=!currentMarked&&headHash!==""&&binding.headHashOf(snapshot)===headHash;currentMarked=currentMarked||isCurrent,entries.push(binding.mapEntry(snapshot,isCurrent,record2.tag))}let pageSize=req.pageSize;pageSize<=0&&(pageSize=DEFAULT_PAGE_SIZE),pageSize>MAX_PAGE_SIZE&&(pageSize=MAX_PAGE_SIZE);let startIndex=0;req.pageToken!==""&&(startIndex=decodePageToken(req.pageToken));let pageEntries=[],nextPageToken="";if(startIndex<entries.length){let end=Math.min(startIndex+pageSize,entries.length);pageEntries=entries.slice(startIndex,end),end<entries.length&&(nextPageToken=Buffer.from(String(end)).toString("base64"))}ctx.set(LIST_VERSIONS_RESPONSE_KEY,binding.response(pageEntries,nextPageToken,entries.length))}}}function decodePageToken(token){let decoded=Buffer.from(token,"base64");if(decoded.toString("base64")!==token)throw invalidArgumentError("invalid page_token");let text2=decoded.toString("utf8"),index2=Number.parseInt(text2,10);if(!Number.isSafeInteger(index2)||String(index2)!==text2||index2<0)throw invalidArgumentError("invalid page_token");return index2}function idOf(resource){return metadataOf(resource)?.id??""}var PLUGIN_ARTIFACT_KEY_PREFIX="plugins/",VERSION_TAG_PATTERN=/^[a-zA-Z0-9._-]+$/,BUILT_IN_SUB_AGENT_NAMES=new Set(["explore","shell","general-purpose"]);var TRANSFER_LANE_NOT_CONFIGURED="plugin artifact transfer lane is not configured on this server",SERVER_WARNING_KINDS={componentIgnored:"component-ignored",memberAdopted:"member-adopted",modelHintUnresolved:"model-hint-unresolved",subAgentNameBuiltin:"sub-agent-name-builtin",versionNotTaggable:"version-not-taggable"};var MEMBER_KINDS=[{kind:ApiResourceKind.skill,schema:SkillSchema},{kind:ApiResourceKind.mcp_server,schema:McpServerSchema},{kind:ApiResourceKind.agent,schema:AgentSchema},{kind:ApiResourceKind.workflow,schema:WorkflowSchema}];function memberOf(kind,metadata){return{kind,id:metadata.id,slug:metadata.slug,name:metadata.name,version:metadata.labels[PLUGIN_VERSION_LABEL]??"",system:isSystemContent(metadata)}}async function findMembers(store,pluginId,org){let members=[];for(let{kind,schema:schema2}of MEMBER_KINDS){let raws=await store.findAllByLabel(kind,PLUGIN_LABEL,pluginId,schema2);for(let raw of raws){let metadata=metadataOf(fromBinary2(schema2,raw));metadata!==void 0&&metadata.org===org&&members.push(memberOf(kind,metadata))}}return members}async function slugHolder(store,planned,org){let entry=MEMBER_KINDS.find(candidate=>candidate.kind===planned.kind);if(entry===void 0)throw new Error(`kind ${ApiResourceKind[planned.kind]} is not a plugin member kind`);let existing=await findResourceBySlug(store,planned.kind,entry.schema,planned.slug,org),metadata=existing===void 0?void 0:metadataOf(existing);return metadata===void 0?{held:!1}:{held:!0,byPlugin:pluginIdOf(metadata),holder:memberOf(planned.kind,metadata)}}function judgeSlug(holder,planned,pluginId){return holder.held?holder.byPlugin===pluginId?{kind:"ours",holder:holder.holder}:holder.byPlugin!==void 0?{kind:"held-by-plugin",holder:holder.holder,pluginId:holder.byPlugin}:holder.holder.system&&planned.system?{kind:"adopt",holder:holder.holder}:{kind:"held-unmanaged",holder:holder.holder}:{kind:"free"}}function membersConverge(existing,planned,digest3){if(existing.length!==planned.length)return!1;let byKey=new Map(existing.map(member2=>[`${member2.kind}:${member2.slug}`,member2]));return planned.every(member2=>{let found=byKey.get(`${member2.kind}:${member2.slug}`);return found!==void 0&&found.version===digest3})}function droppedMembers(existing,planned){let keep=new Set(planned.map(member2=>`${member2.kind}:${member2.slug}`));return existing.filter(member2=>!keep.has(`${member2.kind}:${member2.slug}`))}var PLUGIN_DOCUMENT_LIMITS={manifest:262144,mcpConfig:262144,skillMd:1048576,subAgent:1048576,overlay:1048576,logo:1048576,marketplace:1048576},encoder5=new TextEncoder,decoder3=new TextDecoder("utf-8",{fatal:!1});function comparePaths(a5,b7){return a5<b7?-1:a5>b7?1:0}function decodeUtf8(bytes){let text2=decoder3.decode(bytes);return text2.charCodeAt(0)===65279?text2.slice(1):text2}function isContainedPath(path14){return path14===""||path14.startsWith("/")||path14.includes("\\")?!1:path14.split("/").every(segment=>segment!==""&&segment!=="."&&segment!=="..")}var GLOB_CHARACTERS=/[*?[\]{}]/;function resolveDeclaredPath(value){if(GLOB_CHARACTERS.test(value))return{ok:!1,kind:"path-glob-unsupported"};if(value==="."||value==="./")return{ok:!0,path:""};if(!value.startsWith("./"))return{ok:!1,kind:"path-not-relative"};let trimmed=value.slice(2).replace(/\/+$/,"");return trimmed===""?{ok:!0,path:""}:isContainedPath(trimmed)?{ok:!0,path:trimmed}:{ok:!1,kind:"path-escapes-root"}}function joinPath(dir,name){return dir===""?name:`${dir}/${name}`}function basename(path14){let slash=path14.lastIndexOf("/");return slash===-1?path14:path14.slice(slash+1)}function dirname(path14){let slash=path14.lastIndexOf("/");return slash===-1?"":path14.slice(0,slash)}var PluginFileIndex=class{files;byPath;constructor(files){this.files=files,this.byPath=new Map(files.entries.map(entry=>[entry.path,entry]))}has(path14){return this.byPath.has(path14)}entry(path14){return this.byPath.get(path14)}filesUnder(dir){if(dir==="")return this.files.entries.map(entry=>entry.path);let prefix=`${dir}/`;return this.files.entries.filter(entry=>entry.path.startsWith(prefix)).map(entry=>entry.path)}isDirectory(dir){if(dir==="")return this.files.entries.length>0;let prefix=`${dir}/`;return this.files.entries.some(entry=>entry.path.startsWith(prefix))}childDirectories(dir){let prefix=dir===""?"":`${dir}/`,names=new Set;for(let entry of this.files.entries){if(!entry.path.startsWith(prefix))continue;let rest=entry.path.slice(prefix.length),slash=rest.indexOf("/");slash!==-1&&names.add(rest.slice(0,slash))}return[...names].sort(comparePaths)}childFiles(dir){let prefix=dir===""?"":`${dir}/`,names=[];for(let entry of this.files.entries){if(!entry.path.startsWith(prefix))continue;let rest=entry.path.slice(prefix.length);rest.includes("/")||names.push(rest)}return names.sort(comparePaths)}};function readText(index2,path14,cls,findings){let bytes=readBytes(index2,path14,cls,findings);return bytes===void 0?void 0:decodeUtf8(bytes)}function readBytes(index2,path14,cls,findings){let limit=PLUGIN_DOCUMENT_LIMITS[cls],entry=index2.entry(path14);if(entry===void 0)throw new Error(`plugin file '${path14}' is not listed`);if(entry.size>limit){findings.error("document-too-large",{path:path14,subject:String(entry.size),detail:String(limit)});return}let bytes=index2.files.read(path14);if(bytes.length>limit){findings.error("document-too-large",{path:path14,subject:String(bytes.length),detail:String(limit)});return}return bytes}function parseJsonObject2(text2,path14,kind,findings){let value;try{value=JSON.parse(text2)}catch(error2){findings.error(kind,{path:path14,detail:error2 instanceof Error?error2.message:String(error2)});return}if(!isJsonObject2(value)){findings.error(kind,{path:path14,detail:"the document is not a JSON object"});return}return value}function isJsonObject2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function isStringArray(value){return Array.isArray(value)&&value.every(item=>typeof item=="string")}function isStringRecord(value){return isJsonObject2(value)&&Object.values(value).every(item=>typeof item=="string")}function describeValue(value){return typeof value=="string"?value:JSON.stringify(value)}function fields(object){return Object.entries(object)}function optionalString(object,field3,path14,findings){let value=object[field3];if(value!==void 0){if(typeof value!="string"){findings.error("manifest-field-type",{path:path14,subject:field3,detail:"a string"});return}return value}}function optionalStringArray(object,field3,path14,findings){let value=object[field3];if(value!==void 0){if(!isStringArray(value)){findings.error("manifest-field-type",{path:path14,subject:field3,detail:"an array of strings"});return}return value}}function stringOrStringArray(object,field3,path14,findings){let value=object[field3];if(value!==void 0){if(typeof value=="string")return[value];if(isStringArray(value))return value;findings.error("manifest-field-type",{path:path14,subject:field3,detail:"a string or an array of strings"})}}function warnUnknownFields(object,known,path14,findings){for(let[name]of fields(object))known.has(name)||findings.warn("manifest-field-unknown",{path:path14,subject:name})}function readIdentity(object,path14,findings){let identity2={},name=optionalString(object,"name",path14,findings);name!==void 0&&(identity2.name=name);let version=optionalString(object,"version",path14,findings);version!==void 0&&(identity2.version=version);let description=optionalString(object,"description",path14,findings);description!==void 0&&(identity2.description=description);let homepage=optionalString(object,"homepage",path14,findings);homepage!==void 0&&(identity2.homepage=homepage);let repository=optionalString(object,"repository",path14,findings);repository!==void 0&&(identity2.repository=repository);let license=optionalString(object,"license",path14,findings);license!==void 0&&(identity2.license=license);let keywords=optionalStringArray(object,"keywords",path14,findings);keywords!==void 0&&(identity2.keywords=keywords);let author=readAuthor(object,path14,findings);return author!==void 0&&(identity2.author=author),identity2}function readAuthor(object,path14,findings){let value=object.author;if(value===void 0)return;if(!isJsonObject2(value)){findings.error("manifest-field-type",{path:path14,subject:"author",detail:"an object"});return}let author={},name=optionalString(value,"name",path14,findings);name!==void 0&&(author.name=name);let email=optionalString(value,"email",path14,findings);email!==void 0&&(author.email=email);let url=optionalString(value,"url",path14,findings);return url!==void 0&&(author.url=url),author}function readDeclaredPaths(object,field3,path14,findings){let values=stringOrStringArray(object,field3,path14,findings);if(values===void 0)return;let declared=[];for(let value of values){let resolved=resolveDeclaredPath(value);if(!resolved.ok){findings.error(resolved.kind,{path:path14,subject:value});continue}declared.push({path:resolved.path,manifest:path14})}return declared}function readMcpSources(object,field3,path14,dialect,findings){let value=object[field3];if(value===void 0)return[];let items=Array.isArray(value)?value:[value],sources=[];for(let item of items)if(typeof item=="string"){let resolved=resolveDeclaredPath(item);if(!resolved.ok){findings.error(resolved.kind,{path:path14,subject:item});continue}sources.push({kind:"file",path:resolved.path,dialect,manifest:path14})}else isJsonObject2(item)?sources.push({kind:"inline",manifest:path14,servers:item,dialect}):findings.error("manifest-field-type",{path:path14,subject:field3,detail:"a path, an object, or an array of either"});return sources}var IGNORED_FIELD_KINDS={hooks:"hooks",rules:"rules",commands:"commands",workflows:"workflows",outputStyles:"output-styles",lspServers:"lsp-servers",channels:"channels",dependencies:"dependencies",defaultEnabled:"default-enabled",minClientVersions:"min-client-versions",logo:"logo",apps:"apps"};function ignoredFieldComponents(object,path14){let ignored=[];for(let[name,value]of fields(object)){let kind=IGNORED_FIELD_KINDS[name];if(kind!==void 0&&ignored.push({kind,path:`${path14}#${name}`}),name==="experimental"&&isJsonObject2(value))for(let[sub]of fields(value)){let subKind=EXPERIMENTAL_KINDS[sub];subKind!==void 0&&ignored.push({kind:subKind,path:`${path14}#experimental.${sub}`})}}return ignored}var EXPERIMENTAL_KINDS={themes:"themes",monitors:"monitors",evals:"evals"},STIGMER_EXTENSION_NAMESPACE="ai.stigmer",STIGMER_EXTENSION_FIELDS=new Set(["displayName","logo","category"]);function extensionComponents(object,path14,findings){let value=object.extensions;if(value===void 0)return[];if(!isJsonObject2(value))return findings.warn("manifest-extensions-invalid",{path:path14}),[];let ignored=[];for(let[namespace,content]of fields(value)){if(isJsonObject2(content)&&fields(content).length===0)continue;let at2=`${path14}#extensions.${namespace}`;if(namespace===STIGMER_EXTENSION_NAMESPACE&&isJsonObject2(content)){content.logo!==void 0&&ignored.push({kind:"logo",path:`${at2}.logo`}),fields(content).some(([name])=>!STIGMER_EXTENSION_FIELDS.has(name))&&ignored.push({kind:"extension",path:at2});continue}ignored.push({kind:"extension",path:at2})}return ignored}var CLAUDE_KNOWN_FIELDS=new Set(["name","version","description","author","homepage","repository","license","keywords","skills","commands","agents","workflows","hooks","mcpServers","outputStyles","lspServers","experimental","userConfig","channels","dependencies","defaultEnabled"]),CLAUDE_DEFAULT_MCP_CONFIG=".mcp.json";function readClaudeManifest(object,path14,findings){return readClaudeShapedManifest(object,path14,"claude",CLAUDE_KNOWN_FIELDS,findings)}function readClaudeShapedManifest(object,path14,dialect,known,findings){warnUnknownFields(object,known,path14,findings);let identity2=readIdentity(object,path14,findings),skillPaths=readDeclaredPaths(object,"skills",path14,findings)??[],agentPaths=readDeclaredPaths(object,"agents",path14,findings),declaredMcp=readMcpSources(object,"mcpServers",path14,dialect,findings),manifest={dialect,path:path14,identity:identity2,skillPaths,mcpConfigs:declaredMcp,ignored:ignoredFieldComponents(object,path14)};return agentPaths!==void 0&&(manifest.agentPaths=agentPaths),object.userConfig!==void 0&&(manifest.variables={dialect:"claude",value:object.userConfig,manifest:path14}),manifest}var KNOWN_FIELDS=new Set([...CLAUDE_KNOWN_FIELDS,"apps","interface"]);function readCodexManifest(object,path14,findings){return readClaudeShapedManifest(object,path14,"codex",KNOWN_FIELDS,findings)}var KNOWN_FIELDS2=new Set(["name","displayName","description","version","minClientVersions","author","publisher","homepage","repository","license","logo","keywords","category","tags","commands","agents","skills","rules","hooks","variables","mcpServers"]);function readCursorManifest(object,path14,findings){warnUnknownFields(object,KNOWN_FIELDS2,path14,findings);let identity2=readIdentity(object,path14,findings),skillPaths=readDeclaredPaths(object,"skills",path14,findings)??[],agentPaths=readDeclaredPaths(object,"agents",path14,findings),manifest={dialect:"cursor",path:path14,identity:identity2,skillPaths,mcpConfigs:readMcpSources(object,"mcpServers",path14,"cursor",findings),ignored:ignoredFieldComponents(object,path14)};return agentPaths!==void 0&&(manifest.agentPaths=agentPaths),object.variables!==void 0&&(manifest.variables={dialect:"cursor",value:object.variables,manifest:path14}),manifest}var AGENT_PLUGINS_MANIFEST_SCHEMA="https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",AGENT_PLUGINS_MCP_SCHEMA="https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",MANIFEST_LOCATIONS={"agent-plugins":"plugin.json",claude:".claude-plugin/plugin.json",cursor:".cursor-plugin/plugin.json",codex:".codex-plugin/plugin.json"},q3=value=>`'${value??""}'`,at=path14=>path14===void 0?"":` in ${q3(path14)}`,ERROR_MESSAGES={"no-manifest":()=>`no plugin manifest found: expected one of ${Object.values(MANIFEST_LOCATIONS).map(p3=>q3(p3)).join(", ")}`,"manifest-unreadable":c5=>`manifest ${q3(c5.path)} is not valid JSON: ${c5.detail??"parse error"}`,"manifest-schema-missing":c5=>`manifest ${q3(c5.path)} is missing the required '$schema' field; an Agent Plugins manifest declares ${q3(AGENT_PLUGINS_MANIFEST_SCHEMA)}`,"manifest-schema-unsupported":c5=>`manifest ${q3(c5.path)} declares an unsupported '$schema' ${q3(c5.detail)}; this reader supports ${q3(AGENT_PLUGINS_MANIFEST_SCHEMA)}`,"manifest-name-missing":c5=>`manifest ${q3(c5.path)} is missing the required 'name' field`,"manifest-name-invalid":c5=>`plugin name ${q3(c5.subject)}${at(c5.path)} is invalid: 1 to 64 characters of lowercase letters, digits, hyphens and periods, starting and ending alphanumeric, with no '--' or '..'`,"manifest-name-conflict":c5=>`manifests disagree on the plugin name: ${q3(c5.subject)} in ${q3(c5.path)} versus ${c5.detail??"another manifest"}`,"manifest-field-type":c5=>`field ${q3(c5.subject)}${at(c5.path)} has the wrong type: expected ${c5.detail??"a different type"}`,"path-not-relative":c5=>`path ${q3(c5.subject)}${at(c5.path)} must be plugin-relative and begin with './'`,"path-escapes-root":c5=>`path ${q3(c5.subject)}${at(c5.path)} escapes the plugin root`,"path-glob-unsupported":c5=>`path ${q3(c5.subject)}${at(c5.path)} is a glob pattern; declare directories and files by path`,"path-uncontained":c5=>`the reader listed a path outside the plugin root: ${q3(c5.path)}`,"document-too-large":c5=>`${q3(c5.path)} is ${c5.subject??"too many"} bytes, over the ${c5.detail??""}-byte limit for this kind of document`,"skill-frontmatter-missing":c5=>`${q3(c5.path)} must start with YAML frontmatter ('---')`,"skill-frontmatter-unclosed":c5=>`${q3(c5.path)} frontmatter is not closed (missing the closing '---')`,"skill-frontmatter-unreadable":c5=>`${q3(c5.path)} frontmatter is not valid YAML: ${c5.detail??"parse error"}`,"skill-name-invalid":c5=>`skill name ${q3(c5.subject)}${at(c5.path)} is invalid: lowercase letters, digits and hyphens, optionally dot-scoped, with every segment alphanumeric`,"skill-name-duplicate":c5=>`skill name ${q3(c5.subject)} appears more than once (again${at(c5.path)})`,"mcp-config-unreadable":c5=>`MCP configuration ${q3(c5.path)} is not valid JSON: ${c5.detail??"parse error"}`,"mcp-config-shape":c5=>`MCP configuration ${q3(c5.path)} must be an object with an 'mcpServers' object`,"mcp-config-schema-missing":c5=>`MCP configuration ${q3(c5.path)} is missing the required '$schema' field; an Agent Plugins configuration declares ${q3(AGENT_PLUGINS_MCP_SCHEMA)}`,"mcp-config-schema-unsupported":c5=>`MCP configuration ${q3(c5.path)} declares an unsupported '$schema' ${q3(c5.detail)}; this reader supports ${q3(AGENT_PLUGINS_MCP_SCHEMA)}`,"mcp-config-field-unknown":c5=>`MCP configuration ${q3(c5.path)} has an unexpected top-level field ${q3(c5.subject)}; only '$schema' and 'mcpServers' are allowed`,"mcp-server-shape":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} must be an object`,"mcp-server-type-missing":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} is missing the 'type' field the Agent Plugins format requires ('stdio', 'streamable-http' or 'sse')`,"mcp-server-transport-unknown":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has no 'type' and neither a 'command' nor a 'url' to infer it from`,"mcp-server-type-ambiguous":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} declares both 'command' and 'url'; a server is either stdio or HTTP`,"mcp-server-type-unknown":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an unknown 'type' ${q3(c5.detail)}; expected 'stdio', 'http', 'streamable-http' or 'sse'`,"mcp-server-field-unknown":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a field ${q3(c5.detail)} that its transport does not define`,"mcp-server-field-type":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} field ${q3(c5.detail)} has the wrong type`,"mcp-server-url-missing":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} is missing the 'url' its HTTP transport requires`,"mcp-server-url-invalid":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an invalid 'url' ${q3(c5.detail)}: expected an absolute HTTPS URL (HTTP only for localhost) with no user information or fragment`,"mcp-server-url-variable":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a variable in its 'url'; Stigmer sends the URL as written, so write the URL out and put variables in 'headers'`,"mcp-server-command-missing":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} is missing the 'command' its stdio transport requires`,"mcp-server-command-invalid":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a 'command' that is not a single executable name; put arguments in 'args'`,"mcp-server-command-relative":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} runs a command bundled in the plugin ${q3(c5.detail)}; Stigmer runs only commands on the runner's PATH (for example 'npx' or 'uvx')`,"mcp-server-plugin-root-reference":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} references the plugin's own files through ${q3(c5.detail)}; Stigmer does not mount plugin files into the runner`,"mcp-server-cwd-unsupported":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} sets a working directory; Stigmer does not mount plugin files, so a bundled directory cannot be reached`,"mcp-server-env-literal":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} sets environment variable ${q3(c5.detail)} to a literal value; Stigmer passes declared variables by name, so write ${q3(`${c5.detail??"KEY"}: "\${${c5.detail??"KEY"}}"`)} and declare the variable`,"mcp-server-env-rename":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} maps environment variable ${q3(c5.detail)} to a differently named variable; Stigmer passes declared variables by name, so use the same name on both sides`,"mcp-server-name-duplicate":c5=>`MCP server name ${q3(c5.subject)} appears more than once (again${at(c5.path)})`,"mcp-server-header-duplicate":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} declares header ${q3(c5.detail)} more than once (header names are case-insensitive)`,"mcp-server-header-invalid":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an invalid header name ${q3(c5.detail)}`,"sub-agent-frontmatter-unreadable":c5=>`${q3(c5.path)} frontmatter is not valid YAML: ${c5.detail??"parse error"}`,"sub-agent-instructions-short":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} has instructions under ${c5.detail??""} characters; the body of the file is the sub-agent's prompt`,"sub-agent-name-duplicate":c5=>`sub-agent name ${q3(c5.subject)} appears more than once (again${at(c5.path)})`,"variable-name-invalid":c5=>`variable name ${q3(c5.subject)}${at(c5.path)} is invalid: an environment variable name is letters, digits and underscores, not starting with a digit`,"overlay-server-unknown":c5=>`${q3(c5.path)} overlays MCP server ${q3(c5.subject)}, which the plugin does not declare`,"overlay-document-unknown":c5=>`${q3(c5.path)} is not a document Stigmer reads; the 'ai.stigmer/' folder holds 'agent.yaml', 'workflows/<name>.yaml' and 'mcp-servers/<server>.yaml'`},WARNING_MESSAGES={"manifest-field-unknown":c5=>`manifest ${q3(c5.path)} has an unknown field ${q3(c5.subject)}, ignored`,"manifest-extensions-invalid":c5=>`manifest ${q3(c5.path)} has an 'extensions' field that is not an object, ignored`,"path-missing":c5=>`path ${q3(c5.subject)} declared${at(c5.path)} does not exist in the plugin`,"skill-name-defaulted":c5=>`${q3(c5.path)} has no 'name' in its frontmatter; the skill is named after its directory, ${q3(c5.subject)}`,"skill-name-differs-from-directory":c5=>`skill ${q3(c5.subject)}${at(c5.path)} is named differently from its directory ${q3(c5.detail)}`,"skill-description-missing":c5=>`skill ${q3(c5.subject)}${at(c5.path)} has no 'description'`,"mcp-config-field-ignored":c5=>`MCP configuration ${q3(c5.path)} has a top-level field ${q3(c5.subject)} Stigmer does not read, ignored`,"mcp-server-sse-mapped":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} declares the legacy 'sse' transport; Stigmer connects over Streamable HTTP and falls back to SSE only when the server rejects it`,"mcp-server-field-ignored":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a field ${q3(c5.detail)} Stigmer does not read, ignored`,"mcp-server-auth-ignored":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an 'auth' block Stigmer does not read; OAuth for a server is declared in 'ai.stigmer/mcp-servers/${c5.subject??"<server>"}.yaml'`,"variable-inferred":c5=>`variable ${q3(c5.subject)} is referenced by MCP server ${q3(c5.detail)} but not declared; it is declared as a required secret`,"variable-unreferenced":c5=>`variable ${q3(c5.subject)}${at(c5.path)} is declared but no MCP server references it`,"variable-default-dropped":c5=>`variable ${q3(c5.subject)}${at(c5.path)} has a default value, which Stigmer does not carry; the user supplies the value`,"variable-type-narrowed":c5=>`variable ${q3(c5.subject)}${at(c5.path)} is typed ${q3(c5.detail)}; Stigmer variables are strings`,"variable-option-dropped":c5=>`variable ${q3(c5.subject)}${at(c5.path)} has a ${q3(c5.detail)} constraint, which Stigmer does not carry`,"sub-agent-name-defaulted":c5=>`${q3(c5.path)} has no 'name' in its frontmatter; the sub-agent is named after the file, ${q3(c5.subject)}`,"sub-agent-skill-unknown":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} asks for skill ${q3(c5.detail)}, which the plugin does not ship`,"sub-agent-model-unknown":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} names model ${q3(c5.detail)}, which Stigmer cannot map; the sub-agent runs on the session's model`,"sub-agent-field-ignored":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} has a field ${q3(c5.detail)} Stigmer does not read, ignored`};var FindingCollector=class{errorSentences;warningSentences;errors=[];warnings=[];constructor(errorSentences,warningSentences){this.errorSentences=errorSentences,this.warningSentences=warningSentences}error(kind,ctx={}){this.errors.push(compose(kind,ctx,this.errorSentences[kind](ctx)))}warn(kind,ctx={}){this.warnings.push(compose(kind,ctx,this.warningSentences[kind](ctx)))}},Findings=class extends FindingCollector{constructor(){super(ERROR_MESSAGES,WARNING_MESSAGES)}};function compose(kind,ctx,message6){return{kind,...ctx.path!==void 0&&{path:ctx.path},...ctx.subject!==void 0&&{subject:ctx.subject},...ctx.detail!==void 0&&{detail:ctx.detail},message:message6}}var KNOWN_FIELDS3=new Set(["$schema","name","version","description","author","homepage","repository","license","keywords","extensions"]);function readOpenManifest(object,path14,findings){let schema2=object.$schema;return schema2===void 0?findings.error("manifest-schema-missing",{path:path14}):schema2!==AGENT_PLUGINS_MANIFEST_SCHEMA&&findings.error("manifest-schema-unsupported",{path:path14,detail:describeValue(schema2)}),warnUnknownFields(object,KNOWN_FIELDS3,path14,findings),{dialect:"agent-plugins",path:path14,identity:readIdentity(object,path14,findings),skillPaths:[],mcpConfigs:[],ignored:extensionComponents(object,path14,findings)}}var OPEN_MCP_CONFIG="mcp.json",VENDOR_PRECEDENCE=["claude","cursor","codex"],MANIFEST_PRECEDENCE=["agent-plugins",...VENDOR_PRECEDENCE],NAME_MAX_LENGTH=64,NAME_PATTERN=/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/;function detectManifests(index2,findings){let manifests=[],present=dialect=>{let path14=MANIFEST_LOCATIONS[dialect];if(!index2.has(path14))return;let object=readManifestObject(index2,path14,findings),manifest=object===void 0?emptyManifest(dialect,path14):readDialect(dialect,object,path14,findings);return manifests.push(manifest),manifest},root5=present("agent-plugins"),vendors=VENDOR_PRECEDENCE.map(present).filter(m3=>m3!==void 0);if(manifests.length===0){findings.error("no-manifest");return}let identity2=root5??vendors[0];if(identity2===void 0)throw new Error("manifest set without an identity manifest");let ordered=[identity2,...manifests.filter(m3=>m3!==identity2)],name=resolveName(identity2,ordered,findings);return{dialect:identity2.dialect,manifests:ordered,name,readsAgents:vendors.length>0,mcpSources:resolveMcpSources(index2,root5,vendors)}}function readManifestObject(index2,path14,findings){let text2=readText(index2,path14,"manifest",findings);return text2===void 0?void 0:parseJsonObject2(text2,path14,"manifest-unreadable",findings)}function readDialect(dialect,object,path14,findings){switch(dialect){case"agent-plugins":return readOpenManifest(object,path14,findings);case"claude":return readClaudeManifest(object,path14,findings);case"cursor":return readCursorManifest(object,path14,findings);case"codex":return readCodexManifest(object,path14,findings);default:{let exhaustive=dialect;throw new Error(`unknown dialect ${String(exhaustive)}`)}}}function emptyManifest(dialect,path14){return{dialect,path:path14,identity:{},skillPaths:[],mcpConfigs:[],ignored:[]}}function resolveName(identity2,all,findings){let name=identity2.identity.name;if(name===void 0){if(findings.errors.some(f5=>f5.kind==="manifest-unreadable"&&f5.path===identity2.path))return;findings.error("manifest-name-missing",{path:identity2.path});return}let valid=!0;isValidPluginName(name)||(findings.error("manifest-name-invalid",{path:identity2.path,subject:name}),valid=!1);for(let other of all){if(other===identity2)continue;let otherName=other.identity.name;otherName!==void 0&&otherName!==name&&(findings.error("manifest-name-conflict",{path:identity2.path,subject:name,detail:`'${otherName}' in '${other.path}'`}),valid=!1)}return valid?name:void 0}function isValidPluginName(name){return name.length<=NAME_MAX_LENGTH&&NAME_PATTERN.test(name)&&!name.includes("--")&&!name.includes("..")}function resolveMcpSources(index2,root5,vendors){let sources=[];root5!==void 0&&index2.has(OPEN_MCP_CONFIG)&&sources.push({kind:"file",path:OPEN_MCP_CONFIG,dialect:"agent-plugins",manifest:root5.path});for(let vendor of vendors)vendor.mcpConfigs.length>0?sources.push(...vendor.mcpConfigs):vendor.dialect!=="cursor"&&index2.has(CLAUDE_DEFAULT_MCP_CONFIG)&&sources.push({kind:"file",path:CLAUDE_DEFAULT_MCP_CONFIG,dialect:vendor.dialect,manifest:vendor.path});let seen=new Set;return sources.filter(source=>source.kind==="inline"?!0:seen.has(source.path)?!1:(seen.add(source.path),!0))}var import_yaml=__toESM(require_dist2(),1);var SKILL_NAME_PATTERN=/^[a-z0-9]+([.-][a-z0-9]+)*$/;function extractFrontmatter(content){let lines=content.split(/\r?\n/);if(lines.length===0||lines[0]?.trim()!=="---")return{ok:!1,reason:"missing"};for(let i6=1;i6<lines.length;i6++)if(lines[i6]?.trim()==="---")return{ok:!0,yaml:lines.slice(1,i6).join(`
|
|
488
|
+
`);return}let headers2={"Content-Length":String(info.size)},downloadName=url.searchParams.get(LOCAL_DOWNLOAD_QUERY_PARAM)??"";if(downloadName!==""&&(headers2["Content-Disposition"]=contentDispositionAttachment(downloadName)),res.writeHead(200,headers2),req.method==="HEAD"){res.end();return}let stream=(0,import_node_fs7.createReadStream)(filePath);stream.on("error",error2=>{logger2.error("artifact file stream failed",{key,error:error2.message}),res.destroy()}),stream.pipe(res)}catch(error2){logger2.error("artifact file server request failed",{error:error2 instanceof Error?error2.message:String(error2)}),res.headersSent||res.writeHead(500),res.end()}}async function warnOnLegacyArtifactLayout(basePath,logger2){for(let sub of["attachments","artifacts"]){let legacy=import_node_path10.default.join(basePath,"artifacts",sub);try{if((await(0,import_promises5.stat)(legacy)).isDirectory()){logger2.warn("Detected artifacts under a pre-#285 layout at <base>/artifacts/*. The artifact root is now <base> itself. Move <base>/artifacts/* up into <base> (or set ARTIFACT_LOCAL_BASE_PATH to the old <base>/artifacts) so existing artifacts remain reachable.",{legacyDir:import_node_path10.default.join(basePath,"artifacts"),artifactRoot:basePath});return}}catch{}}}var file_ai_stigmer_agentic_channelapp_v1_command=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvY2hhbm5lbGFwcC92MS9jb21tYW5kLnByb3RvEiBhaS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MTKOBQobQ2hhbm5lbEFwcENvbW1hbmRDb250cm9sbGVyEmMKBWFwcGx5EiwuYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEuQ2hhbm5lbEFwcBosLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAStQEKBmNyZWF0ZRIsLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAaLC5haS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MS5DaGFubmVsQXBwIk/CuBhLCB8QHiIMbWV0YWRhdGEub3JnKjd1bmF1dGhvcml6ZWQgdG8gY3JlYXRlIGNoYW5uZWwgYXBwIGluIHRoaXMgb3JnYW5pemF0aW9uEp8BCgZ1cGRhdGUSLC5haS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MS5DaGFubmVsQXBwGiwuYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEuQ2hhbm5lbEFwcCI5wrgYNQgCEDAiC21ldGFkYXRhLmlkKiJ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGNoYW5uZWwgYXBwEqkBCgZkZWxldGUSNi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VEZWxldGVJbnB1dBosLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAiOcK4GDUIAxAwIgtyZXNvdXJjZV9pZCoidW5hdXRob3JpemVkIHRvIGRlbGV0ZSBjaGFubmVsIGFwcBoEoP8rMGIGcHJvdG8z",[file_ai_stigmer_agentic_channelapp_v1_api,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ChannelAppCommandController=serviceDesc(file_ai_stigmer_agentic_channelapp_v1_command,0);var file_ai_stigmer_agentic_channelapp_v1_io=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvY2hhbm5lbGFwcC92MS9pby5wcm90bxIgYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEiTAoLQ2hhbm5lbEFwcHMSPQoHZW50cmllcxgBIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAiMQoZTGlzdENoYW5uZWxBcHBzQnlPcmdJbnB1dBIUCgNvcmcYASABKAlCB7pIBHICEAFiBnByb3RvMw",[file_ai_stigmer_agentic_channelapp_v1_api,file_buf_validate_validate]),ChannelAppsSchema=messageDesc2(file_ai_stigmer_agentic_channelapp_v1_io,0);var file_ai_stigmer_agentic_channelapp_v1_query=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvY2hhbm5lbGFwcC92MS9xdWVyeS5wcm90bxIgYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEy9gMKGUNoYW5uZWxBcHBRdWVyeUNvbnRyb2xsZXISlQEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiwuYWkuc3RpZ21lci5hZ2VudGljLmNoYW5uZWxhcHAudjEuQ2hhbm5lbEFwcCIxwrgYLQgBEDAiBXZhbHVlKiB1bmF1dGhvcml6ZWQgdG8gdmlldyBjaGFubmVsIGFwcBJ6Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRosLmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkNoYW5uZWxBcHAiBNC4GAESvgEKCWxpc3RCeU9yZxI7LmFpLnN0aWdtZXIuYWdlbnRpYy5jaGFubmVsYXBwLnYxLkxpc3RDaGFubmVsQXBwc0J5T3JnSW5wdXQaLS5haS5zdGlnbWVyLmFnZW50aWMuY2hhbm5lbGFwcC52MS5DaGFubmVsQXBwcyJFwrgYQQgBEB4iA29yZyo2dW5hdXRob3JpemVkIHRvIGxpc3QgY2hhbm5lbCBhcHBzIGluIHRoaXMgb3JnYW5pemF0aW9uGgSg/yswYgZwcm90bzM",[file_ai_stigmer_agentic_channelapp_v1_api,file_ai_stigmer_agentic_channelapp_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ChannelAppQueryController=serviceDesc(file_ai_stigmer_agentic_channelapp_v1_query,0);async function destroySecretBackingState(secretService,logger2,fields2,storedValues){for(let storedValue of storedValues)if(storedValue!=="")try{await secretService.delete(storedValue)}catch(error2){logger2.error("secret backing-state destruction failed after persist \u2014 external state may be orphaned",{...fields2,error:error2 instanceof Error?error2.message:String(error2)})}}function newDestroySecretBackingStateStep(secretService,logger2,extractSecretValues){return{name:"DestroySecretBackingState",async execute(ctx){let deleted=ctx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)return;let metadata=deleted.metadata;await destroySecretBackingState(secretService,logger2,{kind:getKindName(ctx.apiResourceKind),resourceId:metadata?.id??""},extractSecretValues(deleted))}}}var REDACTED_MARKER2="***REDACTED***";function plaintextRequiredMessage(fieldName){return`${fieldName} must be plaintext \u2014 values carrying the 'enc:' encryption prefix are not accepted from clients`}function markerOnCreateMessage(fieldName){return`cannot use the redaction marker as ${fieldName} on create`}function noExistingSecretMessage(fieldName){return`cannot preserve ${fieldName}: no existing secret value found`}var PROVIDER_IMMUTABLE_MESSAGE="the provider of a channel app cannot be changed";function deleteBlockedByChannelMessage(org,slug,channelName){return`cannot delete ChannelApp '${org}/${slug}': referenced by agent channel '${channelName}'`}function redactChannelApp(app){let provider=app.spec?.providerConfig;switch(provider?.case){case"slack":redactSlack(provider.value);return;case"whatsapp":redactWhatsApp(provider.value);return;case void 0:return;default:{let exhaustive=provider;throw new Error(`unhandled provider arm: ${String(exhaustive)}`)}}}function redactSlack(slack){slack.clientSecret!==""&&(slack.clientSecret=REDACTED_MARKER2),slack.signingSecret!==""&&(slack.signingSecret=REDACTED_MARKER2)}function redactWhatsApp(whatsapp){whatsapp.appSecret!==""&&(whatsapp.appSecret=REDACTED_MARKER2),whatsapp.accessToken!==""&&(whatsapp.accessToken=REDACTED_MARKER2),whatsapp.verifyToken!==""&&(whatsapp.verifyToken=REDACTED_MARKER2)}function secretValuesOfChannelApp(app){let provider=app.spec?.providerConfig;switch(provider?.case){case"slack":return[provider.value.clientSecret,provider.value.signingSecret];case"whatsapp":return[provider.value.appSecret,provider.value.accessToken,provider.value.verifyToken];case void 0:return[];default:{let exhaustive=provider;throw new Error(`unhandled provider arm: ${String(exhaustive)}`)}}}function newEncryptChannelAppSecretsForCreateStep(secretService,logger2){return newEncryptChannelAppSecretsStep(secretService,logger2,!0)}function newEncryptChannelAppSecretsForUpdateStep(secretService,logger2){return newEncryptChannelAppSecretsStep(secretService,logger2,!1)}function newEncryptChannelAppSecretsStep(secretService,logger2,isCreate){async function resolveSecret(ctx,fieldName,requestValue,readExisting){if(requestValue==="")return requestValue;if(requestValue===REDACTED_MARKER2)return preserveExistingSecret2(ctx,fieldName,readExisting);if(isCiphertextShaped(requestValue))throw invalidArgumentError(plaintextRequiredMessage(fieldName));if(!secretService.isEnabled())return logger2.warn(`Encryption disabled: ${fieldName} will be stored in plaintext`),requestValue;try{return await secretService.encrypt(requestValue,EncryptionScope.forOrganization(ctx.newState.metadata?.org??""))}catch(error2){throw internalError(error2,`failed to encrypt ${fieldName}`)}}function preserveExistingSecret2(ctx,fieldName,readExisting){if(isCreate)throw invalidArgumentError(markerOnCreateMessage(fieldName));let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing resource not loaded"),`cannot preserve ${fieldName}: existing resource not loaded`);let existingSecret=readExisting(existing);if(existingSecret==="")throw invalidArgumentError(noExistingSecretMessage(fieldName));return existingSecret}return{name:"EncryptChannelAppSecrets",async execute(ctx){let provider=ctx.newState.spec?.providerConfig;switch(provider?.case){case"slack":{let slack=provider.value;slack.clientSecret=await resolveSecret(ctx,"client_secret",slack.clientSecret,existing=>existing.spec?.providerConfig.case==="slack"?existing.spec.providerConfig.value.clientSecret:""),slack.signingSecret=await resolveSecret(ctx,"signing_secret",slack.signingSecret,existing=>existing.spec?.providerConfig.case==="slack"?existing.spec.providerConfig.value.signingSecret:"");return}case"whatsapp":{let whatsapp=provider.value;whatsapp.appSecret=await resolveSecret(ctx,"app_secret",whatsapp.appSecret,existing=>existing.spec?.providerConfig.case==="whatsapp"?existing.spec.providerConfig.value.appSecret:""),whatsapp.accessToken=await resolveSecret(ctx,"access_token",whatsapp.accessToken,existing=>existing.spec?.providerConfig.case==="whatsapp"?existing.spec.providerConfig.value.accessToken:""),whatsapp.verifyToken=await resolveSecret(ctx,"verify_token",whatsapp.verifyToken,existing=>existing.spec?.providerConfig.case==="whatsapp"?existing.spec.providerConfig.value.verifyToken:"");return}case void 0:return;default:{let exhaustive=provider;throw new Error(`unhandled provider arm: ${String(exhaustive)}`)}}}}}function newValidateProviderImmutableStep(){return{name:"ValidateProviderImmutable",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing channel app not found in context"),"existing channel app not found in context");let existingCase=existing.spec?.providerConfig.case,inputCase=ctx.input.spec?.providerConfig.case;if(existingCase!==inputCase)throw invalidArgumentError(PROVIDER_IMMUTABLE_MESSAGE)}}}function newCheckNoReferencingChannelsStep(store,logger2){return{name:"CheckNoReferencingChannels",async execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing ChannelApp not loaded in delete pipeline"),"existing ChannelApp not loaded in delete pipeline");let org=existing.metadata?.org??"",slug=existing.metadata?.slug??"",rows;try{rows=await store.listResources(ApiResourceKind.agent_channel)}catch(error2){throw internalError(error2,"failed to list agent channels for referential integrity check")}for(let bytes of rows){let channel;try{channel=fromBinary2(AgentChannelSchema,bytes)}catch{logger2.warn("Failed to unmarshal agent channel during referential integrity check, skipping");continue}let ref=channel.spec?.appRef;if(ref===void 0||ref.slug==="")continue;if((ref.org!==""?ref.org:channel.metadata?.org??"")===org&&ref.slug===slug)throw failedPreconditionError(deleteBlockedByChannelMessage(org,slug,channel.metadata?.name??""))}}}}function registerChannelAppServices(router,deps){router.service(ChannelAppCommandController,{apply:(app,ctx)=>apply6(deps,app,ctx),create:(app,ctx)=>createChannelApp(deps,app,ctx),update:(app,ctx)=>update9(deps,app,ctx),delete:(input,ctx)=>deleteChannelApp(deps,input,ctx)}),router.service(ChannelAppQueryController,{get:(id,ctx)=>get12(deps,id,ctx),getByReference:(ref,ctx)=>getByReference6(deps,ref,ctx),listByOrg:(req,ctx)=>listByOrg(deps,req,ctx)})}function kindOf11(ctx){return ctx.values.get(apiResourceKindKey)}async function createChannelApp(deps,app,ctx){let reqCtx=new RequestContext(ChannelAppSchema,app,callerIdentityOf(ctx),kindOf11(ctx));return await newPipeline("channelapp-create",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newEncryptChannelAppSecretsForCreateStep(deps.secretService,deps.logger)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),redactChannelApp(reqCtx.newState),reqCtx.newState}async function update9(deps,app,ctx){let reqCtx=new RequestContext(ChannelAppSchema,app,callerIdentityOf(ctx),kindOf11(ctx));return await newPipeline("channelapp-update",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newValidateProviderImmutableStep()).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newEncryptChannelAppSecretsForUpdateStep(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).build().execute(reqCtx),redactChannelApp(reqCtx.newState),reqCtx.newState}async function apply6(deps,app,ctx){let reqCtx=new RequestContext(ChannelAppSchema,app,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-apply",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createChannelApp(deps,app,ctx):update9(deps,withResolvedApplyId(ChannelAppSchema,app,reqCtx),ctx)}async function deleteChannelApp(deps,input,ctx){let reqCtx=new RequestContext(ChannelAppCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf11(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("channelapp-delete",deps.logger).addStep(newAuthorizeStep(ChannelAppCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,ChannelAppSchema)).addStep(newCheckNoReferencingChannelsStep(deps.store,deps.logger)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDestroySecretBackingStateStep(deps.secretService,deps.logger,secretValuesOfChannelApp)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted ChannelApp not found in context"),"deleted ChannelApp not found in context");let app=deleted;return redactChannelApp(app),app}async function get12(deps,id,ctx){let reqCtx=new RequestContext(ChannelAppQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-get",deps.logger).addStep(newAuthorizeStep(ChannelAppQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,ChannelAppSchema)).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactChannelApp(app),app}async function getByReference6(deps,ref,ctx){let reqCtx=new RequestContext(ChannelAppQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-get-by-reference",deps.logger).addStep(newAuthorizeStep(ChannelAppQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,ChannelAppSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(ChannelAppQueryController.method.get))).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactChannelApp(app),app}var LIST_RESULT_KEY4="listResult";async function listByOrg(deps,req,ctx){let reqCtx=new RequestContext(ChannelAppQueryController.method.listByOrg.input,req,callerIdentityOf(ctx),kindOf11(ctx));await newPipeline("channelapp-list-by-org",deps.logger).addStep(newAuthorizeStep(ChannelAppQueryController.method.listByOrg,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListByOrgStep(deps.store,deps.logger)).build().execute(reqCtx);let result=reqCtx.get(LIST_RESULT_KEY4);if(result===void 0)throw internalError(new Error("ChannelApp list not found in context"),"ChannelApp list not found in context");return result}function newListByOrgStep(store,logger2){return{name:"ListByOrg",async execute(ctx){let org=ctx.input.org,rows;try{rows=await store.listResources(ApiResourceKind.channel_app)}catch(error2){throw internalError(error2,"failed to list ChannelApps")}let apps=[];for(let bytes of rows){let app;try{app=fromBinary2(ChannelAppSchema,bytes)}catch{logger2.warn("Failed to unmarshal ChannelApp, skipping");continue}(app.metadata?.org??"")===org&&(redactChannelApp(app),apps.push(app))}apps.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),ctx.set(LIST_RESULT_KEY4,create2(ChannelAppsSchema,{entries:apps}))}}}var file_ai_stigmer_agentic_environment_v1_command=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvY29tbWFuZC5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxMoMKChxFbnZpcm9ubWVudENvbW1hbmRDb250cm9sbGVyEmcKBWFwcGx5Ei4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50ErkBCgZjcmVhdGUSLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiT8K4GEsIDBAeIgxtZXRhZGF0YS5vcmcqN3VuYXV0aG9yaXplZCB0byBjcmVhdGUgZW52aXJvbm1lbnQgaW4gdGhpcyBvcmdhbml6YXRpb24SowEKBnVwZGF0ZRIuLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCI5wrgYNQgCEDUiC21ldGFkYXRhLmlkKiJ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50Er8BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCJEwrgYQAgCEDUiC3Jlc291cmNlX2lkKi11bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50IHZpc2liaWxpdHkSqwEKBmRlbGV0ZRI2LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZURlbGV0ZUlucHV0Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjnCuBg1CAIQNSILcmVzb3VyY2VfaWQqInVuYXV0aG9yaXplZCB0byBkZWxldGUgZW52aXJvbm1lbnQSzwEKD3VwZGF0ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5VcGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMSzwEKD3JlbW92ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5SZW1vdmVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHJlbW92ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentCommandController=serviceDesc(file_ai_stigmer_agentic_environment_v1_command,0);var file_ai_stigmer_agentic_environment_v1_query=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvcXVlcnkucHJvdG8SIWFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MTKMBQoaRW52aXJvbm1lbnRRdWVyeUNvbnRyb2xsZXISlgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjDCuBgsCAEQNSIFdmFsdWUqH3VuYXV0aG9yaXplZCB0byBnZXQgZW52aXJvbm1lbnQSfAoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiBNC4GAES0gEKDmdldFNlY3JldFZhbHVlEj4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50U2VjcmV0VmFsdWVJbnB1dBozLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFZhbHVlIkvCuBhHCBAQNSIOZW52aXJvbm1lbnRfaWQqMXVuYXV0aG9yaXplZCB0byByZWFkIHNlY3JldCB2YWx1ZXMgKGNyZWF0b3Itb25seSkSfAoEbGlzdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5MaXN0RW52aXJvbm1lbnRzUmVxdWVzdBoyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudExpc3QiBNC4GAEaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentQueryController=serviceDesc(file_ai_stigmer_agentic_environment_v1_query,0);function redactEnvironmentSecrets(env2){let data=env2?.spec?.data;if(data!==void 0)for(let value of Object.values(data))value.isSecret&&value.value!==""&&(value.value=REDACTED_MARKER)}function shareRestrictionReason(metadata){let labels=metadata?.labels??{};return labels[PERSONAL_LABEL_KEY]===PERSONAL_LABEL_VALUE?PERSONAL_SHARE_RESTRICTION:labels[MANAGED_LABEL_KEY]===MANAGED_LABEL_VALUE?MANAGED_SHARE_RESTRICTION:""}var environmentSearchExtractor={kind:ApiResourceKind.environment,schema:EnvironmentSchema,getSearchSummary(resource){return resource.spec?.description??""},toSearchResult(resource,score){let env2=resource;return buildSearchResult({kind:ApiResourceKind.environment,metadata:env2.metadata,summary:env2.spec?.description??"",score,createdAt:env2.status?.audit?.specAudit?.createdAt,updatedAt:env2.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let env2=resource,metadata=env2.metadata;if(metadata!==void 0)return{name:metadata.name,description:env2.spec?.description??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(env2.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};var SECRET_VALUE_KEY="secretValue",UPDATED_ENVIRONMENT_KEY="updatedEnvironment";function newPreserveRedactedSecretsStep(){return{name:"PreserveRedactedSecrets",execute(ctx){let data=ctx.newState.spec?.data;if(data===void 0||Object.keys(data).length===0)return;let existingData=ctx.get(EXISTING_RESOURCE_KEY)?.spec?.data??{};for(let[key,value]of Object.entries(data))if(value.isSecret){if(value.value===REDACTED_MARKER){let existingEntry=existingData[key];if(existingEntry!==void 0&&existingEntry.isSecret){data[key]=existingEntry;continue}throw invalidArgumentError(markerRejectionMessage(key))}if(isCiphertextShaped(value.value))throw invalidArgumentError(forgedCiphertextMessage(key))}}}}function newEncryptSecretValuesStep(secretService,logger2){return{name:"EncryptSecretValues",async execute(ctx){let env2=ctx.newState,data=env2.spec?.data;if(!(data===void 0||Object.keys(data).length===0)){if(!secretService.isEnabled()){hasNonEmptySecret(data)&&logger2.warn("Encryption disabled: environment secret values will be stored in plaintext",{environmentId:env2.metadata?.id??""});return}for(let[key,value]of Object.entries(data))if(!(!value.isSecret||value.value===""))try{value.value=await secretService.encrypt(value.value,EncryptionScope.forOrganization(env2.metadata?.org??""))}catch(error2){throw internalError(error2,`failed to encrypt secret value for variable '${key}'`)}}}}}function hasNonEmptySecret(data){return Object.values(data).some(v=>v.isSecret&&v.value!=="")}function newEnforcePersonalUniquenessStep(store){return{name:"EnforcePersonalEnvUniqueness",async execute(ctx){let metadata=ctx.newState.metadata;if(metadata===void 0||metadata.labels[PERSONAL_LABEL_KEY]!==PERSONAL_LABEL_VALUE)return;let existing;try{existing=await findResourceByLabelAndOrg(store,ctx.apiResourceKind,EnvironmentSchema,PERSONAL_LABEL_KEY,PERSONAL_LABEL_VALUE,metadata.org)}catch(error2){throw internalError(error2,"failed to check personal environment uniqueness")}if(existing!==void 0)throw new ConnectError(personalEnvironmentExistsMessage(existing.metadata?.id??""),Code.AlreadyExists)}}}function newLoadEnvironmentByIdStep(store){return{name:"LoadEnvironmentByID",async execute(ctx){let environmentId=ctx.input.environmentId;if(typeof environmentId!="string"||environmentId==="")throw invalidArgumentError("environment_id is required");let env2;try{env2=await store.getResource(ctx.apiResourceKind,environmentId,EnvironmentSchema)}catch{throw notFoundError("environment",environmentId)}ctx.set(TARGET_RESOURCE_KEY,env2)}}}function newExtractAndDecryptSingleKeyStep(secretService,logger2){return{name:"ExtractAndDecryptSingleKey",async execute(ctx){let key=ctx.input.key,env2=ctx.get(TARGET_RESOURCE_KEY);if(env2===void 0)throw internalError(new Error("targetResource missing or wrong type"),"environment not loaded in context");let envValue=env2.spec?.data[key];if(envValue===void 0)throw notFoundError("environment key",key);if(envValue.isSecret&&envValue.value!==""){let decrypted;try{decrypted=await secretService.decrypt(envValue.value)}catch(error2){throw logger2.error("Failed to decrypt secret value",{key,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to decrypt secret value")}ctx.set(SECRET_VALUE_KEY,create2(EnvironmentValueSchema,{value:decrypted,isSecret:!0,description:envValue.description}));return}ctx.set(SECRET_VALUE_KEY,envValue)}}}function newMergeVariablesAndPersistStep(store,secretService,logger2){return{name:"MergeVariablesAndPersist",async execute(ctx){let env2=ctx.get(TARGET_RESOURCE_KEY);if(env2===void 0)throw internalError(new Error("targetResource missing or wrong type"),"environment not loaded in context");env2.spec===void 0&&(env2.spec=create2(EnvironmentSpecSchema,{}));let incoming=ctx.input.variables;for(let[key,incomingValue]of Object.entries(incoming)){let value=incomingValue;if(value.isSecret&&value.value===REDACTED_MARKER){let existing=env2.spec.data[key];if(existing!==void 0&&existing.isSecret)continue;throw invalidArgumentError(markerRejectionMessage(key))}if(value.isSecret&&isCiphertextShaped(value.value))throw invalidArgumentError(forgedCiphertextMessage(key));if(value.isSecret&&value.value!=="")if(!secretService.isEnabled())logger2.warn("Encryption disabled: environment secret value will be stored in plaintext",{key});else{let encrypted;try{encrypted=await secretService.encrypt(value.value,EncryptionScope.forOrganization(env2.metadata?.org??""))}catch(error2){throw internalError(error2,`failed to encrypt secret value for variable '${key}'`)}value=create2(EnvironmentValueSchema,{value:encrypted,isSecret:!0,description:value.description})}env2.spec.data[key]=value}try{setAuditFieldsForUpdate(EnvironmentSchema,env2,"spec_audit",ctx.callerIdentity)}catch(error2){throw internalError(error2,"failed to set audit fields")}try{await store.saveResource(ctx.apiResourceKind,env2.metadata?.id??"",EnvironmentSchema,env2)}catch(error2){throw internalError(error2,"failed to persist environment after merging variables")}ctx.set(UPDATED_ENVIRONMENT_KEY,env2)}}}function newRemoveVariableKeysAndPersistStep(store,secretService,logger2){return{name:"RemoveVariableKeysAndPersist",async execute(ctx){let env2=ctx.get(TARGET_RESOURCE_KEY);if(env2===void 0)throw internalError(new Error("targetResource missing or wrong type"),"environment not loaded in context");let keys=ctx.input.keys,removedSecretValues=[];if(env2.spec?.data!==void 0)for(let key of keys){let removed=env2.spec.data[key];removed!==void 0&&removed.isSecret&&removedSecretValues.push(removed.value),delete env2.spec.data[key]}try{setAuditFieldsForUpdate(EnvironmentSchema,env2,"spec_audit",ctx.callerIdentity)}catch(error2){throw internalError(error2,"failed to set audit fields")}try{await store.saveResource(ctx.apiResourceKind,env2.metadata?.id??"",EnvironmentSchema,env2)}catch(error2){throw internalError(error2,"failed to persist environment after removing variables")}await destroySecretBackingState(secretService,logger2,{kind:"environment",resourceId:env2.metadata?.id??"",operation:"removeVariables"},removedSecretValues),ctx.set(UPDATED_ENVIRONMENT_KEY,env2)}}}function newDestroyDroppedEnvironmentSecretsStep(secretService,logger2){return{name:"DestroyDroppedEnvironmentSecrets",async execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY),oldData=existing?.spec?.data;if(oldData===void 0)return;let newData=ctx.newState.spec?.data??{},droppedSecretValues=Object.entries(oldData).filter(([key,value])=>value.isSecret&&newData[key]===void 0).map(([,value])=>value.value);await destroySecretBackingState(secretService,logger2,{kind:"environment",resourceId:existing?.metadata?.id??"",operation:"update"},droppedSecretValues)}}}function secretValuesOfEnvironment(env2){return Object.values(env2.spec?.data??{}).filter(value=>value.isSecret).map(value=>value.value)}function registerEnvironmentServices(router,deps){router.service(EnvironmentCommandController,{apply:(env2,ctx)=>apply7(deps,env2,ctx),create:(env2,ctx)=>createEnvironment(deps,env2,ctx),update:(env2,ctx)=>update10(deps,env2,ctx),updateVisibility:(input,ctx)=>updateVisibility3(deps,input,ctx),delete:(input,ctx)=>deleteEnvironment(deps,input,ctx),updateVariables:(req,ctx)=>updateVariables(deps,req,ctx),removeVariables:(req,ctx)=>removeVariables(deps,req,ctx)}),router.service(EnvironmentQueryController,{get:(id,ctx)=>get13(deps,id,ctx),getByReference:(ref,ctx)=>getByReference7(deps,ref,ctx),getSecretValue:(input,ctx)=>getSecretValue(deps,input,ctx),list:(req,ctx)=>list8(deps,req,ctx)})}function kindOf12(ctx){return ctx.values.get(apiResourceKindKey)}async function createEnvironment(deps,env2,ctx){let reqCtx=new RequestContext(EnvironmentSchema,env2,callerIdentityOf(ctx),kindOf12(ctx));return await newPipeline("environment-create",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newEnforcePersonalUniquenessStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPreserveRedactedSecretsStep()).addStep(newEncryptSecretValuesStep(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,environmentSearchExtractor,deps.logger)).build().execute(reqCtx),redactEnvironmentSecrets(reqCtx.newState),reqCtx.newState}async function update10(deps,env2,ctx){let reqCtx=new RequestContext(EnvironmentSchema,env2,callerIdentityOf(ctx),kindOf12(ctx));return await newPipeline("environment-update",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPreserveRedactedSecretsStep()).addStep(newEncryptSecretValuesStep(deps.secretService,deps.logger)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPersistStep(deps.store)).addStep(newDestroyDroppedEnvironmentSecretsStep(deps.secretService,deps.logger)).addStep(newIndexSearchStep(deps.store,environmentSearchExtractor,deps.logger)).build().execute(reqCtx),redactEnvironmentSecrets(reqCtx.newState),reqCtx.newState}async function apply7(deps,env2,ctx){let reqCtx=new RequestContext(EnvironmentSchema,env2,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-apply",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createEnvironment(deps,env2,ctx):update10(deps,withResolvedApplyId(EnvironmentSchema,env2,reqCtx),ctx)}async function deleteEnvironment(deps,input,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf12(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("environment-delete",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,EnvironmentSchema)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDestroySecretBackingStateStep(deps.secretService,deps.logger,secretValuesOfEnvironment)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted environment not found in context"),"deleted environment not found in context");let env2=deleted;return redactEnvironmentSecrets(env2),env2}var UPDATE_VISIBILITY_ENVIRONMENT_KEY="updateVisibilityEnvironment";async function updateVisibility3(deps,input,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.updateVisibility.input,input,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-update-visibility",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.updateVisibility,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentForVisibilityUpdateStep(deps.store)).addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_ENVIRONMENT_KEY)).addStep(newValidateVisibilityUpdateStep()).addStep(newValidateEnvironmentShareRestrictionStep()).addStep(newSetEnvironmentVisibilityStep()).addStep(newPersistEnvironmentForVisibilityUpdateStep(deps.store)).addStep(newUpdateVisibilityTuplesStep(deps.authorizationLifecycle,UPDATE_VISIBILITY_ENVIRONMENT_KEY)).addStep(newIndexEnvironmentAfterVisibilityUpdateStep(deps.store,deps.logger)).build().execute(reqCtx);let env2=reqCtx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY);return redactEnvironmentSecrets(env2),env2}function newLoadEnvironmentForVisibilityUpdateStep(store){return{name:"LoadEnvironmentForVisibilityUpdate",async execute(ctx){let input=ctx.input,env2;try{env2=await store.getResource(ctx.apiResourceKind,input.resourceId,EnvironmentSchema)}catch{throw notFoundError("environment",input.resourceId)}ctx.set(UPDATE_VISIBILITY_ENVIRONMENT_KEY,env2)}}}function newValidateEnvironmentShareRestrictionStep(){return{name:"ValidateEnvironmentShareRestriction",execute(ctx){if(ctx.input.visibility!==ApiResourceVisibility.visibility_org)return;let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY),reason=shareRestrictionReason(env2.metadata);if(reason!=="")throw failedPreconditionError(reason)}}}function newSetEnvironmentVisibilityStep(){return{name:"SetVisibility",execute(ctx){let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY);env2.metadata!==void 0&&(env2.metadata.visibility=ctx.input.visibility),setAuditFieldsForUpdate(EnvironmentSchema,env2,"status_audit",ctx.callerIdentity)}}}function newPersistEnvironmentForVisibilityUpdateStep(store){return{name:"PersistEnvironmentForVisibilityUpdate",async execute(ctx){let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY);try{await store.saveResource(ctx.apiResourceKind,env2.metadata?.id??"",EnvironmentSchema,env2)}catch(error2){throw internalError(error2,"failed to save environment")}}}}function newIndexEnvironmentAfterVisibilityUpdateStep(store,logger2){return{name:"IndexEnvironmentAfterVisibilityUpdate",async execute(ctx){let env2=ctx.get(UPDATE_VISIBILITY_ENVIRONMENT_KEY),entry=environmentSearchExtractor.getSearchIndexEntry(env2);if(entry===void 0){logger2.warn("IndexEnvironmentAfterVisibilityUpdate: extractor returned nil, skipping",{id:env2.metadata?.id??""});return}try{await store.upsertSearchIndex(ctx.apiResourceKind,env2.metadata?.id??"",entry)}catch(error2){logger2.warn("IndexEnvironmentAfterVisibilityUpdate: failed (best-effort)",{id:env2.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}}}}async function updateVariables(deps,req,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.updateVariables.input,req,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-update-variables",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.updateVariables,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentByIdStep(deps.store)).addStep(newMergeVariablesAndPersistStep(deps.store,deps.secretService,deps.logger)).build().execute(reqCtx);let updated=reqCtx.get(UPDATED_ENVIRONMENT_KEY);return redactEnvironmentSecrets(updated),updated}async function removeVariables(deps,req,ctx){let reqCtx=new RequestContext(EnvironmentCommandController.method.removeVariables.input,req,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-remove-variables",deps.logger).addStep(newAuthorizeStep(EnvironmentCommandController.method.removeVariables,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentByIdStep(deps.store)).addStep(newRemoveVariableKeysAndPersistStep(deps.store,deps.secretService,deps.logger)).build().execute(reqCtx);let updated=reqCtx.get(UPDATED_ENVIRONMENT_KEY);return redactEnvironmentSecrets(updated),updated}async function get13(deps,id,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-get",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,EnvironmentSchema)).build().execute(reqCtx);let env2=reqCtx.get(TARGET_RESOURCE_KEY);return redactEnvironmentSecrets(env2),env2}async function getByReference7(deps,ref,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-get-by-reference",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,EnvironmentSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(EnvironmentQueryController.method.get))).build().execute(reqCtx);let env2=reqCtx.get(TARGET_RESOURCE_KEY);return redactEnvironmentSecrets(env2),env2}async function getSecretValue(deps,input,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.getSecretValue.input,input,callerIdentityOf(ctx),kindOf12(ctx));return await newPipeline("environment-get-secret-value",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.getSecretValue,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadEnvironmentByIdStep(deps.store)).addStep(newExtractAndDecryptSingleKeyStep(deps.secretService,deps.logger)).build().execute(reqCtx),reqCtx.get(SECRET_VALUE_KEY)}var LIST_RESULT_KEY5="listResult";async function list8(deps,req,ctx){let reqCtx=new RequestContext(EnvironmentQueryController.method.list.input,req,callerIdentityOf(ctx),kindOf12(ctx));await newPipeline("environment-list",deps.logger).addStep(newAuthorizeStep(EnvironmentQueryController.method.list,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListByOrgAndLabelsStep5(deps.store,deps.listReadScope)).build().execute(reqCtx);let result=reqCtx.get(LIST_RESULT_KEY5);if(result===void 0)throw internalError(new Error("environment list not found in context"),"environment list not found in context");return result}function newListByOrgAndLabelsStep5(store,listReadScope){return{name:"ListByOrgAndLabels",async execute(ctx){let{org,labels:filterLabels}=ctx.input,rows;try{rows=await store.listResources(ctx.apiResourceKind)}catch(error2){throw internalError(error2,"failed to list environments")}let decoded=[];for(let bytes of rows)try{decoded.push(fromBinary2(EnvironmentSchema,bytes))}catch{continue}let requested=decoded.filter(env2=>(env2.metadata?.org??"")===org&&matchesAllLabels(env2.metadata?.labels??{},filterLabels)),environments=await restrictListByReadScope(listReadScope,ctx.callerIdentity,ApiResourceKind.environment,requested,"");for(let env2 of environments)redactEnvironmentSecrets(env2);environments.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),ctx.set(LIST_RESULT_KEY5,create2(EnvironmentListSchema,{totalCount:environments.length,items:environments}))}}}var file_ai_stigmer_agentic_executioncontext_v1_command=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9jb21tYW5kLnByb3RvEiZhaS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MTLpAwohRXhlY3V0aW9uQ29udGV4dENvbW1hbmRDb250cm9sbGVyEnsKBWFwcGx5EjguYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEuRXhlY3V0aW9uQ29udGV4dBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQSggEKBmNyZWF0ZRI4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQaOC5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0IgTQuBgBErsBCgZkZWxldGUSNi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VEZWxldGVJbnB1dBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQiP8K4GDsIAhA2IgtyZXNvdXJjZV9pZCoodW5hdXRob3JpemVkIHRvIGRlbGV0ZSBleGVjdXRpb24gY29udGV4dBoEoP8rNmIGcHJvdG8z",[file_ai_stigmer_agentic_executioncontext_v1_api,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ExecutionContextCommandController=serviceDesc(file_ai_stigmer_agentic_executioncontext_v1_command,0);var file_ai_stigmer_agentic_executioncontext_v1_io=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9pby5wcm90bxImYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEiKwoSRXhlY3V0aW9uQ29udGV4dElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiQQogRXhlY3V0aW9uQ29udGV4dEV4ZWN1dGlvbklkSW5wdXQSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABYgZwcm90bzM",[file_buf_validate_validate]);var file_ai_stigmer_agentic_executioncontext_v1_query=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9xdWVyeS5wcm90bxImYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEyhQQKH0V4ZWN1dGlvbkNvbnRleHRRdWVyeUNvbnRyb2xsZXISswEKA2dldBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHRJZBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvbkNvbnRleHQiNsK4GDIIARA2IgV2YWx1ZSoldW5hdXRob3JpemVkIHRvIGdldCBleGVjdXRpb24gY29udGV4dBKGAQoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaOC5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0IgTQuBgBEpwBChBnZXRCeUV4ZWN1dGlvbklkEkguYWkuc3RpZ21lci5hZ2VudGljLmV4ZWN1dGlvbmNvbnRleHQudjEuRXhlY3V0aW9uQ29udGV4dEV4ZWN1dGlvbklkSW5wdXQaOC5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0IgTQuBgBGgSg/ys2YgZwcm90bzM",[file_ai_stigmer_agentic_executioncontext_v1_api,file_ai_stigmer_agentic_executioncontext_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ExecutionContextQueryController=serviceDesc(file_ai_stigmer_agentic_executioncontext_v1_query,0);function redactExecutionContextSecrets(ec2){let data=ec2?.spec?.data;if(data!==void 0)for(let value of Object.values(data))value.isSecret&&value.value!==""&&(value.value=REDACTED_MARKER)}var import_node_crypto18=require("node:crypto"),CONNECT_EXECUTION_ID_PREFIX="connect-";function newConnectExecutionId(mcpServerId){return`${CONNECT_EXECUTION_ID_PREFIX}${mcpServerId}-${(0,import_node_crypto18.randomUUID)().slice(0,8)}`}function isConnectExecutionId(executionId){return executionId.startsWith(CONNECT_EXECUTION_ID_PREFIX)}function isTerminalWorkflowExecutionPhase(phase){switch(phase){case ExecutionPhase2.EXECUTION_COMPLETED:case ExecutionPhase2.EXECUTION_FAILED:case ExecutionPhase2.EXECUTION_CANCELLED:case ExecutionPhase2.EXECUTION_TERMINATED:return!0;default:return!1}}var RUNNER_VERIFIER_NAME="runner",RUNNER_CREDENTIAL_INVALID_MESSAGE="runner credential is not valid on this server",RUNNER_CREDENTIAL_NOT_LIVE_MESSAGE="runner credential names a run that is over or belongs to nobody this server recognizes",RUN_CREDENTIAL_NOT_RUNS_PERSON_MESSAGE="a run credential is minted only for the person whose run it is",WORKFLOW_LINEAGE_BINDING_MISMATCH_MESSAGE="workflow lineage label names a workflow execution this runner credential is not bound to",MEMORY_CAPTURE_ORG_MISMATCH_MESSAGE="memory capture is scoped to the session's organization";function boundExecutionKindOf(executionId){switch(kindByIdPrefix(executionId)){case ApiResourceKind.agent_execution:return"agent-execution";case ApiResourceKind.workflow_execution:return"workflow-execution";default:return isConnectExecutionId(executionId)?"mcp-connect":void 0}}function bindsARun(kind){switch(kind){case"agent-execution":case"workflow-execution":return!0;case"mcp-connect":return!1;default:{let exhaustive=kind;throw new Error(`unknown bound execution kind ${String(exhaustive)}`)}}}async function loadBoundExecution(store,executionId,now=Date.now()){let kind=boundExecutionKindOf(executionId);if(kind!==void 0)switch(kind){case"agent-execution":{let row=await getRow(store,ApiResourceKind.agent_execution,executionId,AgentExecutionSchema);return row===void 0?void 0:{kind,executionId,org:row.metadata?.org??"",createdBy:creatorStampOf(AgentExecutionSchema,row),sessionId:row.spec?.sessionId??"",live:isLive(row.status!==void 0&&isTerminalExecutionPhase(row.status.phase),row.status?.completedAt??"",now)}}case"workflow-execution":{let row=await getRow(store,ApiResourceKind.workflow_execution,executionId,WorkflowExecutionSchema);return row===void 0?void 0:{kind,executionId,org:row.metadata?.org??"",createdBy:creatorStampOf(WorkflowExecutionSchema,row),sessionId:"",live:isLive(row.status!==void 0&&isTerminalWorkflowExecutionPhase(row.status.phase),row.status?.completedAt??"",now)}}case"mcp-connect":{let row=await getExecutionContextRow(store,executionId);return row===void 0?void 0:{kind,executionId,org:row.metadata?.org??"",createdBy:creatorStampOf(ExecutionContextSchema,row),sessionId:"",live:!0}}default:{let exhaustive=kind;throw new Error(`unknown bound execution kind ${String(exhaustive)}`)}}}function isLive(terminal,completedAt,now){if(!terminal)return!0;let finishedAt=Date.parse(completedAt);return Number.isNaN(finishedAt)?!1:now-finishedAt<6e5}function creatorStampOf(schema2,row){return auditOf(schema2,row)?.specAudit?.createdBy?.id??""}async function getRow(store,kind,id,schema2){try{return await store.getResource(kind,id,schema2)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}async function getExecutionContextRow(store,executionId){try{return await store.findByField(ApiResourceKind.execution_context,"spec.executionId",executionId,ExecutionContextSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}function ciphertextShapedMessage(key){return`value for '${key}' looks like stored ciphertext (enc:v<N>: prefix); supply the plaintext value`}var ENCRYPT_BATCH_FAILURE_MESSAGE="failed to encrypt secret values";function encryptionKeyMissingMessage(executionId,key){return`execution context for ${executionId} holds encrypted secret '${key}' but no encryption key is configured`}async function resolveValuesForCaller(deps,ctx,ec2){if(await runnerMayDecrypt(deps,ctx,ec2)){await decryptSecretValues(deps,ec2);return}redactExecutionContextSecrets(ec2)}async function runnerMayDecrypt(deps,ctx,ec2){let authorizeRead=deps.runnerAuthService.authorizeExecutionContextRead?.bind(deps.runnerAuthService);if(authorizeRead!==void 0){let token2=bearerToken(ctx);if(token2==="")return!1;try{return await authorizeRead(token2,ec2.spec?.executionId??"")}catch(error2){return deps.logger.warn("ExecutionContext read authorization failed \u2014 redacting secrets",{error:error2 instanceof Error?error2.message:String(error2)}),!1}}let token=bearerToken(ctx),executionId=verifyRunnerToken(deps,token,ec2);return executionId===void 0?!1:!isClockedToken(token)&&!await runIsLive(deps,executionId)?(deps.logger.debug("Run credential presented for a run that is over - redacting execution context secrets",{executionId}),!1):(deps.logger.debug("Scope-bound runner token presented - decrypting execution context secrets",{executionId}),!0)}function verifyRunnerToken(deps,token,ec2){if(token==="")return;let tokenExecutionId;try{tokenExecutionId=deps.runnerAuthService.verify(TOKEN_TYPE_EXECUTION_SCOPED,token)}catch{deps.logger.debug("Presented runner token failed verification - redacting execution context secrets");return}if(tokenExecutionId!==(ec2.spec?.executionId??"")){deps.logger.warn("Runner token is not scope-bound to this execution context - redacting secrets",{tokenExecutionId,executionId:ec2.spec?.executionId??""});return}return tokenExecutionId}async function runIsLive(deps,executionId){try{let execution=await loadBoundExecution(deps.store,executionId);return execution!==void 0&&bindsARun(execution.kind)&&execution.live}catch(error2){throw internalError(error2,"failed to load the run credential's execution")}}function bearerToken(ctx){return parseBearerToken(ctx.requestHeader.get("authorization")??"")}async function decryptSecretValues(deps,ec2){let executionId=ec2.spec?.executionId??"",data=ec2.spec?.data??{};for(let[key,value]of Object.entries(data))if(!(!value.isSecret||!deps.secretService.isEncrypted(value.value)))try{value.value=await deps.secretService.decrypt(value.value)}catch(error2){if(error2 instanceof EncryptionUnavailableError)throw internalError(error2,encryptionKeyMissingMessage(executionId,key));deps.logger.warn("Undecryptable ciphertext in execution context \u2014 dropping this value from the runner read",{key,executionId,error:error2 instanceof Error?error2.message:String(error2)}),delete data[key]}}var executionContextSearchExtractor={kind:ApiResourceKind.execution_context,schema:ExecutionContextSchema,getSearchSummary(){return""},toSearchResult(resource,score){let ec2=resource;return buildSearchResult({kind:ApiResourceKind.execution_context,metadata:ec2.metadata,summary:"",score,createdAt:ec2.status?.audit?.specAudit?.createdAt,updatedAt:ec2.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let ec2=resource,metadata=ec2.metadata;if(metadata!==void 0)return{name:metadata.name,description:"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(ec2.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};function newRejectCiphertextShapedStep(){return{name:"RejectCiphertextShapedValues",execute(ctx){let data=ctx.input.spec?.data??{};for(let[key,value]of Object.entries(data))if(isCiphertextShaped(value.value))throw invalidArgumentError(ciphertextShapedMessage(key))}}}function newEncryptSecretValuesStep2(secretService,logger2){return{name:"EncryptSecretValues",async execute(ctx){let ec2=ctx.newState,data=ec2.spec?.data;if(data===void 0||Object.keys(data).length===0)return;if(!secretService.isEnabled()){hasNonEmptySecret2(data)&&logger2.warn("Encryption disabled: execution context secret values will be stored in plaintext",{executionId:ec2.spec?.executionId??""});return}let toSeal=new Map;for(let[key,value]of Object.entries(data))!value.isSecret||value.value===""||toSeal.set(key,value.value);if(toSeal.size===0)return;let sealed;try{sealed=await secretService.encryptAllAtMostV2(toSeal,EncryptionScope.forOrganization(ec2.metadata?.org??""))}catch(error2){throw internalError(error2,ENCRYPT_BATCH_FAILURE_MESSAGE)}for(let[key,value]of Object.entries(data)){let sealedValue=sealed.get(key);sealedValue!==void 0&&(value.value=sealedValue)}}}}function hasNonEmptySecret2(data){return Object.values(data).some(v=>v.isSecret&&v.value!=="")}function newLoadByExecutionIdStep(store){return{name:"LoadByExecutionId",async execute(ctx){let input=ctx.input;if(input.executionId==="")throw invalidArgumentError("execution_id is required");let executionContext;try{executionContext=await store.findByField(ctx.apiResourceKind,"spec.executionId",input.executionId,ExecutionContextSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("execution_context",`execution_id=${input.executionId}`):internalError(error2,"failed to query execution context")}ctx.set(TARGET_RESOURCE_KEY,executionContext)}}}function newAuthorizeExecutionContextCreateStep(authorizer){return{name:"AuthorizeCreate",async execute(ctx){let caller=ctx.callerIdentity;if(isServerComposedRequest(caller))return;let decision;try{decision=await authorizer.authorize(caller,{permission:IamPermission.can_create_execution_in,resourceKind:ApiResourceKind.organization,resourceId:ctx.newState.metadata?.org??""})}catch(error2){throw internalError(error2 instanceof Error?error2:new Error(String(error2)),"execution-context create authorization could not be completed")}switch(decision.kind){case"allow":return;case"deny":case"not-found":throw new ConnectError("unauthorized to create execution context in this organization",Code.PermissionDenied);case"unavailable":throw internalError(decision.cause,"execution-context create authorization could not be completed");default:{let exhaustive=decision;throw internalError(new Error(`unknown decision ${JSON.stringify(exhaustive)}`),"execution-context create authorization could not be completed")}}}}}function registerExecutionContextServices(router,deps){router.service(ExecutionContextCommandController,{apply:(ec2,ctx)=>apply8(deps,ec2,ctx),create:(ec2,ctx)=>createExecutionContext(deps,ec2,ctx),delete:(input,ctx)=>deleteExecutionContext(deps,input,ctx)}),router.service(ExecutionContextQueryController,{get:(id,ctx)=>get14(deps,id,ctx),getByReference:(ref,ctx)=>getByReference8(deps,ref,ctx),getByExecutionId:(input,ctx)=>getByExecutionId(deps,input,ctx)})}function kindOf13(ctx){return ctx.values.get(apiResourceKindKey)}async function createExecutionContext(deps,ec2,ctx){let reqCtx=new RequestContext(ExecutionContextSchema,ec2,callerIdentityOf(ctx),kindOf13(ctx));return await newPipeline("execution-context-create",deps.logger).addStep(newAuthorizeStep(ExecutionContextCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newAuthorizeExecutionContextCreateStep(deps.authorizer)).addStep(newValidateVisibilityStep()).addStep(newRejectCiphertextShapedStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newEncryptSecretValuesStep2(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,executionContextSearchExtractor,deps.logger)).build().execute(reqCtx),redactExecutionContextSecrets(reqCtx.newState),reqCtx.newState}async function apply8(deps,ec2,ctx){let reqCtx=new RequestContext(ExecutionContextSchema,ec2,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-apply",deps.logger).addStep(newAuthorizeStep(ExecutionContextCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");if(shouldCreate)return createExecutionContext(deps,ec2,ctx);throw deps.logger.warn("ExecutionContext already exists - UPDATE not supported",{slug:ec2.metadata?.name??"",id:ec2.metadata?.id??""}),alreadyExistsError("ExecutionContext",ec2.metadata?.name??"")}async function deleteExecutionContext(deps,input,ctx){let reqCtx=new RequestContext(ExecutionContextCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf13(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("execution-context-delete",deps.logger).addStep(newAuthorizeStep(ExecutionContextCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,ExecutionContextSchema)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted execution context not found in context"),"deleted execution context not found in context");let ec2=deleted;return redactExecutionContextSecrets(ec2),ec2}async function get14(deps,id,ctx){let reqCtx=new RequestContext(ExecutionContextQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-get",deps.logger).addStep(newAuthorizeStep(ExecutionContextQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,ExecutionContextSchema)).build().execute(reqCtx);let ec2=reqCtx.get(TARGET_RESOURCE_KEY);return redactExecutionContextSecrets(ec2),ec2}async function getByReference8(deps,ref,ctx){let reqCtx=new RequestContext(ExecutionContextQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-get-by-reference",deps.logger).addStep(newAuthorizeStep(ExecutionContextQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,ExecutionContextSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(ExecutionContextQueryController.method.get))).build().execute(reqCtx);let ec2=reqCtx.get(TARGET_RESOURCE_KEY);return redactExecutionContextSecrets(ec2),ec2}async function getByExecutionId(deps,input,ctx){let reqCtx=new RequestContext(ExecutionContextQueryController.method.getByExecutionId.input,input,callerIdentityOf(ctx),kindOf13(ctx));await newPipeline("execution-context-get-by-execution-id",deps.logger).addStep(newAuthorizeStep(ExecutionContextQueryController.method.getByExecutionId,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByExecutionIdStep(deps.store)).build().execute(reqCtx);let ec2=reqCtx.get(TARGET_RESOURCE_KEY);return await resolveValuesForCaller(deps,ctx,ec2),ec2}var import_node_crypto19=require("node:crypto");var file_ai_stigmer_platform_github_v1_service=fileDesc("CithaS9zdGlnbWVyL3BsYXRmb3JtL2dpdGh1Yi92MS9zZXJ2aWNlLnByb3RvEh1haS5zdGlnbWVyLnBsYXRmb3JtLmdpdGh1Yi52MSI8ChtHZXRPQXV0aEF1dGhvcml6ZVVybFJlcXVlc3QSHQoMcmVkaXJlY3RfdXJpGAEgASgJQge6SARyAhABIkQKHEdldE9BdXRoQXV0aG9yaXplVXJsUmVzcG9uc2USFQoNYXV0aG9yaXplX3VybBgBIAEoCRINCgVzdGF0ZRgCIAEoCSJoChhFeGNoYW5nZU9BdXRoQ29kZVJlcXVlc3QSFQoEY29kZRgBIAEoCUIHukgEcgIQARIWCgVzdGF0ZRgCIAEoCUIHukgEcgIQARIdCgxyZWRpcmVjdF91cmkYAyABKAlCB7pIBHICEAEiVAoZRXhjaGFuZ2VPQXV0aENvZGVSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEgoKdG9rZW5fdHlwZRgCIAEoCRINCgVzY29wZRgDIAEoCTK2AgoNR2l0SHViU2VydmljZRKVAQoUZ2V0T0F1dGhBdXRob3JpemVVcmwSOi5haS5zdGlnbWVyLnBsYXRmb3JtLmdpdGh1Yi52MS5HZXRPQXV0aEF1dGhvcml6ZVVybFJlcXVlc3QaOy5haS5zdGlnbWVyLnBsYXRmb3JtLmdpdGh1Yi52MS5HZXRPQXV0aEF1dGhvcml6ZVVybFJlc3BvbnNlIgTQuBgBEowBChFleGNoYW5nZU9BdXRoQ29kZRI3LmFpLnN0aWdtZXIucGxhdGZvcm0uZ2l0aHViLnYxLkV4Y2hhbmdlT0F1dGhDb2RlUmVxdWVzdBo4LmFpLnN0aWdtZXIucGxhdGZvcm0uZ2l0aHViLnYxLkV4Y2hhbmdlT0F1dGhDb2RlUmVzcG9uc2UiBNC4GAFiBnByb3RvMw",[file_ai_stigmer_commons_rpc_method_options,file_buf_validate_validate]);var GetOAuthAuthorizeUrlResponseSchema=messageDesc2(file_ai_stigmer_platform_github_v1_service,1);var ExchangeOAuthCodeResponseSchema=messageDesc2(file_ai_stigmer_platform_github_v1_service,3),GitHubService=serviceDesc(file_ai_stigmer_platform_github_v1_service,0);var GITHUB_AUTHORIZE_URL="https://github.com/login/oauth/authorize",GITHUB_TOKEN_URL="https://github.com/login/oauth/access_token",OAUTH_SCOPES="repo,read:user",HTTP_TIMEOUT_MS=1e4;function registerGitHubServices(router,deps){router.service(GitHubService,{getOAuthAuthorizeUrl:req=>getOAuthAuthorizeUrl(deps,req),exchangeOAuthCode:req=>exchangeOAuthCode(deps,req)})}function getOAuthAuthorizeUrl(deps,req){if(deps.clientId==="")throw failedPreconditionError("GitHub OAuth is not configured (STIGMER_GITHUB_CLIENT_ID not set)");let state2;try{state2=(0,import_node_crypto19.randomBytes)(16).toString("hex")}catch(error2){throw deps.logger.error("failed to generate OAuth state",{error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to generate OAuth state")}let authorizeUrl=GITHUB_AUTHORIZE_URL+"?"+goUrlValuesEncode({client_id:deps.clientId,redirect_uri:req.redirectUri,scope:OAUTH_SCOPES,state:state2});return create2(GetOAuthAuthorizeUrlResponseSchema,{authorizeUrl,state:state2})}async function exchangeOAuthCode(deps,req){if(deps.clientId===""||deps.clientSecret==="")throw failedPreconditionError("GitHub OAuth is not configured");let body=goUrlValuesEncode({client_id:deps.clientId,client_secret:deps.clientSecret,code:req.code,redirect_uri:req.redirectUri}),fetchImpl=deps.fetchImpl??fetch,response;try{response=await fetchImpl(GITHUB_TOKEN_URL,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body,signal:AbortSignal.timeout(HTTP_TIMEOUT_MS)})}catch(error2){throw deps.logger.error("GitHub token exchange failed",{error:error2 instanceof Error?error2.message:String(error2)}),unavailableError("failed to reach GitHub for token exchange")}let raw;try{raw=await response.text()}catch(error2){throw deps.logger.error("failed to read GitHub token response",{error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to read GitHub response")}let tokenResponse;try{tokenResponse=JSON.parse(raw)}catch(error2){throw deps.logger.error("failed to parse GitHub token response",{error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to parse GitHub response")}if(tokenResponse.error!==void 0&&tokenResponse.error!=="")throw deps.logger.warn("GitHub OAuth error",{error:tokenResponse.error,description:tokenResponse.error_description??""}),invalidArgumentError(`GitHub OAuth error: ${tokenResponse.error_description??""}`);return create2(ExchangeOAuthCodeResponseSchema,{accessToken:tokenResponse.access_token??"",tokenType:tokenResponse.token_type??"",scope:tokenResponse.scope??""})}var file_ai_stigmer_agentic_memory_v1_io=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvbWVtb3J5L3YxL2lvLnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxIiEKCE1lbW9yeUlkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiYAoTTGlzdE1lbW9yaWVzUmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAESMwoJcGFnZV9pbmZvGAIgASgLMiAuYWkuc3RpZ21lci5jb21tb25zLnJwYy5QYWdlSW5mbyJWCgpNZW1vcnlMaXN0EhMKC3RvdGFsX2NvdW50GAEgASgFEjMKBWl0ZW1zGAIgAygLMiQuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnliBnByb3RvMw",[file_ai_stigmer_agentic_memory_v1_api,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]),MemoryIdSchema=messageDesc2(file_ai_stigmer_agentic_memory_v1_io,0);var MemoryListSchema=messageDesc2(file_ai_stigmer_agentic_memory_v1_io,2);var file_ai_stigmer_agentic_memory_v1_command=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvbWVtb3J5L3YxL2NvbW1hbmQucHJvdG8SHGFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEypQUKF01lbW9yeUNvbW1hbmRDb250cm9sbGVyEloKBmNyZWF0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5GiQuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnkiBNC4GAESigEKBnVwZGF0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5GiQuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnkiNMK4GDAIAhA5IgttZXRhZGF0YS5pZCoddW5hdXRob3JpemVkIHRvIHVwZGF0ZSBtZW1vcnkShgEKBmRlbGV0ZRImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIuwrgYKggDEDkiBXZhbHVlKh11bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG1lbW9yeRKIAQoHY29uZmlybRImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIvwrgYKwgCEDkiBXZhbHVlKh51bmF1dGhvcml6ZWQgdG8gY29uZmlybSBtZW1vcnkShgEKBnJlamVjdBImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIuwrgYKggCEDkiBXZhbHVlKh11bmF1dGhvcml6ZWQgdG8gcmVqZWN0IG1lbW9yeRoEoP8rOWIGcHJvdG8z",[file_ai_stigmer_agentic_memory_v1_api,file_ai_stigmer_agentic_memory_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),MemoryCommandController=serviceDesc(file_ai_stigmer_agentic_memory_v1_command,0);var file_ai_stigmer_agentic_memory_v1_query=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvbWVtb3J5L3YxL3F1ZXJ5LnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxMosCChVNZW1vcnlRdWVyeUNvbnRyb2xsZXISgAEKA2dldBImLmFpLnN0aWdtZXIuYWdlbnRpYy5tZW1vcnkudjEuTWVtb3J5SWQaJC5haS5zdGlnbWVyLmFnZW50aWMubWVtb3J5LnYxLk1lbW9yeSIrwrgYJwgBEDkiBXZhbHVlKhp1bmF1dGhvcml6ZWQgdG8gZ2V0IG1lbW9yeRJpCgRsaXN0EjEuYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5MaXN0TWVtb3JpZXNSZXF1ZXN0GiguYWkuc3RpZ21lci5hZ2VudGljLm1lbW9yeS52MS5NZW1vcnlMaXN0IgTQuBgBGgSg/ys5YgZwcm90bzM",[file_ai_stigmer_agentic_memory_v1_api,file_ai_stigmer_agentic_memory_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),MemoryQueryController=serviceDesc(file_ai_stigmer_agentic_memory_v1_query,0);var PLATFORM_CLIENT_KIND_NAME="PlatformClient",SYSTEM_SHARE_CLIENT_SLUG="system-share-client",RESERVED_PLATFORM_CLIENT_SLUGS=new Set([SYSTEM_SHARE_CLIENT_SLUG]),USER_TOKEN_CLAIMS={subject:"sub",externalUserId:"ext_user_id",email:"email",name:"name",org:"org",platformClientId:"platform_client_id"},BEARER_TOKEN_TYPE="Bearer";function reservedSlugMessage(slug){return`The slug '${slug}' is reserved for the platform's system-managed resources and cannot be used. If you did not provide a slug explicitly, it was derived from the resource name \u2014 choose a different name or provide an explicit slug.`}function systemManagedMessage(verb){return`This platform client is system-managed and cannot be ${verb}`}function referenceNotFoundMessage(org,slug){return`PlatformClient '${org}/${slug}' not found`}var INVALID_CLIENT_CREDENTIALS_MESSAGE="Invalid client_id or client_secret",EXPIRED_CLIENT_SECRET_MESSAGE="PlatformClient secret has expired. Rotating the secret does not extend it; the client's owner must set a later expires_at or set never_expires.";function organizationMismatchMessage(owningOrg){return`org_id must be empty or the PlatformClient's owning organization ('${owningOrg}'); cross-organization minting is not supported`}function noAccountMessage(externalUserId,org){return`User '${externalUserId}' has no Stigmer account in organization '${org}'. Enable auto_provision_accounts on the PlatformClient or create the account first.`}var OWNER_AUTO_GRANT_MESSAGE="auto_grant_role cannot be 'owner'; organization ownership must be assigned explicitly.",PROVISIONING_FAILED_MESSAGE="Account provisioning failed. No partial account was left behind; the request is safe to retry.";function blankSubjectPartMessage(part){return`${part} must not be null or blank`}function subjectSeparatorMessage(part,value){return`${part} must not contain the separator character '|': ${value}`}function foreignAccountMessage(externalUserId,org){return`User '${externalUserId}' in organization '${org}' resolves to an account no platform client provisioned \u2014 refusing to mint a token for it`}var MINTING_REQUIRES_AUTHENTICATION_MESSAGE="mintUserToken requires a server that authenticates its callers: this server trusts every request, so nothing would verify the token \u2014 configure an identity provider (STIGMER_OIDC_ISSUER) to enable PlatformClient token minting",MINTING_DISABLED_MESSAGE="mintUserToken is disabled: this server's platform-token key ring holds no signing key",GUEST_MINT_UNIMPLEMENTED_MESSAGE="PlatformClientTokenController.mintGuestToken is not implemented: guest tokens for shared agents are served by the Cloud edition",TOKEN_NAMES_NO_CLIENT_MESSAGE="platform token names no platform client",DELETED_CLIENT_MESSAGE="The platform client that minted this token has been deleted, so the token is no longer accepted. Mint a new user token from an active platform client.";function originRefusalMessage(origin){return`Request origin '${origin}' is not in this platform client's allowed_origins. Add it to the PlatformClient's allowed_origins to permit browser requests from this origin.`}var import_node_crypto20=require("node:crypto"),PLATFORM_TOKEN_ISSUER="stigmer",TOKEN_TYPE_CLAIM="token_type",ENVELOPE_CLAIMS=new Set(["iss","iat","exp","jti","aud"]),PLATFORM_TOKEN_REFUSAL_MESSAGES={signature:"platform token signature verification failed",expired:"platform token is expired",audience:"platform token was minted for another environment",subject:"platform token carries no subject"};function signPlatformToken(ring,claims,options={}){for(let name of Object.keys(claims))if(ENVELOPE_CLAIMS.has(name))throw new Error(`platform-token claim '${name}' belongs to the envelope and cannot be set by a lane`);let ttlSeconds=options.ttlSeconds??ring.ttlSeconds;if(!Number.isInteger(ttlSeconds)||ttlSeconds<=0)throw new Error(`platform-token lifetime must be a positive integer number of seconds, got ${ttlSeconds}`);let issuedAt=Math.floor((options.now??new Date).getTime()/1e3),expiresAtSeconds=issuedAt+ttlSeconds,header={alg:"RS256",typ:"JWT",kid:ring.signer.kid},payload={iss:PLATFORM_TOKEN_ISSUER,iat:issuedAt,exp:expiresAtSeconds,jti:(0,import_node_crypto20.randomUUID)(),...ring.audience!==""?{aud:ring.audience}:{},...claims},signingInput=`${base64UrlJson(header)}.${base64UrlJson(payload)}`,signature=(0,import_node_crypto20.sign)("sha256",Buffer.from(signingInput),ring.signer.key);return{token:`${signingInput}.${signature.toString("base64url")}`,expiresAt:new Date(expiresAtSeconds*1e3)}}function verifyPlatformToken(ring,token,now=new Date){let decoded=decode2(token);if(decoded===void 0||decoded.payload.iss!==PLATFORM_TOKEN_ISSUER)return{outcome:"foreign"};let signingInput=Buffer.from(`${decoded.encodedHeader}.${decoded.encodedPayload}`);if(!ring.verificationKeys.some(key=>(0,import_node_crypto20.verify)("sha256",signingInput,key,decoded.signature)))return{outcome:"refused",refusal:"signature"};let exp=decoded.payload.exp;if(typeof exp!="number"||exp*1e3<=now.getTime())return{outcome:"refused",refusal:"expired"};let aud=decoded.payload.aud;if(ring.audience!==""&&aud!==void 0&&!audienceMatches(aud,ring.audience))return{outcome:"refused",refusal:"audience"};let sub=decoded.payload.sub;return typeof sub!="string"||sub===""?{outcome:"refused",refusal:"subject"}:{outcome:"verified",token:{subject:sub,tokenType:stringClaim(decoded.payload,TOKEN_TYPE_CLAIM),payload:decoded.payload}}}function platformTokenRefusalError(refusal2){return new ConnectError(PLATFORM_TOKEN_REFUSAL_MESSAGES[refusal2],Code.Unauthenticated)}function decodeVerifiedPlatformTokenPayload(token){let decoded=decode2(token);return decoded!==void 0&&decoded.payload.iss===PLATFORM_TOKEN_ISSUER?decoded.payload:void 0}function stringClaim(payload,name){let value=payload[name];return typeof value=="string"&&value!==""?value:void 0}function decode2(token){let parts=token.split(".");if(parts.length!==3)return;let[encodedHeader="",encodedPayload="",encodedSignature=""]=parts,header=parseJsonObject(encodedHeader),payload=parseJsonObject(encodedPayload);if(!(header===void 0||payload===void 0))return{encodedHeader,encodedPayload,payload,signature:Buffer.from(encodedSignature,"base64url")}}function parseJsonObject(segment){try{let value=JSON.parse(Buffer.from(segment,"base64url").toString("utf8"));return typeof value=="object"&&value!==null&&!Array.isArray(value)?value:void 0}catch{return}}function audienceMatches(aud,expected){return typeof aud=="string"?aud===expected:Array.isArray(aud)&&aud.includes(expected)}function base64UrlJson(value){return Buffer.from(JSON.stringify(value)).toString("base64url")}var MEMORY_CAPTURE_CALLER_MESSAGE="memory can only be captured for a first-party human operator",MEMORY_CAPTURE_CREDENTIAL_KEY="memoryCaptureCredential";function newGuardMemoryCaptureStep(provider){return{name:"GuardMemoryCapture",async execute(ctx){let caller=ctx.callerIdentity;if(isServerComposedRequest(caller))return;let decide=provider?.authorizeMemoryCapture;if(decide!==void 0){let org=metadataOf(ctx.newState)?.org??"",decision=await decide.call(provider,caller,org);switch(decision.verdict){case"admit":ctx.set(MEMORY_CAPTURE_CREDENTIAL_KEY,{subjectIdentityAccountId:decision.subjectIdentityAccountId,provedSessionId:decision.provedSessionId});return;case"refuse":throw new ConnectError(MEMORY_CAPTURE_CALLER_MESSAGE,Code.PermissionDenied);case"no-opinion":break;default:{let exhaustive=decision;throw new Error(`unknown memory capture decision ${JSON.stringify(exhaustive)}`)}}}if(caller.callerClass==="machine"||carriesPlatformClientClaim(caller.rawToken))throw new ConnectError(MEMORY_CAPTURE_CALLER_MESSAGE,Code.PermissionDenied)}}}function memoryCaptureCredentialOf(ctx){let payload=ctx.get(MEMORY_CAPTURE_CREDENTIAL_KEY);if(typeof payload=="object"&&payload!==null&&"subjectIdentityAccountId"in payload&&"provedSessionId"in payload)return payload}function carriesPlatformClientClaim(rawToken){let payload=decodeVerifiedPlatformTokenPayload(rawToken);return payload!==void 0&&stringClaim(payload,USER_TOKEN_CLAIMS.platformClientId)!==void 0}var MEMORY_FULL_MESSAGE="memory is full \u2014 review and delete existing memories";function memoryDisabledMessage(org){return`memory is not enabled for organization ${org} \u2014 an organization admin can enable it in organization preferences`}var MEMORY_CONFIRM_REJECTED_MESSAGE="memory was rejected \u2014 delete it and let the agent propose it again",MEMORY_REJECT_CONFIRMED_MESSAGE="memory was confirmed \u2014 delete it to stop it from being recalled",MEMORY_SUBJECT_IMMUTABLE_MESSAGE="spec.subject_identity_account_id is immutable \u2014 it is derived from the capturing credential at create",MEMORY_PROVENANCE_IMMUTABLE_MESSAGE="spec.provenance is immutable \u2014 it records where the fact came from";var LIST_RESULT_KEY6="listResult";function newResolveMemoryDefaultsStep(){return{name:"ResolveMemoryDefaults",execute(ctx){let memory=ctx.newState,metadata=memory.metadata;if((metadata?.org??"")==="")throw invalidArgumentError("metadata.org is required for a memory");if(metadata===void 0)throw internalError(new Error("metadata is nil"),"metadata is nil");metadata.id===""&&(metadata.id=generateId("mem")),metadata.name===""&&metadata.slug===""&&(metadata.name=metadata.id);let spec=memory.spec;if(spec===void 0)throw internalError(new Error("memory spec is nil"),"memory spec is nil");let captureCredential=memoryCaptureCredentialOf(ctx);spec.subjectIdentityAccountId=captureCredential?.subjectIdentityAccountId??"",spec.provenance!==void 0&&(spec.provenance.toolCallId=""),captureCredential!==void 0&&(spec.provenance===void 0&&(spec.provenance=create2(MemoryProvenanceSchema,{})),spec.provenance.sessionId=captureCredential.provedSessionId)}}}var MEMORY_CREATE_DENIED_MESSAGE="unauthorized to capture memory in this organization";function resolveMemoryCreateTargets(ctx){return isServerComposedRequest(ctx.callerIdentity)?[]:[{permission:IamPermission.can_create_session,resourceKind:ApiResourceKind.organization,resourceId:ctx.newState.metadata?.org??"",deniedMessage:MEMORY_CREATE_DENIED_MESSAGE}]}function newCheckMemoryEnablementStep(store){return{name:"CheckMemoryEnablement",async execute(ctx){let orgID=ctx.newState.metadata?.org??"",org;try{org=await store.getResource(ApiResourceKind.organization,orgID,OrganizationSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("Organization",orgID):internalError(error2,"failed to load organization for memory enablement check")}if(org.spec?.preferences?.memoryEnabled!==!0)throw failedPreconditionError(memoryDisabledMessage(orgID))}}}function newCheckMemoryCapStep(store){return{name:"CheckMemoryCap",async execute(ctx){let newState=ctx.newState,org=newState.metadata?.org??"",subject=newState.spec?.subjectIdentityAccountId??"",rows;try{rows=await store.listResources(ApiResourceKind.memory)}catch(error2){throw internalError(error2,"failed to count memories for cap check")}let count=0;for(let bytes of rows){let existing=unmarshalMemory(bytes);existing!==void 0&&(existing.metadata?.org??"")===org&&(existing.spec?.subjectIdentityAccountId??"")===subject&&count++}if(count>=100)throw failedPreconditionError(MEMORY_FULL_MESSAGE)}}}function newInitializeMemoryLifecycleStep(){return{name:"InitializeMemoryLifecycle",execute(ctx){let memory=ctx.newState;memory.status===void 0&&(memory.status=create2(MemoryStatusSchema,{})),memory.status.lifecycleState=MemoryLifecycleState.lifecycle_state_proposed,memory.status.stateChangedAt=timestampNow()}}}function newValidateMemoryUpdateStep(){return{name:"ValidateMemoryUpdate",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing memory not found in context"),"existing memory not found in context");let newState=ctx.newState;if((newState.spec?.subjectIdentityAccountId??"")!==(existing.spec?.subjectIdentityAccountId??""))throw failedPreconditionError(MEMORY_SUBJECT_IMMUTABLE_MESSAGE);let newProvenance=newState.spec?.provenance,existingProvenance=existing.spec?.provenance;if(!(newProvenance===void 0||existingProvenance===void 0?newProvenance===existingProvenance:equals(MemoryProvenanceSchema,newProvenance,existingProvenance)))throw failedPreconditionError(MEMORY_PROVENANCE_IMMUTABLE_MESSAGE)}}}function newPersistMemoryUpdateStep(store){return{name:"PersistMemoryUpdate",async execute(ctx){let newState=ctx.newState,memoryId=newState.metadata?.id??"",live;try{live=await store.updateResource(ApiResourceKind.memory,memoryId,MemorySchema,row=>{row.apiVersion=newState.apiVersion,row.kind=newState.kind,row.metadata=newState.metadata,row.spec=newState.spec,newState.status?.audit!==void 0&&(row.status===void 0&&(row.status=create2(MemoryStatusSchema,{})),row.status.audit=newState.status.audit)})}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("Memory",memoryId):internalError(error2,"failed to persist memory update")}ctx.setNewState(live)}}}function newTransitionMemoryLifecycleStep(store,target,blockedMessage){return{name:"TransitionMemoryLifecycle",async execute(ctx){let memoryId=ctx.get(EXISTING_RESOURCE_KEY).metadata?.id??"",transitionNoOp=new Error("memory already in target state"),blocked,live;try{live=await store.updateResource(ApiResourceKind.memory,memoryId,MemorySchema,row=>{live=row;let current=row.status?.lifecycleState??MemoryLifecycleState.lifecycle_state_unspecified;if(current===target)throw transitionNoOp;if(current!==MemoryLifecycleState.lifecycle_state_proposed&¤t!==MemoryLifecycleState.lifecycle_state_unspecified)throw blocked=failedPreconditionError(blockedMessage),blocked;row.status===void 0&&(row.status=create2(MemoryStatusSchema,{})),row.status.lifecycleState=target,row.status.stateChangedAt=timestampNow(),setAuditFieldsForUpdate(MemorySchema,row,"status_audit",ctx.callerIdentity)})}catch(error2){if(error2!==transitionNoOp)throw blocked!==void 0&&error2===blocked?blocked:error2 instanceof ResourceNotFoundError?notFoundError("Memory",memoryId):internalError(error2,"failed to transition memory lifecycle")}if(live===void 0)throw internalError(new Error("transition closure did not observe the row"),"failed to transition memory lifecycle");ctx.set(EXISTING_RESOURCE_KEY,live)}}}function newListMemoriesByOrgStep(store,listReadScope){return{name:"ListMemoriesByOrg",async execute(ctx){let org=ctx.input.org,rows;try{rows=await store.listResources(ApiResourceKind.memory)}catch(error2){throw internalError(error2,"failed to list memories")}let decoded=[];for(let bytes of rows){let memory=unmarshalMemory(bytes);memory!==void 0&&decoded.push(memory)}let memories=await restrictListByReadScope(listReadScope,ctx.callerIdentity,ApiResourceKind.memory,decoded.filter(memory=>(memory.metadata?.org??"")===org),"");memories.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),ctx.set(LIST_RESULT_KEY6,create2(MemoryListSchema,{totalCount:memories.length,items:memories}))}}}function unmarshalMemory(data){try{return fromBinary2(MemorySchema,data)}catch{return}}function registerMemoryServices(router,deps){router.service(MemoryCommandController,{create:(memory,ctx)=>createMemory(deps,memory,ctx),update:(memory,ctx)=>update11(deps,memory,ctx),delete:(id,ctx)=>deleteMemory(deps,id,ctx),confirm:(id,ctx)=>confirm(deps,id,ctx),reject:(id,ctx)=>reject(deps,id,ctx)}),router.service(MemoryQueryController,{get:(id,ctx)=>get15(deps,id,ctx),list:(req,ctx)=>list9(deps,req,ctx)})}function kindOf14(ctx){return ctx.values.get(apiResourceKindKey)}async function createMemory(deps,memory,ctx){let reqCtx=new RequestContext(MemorySchema,memory,callerIdentityOf(ctx),kindOf14(ctx));return await newPipeline("memory-create",deps.logger).addStep(newAuthorizeStep(MemoryCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newGuardMemoryCaptureStep(deps.runnerCredentialProvider)).addStep(newValidateVisibilityStep()).addStep(newResolveMemoryDefaultsStep()).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,resolveMemoryCreateTargets)).addStep(newCheckMemoryEnablementStep(deps.store)).addStep(newCheckMemoryCapStep(deps.store)).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newInitializeMemoryLifecycleStep()).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update11(deps,memory,ctx){let reqCtx=new RequestContext(MemorySchema,memory,callerIdentityOf(ctx),kindOf14(ctx));return await newPipeline("memory-update",deps.logger).addStep(newAuthorizeStep(MemoryCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingStep(deps.store)).addStep(newValidateMemoryUpdateStep()).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistMemoryUpdateStep(deps.store)).build().execute(reqCtx),reqCtx.newState}async function confirm(deps,memoryId,ctx){return runTransition(deps,memoryId,ctx,"memory-confirm",MemoryCommandController.method.confirm,MemoryLifecycleState.lifecycle_state_confirmed,MEMORY_CONFIRM_REJECTED_MESSAGE)}async function reject(deps,memoryId,ctx){return runTransition(deps,memoryId,ctx,"memory-reject",MemoryCommandController.method.reject,MemoryLifecycleState.lifecycle_state_rejected,MEMORY_REJECT_CONFIRMED_MESSAGE)}async function runTransition(deps,memoryId,ctx,name,method,target,blockedMessage){let reqCtx=new RequestContext(MemoryIdSchema,memoryId,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline(name,deps.logger).addStep(newAuthorizeStep(method,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,MemorySchema)).addStep(newTransitionMemoryLifecycleStep(deps.store,target,blockedMessage)).build().execute(reqCtx);let transitioned=reqCtx.get(EXISTING_RESOURCE_KEY);if(transitioned===void 0)throw internalError(new Error("transitioned memory not found in context"),"transitioned memory not found in context");return transitioned}async function deleteMemory(deps,memoryId,ctx){let reqCtx=new RequestContext(MemoryIdSchema,memoryId,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline("memory-delete",deps.logger).addStep(newAuthorizeStep(MemoryCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,MemorySchema)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted memory not found in context"),"deleted memory not found in context");return deleted}async function get15(deps,memoryId,ctx){let reqCtx=new RequestContext(MemoryIdSchema,memoryId,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline("memory-get",deps.logger).addStep(newAuthorizeStep(MemoryQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadTargetStep(deps.store,MemorySchema)).build().execute(reqCtx);let target=reqCtx.get(TARGET_RESOURCE_KEY);if(target===void 0)throw internalError(new Error("target memory not found in context"),"target memory not found in context");return target}async function list9(deps,req,ctx){let reqCtx=new RequestContext(MemoryQueryController.method.list.input,req,callerIdentityOf(ctx),kindOf14(ctx));await newPipeline("memory-list",deps.logger).addStep(newAuthorizeStep(MemoryQueryController.method.list,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListMemoriesByOrgStep(deps.store,deps.listReadScope)).build().execute(reqCtx);let result=reqCtx.get(LIST_RESULT_KEY6);if(result===void 0)throw internalError(new Error("memory list not found in context"),"memory list not found in context");return result}var file_ai_stigmer_iam_oauthapp_v1_command=fileDesc("CihhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9jb21tYW5kLnByb3RvEhphaS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MTLOBAoZT0F1dGhBcHBDb21tYW5kQ29udHJvbGxlchJTCgVhcHBseRIkLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwGiQuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuT0F1dGhBcHASowEKBmNyZWF0ZRIkLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwGiQuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuT0F1dGhBcHAiTcK4GEkIFxAeIgxtZXRhZGF0YS5vcmcqNXVuYXV0aG9yaXplZCB0byBjcmVhdGUgb2F1dGggYXBwIGluIHRoaXMgb3JnYW5pemF0aW9uEo0BCgZ1cGRhdGUSJC5haS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MS5PQXV0aEFwcBokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIjfCuBgzCAIQFiILbWV0YWRhdGEuaWQqIHVuYXV0aG9yaXplZCB0byB1cGRhdGUgb2F1dGggYXBwEp8BCgZkZWxldGUSNi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VEZWxldGVJbnB1dBokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIjfCuBgzCAMQFiILcmVzb3VyY2VfaWQqIHVuYXV0aG9yaXplZCB0byBkZWxldGUgb2F1dGggYXBwGgSg/ysWYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_oauthapp_v1_api]),OAuthAppCommandController=serviceDesc(file_ai_stigmer_iam_oauthapp_v1_command,0);var file_ai_stigmer_iam_oauthapp_v1_io=fileDesc("CiNhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9pby5wcm90bxIaYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEiJgoKT0F1dGhBcHBJZBIYCgV2YWx1ZRgBIAEoCUIJukgGcgQQARhAIkIKCU9BdXRoQXBwcxI1CgdlbnRyaWVzGAEgAygLMiQuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuT0F1dGhBcHAiLwoXTGlzdE9BdXRoQXBwc0J5T3JnSW5wdXQSFAoDb3JnGAEgASgJQge6SARyAhABYgZwcm90bzM",[file_ai_stigmer_iam_oauthapp_v1_api,file_buf_validate_validate]);var OAuthAppsSchema=messageDesc2(file_ai_stigmer_iam_oauthapp_v1_io,1);var file_ai_stigmer_iam_oauthapp_v1_query=fileDesc("CiZhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9xdWVyeS5wcm90bxIaYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEy0AMKF09BdXRoQXBwUXVlcnlDb250cm9sbGVyEosBCgNnZXQSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIi/CuBgrCAEQFiIFdmFsdWUqHnVuYXV0aG9yaXplZCB0byB2aWV3IG9hdXRoIGFwcBJyCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRokLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwIgTQuBgBEqwBCglsaXN0QnlPcmcSMy5haS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MS5MaXN0T0F1dGhBcHBzQnlPcmdJbnB1dBolLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLk9BdXRoQXBwcyJDwrgYPwgBEB4iA29yZyo0dW5hdXRob3JpemVkIHRvIGxpc3Qgb2F1dGggYXBwcyBpbiB0aGlzIG9yZ2FuaXphdGlvbhoEoP8rFmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_oauthapp_v1_api,file_ai_stigmer_iam_oauthapp_v1_io]),OAuthAppQueryController=serviceDesc(file_ai_stigmer_iam_oauthapp_v1_query,0);var REDACTED_MARKER3="***REDACTED***",MARKER_ON_CREATE_MESSAGE="cannot use the redaction marker as client_secret on create",PRESERVE_NO_EXISTING_SECRET_MESSAGE="cannot preserve client_secret: no existing secret value found",CIPHERTEXT_SHAPED_SECRET_MESSAGE="client_secret must be plaintext \u2014 values carrying the 'enc:' encryption prefix are not accepted from clients";function deleteBlockedByMcpServerMessage(org,slug,mcpServerName){return`cannot delete OAuthApp '${org}/${slug}': referenced by MCP server '${mcpServerName}'`}async function resolveOAuthAppRef(store,ref,logger2){let slug=ref?.slug??"";if(slug==="")return;let rows=await store.listResources(ApiResourceKind.oauth_app),slugMatches=[];for(let data of rows){let app;try{app=fromBinary2(OAuthAppSchema,data)}catch{continue}if((app.metadata?.slug??"")!==slug)continue;let refOrg=ref?.org??"";if(refOrg!==""&&app.metadata?.org===refOrg)return app;slugMatches.push(app)}if(slugMatches.length!==0){if(slugMatches.length===1)return slugMatches[0];logger2.warn("oauth_app_ref is ambiguous (slug exists in several orgs, none matching the ref); refusing to pick \u2014 pin the ref's org to resolve",{oauthAppSlug:slug,refOrg:ref?.org??"",candidateOrgs:slugMatches.map(app=>app.metadata?.org??"")})}}function redactOAuthApp(app){app.spec!==void 0&&app.spec.clientSecret!==""&&(app.spec.clientSecret=REDACTED_MARKER3)}function newEncryptClientSecretForCreateStep(secretService,logger2){return newEncryptClientSecretStep(secretService,logger2,!0)}function newEncryptClientSecretForUpdateStep(secretService,logger2){return newEncryptClientSecretStep(secretService,logger2,!1)}function newEncryptClientSecretStep(secretService,logger2,isCreate){return{name:"EncryptClientSecret",async execute(ctx){let app=ctx.newState;if(app.spec===void 0)return;let clientSecret=app.spec.clientSecret;if(clientSecret!==""){if(clientSecret===REDACTED_MARKER3){preserveExistingSecret(ctx,app,isCreate,logger2);return}if(isCiphertextShaped(clientSecret))throw invalidArgumentError(CIPHERTEXT_SHAPED_SECRET_MESSAGE);if(!secretService.isEnabled()){logger2.warn("encryption disabled: client_secret will be stored in plaintext");return}try{app.spec.clientSecret=await secretService.encrypt(clientSecret,EncryptionScope.forOrganization(app.metadata?.org??""))}catch(error2){throw internalError(error2,"failed to encrypt client_secret")}}}}}function preserveExistingSecret(ctx,app,isCreate,logger2){if(isCreate)throw invalidArgumentError(MARKER_ON_CREATE_MESSAGE);let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing resource not loaded"),"cannot preserve client_secret: existing resource not loaded");let existingSecret=existing.spec?.clientSecret??"";if(existingSecret==="")throw invalidArgumentError(PRESERVE_NO_EXISTING_SECRET_MESSAGE);app.spec!==void 0&&(app.spec.clientSecret=existingSecret),logger2.debug("preserved existing encrypted client_secret",{oauthAppId:app.metadata?.id??""})}function newCheckNoReferencingMcpServersStep(store,logger2){return{name:"CheckNoReferencingMcpServers",async execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)throw internalError(new Error("existing OAuthApp missing from pipeline context"),"existing OAuthApp not loaded in delete pipeline");let resources;try{resources=await store.listResources(ApiResourceKind.mcp_server)}catch(error2){throw internalError(error2,"failed to list MCP servers for referential integrity check")}for(let data of resources){let mcp;try{mcp=fromBinary2(McpServerSchema,data)}catch(error2){logger2.warn("failed to unmarshal MCP server during referential integrity check, skipping",{error:error2 instanceof Error?error2.message:String(error2)});continue}let ref=mcp.spec?.auth?.oauthAppRef;if(ref===void 0)continue;let resolved;try{resolved=await resolveOAuthAppRef(store,ref,logger2)}catch(error2){throw internalError(error2,"failed to resolve oauth_app_ref during referential integrity check")}if(resolved!==void 0&&(resolved.metadata?.id??"")===(existing.metadata?.id??""))throw failedPreconditionError(deleteBlockedByMcpServerMessage(existing.metadata?.org??"",existing.metadata?.slug??"",mcp.metadata?.name??""))}}}}function registerOAuthAppServices(router,deps){router.service(OAuthAppCommandController,{apply:(app,ctx)=>apply9(deps,app,ctx),create:(app,ctx)=>createOAuthApp(deps,app,ctx),update:(app,ctx)=>update12(deps,app,ctx),delete:(input,ctx)=>deleteOAuthApp(deps,input,ctx)}),router.service(OAuthAppQueryController,{get:(id,ctx)=>get16(deps,id,ctx),getByReference:(ref,ctx)=>getByReference9(deps,ref,ctx),listByOrg:(req,ctx)=>listByOrg2(deps,req,ctx)})}function kindOf15(ctx){return ctx.values.get(apiResourceKindKey)}async function createOAuthApp(deps,app,ctx){let reqCtx=new RequestContext(OAuthAppSchema,app,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-create",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newEncryptClientSecretForCreateStep(deps.secretService,deps.logger)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx);let result=reqCtx.newState;return redactOAuthApp(result),result}async function update12(deps,app,ctx){let reqCtx=new RequestContext(OAuthAppSchema,app,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-update",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newEncryptClientSecretForUpdateStep(deps.secretService,deps.logger)).addStep(newPersistStep(deps.store)).build().execute(reqCtx);let result=reqCtx.newState;return redactOAuthApp(result),result}async function apply9(deps,app,ctx){let reqCtx=new RequestContext(OAuthAppSchema,app,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-apply",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createOAuthApp(deps,app,ctx):update12(deps,withResolvedApplyId(OAuthAppSchema,app,reqCtx),ctx)}async function deleteOAuthApp(deps,input,ctx){let reqCtx=new RequestContext(OAuthAppCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf15(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("oauthapp-delete",deps.logger).addStep(newAuthorizeStep(OAuthAppCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,OAuthAppSchema)).addStep(newCheckNoReferencingMcpServersStep(deps.store,deps.logger)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDestroySecretBackingStateStep(deps.secretService,deps.logger,app2=>app2.spec===void 0?[]:[app2.spec.clientSecret])).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted OAuthApp not found in context"),"deleted OAuthApp not found in context");let app=deleted;return redactOAuthApp(app),app}async function get16(deps,id,ctx){let reqCtx=new RequestContext(OAuthAppQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-get",deps.logger).addStep(newAuthorizeStep(OAuthAppQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,OAuthAppSchema)).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactOAuthApp(app),app}async function getByReference9(deps,ref,ctx){let reqCtx=new RequestContext(OAuthAppQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-get-by-reference",deps.logger).addStep(newAuthorizeStep(OAuthAppQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,OAuthAppSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(OAuthAppQueryController.method.get))).build().execute(reqCtx);let app=reqCtx.get(TARGET_RESOURCE_KEY);return redactOAuthApp(app),app}var LIST_RESULT_KEY7="listResult";async function listByOrg2(deps,req,ctx){let reqCtx=new RequestContext(OAuthAppQueryController.method.listByOrg.input,req,callerIdentityOf(ctx),kindOf15(ctx));await newPipeline("oauthapp-list-by-org",deps.logger).addStep(newAuthorizeStep(OAuthAppQueryController.method.listByOrg,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListByOrgStep2(deps.store,deps.listReadScope,deps.logger)).build().execute(reqCtx);let list12=reqCtx.get(LIST_RESULT_KEY7);if(list12===void 0)throw internalError(new Error("list result missing from pipeline context"),"OAuthApp list not found in context");return list12}function newListByOrgStep2(store,listReadScope,logger2){return{name:"ListByOrg",async execute(ctx){let org=ctx.input.org,resources;try{resources=await store.listResources(ApiResourceKind.oauth_app)}catch(error2){throw internalError(error2,"failed to list OAuthApps")}let requested=[];for(let data of resources){let app;try{app=fromBinary2(OAuthAppSchema,data)}catch(error2){logger2.warn("failed to unmarshal OAuthApp, skipping",{error:error2 instanceof Error?error2.message:String(error2)});continue}(app.metadata?.org??"")===org&&requested.push(app)}let apps=await restrictListByReadScope(listReadScope,ctx.callerIdentity,ApiResourceKind.oauth_app,requested,"");for(let app of apps)redactOAuthApp(app);apps.sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)),logger2.info("listed OAuthApps by organization",{org,matchCount:apps.length}),ctx.set(LIST_RESULT_KEY7,create2(OAuthAppsSchema,{entries:apps}))}}}var file_ai_stigmer_iam_platformclient_v1_io=fileDesc("CilhaS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS9pby5wcm90bxIgYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEiLAoQUGxhdGZvcm1DbGllbnRJZBIYCgV2YWx1ZRgBIAEoCUIJukgGcgQQARhAIlQKD1BsYXRmb3JtQ2xpZW50cxJBCgdlbnRyaWVzGAEgAygLMjAuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnQiNQodTGlzdFBsYXRmb3JtQ2xpZW50c0J5T3JnSW5wdXQSFAoDb3JnGAEgASgJQge6SARyAhABIoABChxQbGF0Zm9ybUNsaWVudENyZWF0ZVJlc3BvbnNlEkkKD3BsYXRmb3JtX2NsaWVudBgBIAEoCzIwLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50EhUKDWNsaWVudF9zZWNyZXQYAiABKAliBnByb3RvMw",[file_ai_stigmer_iam_platformclient_v1_api,file_buf_validate_validate]);var PlatformClientsSchema=messageDesc2(file_ai_stigmer_iam_platformclient_v1_io,1);var PlatformClientCreateResponseSchema=messageDesc2(file_ai_stigmer_iam_platformclient_v1_io,3);var file_ai_stigmer_iam_platformclient_v1_command=fileDesc("Ci5haS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS9jb21tYW5kLnByb3RvEiBhaS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MTKgBgofUGxhdGZvcm1DbGllbnRDb21tYW5kQ29udHJvbGxlchLPAQoGY3JlYXRlEjAuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnQaPi5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5QbGF0Zm9ybUNsaWVudENyZWF0ZVJlc3BvbnNlIlPCuBhPCBgQHiIMbWV0YWRhdGEub3JnKjt1bmF1dGhvcml6ZWQgdG8gY3JlYXRlIHBsYXRmb3JtIGNsaWVudCBpbiB0aGlzIG9yZ2FuaXphdGlvbhKrAQoGdXBkYXRlEjAuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnQaMC5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5QbGF0Zm9ybUNsaWVudCI9wrgYOQgCEBciC21ldGFkYXRhLmlkKiZ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHBsYXRmb3JtIGNsaWVudBKxAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaMC5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5QbGF0Zm9ybUNsaWVudCI9wrgYOQgDEBciC3Jlc291cmNlX2lkKiZ1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIHBsYXRmb3JtIGNsaWVudBLCAQoMcm90YXRlU2VjcmV0EjIuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuUGxhdGZvcm1DbGllbnRJZBo+LmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50Q3JlYXRlUmVzcG9uc2UiPsK4GDoIAhAXIgV2YWx1ZSotdW5hdXRob3JpemVkIHRvIHJvdGF0ZSBwbGF0Zm9ybSBjbGllbnQgc2VjcmV0GgSg/ysXYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_platformclient_v1_api,file_ai_stigmer_iam_platformclient_v1_io]),PlatformClientCommandController=serviceDesc(file_ai_stigmer_iam_platformclient_v1_command,0);var file_ai_stigmer_iam_platformclient_v1_query=fileDesc("CixhaS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS9xdWVyeS5wcm90bxIgYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEykgQKHVBsYXRmb3JtQ2xpZW50UXVlcnlDb250cm9sbGVyEp0BCgNnZXQSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBowLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50IjXCuBgxCAEQFyIFdmFsdWUqJHVuYXV0aG9yaXplZCB0byB2aWV3IHBsYXRmb3JtIGNsaWVudBJ+Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRowLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50IgTQuBgBEsoBCglsaXN0QnlPcmcSPy5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5MaXN0UGxhdGZvcm1DbGllbnRzQnlPcmdJbnB1dBoxLmFpLnN0aWdtZXIuaWFtLnBsYXRmb3JtY2xpZW50LnYxLlBsYXRmb3JtQ2xpZW50cyJJwrgYRQgBEB4iA29yZyo6dW5hdXRob3JpemVkIHRvIGxpc3QgcGxhdGZvcm0gY2xpZW50cyBpbiB0aGlzIG9yZ2FuaXphdGlvbhoEoP8rF2IGcHJvdG8z",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_iam_platformclient_v1_api,file_ai_stigmer_iam_platformclient_v1_io]),PlatformClientQueryController=serviceDesc(file_ai_stigmer_iam_platformclient_v1_query,0);var import_node_crypto21=require("node:crypto"),CLIENT_ID_PREFIX="stgm_cid_",CLIENT_SECRET_PREFIX="stgm_cs_",CLIENT_ID_BYTES=32,CLIENT_SECRET_BYTES=48,SECRET_FINGERPRINT_LENGTH=6;function generateClientId(){return CLIENT_ID_PREFIX+(0,import_node_crypto21.randomBytes)(CLIENT_ID_BYTES).toString("base64url")}function generateClientSecret(){return CLIENT_SECRET_PREFIX+(0,import_node_crypto21.randomBytes)(CLIENT_SECRET_BYTES).toString("base64url")}function hashClientSecret(secret){return(0,import_node_crypto21.createHash)("sha256").update(secret,"utf8").digest("base64url")}function secretFingerprint(secret){return secret.length<=SECRET_FINGERPRINT_LENGTH?secret:secret.slice(-SECRET_FINGERPRINT_LENGTH)}function secretMatchesHash(secret,storedHash){if(storedHash==="")return!1;let presented=Buffer.from(hashClientSecret(secret),"utf8"),stored=Buffer.from(storedHash,"utf8");return presented.length===stored.length&&(0,import_node_crypto21.timingSafeEqual)(presented,stored)}var DuplicatePlatformClientError=class extends Error{constructor(message6,options){super(message6,options),this.name="DuplicatePlatformClientError"}};var CLIENT_SECRET_PLAINTEXT_KEY="platformClientSecretPlaintext";function redactPlatformClient(client){return client.spec!==void 0&&(client.spec.clientSecretHash=""),client}function parkedClientSecret(ctx){let secret=ctx.get(CLIENT_SECRET_PLAINTEXT_KEY);if(typeof secret!="string"||secret==="")throw internalError(new Error("no client secret parked \u2014 a credential step must run first"),"platform client credentials");return secret}function newRefuseReservedSlugStep(){return{name:"RefuseReservedSlug",execute(ctx){let slug=metadataOf(ctx.newState)?.slug??"";if(RESERVED_PLATFORM_CLIENT_SLUGS.has(slug))throw invalidArgumentError(reservedSlugMessage(slug))}}}function newCheckDuplicateStep3(clients){return{name:"CheckDuplicate",async execute(ctx){let metadata=requireMetadata2(ctx,"duplicate check"),existing=await clients.findByOrgAndSlug(metadata.org,metadata.slug);if(existing!==void 0)throw alreadyExistsError(PLATFORM_CLIENT_KIND_NAME,`slug '${metadata.slug}' in org '${metadata.org}' (id: ${existing.metadata?.id??""})`)}}}function newGenerateClientCredentialsStep(){return{name:"GenerateClientCredentials",execute(ctx){let spec=specOf3(ctx.newState),secret=generateClientSecret();spec.clientId=generateClientId(),spec.clientSecretHash=hashClientSecret(secret),spec.secretFingerprint=secretFingerprint(secret),ctx.set(CLIENT_SECRET_PLAINTEXT_KEY,secret)}}}function newPersistNewClientStep(clients){return{name:"Persist",async execute(ctx){try{await clients.save(ctx.newState)}catch(error2){if(error2 instanceof DuplicatePlatformClientError){let metadata=requireMetadata2(ctx,"persist");throw alreadyExistsError(PLATFORM_CLIENT_KIND_NAME,`slug '${metadata.slug}' in org '${metadata.org}'`)}throw internalError(error2,"failed to save platform client")}}}}function newLoadExistingClientStep(clients){return{name:"LoadExisting",async execute(ctx){let metadata=requireMetadata2(ctx,"load existing"),existing;if(metadata.id!==""){if(existing=await clients.findById(metadata.id),existing===void 0)throw notFoundError(PLATFORM_CLIENT_KIND_NAME,metadata.id)}else if(metadata.slug!==""){if(existing=await clients.findByOrgAndSlug(metadata.org,metadata.slug),existing===void 0)throw notFoundError(PLATFORM_CLIENT_KIND_NAME,metadata.slug);metadata.id=existing.metadata?.id??""}else throw invalidArgumentError("resource id or slug is required for update");ctx.set(EXISTING_RESOURCE_KEY,existing)}}}function newPreserveClientCredentialsStep(){return{name:"PreserveClientCredentials",execute(ctx){let existing=storedClientOf(ctx,EXISTING_RESOURCE_KEY),spec=specOf3(ctx.newState);spec.clientId=existing.spec?.clientId??"",spec.clientSecretHash=existing.spec?.clientSecretHash??"",spec.secretFingerprint=existing.spec?.secretFingerprint??""}}}function newPersistUpdatedClientStep(clients){return{name:"Persist",async execute(ctx){try{await clients.update(ctx.newState)}catch(error2){throw internalError(error2,"failed to save platform client")}}}}function newRefuseSystemManagedStep(verb,key){return{name:"RefuseSystemManaged",execute(ctx){if(storedClientOf(ctx,key).metadata?.labels[SYSTEM_MANAGED_LABEL]===RESERVED_LABEL_TRUE)throw failedPreconditionError(systemManagedMessage(verb))}}}function newLoadTargetClientStep(clients){return{name:"LoadTarget",async execute(ctx){let id=idValueOf(ctx.input);if(id==="")throw invalidArgumentError("resource id is required");ctx.set(TARGET_RESOURCE_KEY,await readClient(clients,id))}}}function newLoadClientByReferenceStep(clients){return{name:"LoadByReference",async execute(ctx){let ref=ctx.input;if(ref.slug==="")throw invalidArgumentError("slug is required in reference");if(ref.kind!==ApiResourceKind.api_resource_kind_unknown&&ref.kind!==ApiResourceKind.platform_client)throw invalidArgumentError(`kind mismatch: expected platform_client, got ${ApiResourceKind[ref.kind]??String(ref.kind)}`);requireOrgForReference(ApiResourceKind.platform_client,ref.org);let client=await clients.findByOrgAndSlug(ref.org,ref.slug);if(client===void 0)throw new ConnectError(referenceNotFoundMessage(ref.org,ref.slug),Code.NotFound);ctx.set(TARGET_RESOURCE_KEY,client)}}}function newRotateClientCredentialsStep(){return{name:"RotateClientCredentials",execute(ctx){let client=storedClientOf(ctx,TARGET_RESOURCE_KEY),spec=specOf3(client),secret=generateClientSecret();spec.clientSecretHash=hashClientSecret(secret),spec.secretFingerprint=secretFingerprint(secret),updateAuditFields(PlatformClientSchema,client,client,ctx.callerIdentity),ctx.set(CLIENT_SECRET_PLAINTEXT_KEY,secret)}}}function newPersistTargetClientStep(clients){return{name:"Persist",async execute(ctx){try{await clients.update(storedClientOf(ctx,TARGET_RESOURCE_KEY))}catch(error2){throw internalError(error2,"failed to save platform client")}}}}function newLoadExistingClientForDeleteStep(clients){return{name:"LoadExistingForDelete",async execute(ctx){ctx.set(EXISTING_RESOURCE_KEY,await readClient(clients,requireResourceId3(ctx)))}}}function newDeleteClientStep(clients){return{name:"DeleteResource",async execute(ctx){try{await clients.deleteById(requireResourceId3(ctx))}catch(error2){throw internalError(error2,"failed to delete platform client")}}}}async function readClient(clients,id){let client=await clients.findById(id);if(client===void 0)throw notFoundError(PLATFORM_CLIENT_KIND_NAME,id);return client}function storedClientOf(ctx,key){let client=ctx.get(key);if(client===void 0)throw internalError(new Error(`no platform client under '${key}' \u2014 its load step must run first`),"platform client chain ordering");return client}function requireMetadata2(ctx,operation2){let metadata=metadataOf(ctx.newState);if(metadata===void 0)throw internalError(new Error("platform client metadata is nil"),operation2);return metadata}function specOf3(client){return client.spec===void 0&&(client.spec=create2(PlatformClientSpecSchema)),client.spec}function requireResourceId3(ctx){let id=ctx.get(RESOURCE_ID_KEY);if(typeof id!="string"||id==="")throw internalError(new Error("resource id not found in context (the delete handler sets it)"),"platform client delete ordering");return id}function registerPlatformClientServices(router,deps){router.service(PlatformClientCommandController,{create:(client,ctx)=>createClient2(deps,client,ctx),update:(client,ctx)=>updateClient(deps,client,ctx),delete:(input,ctx)=>deleteClient(deps,input,ctx),rotateSecret:(id,ctx)=>rotateSecret(deps,id,ctx)}),router.service(PlatformClientQueryController,{get:(id,ctx)=>get17(deps,id,ctx),getByReference:(ref,ctx)=>getByReference10(deps,ref,ctx),listByOrg:(input,ctx)=>listByOrg3(deps,input,ctx)})}function kindOf16(ctx){return ctx.values.get(apiResourceKindKey)}async function createClient2(deps,client,ctx){let reqCtx=new RequestContext(PlatformClientSchema,client,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-create",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newRefuseReservedSlugStep()).addStep(newCheckDuplicateStep3(deps.clients)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newGenerateClientCredentialsStep()).addStep(newPersistNewClientStep(deps.clients)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),create2(PlatformClientCreateResponseSchema,{platformClient:redactPlatformClient(reqCtx.newState),clientSecret:parkedClientSecret(reqCtx)})}async function updateClient(deps,client,ctx){let reqCtx=new RequestContext(PlatformClientSchema,client,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-update",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingClientStep(deps.clients)).addStep(newRefuseSystemManagedStep("updated",EXISTING_RESOURCE_KEY)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPreserveClientCredentialsStep()).addStep(newPersistUpdatedClientStep(deps.clients)).build().execute(reqCtx),redactPlatformClient(reqCtx.newState)}async function deleteClient(deps,input,ctx){let reqCtx=new RequestContext(PlatformClientCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf16(ctx));return reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("platformclient-delete",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingClientForDeleteStep(deps.clients)).addStep(newRefuseSystemManagedStep("deleted",EXISTING_RESOURCE_KEY)).addStep(newDeleteClientStep(deps.clients)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).build().execute(reqCtx),redactPlatformClient(storedClientOf(reqCtx,EXISTING_RESOURCE_KEY))}async function rotateSecret(deps,id,ctx){let reqCtx=new RequestContext(PlatformClientCommandController.method.rotateSecret.input,id,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-rotate-secret",deps.logger).addStep(newAuthorizeStep(PlatformClientCommandController.method.rotateSecret,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetClientStep(deps.clients)).addStep(newRefuseSystemManagedStep("rotated",TARGET_RESOURCE_KEY)).addStep(newRotateClientCredentialsStep()).addStep(newPersistTargetClientStep(deps.clients)).build().execute(reqCtx),create2(PlatformClientCreateResponseSchema,{platformClient:redactPlatformClient(storedClientOf(reqCtx,TARGET_RESOURCE_KEY)),clientSecret:parkedClientSecret(reqCtx)})}async function get17(deps,id,ctx){let reqCtx=new RequestContext(PlatformClientQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-get",deps.logger).addStep(newAuthorizeStep(PlatformClientQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetClientStep(deps.clients)).build().execute(reqCtx),redactPlatformClient(storedClientOf(reqCtx,TARGET_RESOURCE_KEY))}async function getByReference10(deps,ref,ctx){let reqCtx=new RequestContext(PlatformClientQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf16(ctx));return await newPipeline("platformclient-get-by-reference",deps.logger).addStep(newAuthorizeStep(PlatformClientQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadClientByReferenceStep(deps.clients)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(PlatformClientQueryController.method.get))).build().execute(reqCtx),redactPlatformClient(storedClientOf(reqCtx,TARGET_RESOURCE_KEY))}async function listByOrg3(deps,input,ctx){let caller=callerIdentityOf(ctx),reqCtx=new RequestContext(PlatformClientQueryController.method.listByOrg.input,input,caller,kindOf16(ctx));await newPipeline("platformclient-list-by-org",deps.logger).addStep(newAuthorizeStep(PlatformClientQueryController.method.listByOrg,deps.authorizer)).addStep(newValidateProtoStep()).build().execute(reqCtx);let candidates;try{candidates=await deps.clients.findByOrg(input.org)}catch(error2){throw internalError(error2,"failed to list platform clients")}let entries=[...await restrictListByReadScope(deps.listReadScope,caller,ApiResourceKind.platform_client,candidates,input.org)].sort((a5,b7)=>compareCreatedAtDesc(a5.status?.audit?.specAudit?.createdAt,b7.status?.audit?.specAudit?.createdAt)).map(redactPlatformClient);return create2(PlatformClientsSchema,{entries})}var OPAQUE_ORIGIN="null";function newPlatformClientOriginGuard(deps){return{name:"platform-client-origin",async guard(caller,method,headers2){let origin=headers2.get("origin")??"";if(origin.trim()==="")return;let platformClientId=mintingClientOf(caller);if(platformClientId===void 0)return;let procedure=`/${method.parent.typeName}/${method.name}`,client=await deps.clients.findById(platformClientId);if(client===void 0)throw new ConnectError(DELETED_CLIENT_MESSAGE,Code.Unauthenticated);if(!originAllowed(origin,client.spec?.allowedOrigins??[]))throw deps.logger.warn("origin refusal: origin not in allowed_origins",{procedure,platformClientId,origin}),new ConnectError(originRefusalMessage(origin),Code.PermissionDenied)}}}function mintingClientOf(caller){let payload=decodeVerifiedPlatformTokenPayload(caller.rawToken);if(!(payload===void 0||stringClaim(payload,TOKEN_TYPE_CLAIM)!==void 0))return stringClaim(payload,USER_TOKEN_CLAIMS.platformClientId)}function originAllowed(origin,allowed){if(allowed.length===0)return!0;if(origin===OPAQUE_ORIGIN)return!1;let presented=origin.toLowerCase();return allowed.some(entry=>entry.toLowerCase()===presented)}var KIND5=ApiResourceKind.platform_client;function newResourcePlatformClientStore(store){async function readById(id){try{return await store.getResource(KIND5,id,PlatformClientSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}async function readByClientId(clientId){if(clientId!=="")try{return await store.findByField(KIND5,"spec.clientId",clientId,PlatformClientSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}}async function listOrg(org){let clients=[];for(let data of await store.listResources(KIND5)){let client;try{client=fromBinary2(PlatformClientSchema,data)}catch{continue}(client.metadata?.org??"")===org&&clients.push(client)}return clients}async function readByOrgAndSlug(org,slug){if(!(org===""||slug===""))return(await listOrg(org)).find(client=>(client.metadata?.slug??"")===slug)}return{async save(client){let id=client.metadata?.id??"",org=client.metadata?.org??"",slug=client.metadata?.slug??"";if(await readById(id)!==void 0)throw new DuplicatePlatformClientError(`platform client '${id}' already exists`);if(await readByOrgAndSlug(org,slug)!==void 0)throw new DuplicatePlatformClientError(`platform client '${org}/${slug}' already exists`);if(await readByClientId(client.spec?.clientId??"")!==void 0)throw new DuplicatePlatformClientError("a platform client already holds this client_id");await store.saveResource(KIND5,id,PlatformClientSchema,client)},async update(client){let id=client.metadata?.id??"";await readById(id)!==void 0&&await store.saveResource(KIND5,id,PlatformClientSchema,client)},async modifyById(id,modify){try{return await store.updateResource(KIND5,id,PlatformClientSchema,modify)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw error2}},async deleteById(id){await store.deleteResource(KIND5,id)},findById:readById,findByClientId:readByClientId,findByOrgAndSlug:readByOrgAndSlug,findByOrg:listOrg}}var file_ai_stigmer_iam_platformclient_v1_token=fileDesc("CixhaS9zdGlnbWVyL2lhbS9wbGF0Zm9ybWNsaWVudC92MS90b2tlbi5wcm90bxIgYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEiugEKFE1pbnRVc2VyVG9rZW5SZXF1ZXN0EhoKCWNsaWVudF9pZBgBIAEoCUIHukgEcgIQARIeCg1jbGllbnRfc2VjcmV0GAIgASgJQge6SARyAhABEhsKB3VzZXJfaWQYAyABKAlCCrpIB3IFEAEYgAISHAoKdXNlcl9lbWFpbBgEIAEoCUIIukgFcgMYwAISGwoJdXNlcl9uYW1lGAUgASgJQgi6SAVyAxiAAhIOCgZvcmdfaWQYBiABKAkiVQoVTWludFVzZXJUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgp0b2tlbl90eXBlGAIgASgJEhIKCmV4cGlyZXNfaW4YAyABKAUiyQMKFU1pbnRHdWVzdFRva2VuUmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAESFQoEc2x1ZxgCIAEoCUIHukgEcgIQARIXCg9ndWVzdF9jb29raWVfaWQYAyABKAkSywIKDGVtYmVkX29yaWdpbhgEIAEoCUK0ArpIsAK6AawCChNlbWJlZF9vcmlnaW4uZm9ybWF0EndlbWJlZF9vcmlnaW4gbXVzdCBiZSBlbXB0eSwgIm51bGwiLCBvciBhbiBleGFjdCB3ZWIgb3JpZ2luIGxpa2UgaHR0cHM6Ly9leGFtcGxlLmNvbSAobm8gcGF0aCwgcXVlcnksIG9yIHRyYWlsaW5nIHNsYXNoKRqbAXRoaXMgPT0gJycgfHwgdGhpcyA9PSAnbnVsbCcgfHwgdGhpcy5tYXRjaGVzKCdeaHR0cHM/Oi8vW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKT8oXFwuW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKT8pKig6WzAtOV17MSw1fSk/JCcpEhwKCmxpbmtfdG9rZW4YBSABKAlCCLpIBXIDGIABIm8KFk1pbnRHdWVzdFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnRva2VuX3R5cGUYAiABKAkSEgoKZXhwaXJlc19pbhgDIAEoBRIXCg9ndWVzdF9jb29raWVfaWQYBCABKAkytAIKHVBsYXRmb3JtQ2xpZW50VG9rZW5Db250cm9sbGVyEoYBCg1taW50VXNlclRva2VuEjYuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuTWludFVzZXJUb2tlblJlcXVlc3QaNy5haS5zdGlnbWVyLmlhbS5wbGF0Zm9ybWNsaWVudC52MS5NaW50VXNlclRva2VuUmVzcG9uc2UiBMi4GAESiQEKDm1pbnRHdWVzdFRva2VuEjcuYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuTWludEd1ZXN0VG9rZW5SZXF1ZXN0GjguYWkuc3RpZ21lci5pYW0ucGxhdGZvcm1jbGllbnQudjEuTWludEd1ZXN0VG9rZW5SZXNwb25zZSIEyLgYAWIGcHJvdG8z",[file_ai_stigmer_commons_rpc_method_options,file_buf_validate_validate]);var MintUserTokenResponseSchema=messageDesc2(file_ai_stigmer_iam_platformclient_v1_token,1);var PlatformClientTokenController=serviceDesc(file_ai_stigmer_iam_platformclient_v1_token,0);var import_node_crypto22=require("node:crypto");var PLATFORM_TOKEN_KEY_ENV_VAR="STIGMER_PLATFORM_TOKEN_KEY",PLATFORM_TOKEN_KEY_FILE_NAME="platform-token.key",DEFAULT_PLATFORM_TOKEN_TTL_SECONDS=900,MIN_RSA_MODULUS_BITS=2048;function canSign(ring){return ring.signer!==void 0}function resolvePlatformTokenKeys(input){if(input.requireAuthentication){if(input.supplied!==void 0)return input.supplied;if(input.edition!==ServerEdition.oss)throw new Error(`the ${ServerEdition[input.edition]} edition requires authentication but registers no platform-token key ring \u2014 register drivers.platformTokenKeys; only open source generates its own key`);return openSourcePlatformTokenKeyRing(input.options)}}function openSourcePlatformTokenKeyRing(options={}){let privateKey=getOrCreateKey(RSA_PRIVATE_KEY,PLATFORM_TOKEN_KEY_ENV_VAR,PLATFORM_TOKEN_KEY_FILE_NAME,options);return{signer:{key:privateKey,kid:kidOf(privateKey)},verificationKeys:[(0,import_node_crypto22.createPublicKey)(privateKey)],audience:"",ttlSeconds:DEFAULT_PLATFORM_TOKEN_TTL_SECONDS}}var RSA_PRIVATE_KEY={fromEnv(envVar,decoded){let key=parseKey2(()=>(0,import_node_crypto22.createPrivateKey)(decoded.toString("utf8")),envVar);return requireRsa(key,envVar)},fromFile(content){try{let key=(0,import_node_crypto22.createPrivateKey)(content.toString("utf8"));return isUsableRsa(key)?key:void 0}catch{return}},generate(){return(0,import_node_crypto22.generateKeyPairSync)("rsa",{modulusLength:MIN_RSA_MODULUS_BITS}).privateKey},toFile(key){return Buffer.from(key.export({format:"pem",type:"pkcs8"}))}};function kidOf(key){let publicKey=key.type==="private"?(0,import_node_crypto22.createPublicKey)(key):key;return(0,import_node_crypto22.createHash)("sha256").update(spkiOf(publicKey)).digest("base64url").slice(0,16)}function spkiOf(publicKey){return publicKey.export({format:"der",type:"spki"})}function parseKey2(parse5,what){try{return parse5()}catch(error2){throw new Error(`${what} is not a readable PEM key: ${error2 instanceof Error?error2.message:String(error2)}`)}}function requireRsa(key,what){if(!isUsableRsa(key))throw new Error(`${what} must be an RSA key of at least ${MIN_RSA_MODULUS_BITS} bits`);return key}function isUsableRsa(key){return key.asymmetricKeyType==="rsa"&&(key.asymmetricKeyDetails?.modulusLength??0)>=MIN_RSA_MODULUS_BITS}var SUBJECT_SEPARATOR="|",DEFAULT_AUTO_GRANT_ROLE=IamRole.viewer;async function mintUserToken(deps,request){let keys=deps.keys;if(keys===void 0)throw new ConnectError(MINTING_REQUIRES_AUTHENTICATION_MESSAGE,Code.FailedPrecondition);if(!canSign(keys))throw new ConnectError(MINTING_DISABLED_MESSAGE,Code.FailedPrecondition);let client=await authenticateClient(deps,request),owningOrg=client.metadata?.org??"";if(request.orgId!==""&&request.orgId!==owningOrg)throw new ConnectError(organizationMismatchMessage(owningOrg),Code.InvalidArgument);let user={externalUserId:request.userId,email:request.userEmail,name:request.userName},accountId=await resolveOrProvisionAccount(deps,client,owningOrg,user),now=deps.now(),signed=signPlatformToken(keys,{[USER_TOKEN_CLAIMS.subject]:accountId,[USER_TOKEN_CLAIMS.externalUserId]:user.externalUserId,[USER_TOKEN_CLAIMS.email]:user.email,[USER_TOKEN_CLAIMS.name]:user.name,[USER_TOKEN_CLAIMS.org]:owningOrg,[USER_TOKEN_CLAIMS.platformClientId]:client.metadata?.id??""},{now});return await recordClientUse(deps,client,now),create2(MintUserTokenResponseSchema,{accessToken:signed.token,tokenType:BEARER_TOKEN_TYPE,expiresIn:keys.ttlSeconds})}async function authenticateClient(deps,request){let client;try{client=await deps.clients.findByClientId(request.clientId)}catch(error2){throw internalError(error2,"failed to authenticate platform client")}if(client===void 0||!secretMatchesHash(request.clientSecret,client.spec?.clientSecretHash??""))throw new ConnectError(INVALID_CLIENT_CREDENTIALS_MESSAGE,Code.Unauthenticated);let spec=client.spec;if(spec?.neverExpires!==!0&&spec?.expiresAt!==void 0&&deps.now().getTime()>timestampDate(spec.expiresAt).getTime())throw new ConnectError(EXPIRED_CLIENT_SECRET_MESSAGE,Code.FailedPrecondition);return client}function recordClientUse(deps,client,now){let id=client.metadata?.id??"";return recordCredentialUse({credential:"platform client",id,lastUsedAt:client.status?.lastUsedAt,now,logger:deps.logger,write:stamp2=>deps.clients.modifyById(id,live=>{live.status??=create2(PlatformClientStatusSchema),stamp2(live.status)})})}async function resolveOrProvisionAccount(deps,client,org,user){let idpId=platformClientSubject(org,user.externalUserId),existing=await findAccount(deps,idpId);if(existing!==void 0)return platformClientAccountId(existing,user,org);let spec=client.spec;if(spec?.autoProvisionAccounts!==!0)throw new ConnectError(noAccountMessage(user.externalUserId,org),Code.FailedPrecondition);let input=accountInput(idpId,org,user),actor=serverActingFor(client.metadata?.id??"");spec.autoGrantOnOrg&&await grantAutoRole(deps,client,org,accountIdFor(idpId),actor);try{return(await deps.createAccount(input,actor)).metadata?.id??""}catch(error2){let winner=await resolveCreateRace(error2,()=>deps.accounts.findByIdpId(idpId));return platformClientAccountId(winner,user,org)}}async function findAccount(deps,idpId){try{return await deps.accounts.findByIdpId(idpId)}catch(error2){throw internalError(error2,"failed to resolve platform client user")}}function platformClientAccountId(account2,user,org){if(account2.spec?.provisioningMode!==IdentityAccountProvisioningMode.platform_client)throw new ConnectError(foreignAccountMessage(user.externalUserId,org),Code.FailedPrecondition);return account2.metadata?.id??""}function accountInput(idpId,org,user){let input={name:user.email!==""?user.email:user.externalUserId,spec:create2(IdentityAccountSpecSchema,{idpId,email:user.email,...splitName(user.name,user.email)}),provisioning:{mode:"platform_client",org}},result=validator().validate(IdentityAccountSchema,create2(IdentityAccountSchema,{apiVersion:"iam.stigmer.ai/v1",kind:"IdentityAccount",metadata:{name:input.name,org},spec:input.spec}));if(result.kind==="invalid")throw new ConnectError(result.error.message,Code.InvalidArgument);if(result.kind==="error")throw new ConnectError(`validation could not run: ${result.error.message}`,Code.Internal);return input}async function grantAutoRole(deps,client,org,accountId,actor){let configured=client.spec?.autoGrantRole??IamRole.iam_role_unspecified;if(configured===IamRole.owner)throw new ConnectError(OWNER_AUTO_GRANT_MESSAGE,Code.InvalidArgument);let role=configured===IamRole.iam_role_unspecified?DEFAULT_AUTO_GRANT_ROLE:configured;try{await deps.grantPath.grant(organizationRole(accountId,role,org),actor)}catch(error2){throw deps.logger.error("platform client auto-grant failed; nothing was provisioned",{accountId,platformClientId:client.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)}),new ConnectError(PROVISIONING_FAILED_MESSAGE,Code.Internal)}}function platformClientSubject(org,externalUserId){return requireSubjectPart("org",org),requireSubjectPart("externalUserId",externalUserId),`${PLATFORM_CLIENT_SUBJECT_PREFIX}${org}${SUBJECT_SEPARATOR}${externalUserId}`}function requireSubjectPart(part,value){if(value.trim()==="")throw new ConnectError(blankSubjectPartMessage(part),Code.InvalidArgument);if(value.includes(SUBJECT_SEPARATOR))throw new ConnectError(subjectSeparatorMessage(part,value),Code.InvalidArgument)}function splitName(name,email){if(name!==""){let space=name.indexOf(" ");return space>0?{firstName:name.slice(0,space),lastName:name.slice(space+1)}:{firstName:name,lastName:""}}let at2=email.indexOf("@");return{firstName:at2>=0?email.slice(0,at2):email,lastName:""}}function registerPlatformClientTokenService(router,deps){router.service(PlatformClientTokenController,{mintUserToken:request=>mintUserToken(deps.mint,request),mintGuestToken:(request,ctx)=>{if(deps.guestTokenMinting===void 0)throw new ConnectError(GUEST_MINT_UNIMPLEMENTED_MESSAGE,Code.Unimplemented);return deps.guestTokenMinting.mintGuestToken(request,ctx.requestHeader)}})}function newPlatformClientTokenVerifier(deps){return{name:"platform-client",async verify(token){let result=verifyPlatformToken(deps.keys,token,deps.now?.());switch(result.outcome){case"foreign":return null;case"refused":throw platformTokenRefusalError(result.refusal);case"verified":break;default:{let exhaustive=result;throw new Error(`unknown verification ${JSON.stringify(exhaustive)}`)}}let verified=result.token;if(verified.tokenType!==void 0)return null;let platformClientId=stringClaim(verified.payload,USER_TOKEN_CLAIMS.platformClientId);if(platformClientId===void 0)throw new ConnectError(TOKEN_NAMES_NO_CLIENT_MESSAGE,Code.Unauthenticated);if(await deps.clients.findById(platformClientId)===void 0)throw new ConnectError(DELETED_CLIENT_MESSAGE,Code.Unauthenticated);let email=stringClaim(verified.payload,USER_TOKEN_CLAIMS.email),displayName=stringClaim(verified.payload,USER_TOKEN_CLAIMS.name);return{identityId:verified.subject,callerClass:"user",issuer:PLATFORM_TOKEN_ISSUER,rawToken:token,...email!==void 0?{email}:{},...displayName!==void 0?{displayName}:{},platformClientId}}}}var file_ai_stigmer_tenancy_organization_v1_io=fileDesc("CithaS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL2lvLnByb3RvEiJhaS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxIlIKDU9yZ2FuaXphdGlvbnMSQQoHZW50cmllcxgBIAMoCzIwLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uImoKEE9yZ2FuaXphdGlvbkxpc3QSEwoLdG90YWxfcGFnZXMYASABKAUSQQoHZW50cmllcxgCIAMoCzIwLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uIioKDk9yZ2FuaXphdGlvbklkEhgKBXZhbHVlGAEgASgJQgm6SAZyBBABGEAimwEKGk9yZ2FuaXphdGlvbkV4dGVybmFsTG9va3VwElsKFWlkZW50aXR5X3Byb3ZpZGVyX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUIGukgDyAEBEiAKD2V4dGVybmFsX29yZ19pZBgCIAEoCUIHukgEcgIQAWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_tenancy_organization_v1_api,file_buf_validate_validate]),OrganizationsSchema=messageDesc2(file_ai_stigmer_tenancy_organization_v1_io,0),OrganizationListSchema=messageDesc2(file_ai_stigmer_tenancy_organization_v1_io,1);var file_ai_stigmer_tenancy_organization_v1_command=fileDesc("CjBhaS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL2NvbW1hbmQucHJvdG8SImFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEy2AQKHU9yZ2FuaXphdGlvbkNvbW1hbmRDb250cm9sbGVyEmsKBWFwcGx5EjAuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb24aMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbhJyCgZjcmVhdGUSMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbhowLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uIgTQuBgBEqgBCgZ1cGRhdGUSMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbhowLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uIjrCuBg2CAIQHiILbWV0YWRhdGEuaWQqI3VuYXV0aG9yaXplZCB0byB1cGRhdGUgb3JnYW5pemF0aW9uEqQBCgZkZWxldGUSMi5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbklkGjAuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb24iNMK4GDAIAxAeIgV2YWx1ZSojdW5hdXRob3JpemVkIHRvIGRlbGV0ZSBvcmdhbml6YXRpb24aBKD/Kx5iBnByb3RvMw",[file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_tenancy_organization_v1_api,file_ai_stigmer_tenancy_organization_v1_io]),OrganizationCommandController=serviceDesc(file_ai_stigmer_tenancy_organization_v1_command,0);var file_ai_stigmer_tenancy_organization_v1_query=fileDesc("Ci5haS9zdGlnbWVyL3RlbmFuY3kvb3JnYW5pemF0aW9uL3YxL3F1ZXJ5LnByb3RvEiJhaS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxMrkEChtPcmdhbml6YXRpb25RdWVyeUNvbnRyb2xsZXISnwEKA2dldBIyLmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uSWQaMC5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbiIywrgYLggBEB4iBXZhbHVlKiF1bmF1dGhvcml6ZWQgdG8gdmlldyBvcmdhbml6YXRpb24SewoEZmluZBI3LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5GaW5kQXBpUmVzb3VyY2VzUmVxdWVzdBo0LmFpLnN0aWdtZXIudGVuYW5jeS5vcmdhbml6YXRpb24udjEuT3JnYW5pemF0aW9uTGlzdCIE0LgYARJmChNmaW5kTXlPcmdhbml6YXRpb25zEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GjEuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb25zIgTQuBgBEowBChJnZXRCeUV4dGVybmFsT3JnSWQSPi5haS5zdGlnbWVyLnRlbmFuY3kub3JnYW5pemF0aW9uLnYxLk9yZ2FuaXphdGlvbkV4dGVybmFsTG9va3VwGjAuYWkuc3RpZ21lci50ZW5hbmN5Lm9yZ2FuaXphdGlvbi52MS5Pcmdhbml6YXRpb24iBNC4GAEaBKD/Kx5iBnByb3RvMw",[file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_tenancy_organization_v1_api,file_ai_stigmer_tenancy_organization_v1_io,file_google_protobuf_empty]),OrganizationQueryController=serviceDesc(file_ai_stigmer_tenancy_organization_v1_query,0);var organizationSearchExtractor={kind:ApiResourceKind.organization,schema:OrganizationSchema,getSearchSummary(resource){return resource.spec?.description??""},toSearchResult(resource,score){let org=resource;return buildSearchResult({kind:ApiResourceKind.organization,metadata:org.metadata,summary:org.spec?.description??"",score,createdAt:org.status?.audit?.specAudit?.createdAt,updatedAt:org.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let org=resource,metadata=org.metadata;if(metadata!==void 0)return{name:metadata.name,description:org.spec?.description??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(org.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};function newCheckOrgDuplicateStep(store){return{name:"CheckDuplicate",async execute(ctx){let metadata=metadataOf(ctx.newState);if(metadata===void 0)throw internalError(new Error("organization metadata is nil"),"duplicate check");if(metadata.slug==="")throw internalError(new Error("organization slug is empty"),"duplicate check");try{await store.getResource(ctx.apiResourceKind,metadata.slug,OrganizationSchema)}catch(error2){if(error2 instanceof ResourceNotFoundError)return;throw internalError(error2,"failed to check for duplicate organization")}throw alreadyExistsError("Organization",`slug '${metadata.slug}'`)}}}function newCopySlugToIdStep(){return{name:"CopySlugToId",execute(ctx){let metadata=metadataOf(ctx.newState);if(metadata===void 0)throw internalError(new Error("organization metadata is nil"),"copy slug to id");if(metadata.slug==="")throw internalError(new Error("organization slug is empty"),"copy slug to id");metadata.id=metadata.slug}}}function newRevokeOrganizationPoliciesStep(grantPath){return{name:"RevokeOrganizationPolicies",async execute(ctx){let id=ctx.get(EXISTING_RESOURCE_KEY)?.metadata?.id??"";if(id==="")throw internalError(new Error("organization delete reached RevokeOrganizationPolicies without its loaded row"),"failed to remove the organization's access policies");try{await grantPath.cleanupResource(create2(ApiResourceRefSchema,{kind:ApiResourceKind[ApiResourceKind.organization],id}))}catch(error2){throw internalError(error2,"failed to remove the organization's access policies")}}}}function registerOrganizationServices(router,deps){router.service(OrganizationCommandController,{apply:(org,ctx)=>apply10(deps,org,ctx),create:(org,ctx)=>createOrganization(deps,org,ctx),update:(org,ctx)=>update13(deps,org,ctx),delete:(orgId,ctx)=>deleteOrganization(deps,orgId,ctx)});let externalLookup=deps.organizationDirectory?.lookupExternalOrganization?.bind(deps.organizationDirectory);router.service(OrganizationQueryController,{get:(orgId,ctx)=>get18(deps,orgId,ctx),find:(req,ctx)=>find(deps,req,ctx),findMyOrganizations:(_,ctx)=>findMyOrganizations(deps,ctx),...externalLookup===void 0?{}:{getByExternalOrgId:(lookup3,ctx)=>getByExternalOrgId(deps,externalLookup,lookup3,ctx)}})}function kindOf17(ctx){return ctx.values.get(apiResourceKindKey)}async function createOrganization(deps,org,ctx){let reqCtx=new RequestContext(OrganizationSchema,org,callerIdentityOf(ctx),kindOf17(ctx)),builder2=newPipeline("organization-create",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.create,deps.authorizer)).addStep(newResolveSlugStep()).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newCheckOrgDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newCopySlugToIdStep());for(let step of stepsForSlot(deps.gateSteps,"org-create:pre-side-effect-gate"))builder2.addStep(step);builder2.addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger));for(let step of stepsForSlot(deps.gateSteps,"org-create:post-persist"))builder2.addStep(step);return await builder2.addStep(newIndexSearchStep(deps.store,organizationSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update13(deps,org,ctx){let reqCtx=new RequestContext(OrganizationSchema,org,callerIdentityOf(ctx),kindOf17(ctx));return await newPipeline("organization-update",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newPersistStep(deps.store)).addStep(newIndexSearchStep(deps.store,organizationSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function apply10(deps,org,ctx){let reqCtx=new RequestContext(OrganizationSchema,org,callerIdentityOf(ctx),kindOf17(ctx));await newPipeline("organization-apply",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createOrganization(deps,org,ctx):update13(deps,withResolvedApplyId(OrganizationSchema,org,reqCtx),ctx)}async function deleteOrganization(deps,orgId,ctx){let reqCtx=new RequestContext(OrganizationCommandController.method.delete.input,orgId,callerIdentityOf(ctx),kindOf17(ctx)),builder2=newPipeline("organization-delete",deps.logger).addStep(newAuthorizeStep(OrganizationCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,OrganizationSchema));for(let step of stepsForSlot(deps.gateSteps,"org-delete:pre-delete"))builder2.addStep(step);await builder2.addStep(newRevokeOrganizationPoliciesStep(deps.grantPath)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted organization not found in context"),"delete operation lost its loaded resource");return deleted}async function get18(deps,orgId,ctx){let reqCtx=new RequestContext(OrganizationQueryController.method.get.input,orgId,callerIdentityOf(ctx),kindOf17(ctx));return await newPipeline("organization-get",deps.logger).addStep(newAuthorizeStep(OrganizationQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,OrganizationSchema)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}var FIND_RESULT_KEY="findResult";async function find(deps,req,ctx){if(deps.organizationDirectory?.refusesEnumeration===!0)throw new ConnectError("ai.stigmer.tenancy.organization.v1.OrganizationQueryController.find is not implemented",Code.Unimplemented);let reqCtx=new RequestContext(OrganizationQueryController.method.find.input,req,callerIdentityOf(ctx),kindOf17(ctx));return await newPipeline("organization-find",deps.logger).addStep(newAuthorizeStep(OrganizationQueryController.method.find,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListAllOrganizationsStep(deps.store)).build().execute(reqCtx),reqCtx.get(FIND_RESULT_KEY)}function newListAllOrganizationsStep(store){return{name:"ListAllOrganizations",async execute(ctx){let data;try{data=await store.listResources(ctx.apiResourceKind)}catch(error2){throw internalError(error2,"failed to list organizations")}let orgs=[];for(let bytes of data)try{orgs.push(fromBinary2(OrganizationSchema,bytes))}catch{continue}let req=ctx.input,pageSize=req.pageSize,pageNumber=req.pageNumber;req.page!==void 0&&(req.page.size>0&&(pageSize=req.page.size),req.page.num>0&&(pageNumber=req.page.num)),pageSize<=0&&(pageSize=20),pageSize>100&&(pageSize=100),pageNumber<=0&&(pageNumber=1);let totalPages=Math.ceil(orgs.length/pageSize),start=(pageNumber-1)*pageSize,entries=start>=orgs.length?[]:orgs.slice(start,start+pageSize);ctx.set(FIND_RESULT_KEY,create2(OrganizationListSchema,{totalPages,entries}))}}}async function findMyOrganizations(deps,ctx){let directory=deps.organizationDirectory;if(directory!==void 0){let authorized=await directory.listMyOrganizationIds(callerIdentityOf(ctx));if(authorized!=="all"){let entries2=[];for(let id of authorized)try{entries2.push(await deps.store.getResource(ApiResourceKind.organization,id,OrganizationSchema))}catch(error2){if(error2 instanceof ResourceNotFoundError)continue;throw internalError(error2,"failed to list organizations")}return create2(OrganizationsSchema,{entries:entries2})}}let data;try{data=await deps.store.listResources(ApiResourceKind.organization)}catch(error2){throw internalError(error2,"failed to list organizations")}let entries=[];for(let bytes of data)try{entries.push(fromBinary2(OrganizationSchema,bytes))}catch{continue}return create2(OrganizationsSchema,{entries})}async function getByExternalOrgId(deps,lookup3,input,ctx){let reqCtx=new RequestContext(OrganizationQueryController.method.getByExternalOrgId.input,input,callerIdentityOf(ctx),kindOf17(ctx));if(await newPipeline("organization-get-by-external-org-id",deps.logger).addStep(newAuthorizeStep(OrganizationQueryController.method.getByExternalOrgId,deps.authorizer)).addStep(newValidateProtoStep()).build().execute(reqCtx),input.externalOrgId==="")throw invalidArgumentError("external_org_id is required");let found=await lookup3({org:input.identityProviderRef?.org??"",slug:input.identityProviderRef?.slug??""},input.externalOrgId);if(found.kind==="no-identity-provider")throw notFoundError("Organization",input.externalOrgId);await authorizeResolvedResource(deps.authorizer,reqCtx.callerIdentity,{permission:IamPermission.can_view,resourceKind:ApiResourceKind.identity_provider,resourceId:found.identityProviderId},EXTERNAL_LOOKUP_DENIED_MESSAGE);let orgId=found.organizationId;if(orgId===void 0)throw notFoundError("Organization",input.externalOrgId);try{return await deps.store.getResource(ApiResourceKind.organization,orgId,OrganizationSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("Organization",input.externalOrgId):internalError(error2,"failed to load organization")}}var EXTERNAL_LOOKUP_DENIED_MESSAGE="unauthorized to view identity provider";var file_ai_stigmer_agentic_mcpserver_v1_io=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2lvLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxIiQKC01jcFNlcnZlcklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiggIKDENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESUgoLcnVudGltZV9lbnYYAiADKAsyPS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dC5SdW50aW1lRW52RW50cnkSFAoDb3JnGAMgASgJQge6SARyAhABGmkKD1J1bnRpbWVFbnZFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25WYWx1ZToCOAEiUAoZSW5pdGlhdGVPQXV0aENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIm0KGkluaXRpYXRlT0F1dGhDb25uZWN0T3V0cHV0EhkKEWF1dGhvcml6YXRpb25fdXJsGAEgASgJEg0KBXN0YXRlGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1wcm92aWRlcl9uYW1lGAQgASgJIncKGUNvbXBsZXRlT0F1dGhDb25uZWN0SW5wdXQSHQoNbWNwX3NlcnZlcl9pZBgBIAEoCUIGukgDyAEBEiMKEmF1dGhvcml6YXRpb25fY29kZRgCIAEoCUIHukgEcgIQARIWCgVzdGF0ZRgDIAEoCUIHukgEcgIQASJkChpDb21wbGV0ZU9BdXRoQ29ubmVjdE91dHB1dBIRCgljb25uZWN0ZWQYASABKAgSFgoOdGFyZ2V0X2Vudl92YXIYAiABKAkSGwoTdG9rZW5fbGlmZXRpbWVfaGludBgDIAEoCSJNChhHZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEizwEKGUdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQSEQoJY29ubmVjdGVkGAEgASgIEh8KF2FjY2Vzc190b2tlbl9leHBpcmVzX2F0GAIgASgDEhYKDnRhcmdldF9lbnZfdmFyGAMgASgJEhMKC2F1dGhfbWV0aG9kGAQgASgJElEKEWNvbm5lY3Rpb25faGVhbHRoGAUgASgOMjYuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5PQXV0aENvbm5lY3Rpb25IZWFsdGgiSQoURGlzY29ubmVjdE9BdXRoSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEiLQoVRGlzY29ubmVjdE9BdXRoT3V0cHV0EhQKDGRpc2Nvbm5lY3RlZBgBIAEoCCKEAQoTU2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQARIaCgljbGllbnRfaWQYAyABKAlCB7pIBHICEAESHgoNY2xpZW50X3NlY3JldBgEIAEoCUIHukgEcgIQASIsChRTZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxvYXV0aF9hcHBfaWQYASABKAkiSAoTR2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQASJVChRHZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxoYXNfb3ZlcnJpZGUYASABKAgSFAoMb2F1dGhfYXBwX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCSJLChZEZWxldGVPcmdPQXV0aEFwcElucHV0EhsKC3Jlc291cmNlX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIioKF0RlbGV0ZU9yZ09BdXRoQXBwT3V0cHV0Eg8KB2RlbGV0ZWQYASABKAgq7QEKFU9BdXRoQ29ubmVjdGlvbkhlYWx0aBInCiNPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9VTlNQRUNJRklFRBAAEiMKH09BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX0hFQUxUSFkQARIpCiVPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9UT0tFTl9FWFBJUkVEEAISNQoxT0FVVEhfQ09OTkVDVElPTl9IRUFMVEhfVE9LRU5fRVhQSVJFRF9SRUZSRVNIQUJMRRADEiQKIE9BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX05PX0dSQU5UEARiBnByb3RvMw",[file_ai_stigmer_agentic_executioncontext_v1_spec,file_buf_validate_validate]);var InitiateOAuthConnectOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,3);var CompleteOAuthConnectOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,5);var GetOAuthGrantStatusOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,7);var DisconnectOAuthOutputSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_io,9);var OAuthConnectionHealth;(function(OAuthConnectionHealth2){OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_UNSPECIFIED=0]="OAUTH_CONNECTION_HEALTH_UNSPECIFIED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_HEALTHY=1]="OAUTH_CONNECTION_HEALTH_HEALTHY",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED=2]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE=3]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_NO_GRANT=4]="OAUTH_CONNECTION_HEALTH_NO_GRANT"})(OAuthConnectionHealth||(OAuthConnectionHealth={}));var file_ai_stigmer_agentic_mcpserver_v1_command=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2NvbW1hbmQucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEynREKGk1jcFNlcnZlckNvbW1hbmRDb250cm9sbGVyEl8KBWFwcGx5EiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchKwAQoGY3JlYXRlEiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciJOwrgYSggrEB4iDG1ldGFkYXRhLm9yZyo2dW5hdXRob3JpemVkIHRvIGNyZWF0ZSBtY3Agc2VydmVyIGluIHRoaXMgb3JnYW5pemF0aW9uEpoBCgZ1cGRhdGUSKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIjjCuBg0CAIQLCILbWV0YWRhdGEuaWQqIXVuYXV0aG9yaXplZCB0byB1cGRhdGUgbWNwIHNlcnZlchKmAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciI4wrgYNAgDECwiC3Jlc291cmNlX2lkKiF1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG1jcCBzZXJ2ZXISugEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiQ8K4GD8IAhAsIgtyZXNvdXJjZV9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBtY3Agc2VydmVyIHZpc2liaWxpdHkSpAEKB2Nvbm5lY3QSLS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dBoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIj7CuBg6CBYQLCINbWNwX3NlcnZlcl9pZColdW5hdXRob3JpemVkIHRvIGNvbm5lY3QgdG8gbWNwIHNlcnZlchKpAQoMc3RhcnRDb25uZWN0Ei0uYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db25uZWN0SW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciI+wrgYOggWECwiDW1jcF9zZXJ2ZXJfaWQqJXVuYXV0aG9yaXplZCB0byBjb25uZWN0IHRvIG1jcCBzZXJ2ZXIS3wEKFGluaXRpYXRlT0F1dGhDb25uZWN0EjouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Jbml0aWF0ZU9BdXRoQ29ubmVjdElucHV0GjsuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Jbml0aWF0ZU9BdXRoQ29ubmVjdE91dHB1dCJOwrgYSggWECwiDW1jcF9zZXJ2ZXJfaWQqNXVuYXV0aG9yaXplZCB0byBpbml0aWF0ZSBvYXV0aCBjb25uZWN0IGZvciBtY3Agc2VydmVyEt8BChRjb21wbGV0ZU9BdXRoQ29ubmVjdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuQ29tcGxldGVPQXV0aENvbm5lY3RJbnB1dBo7LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuQ29tcGxldGVPQXV0aENvbm5lY3RPdXRwdXQiTsK4GEoIFhAsIg1tY3Bfc2VydmVyX2lkKjV1bmF1dGhvcml6ZWQgdG8gY29tcGxldGUgb2F1dGggY29ubmVjdCBmb3IgbWNwIHNlcnZlchLIAQoPZGlzY29ubmVjdE9BdXRoEjUuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5EaXNjb25uZWN0T0F1dGhJbnB1dBo2LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGlzY29ubmVjdE9BdXRoT3V0cHV0IkbCuBhCCBYQLCILcmVzb3VyY2VfaWQqL3VuYXV0aG9yaXplZCB0byBkaXNjb25uZWN0IG9hdXRoIGZvciBtY3Agc2VydmVyErgBCg5zZXRPcmdPQXV0aEFwcBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU2V0T3JnT0F1dGhBcHBJbnB1dBo1LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU2V0T3JnT0F1dGhBcHBPdXRwdXQiOcK4GDUIFxAeIgNvcmcqKnVuYXV0aG9yaXplZCB0byBzZXQgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRLEAQoRZGVsZXRlT3JnT0F1dGhBcHASNy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRlbGV0ZU9yZ09BdXRoQXBwSW5wdXQaOC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRlbGV0ZU9yZ09BdXRoQXBwT3V0cHV0IjzCuBg4CBcQHiIDb3JnKi11bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG9yZyBvYXV0aCBhcHAgb3ZlcnJpZGUaBKD/KyxiBnByb3RvMw",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerCommandController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_command,0);var file_ai_stigmer_agentic_mcpserver_v1_query=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3F1ZXJ5LnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxMssFChhNY3BTZXJ2ZXJRdWVyeUNvbnRyb2xsZXISkgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiMMK4GCwIARAsIgV2YWx1ZSofdW5hdXRob3JpemVkIHRvIHZpZXcgbWNwIHNlcnZlchJ4Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIgTQuBgBEtUBChNnZXRPQXV0aEdyYW50U3RhdHVzEjkuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5HZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQiR8K4GEMIARAsIgtyZXNvdXJjZV9pZCowdW5hdXRob3JpemVkIHRvIHZpZXcgb2F1dGggc3RhdHVzIGZvciBtY3Agc2VydmVyEsEBCg5nZXRPcmdPQXV0aEFwcBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBJbnB1dBo1LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBPdXRwdXQiQsK4GD4IARAsIgtyZXNvdXJjZV9pZCordW5hdXRob3JpemVkIHRvIHZpZXcgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRoEoP8rLGIGcHJvdG8z",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerQueryController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_query,0);async function completeOAuthConnect(deps,input,identity2){let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");let stateParam=input.state;if(stateParam==="")throw invalidArgumentError("state is required");let code=input.authorizationCode;if(code==="")throw invalidArgumentError("authorization_code is required");let pendingState;try{pendingState=await deps.pendingOAuthStates.getAndDelete(stateParam)}catch(error2){throw internalError(error2,"failed to load pending OAuth state")}if(pendingState===void 0)throw failedPreconditionError("no pending OAuth state found for the given state parameter (expired or already used)");if(pendingState.mcpServerId!==mcpServerId)throw failedPreconditionError("state parameter does not match the requested mcp_server_id");await authorizeDirect(McpServerCommandController.method.completeOAuthConnect,deps.authorizer,identity2,input,{resourceId:pendingState.mcpServerId});try{pendingState=await unsealPendingOAuthState(deps.secretService,pendingState)}catch(error2){throw deps.logger.error("Failed to decrypt pending OAuth state secrets",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to decrypt OAuth handshake secrets \u2014 please retry the connect flow")}let tokenResponse;try{tokenResponse=await exchangeCode(pendingState.tokenEndpoint,code,pendingState.redirectUri,pendingState.codeVerifier,pendingState.clientId,pendingState.clientSecret,pendingState.tokenAuthMethod,deps.outboundFetch)}catch(error2){throw unavailableError(`token exchange failed: ${error2 instanceof Error?error2.message:String(error2)}`)}let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("mcp_server",mcpServerId):internalError(error2,"failed to load mcp server \u2014 please retry the connect flow")}let org=pendingState.org;org===""&&(org=mcpServer.metadata?.org??"");let managedEnvId=await resolveOrCreateManagedEnvironment(deps,pendingState.identityAccountId,mcpServerId,org,mcpServer.metadata?.name??"",identity2),tokenVars={[pendingState.targetEnvVar]:create2(EnvironmentValueSchema,{value:tokenResponse.accessToken,isSecret:!0})},refreshTokenEnvVar=`${pendingState.targetEnvVar}_REFRESH_TOKEN`;tokenResponse.refreshToken!==""&&(tokenVars[refreshTokenEnvVar]=create2(EnvironmentValueSchema,{value:tokenResponse.refreshToken,isSecret:!0}));try{await deps.managedEnv.updateSecrets(managedEnvId,tokenVars)}catch(error2){throw internalError(error2,"failed to store OAuth tokens in managed environment")}let expiresAt=0;tokenResponse.expiresIn>0&&(expiresAt=Math.floor(Date.now()/1e3)+tokenResponse.expiresIn);try{await deps.oauthGrants.upsert({identityAccountId:pendingState.identityAccountId,resourceId:mcpServerId,resourceKind:"mcp_server",orgId:org,accessTokenExpiresAt:expiresAt,clientId:pendingState.clientId,authMethod:pendingState.authMethod,tokenEndpoint:pendingState.tokenEndpoint,accessTokenEnvVar:pendingState.targetEnvVar,refreshTokenEnvVar,environmentId:managedEnvId,createdAt:0,updatedAt:0})}catch(error2){throw internalError(error2,"failed to create OAuth grant record")}let auth=mcpServer.spec?.auth;return deps.logger.info("OAuth Connect completed: tokens stored in managed environment",{mcp_server_id:mcpServerId,auth_method:pendingState.authMethod,target_env_var:pendingState.targetEnvVar,managed_env_id:managedEnvId,expires_at:expiresAt,has_refresh_token:tokenResponse.refreshToken!==""}),create2(CompleteOAuthConnectOutputSchema,{connected:!0,targetEnvVar:pendingState.targetEnvVar,tokenLifetimeHint:auth?.tokenLifetimeHint??""})}async function unsealPendingOAuthState(secretService,state2){let verifier;try{verifier=await secretService.decrypt(state2.codeVerifier)}catch(error2){throw new Error(`failed to decrypt code_verifier: ${error2 instanceof Error?error2.message:String(error2)}`)}let secret;try{secret=await secretService.decrypt(state2.clientSecret)}catch(error2){throw new Error(`failed to decrypt client_secret: ${error2 instanceof Error?error2.message:String(error2)}`)}return{...state2,codeVerifier:verifier,clientSecret:secret}}async function resolveOrCreateManagedEnvironment(deps,identityAccountId,mcpServerId,org,mcpServerName,caller){let existingGrant;try{existingGrant=await deps.oauthGrants.find(identityAccountId,mcpServerId,org)}catch(error2){deps.logger.warn("Failed to look up existing OAuth grant (non-fatal, will create new managed env)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}if(existingGrant!==void 0&&existingGrant.environmentId!=="")return deps.logger.info("Reusing existing managed environment for OAuth re-connect",{mcp_server_id:mcpServerId,environment_id:existingGrant.environmentId}),existingGrant.environmentId;let envName=`OAuth: ${mcpServerName}`;try{return await deps.managedEnv.createManagedEnvironment(envName,org,caller)}catch(error2){throw internalError(error2,"failed to create managed environment for OAuth tokens")}}function convertToDiscoveredCapabilities(output){let capabilities=create2(DiscoveredCapabilitiesSchema,{lastDiscoveredAt:timestampNow()});for(let t of output.tools??[]){let tool=create2(DiscoveredToolSchema,{name:t.name??"",description:t.description??""});t.input_schema!==void 0&&(tool.inputSchema=t.input_schema),capabilities.tools.push(tool)}for(let rt of output.resource_templates??[])capabilities.resourceTemplates.push(create2(DiscoveredResourceTemplateSchema,{uriTemplate:rt.uri_template??"",name:rt.name??"",description:rt.description??"",mimeType:rt.mime_type??""}));return capabilities}function convertToToolApprovals(output){let approvals=[];for(let a5 of output.tool_approvals??[])a5.requires_approval!==!0||(a5.tool_name??"")===""||approvals.push(create2(ToolApprovalPolicySchema,{toolName:a5.tool_name,message:a5.message??"",fromDestructiveHint:a5.from_destructive_hint??!1}));return approvals}function setToolApprovalsFromConnect(status,output){let approvals=convertToToolApprovals(output);return approvals.length>0&&(status.toolApprovals=approvals),approvals.length}function settleConnectStatus(mcpStatus,workflowId,failure){let cs=mcpStatus.connectStatus;if(cs===void 0&&(cs=create2(ConnectStatusSchema),mcpStatus.connectStatus=cs),cs.workflowId=workflowId,cs.finishedAt=timestampNow(),cs.warning="",failure===void 0){cs.phase=ConnectPhase.succeeded,cs.failureCode="",cs.failureMessage="";return}cs.phase=ConnectPhase.failed,cs.failureCode=grpcCodeName(failure.code),cs.failureMessage=failure.rawMessage}async function persistConnectResult(store,mcpServerId,workflowId,output){let toolApprovalCount=0;return{persisted:await store.updateResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema,mcpServer=>{mcpServer.status===void 0&&(mcpServer.status=create2(McpServerStatusSchema)),mcpServer.status.discoveredCapabilities=convertToDiscoveredCapabilities(output),toolApprovalCount=setToolApprovalsFromConnect(mcpServer.status,output),settleConnectStatus(mcpServer.status,workflowId,void 0)}),toolApprovalCount}}async function persistConnectStarting(store,mcpServerId,workflowId,warning2){return store.updateResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema,mcpServer=>{mcpServer.status===void 0&&(mcpServer.status=create2(McpServerStatusSchema)),mcpServer.status.connectStatus=create2(ConnectStatusSchema,{phase:ConnectPhase.connecting,workflowId,startedAt:timestampNow(),warning:warning2})})}async function persistConnectFailure(store,logger2,mcpServerId,failure){try{await store.updateResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema,mcpServer=>{mcpServer.status===void 0&&(mcpServer.status=create2(McpServerStatusSchema)),settleConnectStatus(mcpServer.status,mcpServer.status.connectStatus?.workflowId??"",failure)})}catch(error2){if(error2 instanceof ResourceNotFoundError){logger2.info("Skipping connect failure persistence: MCP server deleted before connect settled",{mcp_server_id:mcpServerId});return}logger2.warn("Failed to record connect failure on connect_status (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}}var CONNECT_TIMEOUT={ms:42e4,goLabel:"7m0s"},ASYNC_CONNECT_TIMEOUT={ms:3600*1e3,goLabel:"1h0m0s"},BEST_EFFORT_CONNECT_GET_BUFFER_MS=15e3;async function connect(deps,input,identity2){let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");if(input.org==="")throw invalidArgumentError("org is required for connect");let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("mcp_server",mcpServerId):internalError(error2,"failed to load mcp server")}await authorizeDirect(McpServerCommandController.method.connect,deps.authorizer,identity2,input);let engineState=deps.engineState();if(!engineState.connected)throw failedPreconditionError("connect is not available: Temporal not configured");let prepared=await prepareConnect(deps,mcpServer,input,identity2);try{let run;try{run=await engineState.engine.startOrAttachConnect(mcpServerId,prepared.workflowInput,CONNECT_TIMEOUT.ms)}catch(error2){throw deps.logger.error("Failed to start MCP connect workflow",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to start connect workflow")}if(!run.attached)try{await persistConnectStarting(deps.store,mcpServerId,run.workflowId,"")}catch(error2){deps.logger.warn("Failed to record CONNECTING on connect_status (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}let outcome=await run.result(CONNECT_TIMEOUT.ms+BEST_EFFORT_CONNECT_GET_BUFFER_MS);if(!outcome.ok){let failure=mapConnectFailure(deps.logger,mcpServer,run.workflowId,outcome.failure,CONNECT_TIMEOUT);throw await persistConnectFailure(deps.store,deps.logger,mcpServerId,failure),failure}let persisted,toolApprovalCount;try{({persisted,toolApprovalCount}=await persistConnectResult(deps.store,mcpServerId,run.workflowId,outcome.output))}catch(error2){throw internalError(error2,"failed to save mcp server after connect")}return deps.logger.info("MCP server connect completed and stored",{mcp_server_id:mcpServerId,tools:persisted.status?.discoveredCapabilities?.tools.length??0,resource_templates:persisted.status?.discoveredCapabilities?.resourceTemplates.length??0,tool_approvals:toolApprovalCount}),persisted}finally{prepared.ecResourceId!==""&&await deleteConnectExecutionContext(deps,prepared.ecResourceId,prepared.executionId)}}async function prepareConnect(deps,mcpServer,input,identity2){let mcpServerId=mcpServer.metadata?.id??"",callerOrg=input.org;Object.keys(input.runtimeEnv).length===0&&await refreshOAuthTokenIfNeeded(deps,mcpServer,callerOrg);let executionId=newConnectExecutionId(mcpServerId),ecResourceId=await createConnectExecutionContext(deps,mcpServer,executionId,callerOrg,input.runtimeEnv,identity2),workflowInput={mcp_server_id:mcpServerId,...ecResourceId!==""?{execution_context_id:executionId}:{}};if(ecResourceId!==""&&deps.runnerAuth.isEnabled(TOKEN_TYPE_EXECUTION_SCOPED))try{let minted=deps.runnerAuth.mint(TOKEN_TYPE_EXECUTION_SCOPED,executionId,0);return{workflowInput:{...workflowInput,execution_context_token:minted.token},ecResourceId,executionId}}catch(error2){deps.logger.warn("Failed to mint connect EC token \u2014 discovery will read redacted credentials",{execution_id:executionId,error:error2 instanceof Error?error2.message:String(error2)})}return{workflowInput,ecResourceId,executionId}}async function createConnectExecutionContext(deps,mcpServer,executionId,callerOrg,runtimeEnv,caller){let ecData;if(Object.keys(runtimeEnv).length>0)ecData=runtimeEnv,deps.logger.info("Using runtime_env for connect ExecutionContext (one-time use)",{execution_id:executionId,runtime_env_count:Object.keys(runtimeEnv).length});else{let envDecls=mcpServer.spec?.env??{};if(Object.keys(envDecls).length===0)return deps.logger.debug("MCP server has no env declarations \u2014 skipping ExecutionContext creation",{execution_id:executionId}),"";let mcpServerId=mcpServer.metadata?.id??"",{oauthVars,remainingDecls}=await resolveOAuthVarsFromManagedEnv(deps,mcpServerId,callerOrg,envDecls),personalVars={};Object.keys(remainingDecls).length>0&&(personalVars=await resolveFromPersonalEnvironment(deps,callerOrg,remainingDecls)),ecData={...personalVars,...oauthVars},deps.logger.info("Resolved env vars for connect ExecutionContext",{execution_id:executionId,oauth_count:Object.keys(oauthVars).length,personal_count:Object.keys(personalVars).length})}if(Object.keys(ecData).length===0)return"";let created;try{created=await deps.executionContext.create(create2(ExecutionContextSchema,{apiVersion:"agentic.stigmer.ai/v1",kind:"ExecutionContext",metadata:{name:`exec-ctx-${executionId}`,org:callerOrg},spec:{executionId,data:ecData}}),caller)}catch(error2){throw internalError(error2,"failed to create connect ExecutionContext")}let resourceId=created.metadata?.id??"";return deps.logger.info("Created ephemeral ExecutionContext for MCP connect",{execution_context_id:resourceId,execution_id:executionId,data_entries:Object.keys(ecData).length}),resourceId}async function resolveOAuthVarsFromManagedEnv(deps,mcpServerId,org,envDecls){let grant;try{grant=await deps.oauthGrants.find("",mcpServerId,org)}catch{return{oauthVars:{},remainingDecls:envDecls}}if(grant===void 0||grant.environmentId==="")return{oauthVars:{},remainingDecls:envDecls};let oauthKey=grant.accessTokenEnvVar;if(!(oauthKey in envDecls))return{oauthVars:{},remainingDecls:envDecls};let tokenValue="";try{tokenValue=await deps.managedEnv.readSecretValue(grant.environmentId,oauthKey)}catch(error2){return deps.logger.warn("Failed to read OAuth token from managed environment \u2014 falling back to personal env",{mcp_server_id:mcpServerId,oauth_key:oauthKey,managed_env_id:grant.environmentId,error:error2 instanceof Error?error2.message:String(error2)}),{oauthVars:{},remainingDecls:envDecls}}if(tokenValue==="")return deps.logger.warn("Failed to read OAuth token from managed environment \u2014 falling back to personal env",{mcp_server_id:mcpServerId,oauth_key:oauthKey,managed_env_id:grant.environmentId}),{oauthVars:{},remainingDecls:envDecls};let remainingDecls={};for(let[k5,v]of Object.entries(envDecls))k5!==oauthKey&&(remainingDecls[k5]=v);return deps.logger.debug("Resolved OAuth token from managed environment",{mcp_server_id:mcpServerId,oauth_key:oauthKey,managed_env_id:grant.environmentId}),{oauthVars:{[oauthKey]:create2(ExecutionValueSchema,{value:tokenValue,isSecret:!0})},remainingDecls}}async function resolveFromPersonalEnvironment(deps,org,envDecls){let resolution=await resolveDeclaredFromPersonalEnvironment(deps.environmentReader,deps.logger,org,envDecls);if(resolution.kind==="no-personal-environment"){let requiredKeys=Object.entries(envDecls).filter(([,decl])=>!decl.optional).map(([key])=>key);if(requiredKeys.length===0)return{};throw failedPreconditionError(`personal environment not found for org '${org}'; save required credentials first: [${requiredKeys.join(" ")}]`)}if(resolution.missing.length>0)throw failedPreconditionError(`missing required credentials in personal environment: [${resolution.missing.join(" ")}]`);return{...resolution.values}}async function deleteConnectExecutionContext(deps,resourceId,executionId){try{await deps.executionContext.delete({resourceId})}catch(error2){deps.logger.warn("Failed to delete connect ExecutionContext (non-fatal)",{resource_id:resourceId,execution_id:executionId,error:error2 instanceof Error?error2.message:String(error2)});return}deps.logger.debug("Deleted ephemeral connect ExecutionContext",{resource_id:resourceId,execution_id:executionId})}function mapConnectFailure(logger2,mcpServer,workflowId,failure,budget){let mcpServerId=mcpServer.metadata?.id??"";switch(logger2.error("MCP connect workflow failed",{workflow_id:workflowId,mcp_server_id:mcpServerId,failure_kind:failure.kind}),failure.kind){case"application":return failedPreconditionError(buildConnectFailureMessage(mcpServer,failure.message));case"timeout":return new ConnectError(`connect did not complete within the ${budget.goLabel} budget for MCP server '${mcpServerId}' \u2014 if this repeats, check that your runner is running and healthy`,Code.DeadlineExceeded);case"service-not-found":return unavailableError(`connect service temporarily unavailable for MCP server '${mcpServerId}'`);case"other":return new ConnectError(buildConnectFailureMessage(mcpServer,failure.message),Code.Internal);default:{let exhaustive=failure;throw new Error(`unhandled connect failure ${String(exhaustive)}`)}}}function buildConnectFailureMessage(mcpServer,cause){let name=mcpServer.metadata?.name??"";if(cause.includes("requires OAuth"))return cause;if(mcpServer.spec?.serverType.case==="stdio"){let slug=mcpServer.metadata?.slug??"";return`connect failed for MCP server '${name}': ${cause}. This is a stdio server launched by your local runner \u2014 verify the command is installed and its arguments and environment variables are correct. Preview discovery locally with: stigmer connect mcp-server ${slug} --dry-run`}return`connect failed for MCP server '${name}': ${cause}. Check that the server URL is reachable and your credentials are valid.`}async function refreshOAuthTokenIfNeeded(deps,mcpServer,callerOrg){if(mcpServer.spec?.auth===void 0)return;let mcpServerId=mcpServer.metadata?.id??"",grant;try{grant=await deps.oauthGrants.find("",mcpServerId,callerOrg)}catch(error2){deps.logger.warn("Failed to load OAuth grant for pre-flight check (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}if(grant===void 0)return;if(grant.environmentId===""){deps.logger.warn("OAuth grant has no managed environment ID \u2014 user must re-authenticate via OAuth Connect",{mcp_server_id:mcpServerId});return}let refreshTokenValue;try{refreshTokenValue=await deps.managedEnv.readSecretValue(grant.environmentId,grant.refreshTokenEnvVar)}catch(error2){deps.logger.debug("No refresh token found in managed environment (may not be OAuth-connected)",{mcp_server_id:mcpServerId,refresh_token_var:grant.refreshTokenEnvVar,managed_env_id:grant.environmentId,error:error2 instanceof Error?error2.message:String(error2)});return}let clientSecret="",tokenAuthMethod="";if(grant.authMethod==="vendor_oauth")try{({clientSecret,tokenAuthMethod}=await loadOAuthAppClientCredentials(deps,mcpServer))}catch(error2){deps.logger.warn("Failed to load OAuthApp client secret for refresh",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}let result;try{result=await refreshTokenIfExpired(grant,refreshTokenValue,clientSecret,tokenAuthMethod,deps.logger,deps.outboundFetch)}catch(error2){throw failedPreconditionError(error2 instanceof Error?error2.message:String(error2))}if(!result.refreshed)return;let tokenVars={[grant.accessTokenEnvVar]:create2(EnvironmentValueSchema,{value:result.newAccessToken,isSecret:!0})};result.newRefreshToken!==refreshTokenValue&&(tokenVars[grant.refreshTokenEnvVar]=create2(EnvironmentValueSchema,{value:result.newRefreshToken,isSecret:!0}));try{await deps.managedEnv.updateSecrets(grant.environmentId,tokenVars)}catch(error2){throw internalError(error2,"failed to update refreshed tokens in managed environment")}try{await deps.oauthGrants.upsert({...grant,accessTokenExpiresAt:result.newExpiresAt})}catch(error2){deps.logger.warn("Failed to update OAuth grant after refresh (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}}async function loadOAuthAppClientCredentials(deps,mcpServer){let ref=mcpServer.spec?.auth?.oauthAppRef;if(ref===void 0||ref.slug==="")return{clientSecret:"",tokenAuthMethod:""};let app;try{app=await resolveOAuthAppRef(deps.store,ref,deps.logger)}catch(error2){throw new Error(`failed to list oauth apps: ${error2 instanceof Error?error2.message:String(error2)}`)}if(app===void 0)throw new Error(`OAuthApp '${ref.slug}' not found`);let tokenAuthMethod=tokenAuthMethodFromSpec(app.spec?.tokenEndpointAuthMethod??TokenEndpointAuthMethod.UNSPECIFIED),secret=app.spec?.clientSecret??"";return deps.secretService.isEncrypted(secret)&&(secret=await deps.secretService.decrypt(secret)),{clientSecret:secret,tokenAuthMethod}}function tokenAuthMethodFromSpec(method){return method===TokenEndpointAuthMethod.CLIENT_SECRET_POST?TOKEN_AUTH_METHOD_POST:TOKEN_AUTH_METHOD_BASIC}async function startBestEffortConnect(deps,mcpServer){let engineState=deps.engineState();if(!engineState.connected)return;let envKeys=Object.keys(mcpServer.spec?.env??{}).length;if(envKeys>0){deps.logger.debug("Skipping best-effort auto-connect: MCP server has env declarations (requires manual connect)",{mcp_server_id:mcpServer.metadata?.id??"",env_keys:envKeys});return}let mcpServerId=mcpServer.metadata?.id??"",run;try{run=await engineState.engine.startOrAttachConnect(mcpServerId,{mcp_server_id:mcpServerId},CONNECT_TIMEOUT.ms)}catch(error2){deps.logger.warn("Failed to start best-effort connect workflow (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}if(!run.attached)try{await persistConnectStarting(deps.store,mcpServerId,run.workflowId,"")}catch(error2){deps.logger.warn("Failed to record CONNECTING for best-effort connect (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)})}let outcome=await run.result(CONNECT_TIMEOUT.ms+BEST_EFFORT_CONNECT_GET_BUFFER_MS);if(!outcome.ok){let failure=mapConnectFailure(deps.logger,mcpServer,run.workflowId,outcome.failure,CONNECT_TIMEOUT);await persistConnectFailure(deps.store,deps.logger,mcpServerId,failure);return}let persisted,toolApprovalCount;try{({persisted,toolApprovalCount}=await persistConnectResult(deps.store,mcpServerId,run.workflowId,outcome.output))}catch(error2){if(error2 instanceof ResourceNotFoundError){deps.logger.info("Skipping best-effort connect persistence: MCP server deleted before connect completed",{mcp_server_id:mcpServerId});return}deps.logger.warn("Failed to persist best-effort connect result (non-fatal)",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}deps.logger.info("Best-effort auto-connect completed and stored",{workflow_id:run.workflowId,mcp_server_id:mcpServerId,tools:persisted.status?.discoveredCapabilities?.tools.length??0,resource_templates:persisted.status?.discoveredCapabilities?.resourceTemplates.length??0,tool_approvals:toolApprovalCount})}async function disconnectOAuth(deps,input,identity2){let resourceId=input.resourceId;if(resourceId==="")throw invalidArgumentError("resource_id is required");let org=input.org;if(org==="")throw invalidArgumentError("org is required");await authorizeDirect(McpServerCommandController.method.disconnectOAuth,deps.authorizer,identity2,input);let grant;try{grant=await deps.oauthGrants.find("",resourceId,org)}catch(error2){throw internalError(error2,"failed to look up OAuth grant")}if(grant===void 0)return deps.logger.debug("No OAuth grant to disconnect",{resource_id:resourceId,org}),create2(DisconnectOAuthOutputSchema,{disconnected:!1});let envId=grant.environmentId;if(envId!=="")try{await deps.managedEnv.deleteManagedEnvironment(envId)}catch(error2){deps.logger.warn("Failed to delete managed environment \u2014 may already be deleted",{resource_id:resourceId,environment_id:envId,error:error2 instanceof Error?error2.message:String(error2)})}try{await deps.oauthGrants.delete("",resourceId,org)}catch(error2){throw internalError(error2,"failed to delete OAuth grant")}return deps.logger.info("OAuth connection disconnected",{resource_id:resourceId,org,env_deleted:envId!==""}),create2(DisconnectOAuthOutputSchema,{disconnected:!0})}function isOAuthChallenge(wwwAuthenticate){let value=wwwAuthenticate.toLowerCase();return value.includes("bearer")?value.includes("oauth")||value.includes("resource_metadata"):!1}function parseResourceMetadataUrl(wwwAuthenticate){return/resource_metadata="([^"]+)"/i.exec(wwwAuthenticate)?.[1]}function protectedResourceMetadataUrls(resource){let bare=`${resource.origin}/.well-known/oauth-protected-resource`,path14=resource.pathname.replace(/\/+$/,"");return path14===""?[bare]:[`${bare}${path14}`,bare]}function authorizationServerMetadataUrls(issuer){let path14=issuer.pathname.replace(/\/+$/,""),urls=[...path14===""?[]:[`${issuer.origin}/.well-known/oauth-authorization-server${path14}`],`${issuer.origin}/.well-known/oauth-authorization-server`,...path14===""?[]:[`${issuer.origin}${path14}/.well-known/openid-configuration`],`${issuer.origin}/.well-known/openid-configuration`];return[...new Set(urls)]}async function resolveAuthorizationServers(resourceUrl,pointer,deps){let attempts=[],candidates=pointer!==void 0?[pointer]:protectedResourceMetadataUrls(new URL(resourceUrl));for(let candidate of candidates){let read3=await readJson(candidate,deps,attempts);if(read3===void 0)continue;let issuers=readStringArray(read3,"authorization_servers");if(issuers.length>0)return{issuers,attempts}}return{issuers:[],attempts}}async function readAuthorizationServerMetadata(issuer,deps){let attempts=[],parsed;try{parsed=new URL(issuer)}catch{return{kind:"not-found",attempts}}for(let metadataUrl of authorizationServerMetadataUrls(parsed)){let document2=await readJson(metadataUrl,deps,attempts);if(document2===void 0)continue;let authorizationEndpoint=readString(document2,"authorization_endpoint"),tokenEndpoint=readString(document2,"token_endpoint");if(authorizationEndpoint===""||tokenEndpoint===""){let last=attempts.pop();last!==void 0&&attempts.push({...last,missing:authorizationEndpoint===""?"authorization_endpoint":"token_endpoint"});continue}return{kind:"found",attempts,metadata:{metadataUrl,issuer:readString(document2,"issuer"),authorizationEndpoint,tokenEndpoint,registrationEndpoint:readString(document2,"registration_endpoint"),scopesSupported:readStringArray(document2,"scopes_supported"),codeChallengeMethodsSupported:readStringArray(document2,"code_challenge_methods_supported")}}}return{kind:"not-found",attempts}}async function readJson(url,deps,attempts){let response;try{response=await deps.fetchImpl(url,{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(deps.timeoutMs)})}catch(error2){attempts.push({url,error:error2 instanceof Error?error2.message:String(error2)});return}if(attempts.push({url,status:response.status}),response.status!==200){await response.body?.cancel().catch(()=>{});return}try{let parsed=await response.json();return isRecord(parsed)?parsed:void 0}catch{return}}function readString(record2,key){let value=record2[key];return typeof value=="string"?value:""}function readStringArray(record2,key){let list12=record2[key];return Array.isArray(list12)?list12.filter(item=>typeof item=="string"):[]}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}var MCP_PROTOCOL_VERSION="2025-06-18";function baseHeaders(headers2){return{"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":MCP_PROTOCOL_VERSION,...headers2??{}}}function initializeRequest(clientName,headers2){return{method:"POST",headers:baseHeaders(headers2),body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:MCP_PROTOCOL_VERSION,capabilities:{},clientInfo:{name:clientName,version:"0"}}})}}async function probeEndpointAuth(url,headers2,deps){let request=initializeRequest(deps.clientName,headers2),response;try{response=await deps.fetchImpl(url,{method:request.method,headers:{...request.headers},body:request.body,signal:AbortSignal.timeout(deps.timeoutMs)})}catch(error2){return{kind:"unreachable",error:describeError(error2)}}if(await response.body?.cancel().catch(()=>{}),response.status===401){let challenge=response.headers.get("www-authenticate")??"";return isOAuthChallenge(challenge)?{kind:"oauth",challenge,resourceMetadataUrl:parseResourceMetadataUrl(challenge)}:{kind:"challenge-not-oauth",challenge}}return response.status>=200&&response.status<300?{kind:"accepted",status:response.status}:{kind:"http-other",status:response.status}}function describeError(error2){return error2 instanceof Error?`${error2.name}: ${error2.message}`:String(error2)}var ENDPOINT_PROBE_TIMEOUT_MS=3e3,PROBE_CLIENT_NAME="stigmer-server",ACCESS_TOKEN_VAR_SUFFIX="_ACCESS_TOKEN",AUTHORIZATION_HEADER="authorization";function newCompleteEndpointAuthStep(deps){return{name:"CompleteEndpointAuth",async execute(ctx){let server=ctx.newState,spec=server.spec;if(spec===void 0)return;applyTokenPathDefault(spec,server.metadata?.slug??"");let existing=ctx.get(EXISTING_RESOURCE_KEY),derived=existing!==void 0?derivedCompletionOf(existing):void 0,url=authorShapeUrl(spec);if(url===void 0){derived!==void 0&&echoesDerived(spec,derived)?stamp(ctx,server):dropLabel(server);return}if(derived!==void 0&&derived.url===url){applyCompletion(spec,derived.variable,derived.description),stamp(ctx,server);return}if(await probe(url,spec,deps)!=="oauth"){dropLabel(server);return}let variable=accessTokenVariable(server.metadata?.slug??"");applyCompletion(spec,variable,tokenDescription(server.metadata?.slug??"")),stamp(ctx,server)}}}function authorShapeUrl(spec){if(spec.serverType.case==="http"&&spec.auth===void 0&&!(Object.keys(spec.env).length>0)){for(let[name,value]of Object.entries(spec.serverType.value.headers))if(name.toLowerCase()===AUTHORIZATION_HEADER||value.includes("${"))return;return spec.serverType.value.url}}function derivedCompletionOf(existing){if(existing.metadata?.labels[MCP_AUTH_LABEL]!==MCP_AUTH_ENDPOINT)return;let spec=existing.spec;if(spec===void 0||spec.serverType.case!=="http")return;let variable=spec.auth?.targetEnvVar??"";if(variable!=="")return{url:spec.serverType.value.url,variable,description:spec.env[variable]?.description??""}}function echoesDerived(spec,derived){if(spec.serverType.case!=="http"||spec.serverType.value.url!==derived.url)return!1;let auth=spec.auth;if(auth===void 0||auth.targetEnvVar!==derived.variable||!auth.oauthOnly||(auth.oauthAppRef?.slug??"")!==""||auth.discoveryUrl!==""||auth.scopeHints.length>0||auth.tokenLifetimeHint!=="")return!1;let envKeys=Object.keys(spec.env);if(envKeys.length!==1||envKeys[0]!==derived.variable)return!1;let declaration=spec.env[derived.variable];if(declaration===void 0||!declaration.isSecret||declaration.optional)return!1;let headers2=Object.entries(spec.serverType.value.headers),authorization=headers2.filter(([name])=>name.toLowerCase()===AUTHORIZATION_HEADER);return authorization.length!==1||authorization[0]?.[1]!==bearerHeader(derived.variable)?!1:headers2.every(([name,value])=>name.toLowerCase()===AUTHORIZATION_HEADER||!value.includes("${"))}function applyCompletion(spec,variable,description){spec.auth=create2(McpServerAuthSchema,{targetEnvVar:variable,oauthOnly:!0}),spec.env[variable]=create2(EnvVarDeclarationSchema,{isSecret:!0,optional:!1,description}),applyTokenPathDefault(spec,"")}function applyTokenPathDefault(spec,slug){let variable=spec.auth?.targetEnvVar??"";if(variable===""||(spec.env[variable]===void 0&&(spec.env[variable]=create2(EnvVarDeclarationSchema,{isSecret:!0,optional:!1,description:tokenDescription(slug)})),spec.serverType.case!=="http"))return;let headers2=spec.serverType.value.headers,reference=`\${${variable}}`;Object.values(headers2).some(value=>value.includes(reference))||(headers2.Authorization=bearerHeader(variable))}function bearerHeader(variable){return`Bearer \${${variable}}`}function accessTokenVariable(slug){let stem=slug.toUpperCase().replace(/[^A-Z0-9]+/g,"_").replace(/^_+|_+$/g,"");return`${stem===""?"MCP":stem}${ACCESS_TOKEN_VAR_SUFFIX}`}function tokenDescription(slug){return`OAuth access token for the '${slug}' MCP server; Sign in fills it`}function stamp(ctx,server){server.metadata!==void 0&&(server.metadata.labels[MCP_AUTH_LABEL]=MCP_AUTH_ENDPOINT,recordServerStampedReservedLabels(ctx,MCP_AUTH_LABEL))}function dropLabel(server){server.metadata!==void 0&&delete server.metadata.labels[MCP_AUTH_LABEL]}async function probe(url,spec,deps){let headers2=spec.serverType.case==="http"?spec.serverType.value.headers:{};try{let outcome=await probeEndpointAuth(url,headers2,{fetchImpl:deps.outboundFetch,timeoutMs:ENDPOINT_PROBE_TIMEOUT_MS,clientName:PROBE_CLIENT_NAME});return outcome.kind==="unreachable"&&deps.logger.debug("MCP endpoint probe got no answer; saving the spec as sent",{url,error:outcome.error}),outcome.kind==="oauth"?"oauth":"other"}catch(error2){return deps.logger.warn("MCP endpoint probe threw; saving the spec as sent",{url,error:error2 instanceof Error?error2.message:String(error2)}),"other"}}async function getOAuthGrantStatus(deps,input,identity2){if(input.resourceId==="")throw invalidArgumentError("resource_id is required");if(input.org==="")throw invalidArgumentError("org is required");await authorizeDirect(McpServerQueryController.method.getOAuthGrantStatus,deps.authorizer,identity2,input);let grant;try{grant=await deps.oauthGrants.find("",input.resourceId,input.org)}catch(error2){throw internalError(error2,"failed to look up OAuth grant")}return grant===void 0?create2(GetOAuthGrantStatusOutputSchema,{connected:!1,connectionHealth:OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_NO_GRANT}):create2(GetOAuthGrantStatusOutputSchema,{connected:!0,accessTokenExpiresAt:BigInt(grant.accessTokenExpiresAt),targetEnvVar:grant.accessTokenEnvVar,authMethod:grant.authMethod,connectionHealth:evaluateHealth(grant)})}function evaluateHealth(grant){return grant.accessTokenExpiresAt===0?OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_HEALTHY:Math.floor(Date.now()/1e3)<grant.accessTokenExpiresAt-REFRESH_EXPIRY_BUFFER_SECONDS?OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_HEALTHY:grant.refreshTokenEnvVar!==""?OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE:OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED}var import_node_crypto24=require("node:crypto");var import_node_crypto23=require("node:crypto");function generatePkce(){let verifier=(0,import_node_crypto23.randomBytes)(32).toString("base64url"),challenge=(0,import_node_crypto23.createHash)("sha256").update(verifier).digest().toString("base64url");return{codeVerifier:verifier,codeChallenge:challenge}}var DISCOVERY_REQUEST_TIMEOUT_MS=1e4;async function discoverForResource(mcpUrl,fetchImpl){let resource=parseDiscoveryUrl(mcpUrl),deps={fetchImpl,timeoutMs:DISCOVERY_REQUEST_TIMEOUT_MS},resolved=await resolveAuthorizationServers(resource.href,void 0,deps),issuers=resolved.issuers.length>0?resolved.issuers:[resource.origin];return readIssuers(issuers,deps)}async function discoverAtIssuer(issuerUrl,fetchImpl){let issuer=parseDiscoveryUrl(issuerUrl);return readIssuers([issuer.href],{fetchImpl,timeoutMs:DISCOVERY_REQUEST_TIMEOUT_MS})}async function readIssuers(issuers,deps){let attempts=[];for(let issuer of issuers){let read3=await readAuthorizationServerMetadata(issuer,deps);if(attempts.push(...read3.attempts),read3.kind==="found"){let metadata=toAuthServerMetadata(read3.metadata);return validateMetadata(metadata,read3.metadata.metadataUrl),metadata}}throw discoveryFailure(issuers,attempts)}function toAuthServerMetadata(m3){return{issuer:m3.issuer,authorizationEndpoint:m3.authorizationEndpoint,tokenEndpoint:m3.tokenEndpoint,registrationEndpoint:m3.registrationEndpoint,scopesSupported:[...m3.scopesSupported],codeChallengeMethodsSupported:[...m3.codeChallengeMethodsSupported]}}function discoveryFailure(issuers,attempts){let firstIssuer=issuers[0]??"",named=firstDocumentFor(firstIssuer),attempt=attempts.find(a5=>a5.url===named)??attempts[0];if(attempt?.error!==void 0)return new Error(`discovery request to ${attempt.url} failed: ${attempt.error}`);if(attempt?.missing!==void 0)return new Error(`authorization server at ${attempt.url} is missing ${attempt.missing}`);let status=attempt?.status??0;return new Error(`authorization server discovery failed: ${named} returned HTTP ${status} (expected 200). This MCP server may not support the MCP Authorization specification`)}function firstDocumentFor(issuer){try{return authorizationServerMetadataUrls(new URL(issuer))[0]??issuer}catch{return issuer}}function parseDiscoveryUrl(serverUrl){let parsed;try{parsed=new URL(serverUrl)}catch(error2){throw new Error(`invalid server URL for discovery: ${error2 instanceof Error?error2.message:String(error2)}`)}let scheme=parsed.protocol.replace(/:$/,"");if(scheme!=="http"&&scheme!=="https")throw new Error(`invalid server URL for discovery: unsupported scheme "${scheme}": only http and https are supported`);if(parsed.host==="")throw new Error("invalid server URL for discovery: server URL has no host");return parsed}function validateMetadata(m3,sourceUrl){if(m3.authorizationEndpoint==="")throw new Error(`authorization server at ${sourceUrl} is missing authorization_endpoint`);if(m3.tokenEndpoint==="")throw new Error(`authorization server at ${sourceUrl} is missing token_endpoint`);if(m3.codeChallengeMethodsSupported.length>0&&!m3.codeChallengeMethodsSupported.includes("S256"))throw new Error(`authorization server at ${sourceUrl} does not support S256 PKCE (supports: [${m3.codeChallengeMethodsSupported.join(" ")}]). S256 is required by the MCP Authorization specification`)}var DCR_REQUEST_TIMEOUT_MS=15e3;async function registerClient(registrationEndpoint,redirectUri,clientName,fetchImpl){let requestBody=JSON.stringify({redirect_uris:[redirectUri],client_name:clientName,grant_types:["authorization_code"],response_types:["code"],token_endpoint_auth_method:"none"}),response;try{response=await fetchImpl(registrationEndpoint,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:requestBody,signal:AbortSignal.timeout(DCR_REQUEST_TIMEOUT_MS)})}catch(error2){throw new Error(`DCR request to ${registrationEndpoint} failed: ${error2 instanceof Error?error2.message:String(error2)}`)}let body=await response.text();if(response.status!==201&&response.status!==200)throw new Error(`DCR at ${registrationEndpoint} returned HTTP ${response.status}: ${truncateBody(body)}`);let raw;try{raw=JSON.parse(body)}catch(error2){throw new Error(`failed to parse DCR response: ${error2 instanceof Error?error2.message:String(error2)}`)}if((raw.client_id??"")==="")throw new Error(`DCR response from ${registrationEndpoint} is missing client_id`);return{clientId:raw.client_id,clientSecret:raw.client_secret??"",clientName:raw.client_name??"",tokenEndpointAuthMethod:raw.token_endpoint_auth_method??""}}var PREFLIGHT_REQUEST_TIMEOUT_MS=4e3,PREFLIGHT_BODY_READ_CAP=4096;async function preflightAuthorize(authorizationUrl,fetchImpl){let response=await fetchImpl(authorizationUrl,{method:"GET",redirect:"manual",signal:AbortSignal.timeout(PREFLIGHT_REQUEST_TIMEOUT_MS)});if(response.status!==400){await response.text().catch(()=>"");return}let body=(await response.text()).slice(0,PREFLIGHT_BODY_READ_CAP);return{statusCode:response.status,vendorDetail:extractVendorDetail(body),bodySnippet:truncateBody(body)}}function extractVendorDetail(body){let parsed;try{parsed=JSON.parse(body)}catch{return""}return(parsed.error_description??"")!==""?parsed.error_description:parsed.error??""}async function initiateOAuthConnect(deps,input,identity2){if(deps.oauthRedirectUri==="")throw failedPreconditionError("OAuth Connect is not configured: STIGMER_OAUTH_REDIRECT_URI is not set");let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("mcp_server",mcpServerId):internalError(error2,"failed to load mcp server")}await authorizeDirect(McpServerCommandController.method.initiateOAuthConnect,deps.authorizer,identity2,input);let auth=mcpServer.spec?.auth;if(auth===void 0)throw failedPreconditionError(`MCP server '${mcpServerId}' does not have an auth block configured`);let pkcePair=generatePkce(),stateParam=generateState(),oauthAppRef=auth.oauthAppRef,isDcr=oauthAppRef===void 0||oauthAppRef.slug==="",result=isDcr?await initiateDcr(deps,mcpServer,pkcePair,stateParam):await initiateVendorOAuth(deps,mcpServer,pkcePair,stateParam),authMethod=isDcr?"mcp_oauth":"vendor_oauth",pendingState={state:stateParam,codeVerifier:pkcePair.codeVerifier,clientId:result.clientId,clientSecret:result.clientSecret,tokenEndpoint:result.tokenEndpoint,mcpServerId,identityAccountId:"",targetEnvVar:auth.targetEnvVar,authMethod,tokenAuthMethod:result.tokenAuthMethod,redirectUri:deps.oauthRedirectUri,org:input.org,createdAt:0},sealed;try{sealed=await sealPendingOAuthState(deps.secretService,deps.logger,pendingState)}catch(error2){throw internalError(error2,"failed to encrypt OAuth handshake secrets")}try{await deps.pendingOAuthStates.save(sealed)}catch(error2){throw internalError(error2,"failed to save pending OAuth state")}return deps.logger.info("Initiated OAuth Connect flow",{mcp_server_id:mcpServerId,auth_method:authMethod,provider:result.providerName}),create2(InitiateOAuthConnectOutputSchema,{authorizationUrl:result.authorizationUrl,state:stateParam,scopes:result.scopes,providerName:result.providerName})}async function initiateDcr(deps,mcpServer,pkcePair,stateParam){let discoveryUrl2=mcpServer.spec?.auth?.discoveryUrl??"",serverType=mcpServer.spec?.serverType,resourceUrl=serverType?.case==="http"?serverType.value.url:"",serverUrl=discoveryUrl2!==""?discoveryUrl2:resourceUrl;if(serverUrl==="")throw failedPreconditionError(`DCR requires a discoverable URL. MCP server '${mcpServer.metadata?.id??""}' has no http.url and no auth.discovery_url. Set auth.discovery_url for stdio servers, oauth_app_ref for vendor OAuth, or switch to HTTP transport`);let metadata;try{metadata=discoveryUrl2!==""?await discoverAtIssuer(discoveryUrl2,deps.outboundFetch):await discoverForResource(resourceUrl,deps.outboundFetch)}catch(error2){throw failedPreconditionError(`OAuth authorization server discovery failed for ${serverUrl}: ${error2 instanceof Error?error2.message:String(error2)}`)}if(metadata.registrationEndpoint==="")throw failedPreconditionError(`MCP server at ${serverUrl} does not advertise a registration_endpoint for DCR: ${loginServerHost(metadata,serverUrl)} does not allow automatic client registration, so this server needs an OAuth app registered with the vendor and referenced from its definition (auth.oauth_app_ref)`);let clientName=`Stigmer (${mcpServer.metadata?.name??""})`,dcrResponse;try{dcrResponse=await registerClient(metadata.registrationEndpoint,deps.oauthRedirectUri,clientName,deps.outboundFetch)}catch(error2){throw failedPreconditionError(`DCR registration failed: ${error2 instanceof Error?error2.message:String(error2)}`)}let scopes=mcpServer.spec?.auth?.scopeHints??[];scopes.length===0&&metadata.scopesSupported.length>0&&(scopes=metadata.scopesSupported);let authUrl=buildAuthorizationUrl(metadata.authorizationEndpoint,dcrResponse.clientId,deps.oauthRedirectUri,pkcePair.codeChallenge,stateParam,scopes,"scope"),rejection;try{rejection=await preflightAuthorize(authUrl,deps.outboundFetch)}catch(probeError){deps.logger.debug("authorize pre-flight probe inconclusive; proceeding",{mcp_server_id:mcpServer.metadata?.id??"",error:probeError instanceof Error?probeError.message:String(probeError)})}if(rejection!==void 0)throw deps.logger.warn("authorization endpoint rejected the sign-in request pre-flight",{status_code:rejection.statusCode,mcp_server_id:mcpServer.metadata?.id??"",body_snippet:rejection.bodySnippet}),failedPreconditionError(dcrRejectionMessage(mcpServer.metadata?.name??"",deps.oauthRedirectUri,rejection));return{authorizationUrl:authUrl,providerName:mcpServer.metadata?.name??"",scopes,clientId:dcrResponse.clientId,clientSecret:"",tokenEndpoint:metadata.tokenEndpoint,tokenAuthMethod:""}}function loginServerHost(metadata,serverUrl){for(let candidate of[metadata.issuer,metadata.authorizationEndpoint,serverUrl])try{let host=new URL(candidate).host;if(host!=="")return host}catch{}return serverUrl}async function initiateVendorOAuth(deps,mcpServer,pkcePair,stateParam){let ref=mcpServer.spec?.auth?.oauthAppRef,oauthApp;try{oauthApp=await resolveOAuthAppRef(deps.store,ref,deps.logger)}catch(error2){throw internalError(error2,"failed to list oauth apps")}if(oauthApp===void 0)throw notFoundError("oauth_app",ref?.slug??"");let approvalStatus=oauthApp.spec?.vendorApprovalStatus;if(approvalStatus===VendorApprovalStatus.PENDING||approvalStatus===VendorApprovalStatus.REJECTED){let statusLabel=approvalStatus===VendorApprovalStatus.REJECTED?"rejected":"pending approval",alternative=mcpServer.spec?.auth?.oauthOnly?"This server only accepts OAuth sign-in; an org admin can configure your own OAuth app instead.":"Please enter a token manually instead.";throw failedPreconditionError(`OAuth sign-in is unavailable: the platform's OAuth app for '${oauthApp.spec?.provider??""}' is ${statusLabel} by the vendor. ${alternative}`)}let clientSecret=oauthApp.spec?.clientSecret??"";if(deps.secretService.isEncrypted(clientSecret))try{clientSecret=await deps.secretService.decrypt(clientSecret)}catch(error2){throw internalError(error2,"failed to decrypt OAuthApp client secret")}let scopes=oauthApp.spec?.scopes??[];return{authorizationUrl:buildAuthorizationUrl(oauthApp.spec?.authorizationUrl??"",oauthApp.spec?.clientId??"",deps.oauthRedirectUri,pkcePair.codeChallenge,stateParam,scopes,oauthApp.spec?.scopeParameterName??""),providerName:oauthApp.spec?.provider??"",scopes,clientId:oauthApp.spec?.clientId??"",clientSecret,tokenEndpoint:oauthApp.spec?.tokenUrl??"",tokenAuthMethod:tokenAuthMethodFromSpec(oauthApp.spec?.tokenEndpointAuthMethod??TokenEndpointAuthMethod.UNSPECIFIED)}}function buildAuthorizationUrl(authEndpoint,clientId,redirectUri,codeChallenge,state2,scopes,scopeParamName){let scopeParam=scopeParamName===""?"scope":scopeParamName,params=new URLSearchParams({response_type:"code",client_id:clientId,redirect_uri:redirectUri,code_challenge:codeChallenge,code_challenge_method:"S256",state:state2});scopes.length>0&¶ms.set(scopeParam,scopes.join(" ")),params.sort();let separator=authEndpoint.includes("?")?"&":"?";return authEndpoint+separator+params.toString()}function dcrRejectionMessage(providerName,redirectUri,rejection){let callbackHost=redirectUri;try{let parsed=new URL(redirectUri);parsed.host!==""&&(callbackHost=parsed.host)}catch{}let message6=`${providerName} rejected the sign-in request before showing a login page (HTTP ${rejection.statusCode}). The most common cause is a redirect-host allowlist: this deployment's OAuth callback host (${callbackHost}) is not on the provider's approved list. Self-hosted deployments with a localhost callback are typically unaffected.`;return rejection.vendorDetail!==""&&(message6+=" Provider detail: "+rejection.vendorDetail),message6}function generateState(){return(0,import_node_crypto24.randomBytes)(32).toString("base64url")}async function sealPendingOAuthState(secretService,logger2,state2){if(!secretService.isEnabled())return logger2.warn("Encryption disabled: pending OAuth state secrets will be stored in plaintext"),state2;let scope=EncryptionScope.forOrganization(state2.org),sealedVerifier;try{sealedVerifier=await secretService.encrypt(state2.codeVerifier,scope)}catch(error2){throw new Error(`failed to encrypt code_verifier: ${error2 instanceof Error?error2.message:String(error2)}`)}let sealedSecret=state2.clientSecret;if(state2.clientSecret!=="")try{sealedSecret=await secretService.encrypt(state2.clientSecret,scope)}catch(error2){throw new Error(`failed to encrypt client_secret: ${error2 instanceof Error?error2.message:String(error2)}`)}return{...state2,codeVerifier:sealedVerifier,clientSecret:sealedSecret}}var mcpServerSearchExtractor={kind:ApiResourceKind.mcp_server,schema:McpServerSchema,getSearchSummary(resource){return resource.spec?.description??""},toSearchResult(resource,score){let mcpServer=resource;return buildSearchResult({kind:ApiResourceKind.mcp_server,metadata:mcpServer.metadata,summary:mcpServer.spec?.description??"",score,createdAt:mcpServer.status?.audit?.specAudit?.createdAt,updatedAt:mcpServer.status?.audit?.specAudit?.updatedAt,iconUrl:mcpServer.spec?.iconUrl??""})},getSearchIndexEntry(resource){let mcpServer=resource,metadata=mcpServer.metadata;if(metadata!==void 0)return{name:metadata.name,description:mcpServer.spec?.description??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(mcpServer.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};var RUNNER_QUEUE_WARNING="no runner appears to be polling the task queue \u2014 the connect will wait for one to come up (start your local runner if it is not running)";async function startConnect(deps,input,identity2){let mcpServerId=input.mcpServerId;if(mcpServerId==="")throw invalidArgumentError("mcp_server_id is required");if(input.org==="")throw invalidArgumentError("org is required for connect");let mcpServer;try{mcpServer=await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("mcp_server",mcpServerId):internalError(error2,"failed to load mcp server")}await authorizeDirect(McpServerCommandController.method.startConnect,deps.authorizer,identity2,input);let engineState=deps.engineState();if(!engineState.connected)throw failedPreconditionError("connect is not available: Temporal not configured");let connectStatus=mcpServer.status?.connectStatus;if(connectStatus?.phase===ConnectPhase.connecting&&await engineState.engine.isConnectRunRunning(connectStatus.workflowId))return deps.logger.info("StartConnect attached to in-flight connect operation",{mcp_server_id:mcpServerId,workflow_id:connectStatus.workflowId}),mcpServer;let prepared=await prepareConnect(deps,mcpServer,input,identity2),warning2=await runnerQueueWarning(engineState.engine),run;try{run=await engineState.engine.startOrAttachConnect(mcpServerId,prepared.workflowInput,ASYNC_CONNECT_TIMEOUT.ms)}catch(error2){throw prepared.ecResourceId!==""&&await deleteConnectExecutionContext(deps,prepared.ecResourceId,prepared.executionId),deps.logger.error("Failed to start MCP connect workflow",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)}),internalError(error2,"failed to start connect workflow")}if(run.attached){prepared.ecResourceId!==""&&await deleteConnectExecutionContext(deps,prepared.ecResourceId,prepared.executionId);try{return await deps.store.getResource(ApiResourceKind.mcp_server,mcpServerId,McpServerSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("mcp_server",mcpServerId):internalError(error2,"failed to load mcp server")}}let persisted;try{persisted=await persistConnectStarting(deps.store,mcpServerId,run.workflowId,warning2)}catch(error2){throw detachSettle(deps,mcpServer,run,prepared),internalError(error2,"failed to record connect operation")}return detachSettle(deps,mcpServer,run,prepared),persisted}function detachSettle(deps,mcpServer,run,prepared){settleConnectAsync(deps,mcpServer,run,prepared.ecResourceId,prepared.executionId).catch(error2=>{deps.logger.warn("Async connect settle task failed unexpectedly",{mcp_server_id:mcpServer.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})})}async function settleConnectAsync(deps,mcpServer,run,ecResourceId,executionId){let mcpServerId=mcpServer.metadata?.id??"";try{let outcome=await run.result(ASYNC_CONNECT_TIMEOUT.ms+BEST_EFFORT_CONNECT_GET_BUFFER_MS);if(!outcome.ok){let failure=mapConnectFailure(deps.logger,mcpServer,run.workflowId,outcome.failure,ASYNC_CONNECT_TIMEOUT);await persistConnectFailure(deps.store,deps.logger,mcpServerId,failure);return}let persisted,toolApprovalCount;try{({persisted,toolApprovalCount}=await persistConnectResult(deps.store,mcpServerId,run.workflowId,outcome.output))}catch(error2){if(error2 instanceof ResourceNotFoundError){deps.logger.info("Skipping async connect persistence: MCP server deleted before connect completed",{mcp_server_id:mcpServerId});return}deps.logger.warn("Failed to persist async connect result",{mcp_server_id:mcpServerId,error:error2 instanceof Error?error2.message:String(error2)});return}deps.logger.info("Async MCP server connect completed and stored",{workflow_id:run.workflowId,mcp_server_id:mcpServerId,tools:persisted.status?.discoveredCapabilities?.tools.length??0,resource_templates:persisted.status?.discoveredCapabilities?.resourceTemplates.length??0,tool_approvals:toolApprovalCount})}finally{ecResourceId!==""&&await deleteConnectExecutionContext(deps,ecResourceId,executionId)}}async function runnerQueueWarning(engine){let hasPollers=await engine.hasRunnerQueuePollers();return hasPollers===void 0||hasPollers?"":RUNNER_QUEUE_WARNING}function newValidateDefaultEnabledToolsStep(){return{name:"ValidateDefaultEnabledTools",execute(ctx){let mcpServer=ctx.newState,requested=mcpServer.spec?.defaultEnabledTools??[];if(requested.length===0)return;let caps=mcpServer.status?.discoveredCapabilities;if(caps===void 0)return;let classification=classify(caps,requested);if(isValidClassification(classification))return;let problems=[];throw classification.unknown.length>0&&problems.push(`default_enabled_tools names tool(s) this server does not expose: ${quoteJoin(classification.unknown)}`),classification.resourceTemplates.length>0&&problems.push(`default_enabled_tools names resource template(s): ${quoteJoin(classification.resourceTemplates)} \u2014 resource templates are read-only data endpoints, not callable tools, and must not appear in default_enabled_tools`),invalidArgumentError(`MCP server '${mcpServer.metadata?.slug??""}': ${problems.join("; ")}. Discovered tools: ${quoteJoin(toolNames(caps))}. If the server's toolset changed, run 'stigmer connect' on it to refresh discovered capabilities.`)}}}function newEnrichOAuthStatusStep(store,logger2){return{name:"EnrichOAuthStatus",async execute(ctx){let mcpServer=ctx.get(TARGET_RESOURCE_KEY);if(mcpServer===void 0)return;let ref=mcpServer.spec?.auth?.oauthAppRef;if((ref?.slug??"")==="")return;let oauthApp;try{oauthApp=await resolveOAuthAppRef(store,ref,logger2)}catch(error2){logger2.warn("OAuthApp lookup failed; returning MCP server without oauth_status enrichment",{mcpServerId:mcpServer.metadata?.id??"",oauthAppSlug:ref?.slug??"",error:error2 instanceof Error?error2.message:String(error2)});return}if(oauthApp===void 0){logger2.debug("OAuthApp not found for ref; skipping oauth_status enrichment",{mcpServerId:mcpServer.metadata?.id??"",oauthAppSlug:ref?.slug??""});return}let approvalStatus=oauthApp.spec?.vendorApprovalStatus??VendorApprovalStatus.UNSPECIFIED,docsUrl=oauthApp.spec?.vendorApprovalDocsUrl??"";approvalStatus===VendorApprovalStatus.UNSPECIFIED&&docsUrl===""||(mcpServer.status??=create2(McpServerStatusSchema,{}),mcpServer.status.oauthStatus=create2(OAuthStatusSchema,{vendorApprovalStatus:approvalStatus,vendorApprovalDocsUrl:docsUrl}))}}}function registerMcpServerServices(router,deps){router.service(McpServerCommandController,{apply:(server,ctx)=>apply11(deps,server,ctx),create:(server,ctx)=>createMcpServer(deps,server,ctx),update:(server,ctx)=>update14(deps,server,ctx),updateVisibility:(input,ctx)=>updateVisibility4(deps,input,ctx),delete:(input,ctx)=>deleteMcpServer(deps,input,ctx),connect:(input,ctx)=>connect(deps.connect,input,callerIdentityOf(ctx)),startConnect:(input,ctx)=>startConnect(deps.connect,input,callerIdentityOf(ctx)),initiateOAuthConnect:(input,ctx)=>initiateOAuthConnect(deps.connect,input,callerIdentityOf(ctx)),completeOAuthConnect:(input,ctx)=>completeOAuthConnect(deps.connect,input,callerIdentityOf(ctx)),disconnectOAuth:(input,ctx)=>disconnectOAuth(deps.connect,input,callerIdentityOf(ctx)),setOrgOAuthApp:()=>{throw orgOAuthAppUnimplemented("SetOrgOAuthApp")},deleteOrgOAuthApp:()=>{throw orgOAuthAppUnimplemented("DeleteOrgOAuthApp")}}),router.service(McpServerQueryController,{get:(id,ctx)=>get19(deps,id,ctx),getByReference:(ref,ctx)=>getByReference11(deps,ref,ctx),getOAuthGrantStatus:(input,ctx)=>getOAuthGrantStatus(deps.connect,input,callerIdentityOf(ctx)),getOrgOAuthApp:()=>{throw orgOAuthAppUnimplemented("GetOrgOAuthApp")}})}function orgOAuthAppUnimplemented(method){return new ConnectError(`method ${method} not implemented`,Code.Unimplemented)}function kindOf18(ctx){return ctx.values.get(apiResourceKindKey)}function endpointAuthDeps(deps){return{outboundFetch:deps.connect.outboundFetch,logger:deps.logger}}async function createMcpServer(deps,server,ctx){let reqCtx=new RequestContext(McpServerSchema,server,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-create",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.create,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newCompleteEndpointAuthStep(endpointAuthDeps(deps))).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,mcpServerSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update14(deps,server,ctx){let reqCtx=new RequestContext(McpServerSchema,server,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-update",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newGuardPluginManagedStep(deps.store)).addStep(newBuildUpdateStateStep()).addStep(newCompleteEndpointAuthStep(endpointAuthDeps(deps))).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newValidateDefaultEnabledToolsStep()).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store)).addStep(newPersistStep(deps.store)).addStep(newIndexSearchStep(deps.store,mcpServerSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function apply11(deps,server,ctx){let reqCtx=new RequestContext(McpServerSchema,server,callerIdentityOf(ctx),kindOf18(ctx));await newPipeline("mcpserver-apply",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");let result=shouldCreate?await createMcpServer(deps,server,ctx):await update14(deps,withResolvedApplyId(McpServerSchema,server,reqCtx),ctx);return startBestEffortConnect(deps.connect,result).catch(error2=>{deps.logger.warn("Best-effort connect task failed unexpectedly",{mcp_server_id:result.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}),result}async function deleteMcpServer(deps,input,ctx){let reqCtx=new RequestContext(McpServerCommandController.method.delete.input,input,callerIdentityOf(ctx),kindOf18(ctx));reqCtx.set(RESOURCE_ID_KEY,input.resourceId),await newPipeline("mcpserver-delete",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadExistingForDeleteStep(deps.store,McpServerSchema)).addStep(newGuardPluginManagedStep(deps.store)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted mcp server not found in context"),"deleted mcp server not found in context");return deleted}var UPDATE_VISIBILITY_MCP_SERVER_KEY="updateVisibilityMcpServer";async function updateVisibility4(deps,input,ctx){let reqCtx=new RequestContext(McpServerCommandController.method.updateVisibility.input,input,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-update-visibility",deps.logger).addStep(newAuthorizeStep(McpServerCommandController.method.updateVisibility,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadMcpServerForVisibilityUpdateStep(deps.store)).addStep(newGuardPluginManagedStep(deps.store,{existingKey:UPDATE_VISIBILITY_MCP_SERVER_KEY})).addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_MCP_SERVER_KEY)).addStep(newValidateVisibilityUpdateStep()).addStep(newSetMcpServerVisibilityStep()).addStep(newPersistMcpServerForVisibilityUpdateStep(deps.store)).addStep(newUpdateVisibilityTuplesStep(deps.authorizationLifecycle,UPDATE_VISIBILITY_MCP_SERVER_KEY)).addStep(newIndexMcpServerAfterVisibilityUpdateStep(deps.store,deps.logger)).build().execute(reqCtx),reqCtx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY)}function newLoadMcpServerForVisibilityUpdateStep(store){return{name:"LoadMcpServerForVisibilityUpdate",async execute(ctx){let input=ctx.input,mcpServer;try{mcpServer=await store.getResource(ctx.apiResourceKind,input.resourceId,McpServerSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("mcp_server",input.resourceId):internalError(error2,"failed to load mcp server")}ctx.set(UPDATE_VISIBILITY_MCP_SERVER_KEY,mcpServer)}}}function newSetMcpServerVisibilityStep(){return{name:"SetMcpServerVisibility",execute(ctx){let mcpServer=ctx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY);mcpServer.metadata!==void 0&&(mcpServer.metadata.visibility=ctx.input.visibility),setAuditFieldsForUpdate(McpServerSchema,mcpServer,"status_audit",ctx.callerIdentity)}}}function newPersistMcpServerForVisibilityUpdateStep(store){return{name:"PersistMcpServerForVisibilityUpdate",async execute(ctx){let mcpServer=ctx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY);try{await store.saveResource(ctx.apiResourceKind,mcpServer.metadata?.id??"",McpServerSchema,mcpServer)}catch(error2){throw internalError(error2,"failed to save mcp server")}}}}function newIndexMcpServerAfterVisibilityUpdateStep(store,logger2){return{name:"IndexMcpServerAfterVisibilityUpdate",async execute(ctx){let mcpServer=ctx.get(UPDATE_VISIBILITY_MCP_SERVER_KEY),entry=mcpServerSearchExtractor.getSearchIndexEntry(mcpServer);if(entry===void 0){logger2.warn("IndexMcpServerAfterVisibilityUpdate: extractor returned nil, skipping",{id:mcpServer.metadata?.id??""});return}try{await store.upsertSearchIndex(ctx.apiResourceKind,mcpServer.metadata?.id??"",entry)}catch(error2){logger2.warn("IndexMcpServerAfterVisibilityUpdate: failed (best-effort)",{id:mcpServer.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}}}}async function get19(deps,id,ctx){let reqCtx=new RequestContext(McpServerQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-get",deps.logger).addStep(newAuthorizeStep(McpServerQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,McpServerSchema)).addStep(newEnrichOAuthStatusStep(deps.store,deps.logger)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}async function getByReference11(deps,ref,ctx){let reqCtx=new RequestContext(McpServerQueryController.method.getByReference.input,ref,callerIdentityOf(ctx),kindOf18(ctx));return await newPipeline("mcpserver-get-by-reference",deps.logger).addStep(newAuthorizeStep(McpServerQueryController.method.getByReference,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadByReferenceStep(deps.store,McpServerSchema)).addStep(newAuthorizeResolvedTargetStep(deps.authorizer,loadedTargetAsMethod(McpServerQueryController.method.get))).addStep(newEnrichOAuthStatusStep(deps.store,deps.logger)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}function registerPlatformServices(router,deps){router.service(PlatformQueryController,{getServerInfo:()=>getServerInfo(deps),getLicenseStatus:()=>getLicenseStatus(deps),getRunnerBootstrapConfig:(_input,ctx)=>getRunnerBootstrapConfig(deps,ctx),getRunnerScopedToken:(input,ctx)=>getRunnerScopedToken(deps,input,ctx)})}function getServerInfo(deps){return create2(GetServerInfoOutputSchema,{edition:deps.edition,version:deps.version,authenticationRequired:deps.authenticationRequired})}async function getLicenseStatus(deps){let now=deps.now(),report=await deps.licenseStatus.status(now),output=create2(GetLicenseStatusOutputSchema,{state:report.state,checkedAt:timestampFromDate(now)});switch(report.state){case LicenseState.absent:return output;case LicenseState.invalid:return output.keyId=report.keyId,output;case LicenseState.valid:case LicenseState.expiring:case LicenseState.grace:case LicenseState.expired:return output.keyId=report.keyId,output.claims=report.claims,output;default:{let exhaustive=report;throw new Error(`unhandled license report: ${JSON.stringify(exhaustive)}`)}}}async function getRunnerBootstrapConfig(deps,ctx){let output=create2(GetRunnerBootstrapConfigOutputSchema,{temporalAddress:deps.runnerBootstrapTemporalAddress,temporalNamespace:deps.temporalNamespace}),bootstrapCredentials=deps.runnerAuthService.bootstrapCredentials?.bind(deps.runnerAuthService);if(bootstrapCredentials===void 0)return output;try{let credentials=await bootstrapCredentials(callerIdentityOf(ctx));credentials.accessToken!==void 0&&(output.runnerAccessToken=credentials.accessToken.token,output.tokenType="Bearer",output.runnerAccessTokenExpiresInSeconds=credentials.accessToken.expiresInSeconds),credentials.payloadKeys!==void 0&&(output.payloadEncryptionKey=credentials.payloadKeys.keyBase64,output.payloadEncryptionKeyId=credentials.payloadKeys.keyId,output.payloadEncryptionSecondaryKey=credentials.payloadKeys.secondaryKeyBase64??"",output.payloadEncryptionSecondaryKeyId=credentials.payloadKeys.secondaryKeyId??"")}catch(error2){deps.logger.warn("Bootstrap credentials unavailable \u2014 answering coordinates without them",{error:error2 instanceof Error?error2.message:String(error2)})}return output}async function getRunnerScopedToken(deps,input,ctx){let exchange=deps.runnerAuthService.exchangeScopedToken?.bind(deps.runnerAuthService);if(exchange!==void 0){let minted=await exchange(exchangeRequestOf(input),callerIdentityOf(ctx));return minted.minted?create2(GetRunnerScopedTokenOutputSchema,{runnerScopedToken:minted.token,tokenType:"Bearer",expiresInSeconds:minted.expiresInSeconds}):create2(GetRunnerScopedTokenOutputSchema)}let executionId;switch(input.scope.case){case"agentExecutionId":executionId=input.scope.value;break;case"workflowExecutionId":executionId=input.scope.value;break;case"poolClaim":case"renewal":case void 0:return create2(GetRunnerScopedTokenOutputSchema);default:{let exhaustive=input.scope;throw new Error(`unhandled scope arm: ${JSON.stringify(exhaustive)}`)}}if(executionId===""||!deps.runnerAuthService.isEnabled(TOKEN_TYPE_EXECUTION_SCOPED))return create2(GetRunnerScopedTokenOutputSchema);try{let minted=deps.runnerAuthService.mint(TOKEN_TYPE_EXECUTION_SCOPED,executionId,0);return create2(GetRunnerScopedTokenOutputSchema,{runnerScopedToken:minted.token,tokenType:"Bearer",expiresInSeconds:minted.ttlSeconds})}catch(error2){return deps.logger.warn("failed to mint runner scoped token \u2014 answering not-minted",{executionId,error:error2 instanceof Error?error2.message:String(error2)}),create2(GetRunnerScopedTokenOutputSchema)}}function exchangeRequestOf(input){switch(input.scope.case){case"agentExecutionId":return{arm:"agent-execution",executionId:input.scope.value};case"workflowExecutionId":return{arm:"workflow-execution",executionId:input.scope.value};case"poolClaim":return{arm:"pool-claim",sessionId:input.scope.value.sessionId};case"renewal":return{arm:"renewal"};case void 0:return{arm:"unset"};default:{let exhaustive=input.scope;throw new Error(`unhandled scope arm: ${JSON.stringify(exhaustive)}`)}}}var SERVER_VERSION="3.38.1";var file_ai_stigmer_agentic_session_v1_io=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9pby5wcm90bxIdYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEiIgoJU2Vzc2lvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiIAoHQWdlbnRJZBIVCgV2YWx1ZRgBIAEoCUIGukgDyAEBInQKC1Nlc3Npb25MaXN0EhMKC3RvdGFsX3BhZ2VzGAEgASgFEjcKB2VudHJpZXMYAiADKAsyJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uEhcKD25leHRfcGFnZV90b2tlbhgDIAEoCSJgChNMaXN0U2Vzc2lvbnNSZXF1ZXN0EhoKCXBhZ2Vfc2l6ZRgBIAEoBUIHukgEGgIoABISCgpwYWdlX3Rva2VuGAIgASgJEgwKBHRhZ3MYAyADKAkSCwoDb3JnGAQgASgJIncKIkxpc3RTZXNzaW9uc0J5QWdlbnRJbnN0YW5jZVJlcXVlc3QSIQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCBrpIA8gBARIaCglwYWdlX3NpemUYAiABKAVCB7pIBBoCKAASEgoKcGFnZV90b2tlbhgDIAEoCSJqChxMaXN0U2Vzc2lvbnNCeUNoYW5uZWxSZXF1ZXN0EhoKCmNoYW5uZWxfaWQYASABKAlCBrpIA8gBARIaCglwYWdlX3NpemUYAiABKAVCB7pIBBoCKAASEgoKcGFnZV90b2tlbhgDIAEoCSJCChtVcGRhdGVTZXNzaW9uU3ViamVjdFJlcXVlc3QSEgoCaWQYASABKAlCBrpIA8gBARIPCgdzdWJqZWN0GAIgASgJYgZwcm90bzM",[file_ai_stigmer_agentic_session_v1_api,file_buf_validate_validate]),SessionIdSchema=messageDesc2(file_ai_stigmer_agentic_session_v1_io,0);var SessionListSchema=messageDesc2(file_ai_stigmer_agentic_session_v1_io,2);var file_ai_stigmer_agentic_session_v1_command=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9jb21tYW5kLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MTLtBQoYU2Vzc2lvbkNvbW1hbmRDb250cm9sbGVyElcKBWFwcGx5EiYuYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuU2Vzc2lvbhomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24SpQEKBmNyZWF0ZRImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24aJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uIkvCuBhHCAgQHiIMbWV0YWRhdGEub3JnKjN1bmF1dGhvcml6ZWQgdG8gY3JlYXRlIHNlc3Npb24gaW4gdGhpcyBvcmdhbml6YXRpb24SjwEKBnVwZGF0ZRImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24aJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uIjXCuBgxCAIQKiILbWV0YWRhdGEuaWQqHnVuYXV0aG9yaXplZCB0byB1cGRhdGUgc2Vzc2lvbhKpAQoNdXBkYXRlU3ViamVjdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25TdWJqZWN0UmVxdWVzdBomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24iNMK4GDAIAhAqIgJpZComdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBzZXNzaW9uIHN1YmplY3QSiwEKBmRlbGV0ZRIoLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb25JZBomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24iL8K4GCsIAxAqIgV2YWx1ZSoedW5hdXRob3JpemVkIHRvIGRlbGV0ZSBzZXNzaW9uGgSg/ysqYgZwcm90bzM",[file_ai_stigmer_agentic_session_v1_api,file_ai_stigmer_agentic_session_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SessionCommandController=serviceDesc(file_ai_stigmer_agentic_session_v1_command,0);var file_ai_stigmer_agentic_session_v1_query=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9xdWVyeS5wcm90bxIdYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEyoQQKFlNlc3Npb25RdWVyeUNvbnRyb2xsZXIShQEKA2dldBIoLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb25JZBomLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb24iLMK4GCgIARAqIgV2YWx1ZSobdW5hdXRob3JpemVkIHRvIGdldCBzZXNzaW9uEmwKBGxpc3QSMi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5MaXN0U2Vzc2lvbnNSZXF1ZXN0GiouYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuU2Vzc2lvbkxpc3QiBNC4GAESigEKE2xpc3RCeUFnZW50SW5zdGFuY2USQS5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5MaXN0U2Vzc2lvbnNCeUFnZW50SW5zdGFuY2VSZXF1ZXN0GiouYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuU2Vzc2lvbkxpc3QiBNC4GAESfgoNbGlzdEJ5Q2hhbm5lbBI7LmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc0J5Q2hhbm5lbFJlcXVlc3QaKi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdCIE0LgYARoEoP8rKmIGcHJvdG8z",[file_ai_stigmer_agentic_session_v1_api,file_ai_stigmer_agentic_session_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SessionQueryController=serviceDesc(file_ai_stigmer_agentic_session_v1_query,0);function runAgentInstanceDeniedMessage2(agentInstanceId){return`unauthorized to run agent instance '${agentInstanceId}'`}function sessionRunTarget(session){let agentInstanceId=session.spec?.agentInstanceId??"";if(agentInstanceId!=="")return{...RUN_GATE_CHECKS.agentInstance,resourceId:agentInstanceId,deniedMessage:runAgentInstanceDeniedMessage2(agentInstanceId)}}var sessionSearchExtractor={kind:ApiResourceKind.session,schema:SessionSchema,getSearchSummary(resource){return resource.spec?.subject??""},toSearchResult(resource,score){let session=resource;return buildSearchResult({kind:ApiResourceKind.session,metadata:session.metadata,summary:session.spec?.subject??"",score,createdAt:session.status?.audit?.specAudit?.createdAt,updatedAt:session.status?.audit?.specAudit?.updatedAt})},getSearchIndexEntry(resource){let session=resource,metadata=session.metadata;if(metadata!==void 0)return{name:metadata.name,description:session.spec?.subject??"",tags:metadata.tags.join(" "),org:metadata.org,visibility:ApiResourceVisibility[metadata.visibility]??"",createdAt:Number(session.status?.audit?.specAudit?.createdAt?.seconds??0n)}}};var SESSION_CHANNEL_ID_LABEL="stigmer.ai/channel-id",sessionListIndex=declareListIndex({kind:ApiResourceKind.session,schema:SessionSchema,revision:1,keys:{agent_instance:field2("spec.agent_instance_id"),channel:label(SESSION_CHANNEL_ID_LABEL)}});var LIST_RESULT_KEY8="listResult";function newValidateHarnessImmutabilityStep(){return{name:"ValidateHarnessImmutability",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)return;let existingSpec=existing.spec;if(existingSpec===void 0||existingSpec.harnessStateId==="")return;let inputSpec=ctx.input.spec;if(inputSpec===void 0)return;let existingHarness=existingSpec.harness,inputHarness=inputSpec.harness;if(existingHarness===Harness.UNSPECIFIED&&(existingHarness=Harness.NATIVE),inputHarness===Harness.UNSPECIFIED&&(inputHarness=Harness.NATIVE),inputHarness!==existingHarness)throw failedPreconditionError("session harness cannot be changed after the first execution \u2014 each harness owns its conversation state independently")}}}var EXECUTION_TARGET_GO_NAMES={[ExecutionTarget.UNSPECIFIED]:"EXECUTION_TARGET_UNSPECIFIED",[ExecutionTarget.LOCAL]:"EXECUTION_TARGET_LOCAL",[ExecutionTarget.CLOUD]:"EXECUTION_TARGET_CLOUD"};function newValidateExecutionTargetImmutabilityStep(temporalConfig){return{name:"ValidateExecutionTargetImmutability",execute(ctx){let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0)return;let existingSpec=existing.spec;if(existingSpec===void 0||existingSpec.harnessStateId==="")return;let inputSpec=ctx.input.spec;if(inputSpec===void 0)return;let existingTarget=temporalConfig.resolveExecutionTarget(existingSpec.executionTarget),inputTarget=temporalConfig.resolveExecutionTarget(inputSpec.executionTarget);if(inputTarget!==existingTarget)throw failedPreconditionError(`session execution_target cannot be changed after the first execution (${EXECUTION_TARGET_GO_NAMES[existingTarget]} \u2192 ${EXECUTION_TARGET_GO_NAMES[inputTarget]}; unset resolves to the deployment default, ${temporalConfig.defaultExecutionTarget}) \u2014 workspace state may not be portable between local and cloud environments`)}}}function newRecordHarnessStateHistoryStep(){return{name:"RecordHarnessStateHistory",execute(ctx){let mergedSpec=ctx.newState.spec;if(mergedSpec===void 0)return;let existing=ctx.get(EXISTING_RESOURCE_KEY);if(existing===void 0||existing.spec===void 0)return;let existingSpec=existing.spec,history=[...existingSpec.harnessStateIdHistory],previousId=existingSpec.harnessStateId;previousId!==""&&previousId!==mergedSpec.harnessStateId&&!history.includes(previousId)&&history.push(previousId),mergedSpec.harnessStateIdHistory=history}}}function isActiveExecutionPhase(phase){switch(phase){case ExecutionPhase.EXECUTION_PENDING:case ExecutionPhase.EXECUTION_IN_PROGRESS:case ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL:case ExecutionPhase.EXECUTION_PAUSED:return!0;default:return!1}}async function listExecutionsBySession(store,logger2,sessionId){let rows;try{rows=await store.queryResources(agentExecutionListIndex,{anyKey:[{name:"session",value:sessionId}]})}catch(error2){throw internalError(error2,"failed to list agent executions")}let executions=[];for(let row of rows)try{executions.push(fromBinary2(AgentExecutionSchema,row.data))}catch(error2){logger2.warn("Failed to unmarshal execution, skipping",{error:error2 instanceof Error?error2.message:String(error2)})}return executions}function newRejectDeleteWithActiveExecutionsStep(store,logger2){return{name:"RejectDeleteWithActiveExecutions",async execute(ctx){let sessionId=requireSessionId(ctx),executions=await listExecutionsBySession(store,logger2,sessionId),activeCount=0;for(let execution of executions)isActiveExecutionPhase(execution.status?.phase??ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED)&&activeCount++;if(activeCount>0)throw failedPreconditionError(`session has ${activeCount} active execution(s); cancel them or wait for completion before deleting`)}}}function newCascadeDeleteAgentExecutionsStep(store,logger2){return{name:"CascadeDeleteAgentExecutions",async execute(ctx){let sessionId=requireSessionId(ctx),executions=await listExecutionsBySession(store,logger2,sessionId);if(executions.length!==0){for(let execution of executions){let executionId=execution.metadata?.id??"";try{await store.deleteResource(ApiResourceKind.agent_execution,executionId)}catch(error2){throw internalError(error2,`failed to cascade-delete execution ${executionId} of session ${sessionId}`)}try{await store.deleteSearchIndex(ApiResourceKind.agent_execution,executionId)}catch(error2){logger2.warn("CascadeDeleteAgentExecutions: failed to remove search index entry (best-effort)",{executionId,error:error2 instanceof Error?error2.message:String(error2)})}}logger2.info("Cascade-deleted executions of session",{sessionId,count:executions.length})}}}}function requireSessionId(ctx){let sessionId=ctx.get(RESOURCE_ID_KEY);if(typeof sessionId!="string"||sessionId==="")throw internalError(new Error("session id not found in context (ExtractResourceId must run first)"),"session id not found in context (ExtractResourceId must run first)");return sessionId}function newListAllSessionsStep(store,logger2,listReadScope){return{name:"ListAllSessions",async execute(ctx){let input=ctx.input,page=await readSessionPage(store,logger2,listReadScope,ctx.callerIdentity,ctx.input,{query:{org:input.org},fingerprint:{lane:"session.list",org:input.org,tags:input.tags}});ctx.set(LIST_RESULT_KEY8,page)}}}function newFilterByAgentInstanceStep(store,logger2,listReadScope){return{name:"FilterByAgentInstance",async execute(ctx){let agentInstanceId=ctx.input.agentInstanceId;if(agentInstanceId==="")throw invalidArgumentError("agent_instance_id is required");let page=await readSessionPage(store,logger2,listReadScope,ctx.callerIdentity,ctx.input,{query:{anyKey:[{name:"agent_instance",value:agentInstanceId}]},fingerprint:{lane:"session.listByAgentInstance",agentInstanceId}});ctx.set(LIST_RESULT_KEY8,page)}}}function newAuthorizeChannelAccessStep(authorizer){return newAuthorizeResolvedTargetStep(authorizer,({input})=>input.channelId===""?[]:[{permission:IamPermission.can_view,resourceKind:ApiResourceKind.agent_channel,resourceId:input.channelId,deniedMessage:"unauthorized to list channel conversations"}],"AuthorizeChannelAccess")}function newFilterByChannelStep(store,logger2,listReadScope){return{name:"FilterByChannel",async execute(ctx){let channelId=ctx.input.channelId;if(channelId==="")throw invalidArgumentError("channel_id is required");let page=await readSessionPage(store,logger2,listReadScope,ctx.callerIdentity,ctx.input,{query:{anyKey:[{name:"channel",value:channelId}]},fingerprint:{lane:"session.listByChannel",channelId}});ctx.set(LIST_RESULT_KEY8,page)}}}async function readSessionPage(store,logger2,listReadScope,caller,request,lane){let page=await readListPage({store,declaration:sessionListIndex,query:lane.query,request,fingerprint:listPageFingerprint(lane.fingerprint),decode:data=>{try{return fromBinary2(SessionSchema,data)}catch(error2){logger2.warn("Failed to unmarshal session, skipping",{error:error2 instanceof Error?error2.message:String(error2)});return}},scope:sessions=>restrictListByReadScope(listReadScope,caller,ApiResourceKind.session,sessions,""),failure:"failed to list sessions"});return create2(SessionListSchema,{entries:page.entries,nextPageToken:page.nextPageToken,totalPages:page.nextPageToken===""?1:0})}function registerSessionServices(router,deps){router.service(SessionCommandController,{apply:(session,ctx)=>apply12(deps,session,ctx),create:(session,ctx)=>createSession(deps,session,ctx),update:(session,ctx)=>update15(deps,session,ctx),updateSubject:(req,ctx)=>updateSubject(deps,req,callerIdentityOf(ctx)),delete:(id,ctx)=>deleteSession(deps,id,ctx)}),router.service(SessionQueryController,{get:(id,ctx)=>get20(deps,id,ctx),list:(req,ctx)=>list10(deps,req,ctx),listByAgentInstance:(req,ctx)=>listByAgentInstance(deps,req,ctx),listByChannel:(req,ctx)=>listByChannel(deps,req,ctx)})}function kindOf19(ctx){return ctx.values.get(apiResourceKindKey)}async function createSession(deps,session,ctx){let reqCtx=new RequestContext(SessionSchema,session,callerIdentityOf(ctx),kindOf19(ctx)),builder2=newPipeline("session-create",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.create,deps.authorizer)).addStep(newAuthorizeRunTargetStep(deps.authorizer,sessionRunTarget)).addStep(newValidateProtoStep()).addStep(newValidateVisibilityStep()).addStep(newResolveSlugStep()).addStep(newCheckDuplicateStep(deps.store)).addStep(newBuildNewStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newNormalizeReferencesStep()).addStep(newValidateReferencesStep(deps.store));for(let step of stepsForSlot(deps.gateSteps,"session-create:pre-side-effect-gate"))builder2.addStep(step);return await builder2.addStep(newPersistStep(deps.store)).addStep(newCreateAuthorizationTuplesStep(deps.authorizationLifecycle,deps.logger)).addStep(newIndexSearchStep(deps.store,sessionSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function update15(deps,session,ctx){let reqCtx=new RequestContext(SessionSchema,session,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-update",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.update,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadExistingStep(deps.store)).addStep(newValidateHarnessImmutabilityStep()).addStep(newValidateExecutionTargetImmutabilityStep(deps.temporalConfig)).addStep(newBuildUpdateStateStep()).addStep(newGuardReservedLabelsStep(deps.authorizer)).addStep(newRecordHarnessStateHistoryStep()).addStep(newPersistStep(deps.store)).addStep(newIndexSearchStep(deps.store,sessionSearchExtractor,deps.logger)).build().execute(reqCtx),reqCtx.newState}async function apply12(deps,session,ctx){let reqCtx=new RequestContext(SessionSchema,session,callerIdentityOf(ctx),kindOf19(ctx));await newPipeline("session-apply",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.apply,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newResolveSlugStep()).addStep(newLoadForApplyStep(deps.store)).build().execute(reqCtx);let shouldCreate=reqCtx.get(SHOULD_CREATE_KEY);if(typeof shouldCreate!="boolean")throw internalError(new Error("apply pipeline did not set shouldCreate flag"),"apply operation failed to determine create vs update");return shouldCreate?createSession(deps,session,ctx):update15(deps,withResolvedApplyId(SessionSchema,session,reqCtx),ctx)}async function deleteSession(deps,sessionId,ctx){let reqCtx=new RequestContext(SessionCommandController.method.delete.input,sessionId,callerIdentityOf(ctx),kindOf19(ctx));await newPipeline("session-delete",deps.logger).addStep(newAuthorizeStep(SessionCommandController.method.delete,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newExtractResourceIdStep()).addStep(newLoadExistingForDeleteStep(deps.store,SessionSchema)).addStep(newRejectDeleteWithActiveExecutionsStep(deps.store,deps.logger)).addStep(newCascadeDeleteAgentExecutionsStep(deps.store,deps.logger)).addStep(newDeleteResourceStep(deps.store)).addStep(newCleanupIamPoliciesStep(deps.authorizationLifecycle,deps.logger)).addStep(newDeleteSearchIndexStep(deps.store,deps.logger)).build().execute(reqCtx);let deleted=reqCtx.get(EXISTING_RESOURCE_KEY);if(deleted===void 0)throw internalError(new Error("deleted session not found in context"),"deleted session not found in context");return await deprovisionSessionSandboxBestEffort(deps.sandboxLane,deps.logger,deleted.metadata?.id??""),deleted}async function updateSubject(deps,req,identity2){if(req.id==="")throw invalidArgumentError("id is required");let kind=ApiResourceKind.session,session;try{session=await deps.store.getResource(kind,req.id,SessionSchema)}catch(error2){throw error2 instanceof ResourceNotFoundError?notFoundError("session",req.id):internalError(error2,"failed to load session")}await authorizeDirect(SessionCommandController.method.updateSubject,deps.authorizer,identity2,req),session.spec===void 0&&(session.spec=create2(SessionSpecSchema,{})),session.spec.subject=req.subject,setAuditFieldsForUpdate(SessionSchema,session,"spec_audit",identity2);try{await deps.store.saveResource(kind,req.id,SessionSchema,session)}catch(error2){throw internalError(error2,"failed to persist session")}return await indexSessionSearch(deps,kind,session),session}async function indexSessionSearch(deps,kind,session){let entry=sessionSearchExtractor.getSearchIndexEntry(session);if(entry!==void 0)try{await deps.store.upsertSearchIndex(kind,session.metadata?.id??"",entry)}catch(error2){deps.logger.warn("UpdateSubject: failed to update search index (best-effort)",{id:session.metadata?.id??"",error:error2 instanceof Error?error2.message:String(error2)})}}async function get20(deps,id,ctx){let reqCtx=new RequestContext(SessionQueryController.method.get.input,id,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-get",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.get,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newLoadTargetStep(deps.store,SessionSchema)).build().execute(reqCtx),reqCtx.get(TARGET_RESOURCE_KEY)}async function list10(deps,req,ctx){let reqCtx=new RequestContext(SessionQueryController.method.list.input,req,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-list",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.list,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newListAllSessionsStep(deps.store,deps.logger,deps.listReadScope)).build().execute(reqCtx),requireListResult2(reqCtx.get(LIST_RESULT_KEY8))}async function listByAgentInstance(deps,req,ctx){let reqCtx=new RequestContext(SessionQueryController.method.listByAgentInstance.input,req,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-list-by-agent-instance",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.listByAgentInstance,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newFilterByAgentInstanceStep(deps.store,deps.logger,deps.listReadScope)).build().execute(reqCtx),requireListResult2(reqCtx.get(LIST_RESULT_KEY8))}async function listByChannel(deps,req,ctx){let reqCtx=new RequestContext(SessionQueryController.method.listByChannel.input,req,callerIdentityOf(ctx),kindOf19(ctx));return await newPipeline("session-list-by-channel",deps.logger).addStep(newAuthorizeStep(SessionQueryController.method.listByChannel,deps.authorizer)).addStep(newValidateProtoStep()).addStep(newAuthorizeChannelAccessStep(deps.authorizer)).addStep(newFilterByChannelStep(deps.store,deps.logger,deps.listReadScope)).build().execute(reqCtx),requireListResult2(reqCtx.get(LIST_RESULT_KEY8))}function requireListResult2(result){if(result===void 0)throw internalError(new Error("session list not found in context"),"session list not found in context");return result}var file_ai_stigmer_agentic_plugin_v1_io=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvcGx1Z2luL3YxL2lvLnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxIiEKCFBsdWdpbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEi9wIKEVB1c2hQbHVnaW5SZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEhAKCGFydGlmYWN0GAIgASgMEhsKE2FydGlmYWN0X3VwbG9hZF9yZWYYAyABKAkSUwoKdmlzaWJpbGl0eRgEIAEoDjI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVZpc2liaWxpdHlCCLpIBYIBAhABEg8KB21lc3NhZ2UYBSABKAk6twG6SLMBGrABCiNwdXNoX3BsdWdpbl9yZXF1ZXN0LmFydGlmYWN0X3NvdXJjZRJJZXhhY3RseSBvbmUgb2YgYXJ0aWZhY3QgKGlubGluZSBieXRlcykgb3IgYXJ0aWZhY3RfdXBsb2FkX3JlZiBtdXN0IGJlIHNldBo+KHRoaXMuYXJ0aWZhY3Quc2l6ZSgpID4gMCkgIT0gKHRoaXMuYXJ0aWZhY3RfdXBsb2FkX3JlZiAhPSAnJykiWAokQ3JlYXRlUGx1Z2luQXJ0aWZhY3RVcGxvYWRVcmxSZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEhsKCnNpemVfYnl0ZXMYAiABKANCB7pIBCICIAAiWAoXUGx1Z2luQXJ0aWZhY3RVcGxvYWRVcmwSCwoDdXJsGAEgASgJEhsKE2FydGlmYWN0X3VwbG9hZF9yZWYYAiABKAkSEwoLdHRsX3NlY29uZHMYAyABKAUihQEKDFBsdWdpbk1lbWJlchJNCgRraW5kGAEgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmQSCgoCaWQYAiABKAkSDAoEc2x1ZxgDIAEoCRIMCgRuYW1lGAQgASgJIlgKGUxpc3RQbHVnaW5NZW1iZXJzUmVzcG9uc2USOwoHbWVtYmVycxgBIAMoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luTWVtYmVyImsKF0xpc3RQbHVnaW5WZXJzaW9uc0lucHV0EhMKA29yZxgBIAEoCUIGukgDyAEBEhQKBHNsdWcYAiABKAlCBrpIA8gBARISCgpwYWdlX3Rva2VuGAMgASgJEhEKCXBhZ2Vfc2l6ZRgEIAEoBSLtAQoSUGx1Z2luVmVyc2lvbkVudHJ5Eg4KBmRpZ2VzdBgBIAEoCRItCglwdXNoZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkgKCXB1c2hlZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSDwoHbWVzc2FnZRgGIAEoCRIcChRhcnRpZmFjdF9zdG9yYWdlX2tleRgHIAEoCSKOAQoaTGlzdFBsdWdpblZlcnNpb25zUmVzcG9uc2USQgoIdmVyc2lvbnMYASADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLlBsdWdpblZlcnNpb25FbnRyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAViBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]);var PushPluginRequestSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,1);var PluginArtifactUploadUrlSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,3),PluginMemberSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,4),ListPluginMembersResponseSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,5);var PluginVersionEntrySchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,7),ListPluginVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_plugin_v1_io,8);var file_ai_stigmer_agentic_plugin_v1_command=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvcGx1Z2luL3YxL2NvbW1hbmQucHJvdG8SHGFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEy2gUKF1BsdWdpbkNvbW1hbmRDb250cm9sbGVyEqEBCgRwdXNoEi8uYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5QdXNoUGx1Z2luUmVxdWVzdBokLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luIkLCuBg+CCgQHiIDb3JnKjN1bmF1dGhvcml6ZWQgdG8gaW5zdGFsbCBwbHVnaW4gaW4gdGhpcyBvcmdhbml6YXRpb24S2AEKF2NyZWF0ZUFydGlmYWN0VXBsb2FkVXJsEkIuYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5DcmVhdGVQbHVnaW5BcnRpZmFjdFVwbG9hZFVybFJlcXVlc3QaNS5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLlBsdWdpbkFydGlmYWN0VXBsb2FkVXJsIkLCuBg+CCgQHiIDb3JnKjN1bmF1dGhvcml6ZWQgdG8gaW5zdGFsbCBwbHVnaW4gaW4gdGhpcyBvcmdhbml6YXRpb24SsAEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiQuYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5QbHVnaW4iP8K4GDsIAhA6IgtyZXNvdXJjZV9pZCoodW5hdXRob3JpemVkIHRvIHVwZGF0ZSBwbHVnaW4gdmlzaWJpbGl0eRKGAQoGZGVsZXRlEiYuYWkuc3RpZ21lci5hZ2VudGljLnBsdWdpbi52MS5QbHVnaW5JZBokLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luIi7CuBgqCAMQOiIFdmFsdWUqHXVuYXV0aG9yaXplZCB0byBkZWxldGUgcGx1Z2luGgSg/ys6YgZwcm90bzM",[file_ai_stigmer_agentic_plugin_v1_api,file_ai_stigmer_agentic_plugin_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),PluginCommandController=serviceDesc(file_ai_stigmer_agentic_plugin_v1_command,0);var file_ai_stigmer_agentic_plugin_v1_query=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvcGx1Z2luL3YxL3F1ZXJ5LnByb3RvEhxhaS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxMsMEChVQbHVnaW5RdWVyeUNvbnRyb2xsZXISgAEKA2dldBImLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luSWQaJC5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLlBsdWdpbiIrwrgYJwgBEDoiBXZhbHVlKhp1bmF1dGhvcml6ZWQgdG8gZ2V0IHBsdWdpbhJyCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRokLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luIgTQuBgBEqQBCgtsaXN0TWVtYmVycxImLmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuUGx1Z2luSWQaNy5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLkxpc3RQbHVnaW5NZW1iZXJzUmVzcG9uc2UiNMK4GDAIARA6IgV2YWx1ZSojdW5hdXRob3JpemVkIHRvIGxpc3QgcGx1Z2luIG1lbWJlcnMShQEKDGxpc3RWZXJzaW9ucxI1LmFpLnN0aWdtZXIuYWdlbnRpYy5wbHVnaW4udjEuTGlzdFBsdWdpblZlcnNpb25zSW5wdXQaOC5haS5zdGlnbWVyLmFnZW50aWMucGx1Z2luLnYxLkxpc3RQbHVnaW5WZXJzaW9uc1Jlc3BvbnNlIgTQuBgBGgSg/ys6YgZwcm90bzM",[file_ai_stigmer_agentic_plugin_v1_api,file_ai_stigmer_agentic_plugin_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),PluginQueryController=serviceDesc(file_ai_stigmer_agentic_plugin_v1_query,0);var PLATFORM_ARCHIVE_LIMITS={maxFiles:1e4,maxUncompressedSize:524288e3,maxCompressionRatio:100};var import_node_fs8=__toESM(require("node:fs"),1),import_node_path11=__toESM(require("node:path"),1),import_promises6=require("node:stream/promises"),SlotUnknownError=class extends Error{constructor(){super("upload reference unknown or expired"),this.name="SlotUnknownError"}},SlotConsumedError=class extends Error{constructor(){super("upload reference already carries an upload"),this.name="SlotConsumedError"}},SizeMismatchError=class extends Error{constructor(received,declared){super(`upload size mismatch: received ${received} bytes, declared ${declared}`),this.name="SizeMismatchError"}},STAGED_FILE_NAME=/^[0-9a-f]+\.zip$/,UploadSlots=class{root;stagingPrefix;ttlMs;maxSize;slots=new Map;stagingDir;now;constructor(root5,stagingPrefix,ttlMs,maxSize,now=Date.now){this.root=root5,this.stagingPrefix=stagingPrefix,this.ttlMs=ttlMs,this.maxSize=maxSize,this.stagingDir=import_node_path11.default.join(root5,stagingPrefix),import_node_fs8.default.rmSync(this.stagingDir,{recursive:!0,force:!0}),import_node_fs8.default.mkdirSync(this.stagingDir,{recursive:!0,mode:448}),this.now=now}reserve(key,declaredSize){if(declaredSize<=0||declaredSize>this.maxSize)throw new Error(`declared size ${declaredSize} outside (0, ${this.maxSize}]`);if(this.stagePath(key),this.slots.has(key))throw new Error(`staging key ${key} is already reserved`);return this.sweep(),this.slots.set(key,{declaredSize,expiresAtMs:this.now()+this.ttlMs,uploaded:!1}),{ttlMs:this.ttlMs}}async receive(key,body){let slot=this.slots.get(key);if(slot===void 0||this.now()>slot.expiresAtMs)throw new SlotUnknownError;if(slot.uploaded)throw new SlotConsumedError;let declared=slot.declaredSize,filePath=this.stagePath(key),written=0;try{await import_node_fs8.default.promises.mkdir(import_node_path11.default.dirname(filePath),{recursive:!0,mode:448}),await(0,import_promises6.pipeline)(body,limitBytes(declared+1,n3=>{written+=n3}),import_node_fs8.default.createWriteStream(filePath,{flags:"w",mode:384}))}catch(error2){throw await import_node_fs8.default.promises.rm(filePath,{force:!0}),new Error(`failed to receive upload: ${error2 instanceof Error?error2.message:String(error2)}`)}if(written!==declared)throw await import_node_fs8.default.promises.rm(filePath,{force:!0}),new SizeMismatchError(written,declared);let current=this.slots.get(key);if(current===void 0||this.now()>current.expiresAtMs)throw await import_node_fs8.default.promises.rm(filePath,{force:!0}),new SlotUnknownError;current.uploaded=!0}sweep(){let nowMs=this.now();for(let[key,slot]of this.slots)nowMs>slot.expiresAtMs&&(this.slots.delete(key),import_node_fs8.default.rmSync(this.stagePath(key),{force:!0}))}stagePath(key){if(!key.startsWith(this.stagingPrefix))throw new Error(`staging key ${key} is outside ${this.stagingPrefix}`);let fileName=key.slice(this.stagingPrefix.length);if(!STAGED_FILE_NAME.test(fileName))throw new Error(`staging key ${key} does not name a staged archive`);return import_node_path11.default.join(this.root,key)}};function limitBytes(limit,onBytes){return async function*(source){let remaining=limit;for await(let chunk of source){if(remaining<=0)return;let slice=chunk.length<=remaining?chunk:chunk.subarray(0,remaining);remaining-=slice.length,onBytes(slice.length),yield slice}}}var ARTIFACT_BYTES_KEY="pushArtifactBytes";function newResolveArtifactSourceStep(staging,binding){return{name:"ResolveArtifactSource",async execute(ctx){let{artifact,artifactUploadRef}=binding.source(ctx.input);if(artifactUploadRef===""){ctx.set(ARTIFACT_BYTES_KEY,artifact);return}if(staging===void 0)throw failedPreconditionError(binding.laneNotConfigured);let data;try{data=await staging.consume(artifactUploadRef)}catch(error2){throw error2 instanceof SlotUnknownError?invalidArgumentError(`artifact_upload_ref not usable: ${error2.message} \u2014 request a new upload URL via createArtifactUploadUrl`):error2}ctx.set(ARTIFACT_BYTES_KEY,data)}}}function newArchiveCurrentVersionStep(store,logger2,binding){return{name:binding.stepName,async execute(ctx){let resource=ctx.get(binding.resourceKey),versionHash=binding.headHashOf(resource);if(versionHash==="")return;let tag2=binding.liveTagOf(resource),resourceId=metadataOf(resource)?.id??"",idField=`${binding.noun}Id`,alreadyArchived=!1;try{await store.getAuditByHash(ctx.apiResourceKind,resourceId,versionHash,binding.schema),alreadyArchived=!0}catch(error2){error2 instanceof AuditNotFoundError||logger2.warn(`Could not check for an existing archived ${binding.noun} version \u2014 archiving anyway`,{[idField]:resourceId,versionHash,error:error2 instanceof Error?error2.message:String(error2)})}if(!alreadyArchived)try{await store.saveAudit(ctx.apiResourceKind,resourceId,binding.schema,resource,versionHash,"")}catch(error2){logger2.error(`Failed to archive ${binding.noun} version \u2014 reverting the version hash to maintain the audit-resolvability invariant`,{[idField]:resourceId,versionHash,error:error2 instanceof Error?error2.message:String(error2)}),binding.clearHeadHash(resource);return}if(tag2!=="")try{await store.setAuditTag(ctx.apiResourceKind,resourceId,versionHash,tag2)}catch(error2){logger2.error(`Archived ${binding.noun} version but failed to assign its tag \u2014 clearing the live tag to stay consistent with the audit column`,{[idField]:resourceId,versionHash,tag:tag2,error:error2 instanceof Error?error2.message:String(error2)}),binding.clearLiveTag(resource)}alreadyArchived?logger2.info(`${capitalize(binding.noun)} version content already archived \u2014 repointed head without a new history row`,{[idField]:resourceId,versionHash,tag:tag2}):logger2.info(`Archived ${binding.noun} version to audit history`,{[idField]:resourceId,versionHash,tag:tag2})}}}function newDeleteVersionArchivesStep(store,logger2,binding){return{name:binding.stepName,async execute(ctx){let resourceId=ctx.get(RESOURCE_ID_KEY);if(typeof resourceId!="string")throw new Error("resource id not found in context (ExtractResourceIdStep must run first)");let idField=`${binding.noun}Id`;try{let deletedCount=await store.deleteAuditByResourceId(ctx.apiResourceKind,resourceId);deletedCount>0&&logger2.info(`Deleted archive records for ${binding.noun}`,{[idField]:resourceId,count:deletedCount})}catch(error2){logger2.warn(`failed to delete ${binding.noun} archives (best-effort)`,{[idField]:resourceId,error:error2 instanceof Error?error2.message:String(error2)})}}}}function capitalize(word){return word.charAt(0).toUpperCase()+word.slice(1)}var HASH_PATTERN=/^[a-f0-9]{64}$/;function isVersionHash(version){return HASH_PATTERN.test(version)}function newLoadByReferenceWithVersionStep(store,binding,stepName){return{name:stepName,async execute(ctx){let ref=ctx.input;if(ref.slug==="")throw invalidArgumentError("slug is required in reference");if(requireOrgForReference(ctx.apiResourceKind,ref.org),ref.kind!==ApiResourceKind.api_resource_kind_unknown&&ref.kind!==binding.kind)throw invalidArgumentError(`kind mismatch: expected ${ApiResourceKind[binding.kind]}, got ${ApiResourceKind[ref.kind]}`);let head;try{head=await findResourceBySlug(store,ctx.apiResourceKind,binding.schema,ref.slug,ref.org)}catch(error2){throw internalError(error2,`failed to list ${binding.noun}s`)}if(head===void 0)throw notFoundError(binding.noun,ref.slug);let version=ref.version.trim();if(version===""||version==="latest"){ctx.set(TARGET_RESOURCE_KEY,head);return}if(headMatchesVersion(binding,head,version)){ctx.set(TARGET_RESOURCE_KEY,head);return}let archived=await findAuditByVersion(store,ctx.apiResourceKind,binding.schema,idOf(head),version);if(archived===void 0)throw notFoundError(`${binding.noun} version`,`${ref.slug}:${version}`);ctx.set(TARGET_RESOURCE_KEY,archived)}}}function headMatchesVersion(binding,head,version){if(isVersionHash(version))return binding.headHashOf(head)===version;let liveTag=binding.liveTagOf(head);return liveTag!==""&&liveTag===version}async function findAuditByVersion(store,kind,schema2,resourceId,version){if(isVersionHash(version))try{return await store.getAuditByHash(kind,resourceId,version,schema2)}catch(error2){if(error2 instanceof AuditNotFoundError)return;throw internalError(error2,"failed to query audit by hash")}try{return await store.getAuditByTag(kind,resourceId,version,schema2)}catch(error2){if(error2 instanceof AuditNotFoundError)return;throw internalError(error2,"failed to query audit by tag")}}var DEFAULT_PAGE_SIZE=50,MAX_PAGE_SIZE=100,LIST_VERSIONS_RESOURCE_ID_KEY="listVersionsResourceId",LIST_VERSIONS_HEAD_HASH_KEY="listVersionsHeadHash",LIST_VERSIONS_RESPONSE_KEY="listVersionsResponse";function versionHistoryTarget(kind,deniedMessage,idKey=LIST_VERSIONS_RESOURCE_ID_KEY){return ctx=>{let resourceId=ctx.get(idKey);if(typeof resourceId!="string"||resourceId==="")throw new Error(`ListVersions: no resolved resource id under ${idKey}; the slug resolver must run first`);return[{permission:IamPermission.can_view,resourceKind:kind,resourceId,deniedMessage}]}}function newResolveBySlugForVersionsStep(store,binding,stepName){return{name:stepName,async execute(ctx){let req=binding.input(ctx.input),head;try{head=await findResourceBySlug(store,ctx.apiResourceKind,binding.schema,req.slug,req.org)}catch(error2){throw internalError(error2,`failed to search for ${binding.noun}`)}if(head===void 0)throw notFoundError(binding.noun,`${req.slug} (org: ${req.org})`);ctx.set(LIST_VERSIONS_RESOURCE_ID_KEY,idOf(head)),ctx.set(LIST_VERSIONS_HEAD_HASH_KEY,binding.headHashOf(head))}}}function newLoadAndMapVersionsStep(store,binding,stepName){return{name:stepName,async execute(ctx){let req=binding.input(ctx.input),resourceId=ctx.get(LIST_VERSIONS_RESOURCE_ID_KEY),records;try{records=await store.listAuditRecords(ctx.apiResourceKind,resourceId)}catch(error2){throw internalError(error2,"failed to load version history")}let headHash=ctx.get(LIST_VERSIONS_HEAD_HASH_KEY),currentMarked=!1,entries=[];for(let record2 of records){let snapshot;try{snapshot=fromBinary2(binding.schema,record2.data)}catch{continue}let isCurrent=!currentMarked&&headHash!==""&&binding.headHashOf(snapshot)===headHash;currentMarked=currentMarked||isCurrent,entries.push(binding.mapEntry(snapshot,isCurrent,record2.tag))}let pageSize=req.pageSize;pageSize<=0&&(pageSize=DEFAULT_PAGE_SIZE),pageSize>MAX_PAGE_SIZE&&(pageSize=MAX_PAGE_SIZE);let startIndex=0;req.pageToken!==""&&(startIndex=decodePageToken(req.pageToken));let pageEntries=[],nextPageToken="";if(startIndex<entries.length){let end=Math.min(startIndex+pageSize,entries.length);pageEntries=entries.slice(startIndex,end),end<entries.length&&(nextPageToken=Buffer.from(String(end)).toString("base64"))}ctx.set(LIST_VERSIONS_RESPONSE_KEY,binding.response(pageEntries,nextPageToken,entries.length))}}}function decodePageToken(token){let decoded=Buffer.from(token,"base64");if(decoded.toString("base64")!==token)throw invalidArgumentError("invalid page_token");let text2=decoded.toString("utf8"),index2=Number.parseInt(text2,10);if(!Number.isSafeInteger(index2)||String(index2)!==text2||index2<0)throw invalidArgumentError("invalid page_token");return index2}function idOf(resource){return metadataOf(resource)?.id??""}var PLUGIN_ARTIFACT_KEY_PREFIX="plugins/",VERSION_TAG_PATTERN=/^[a-zA-Z0-9._-]+$/,BUILT_IN_SUB_AGENT_NAMES=new Set(["explore","shell","general-purpose"]);var TRANSFER_LANE_NOT_CONFIGURED="plugin artifact transfer lane is not configured on this server",SERVER_WARNING_KINDS={componentIgnored:"component-ignored",memberAdopted:"member-adopted",modelHintUnresolved:"model-hint-unresolved",subAgentNameBuiltin:"sub-agent-name-builtin",versionNotTaggable:"version-not-taggable"};var MEMBER_KINDS=[{kind:ApiResourceKind.skill,schema:SkillSchema},{kind:ApiResourceKind.mcp_server,schema:McpServerSchema},{kind:ApiResourceKind.agent,schema:AgentSchema},{kind:ApiResourceKind.workflow,schema:WorkflowSchema}];function memberOf(kind,metadata){return{kind,id:metadata.id,slug:metadata.slug,name:metadata.name,version:metadata.labels[PLUGIN_VERSION_LABEL]??"",system:isSystemContent(metadata)}}async function findMembers(store,pluginId,org){let members=[];for(let{kind,schema:schema2}of MEMBER_KINDS){let raws=await store.findAllByLabel(kind,PLUGIN_LABEL,pluginId,schema2);for(let raw of raws){let metadata=metadataOf(fromBinary2(schema2,raw));metadata!==void 0&&metadata.org===org&&members.push(memberOf(kind,metadata))}}return members}async function slugHolder(store,planned,org){let entry=MEMBER_KINDS.find(candidate=>candidate.kind===planned.kind);if(entry===void 0)throw new Error(`kind ${ApiResourceKind[planned.kind]} is not a plugin member kind`);let existing=await findResourceBySlug(store,planned.kind,entry.schema,planned.slug,org),metadata=existing===void 0?void 0:metadataOf(existing);return metadata===void 0?{held:!1}:{held:!0,byPlugin:pluginIdOf(metadata),holder:memberOf(planned.kind,metadata)}}function judgeSlug(holder,planned,pluginId){return holder.held?holder.byPlugin===pluginId?{kind:"ours",holder:holder.holder}:holder.byPlugin!==void 0?{kind:"held-by-plugin",holder:holder.holder,pluginId:holder.byPlugin}:holder.holder.system&&planned.system?{kind:"adopt",holder:holder.holder}:{kind:"held-unmanaged",holder:holder.holder}:{kind:"free"}}function membersConverge(existing,planned,digest3){if(existing.length!==planned.length)return!1;let byKey=new Map(existing.map(member2=>[`${member2.kind}:${member2.slug}`,member2]));return planned.every(member2=>{let found=byKey.get(`${member2.kind}:${member2.slug}`);return found!==void 0&&found.version===digest3})}function droppedMembers(existing,planned){let keep=new Set(planned.map(member2=>`${member2.kind}:${member2.slug}`));return existing.filter(member2=>!keep.has(`${member2.kind}:${member2.slug}`))}var PLUGIN_DOCUMENT_LIMITS={manifest:262144,mcpConfig:262144,skillMd:1048576,subAgent:1048576,overlay:1048576,logo:1048576,marketplace:1048576},encoder5=new TextEncoder,decoder3=new TextDecoder("utf-8",{fatal:!1});function comparePaths(a5,b7){return a5<b7?-1:a5>b7?1:0}function decodeUtf8(bytes){let text2=decoder3.decode(bytes);return text2.charCodeAt(0)===65279?text2.slice(1):text2}function isContainedPath(path14){return path14===""||path14.startsWith("/")||path14.includes("\\")?!1:path14.split("/").every(segment=>segment!==""&&segment!=="."&&segment!=="..")}var GLOB_CHARACTERS=/[*?[\]{}]/;function resolveDeclaredPath(value){if(GLOB_CHARACTERS.test(value))return{ok:!1,kind:"path-glob-unsupported"};if(value==="."||value==="./")return{ok:!0,path:""};if(!value.startsWith("./"))return{ok:!1,kind:"path-not-relative"};let trimmed=value.slice(2).replace(/\/+$/,"");return trimmed===""?{ok:!0,path:""}:isContainedPath(trimmed)?{ok:!0,path:trimmed}:{ok:!1,kind:"path-escapes-root"}}function joinPath(dir,name){return dir===""?name:`${dir}/${name}`}function basename(path14){let slash=path14.lastIndexOf("/");return slash===-1?path14:path14.slice(slash+1)}function dirname(path14){let slash=path14.lastIndexOf("/");return slash===-1?"":path14.slice(0,slash)}var PluginFileIndex=class{files;byPath;constructor(files){this.files=files,this.byPath=new Map(files.entries.map(entry=>[entry.path,entry]))}has(path14){return this.byPath.has(path14)}entry(path14){return this.byPath.get(path14)}filesUnder(dir){if(dir==="")return this.files.entries.map(entry=>entry.path);let prefix=`${dir}/`;return this.files.entries.filter(entry=>entry.path.startsWith(prefix)).map(entry=>entry.path)}isDirectory(dir){if(dir==="")return this.files.entries.length>0;let prefix=`${dir}/`;return this.files.entries.some(entry=>entry.path.startsWith(prefix))}childDirectories(dir){let prefix=dir===""?"":`${dir}/`,names=new Set;for(let entry of this.files.entries){if(!entry.path.startsWith(prefix))continue;let rest=entry.path.slice(prefix.length),slash=rest.indexOf("/");slash!==-1&&names.add(rest.slice(0,slash))}return[...names].sort(comparePaths)}childFiles(dir){let prefix=dir===""?"":`${dir}/`,names=[];for(let entry of this.files.entries){if(!entry.path.startsWith(prefix))continue;let rest=entry.path.slice(prefix.length);rest.includes("/")||names.push(rest)}return names.sort(comparePaths)}};function readText(index2,path14,cls,findings){let bytes=readBytes(index2,path14,cls,findings);return bytes===void 0?void 0:decodeUtf8(bytes)}function readBytes(index2,path14,cls,findings){let limit=PLUGIN_DOCUMENT_LIMITS[cls],entry=index2.entry(path14);if(entry===void 0)throw new Error(`plugin file '${path14}' is not listed`);if(entry.size>limit){findings.error("document-too-large",{path:path14,subject:String(entry.size),detail:String(limit)});return}let bytes=index2.files.read(path14);if(bytes.length>limit){findings.error("document-too-large",{path:path14,subject:String(bytes.length),detail:String(limit)});return}return bytes}function parseJsonObject2(text2,path14,kind,findings){let value;try{value=JSON.parse(text2)}catch(error2){findings.error(kind,{path:path14,detail:error2 instanceof Error?error2.message:String(error2)});return}if(!isJsonObject2(value)){findings.error(kind,{path:path14,detail:"the document is not a JSON object"});return}return value}function isJsonObject2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function isStringArray(value){return Array.isArray(value)&&value.every(item=>typeof item=="string")}function isStringRecord(value){return isJsonObject2(value)&&Object.values(value).every(item=>typeof item=="string")}function describeValue(value){return typeof value=="string"?value:JSON.stringify(value)}function fields(object){return Object.entries(object)}function optionalString(object,field3,path14,findings){let value=object[field3];if(value!==void 0){if(typeof value!="string"){findings.error("manifest-field-type",{path:path14,subject:field3,detail:"a string"});return}return value}}function optionalStringArray(object,field3,path14,findings){let value=object[field3];if(value!==void 0){if(!isStringArray(value)){findings.error("manifest-field-type",{path:path14,subject:field3,detail:"an array of strings"});return}return value}}function stringOrStringArray(object,field3,path14,findings){let value=object[field3];if(value!==void 0){if(typeof value=="string")return[value];if(isStringArray(value))return value;findings.error("manifest-field-type",{path:path14,subject:field3,detail:"a string or an array of strings"})}}function warnUnknownFields(object,known,path14,findings){for(let[name]of fields(object))known.has(name)||findings.warn("manifest-field-unknown",{path:path14,subject:name})}function readIdentity(object,path14,findings){let identity2={},name=optionalString(object,"name",path14,findings);name!==void 0&&(identity2.name=name);let version=optionalString(object,"version",path14,findings);version!==void 0&&(identity2.version=version);let description=optionalString(object,"description",path14,findings);description!==void 0&&(identity2.description=description);let homepage=optionalString(object,"homepage",path14,findings);homepage!==void 0&&(identity2.homepage=homepage);let repository=optionalString(object,"repository",path14,findings);repository!==void 0&&(identity2.repository=repository);let license=optionalString(object,"license",path14,findings);license!==void 0&&(identity2.license=license);let keywords=optionalStringArray(object,"keywords",path14,findings);keywords!==void 0&&(identity2.keywords=keywords);let author=readAuthor(object,path14,findings);return author!==void 0&&(identity2.author=author),identity2}function readAuthor(object,path14,findings){let value=object.author;if(value===void 0)return;if(!isJsonObject2(value)){findings.error("manifest-field-type",{path:path14,subject:"author",detail:"an object"});return}let author={},name=optionalString(value,"name",path14,findings);name!==void 0&&(author.name=name);let email=optionalString(value,"email",path14,findings);email!==void 0&&(author.email=email);let url=optionalString(value,"url",path14,findings);return url!==void 0&&(author.url=url),author}function readDeclaredPaths(object,field3,path14,findings){let values=stringOrStringArray(object,field3,path14,findings);if(values===void 0)return;let declared=[];for(let value of values){let resolved=resolveDeclaredPath(value);if(!resolved.ok){findings.error(resolved.kind,{path:path14,subject:value});continue}declared.push({path:resolved.path,manifest:path14})}return declared}function readMcpSources(object,field3,path14,dialect,findings){let value=object[field3];if(value===void 0)return[];let items=Array.isArray(value)?value:[value],sources=[];for(let item of items)if(typeof item=="string"){let resolved=resolveDeclaredPath(item);if(!resolved.ok){findings.error(resolved.kind,{path:path14,subject:item});continue}sources.push({kind:"file",path:resolved.path,dialect,manifest:path14})}else isJsonObject2(item)?sources.push({kind:"inline",manifest:path14,servers:item,dialect}):findings.error("manifest-field-type",{path:path14,subject:field3,detail:"a path, an object, or an array of either"});return sources}var IGNORED_FIELD_KINDS={hooks:"hooks",rules:"rules",commands:"commands",workflows:"workflows",outputStyles:"output-styles",lspServers:"lsp-servers",channels:"channels",dependencies:"dependencies",defaultEnabled:"default-enabled",minClientVersions:"min-client-versions",logo:"logo",apps:"apps"};function ignoredFieldComponents(object,path14){let ignored=[];for(let[name,value]of fields(object)){let kind=IGNORED_FIELD_KINDS[name];if(kind!==void 0&&ignored.push({kind,path:`${path14}#${name}`}),name==="experimental"&&isJsonObject2(value))for(let[sub]of fields(value)){let subKind=EXPERIMENTAL_KINDS[sub];subKind!==void 0&&ignored.push({kind:subKind,path:`${path14}#experimental.${sub}`})}}return ignored}var EXPERIMENTAL_KINDS={themes:"themes",monitors:"monitors",evals:"evals"},STIGMER_EXTENSION_NAMESPACE="ai.stigmer",STIGMER_EXTENSION_FIELDS=new Set(["displayName","logo","category"]);function extensionComponents(object,path14,findings){let value=object.extensions;if(value===void 0)return[];if(!isJsonObject2(value))return findings.warn("manifest-extensions-invalid",{path:path14}),[];let ignored=[];for(let[namespace,content]of fields(value)){if(isJsonObject2(content)&&fields(content).length===0)continue;let at2=`${path14}#extensions.${namespace}`;if(namespace===STIGMER_EXTENSION_NAMESPACE&&isJsonObject2(content)){content.logo!==void 0&&ignored.push({kind:"logo",path:`${at2}.logo`}),fields(content).some(([name])=>!STIGMER_EXTENSION_FIELDS.has(name))&&ignored.push({kind:"extension",path:at2});continue}ignored.push({kind:"extension",path:at2})}return ignored}var CLAUDE_KNOWN_FIELDS=new Set(["name","version","description","author","homepage","repository","license","keywords","skills","commands","agents","workflows","hooks","mcpServers","outputStyles","lspServers","experimental","userConfig","channels","dependencies","defaultEnabled"]),CLAUDE_DEFAULT_MCP_CONFIG=".mcp.json";function readClaudeManifest(object,path14,findings){return readClaudeShapedManifest(object,path14,"claude",CLAUDE_KNOWN_FIELDS,findings)}function readClaudeShapedManifest(object,path14,dialect,known,findings){warnUnknownFields(object,known,path14,findings);let identity2=readIdentity(object,path14,findings),skillPaths=readDeclaredPaths(object,"skills",path14,findings)??[],agentPaths=readDeclaredPaths(object,"agents",path14,findings),declaredMcp=readMcpSources(object,"mcpServers",path14,dialect,findings),manifest={dialect,path:path14,identity:identity2,skillPaths,mcpConfigs:declaredMcp,ignored:ignoredFieldComponents(object,path14)};return agentPaths!==void 0&&(manifest.agentPaths=agentPaths),object.userConfig!==void 0&&(manifest.variables={dialect:"claude",value:object.userConfig,manifest:path14}),manifest}var KNOWN_FIELDS=new Set([...CLAUDE_KNOWN_FIELDS,"apps","interface"]);function readCodexManifest(object,path14,findings){return readClaudeShapedManifest(object,path14,"codex",KNOWN_FIELDS,findings)}var KNOWN_FIELDS2=new Set(["name","displayName","description","version","minClientVersions","author","publisher","homepage","repository","license","logo","keywords","category","tags","commands","agents","skills","rules","hooks","variables","mcpServers"]);function readCursorManifest(object,path14,findings){warnUnknownFields(object,KNOWN_FIELDS2,path14,findings);let identity2=readIdentity(object,path14,findings),skillPaths=readDeclaredPaths(object,"skills",path14,findings)??[],agentPaths=readDeclaredPaths(object,"agents",path14,findings),manifest={dialect:"cursor",path:path14,identity:identity2,skillPaths,mcpConfigs:readMcpSources(object,"mcpServers",path14,"cursor",findings),ignored:ignoredFieldComponents(object,path14)};return agentPaths!==void 0&&(manifest.agentPaths=agentPaths),object.variables!==void 0&&(manifest.variables={dialect:"cursor",value:object.variables,manifest:path14}),manifest}var AGENT_PLUGINS_MANIFEST_SCHEMA="https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",AGENT_PLUGINS_MCP_SCHEMA="https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",MANIFEST_LOCATIONS={"agent-plugins":"plugin.json",claude:".claude-plugin/plugin.json",cursor:".cursor-plugin/plugin.json",codex:".codex-plugin/plugin.json"},q3=value=>`'${value??""}'`,at=path14=>path14===void 0?"":` in ${q3(path14)}`,ERROR_MESSAGES={"no-manifest":()=>`no plugin manifest found: expected one of ${Object.values(MANIFEST_LOCATIONS).map(p3=>q3(p3)).join(", ")}`,"manifest-unreadable":c5=>`manifest ${q3(c5.path)} is not valid JSON: ${c5.detail??"parse error"}`,"manifest-schema-missing":c5=>`manifest ${q3(c5.path)} is missing the required '$schema' field; an Agent Plugins manifest declares ${q3(AGENT_PLUGINS_MANIFEST_SCHEMA)}`,"manifest-schema-unsupported":c5=>`manifest ${q3(c5.path)} declares an unsupported '$schema' ${q3(c5.detail)}; this reader supports ${q3(AGENT_PLUGINS_MANIFEST_SCHEMA)}`,"manifest-name-missing":c5=>`manifest ${q3(c5.path)} is missing the required 'name' field`,"manifest-name-invalid":c5=>`plugin name ${q3(c5.subject)}${at(c5.path)} is invalid: 1 to 64 characters of lowercase letters, digits, hyphens and periods, starting and ending alphanumeric, with no '--' or '..'`,"manifest-name-conflict":c5=>`manifests disagree on the plugin name: ${q3(c5.subject)} in ${q3(c5.path)} versus ${c5.detail??"another manifest"}`,"manifest-field-type":c5=>`field ${q3(c5.subject)}${at(c5.path)} has the wrong type: expected ${c5.detail??"a different type"}`,"path-not-relative":c5=>`path ${q3(c5.subject)}${at(c5.path)} must be plugin-relative and begin with './'`,"path-escapes-root":c5=>`path ${q3(c5.subject)}${at(c5.path)} escapes the plugin root`,"path-glob-unsupported":c5=>`path ${q3(c5.subject)}${at(c5.path)} is a glob pattern; declare directories and files by path`,"path-uncontained":c5=>`the reader listed a path outside the plugin root: ${q3(c5.path)}`,"document-too-large":c5=>`${q3(c5.path)} is ${c5.subject??"too many"} bytes, over the ${c5.detail??""}-byte limit for this kind of document`,"skill-frontmatter-missing":c5=>`${q3(c5.path)} must start with YAML frontmatter ('---')`,"skill-frontmatter-unclosed":c5=>`${q3(c5.path)} frontmatter is not closed (missing the closing '---')`,"skill-frontmatter-unreadable":c5=>`${q3(c5.path)} frontmatter is not valid YAML: ${c5.detail??"parse error"}`,"skill-name-invalid":c5=>`skill name ${q3(c5.subject)}${at(c5.path)} is invalid: lowercase letters, digits and hyphens, optionally dot-scoped, with every segment alphanumeric`,"skill-name-duplicate":c5=>`skill name ${q3(c5.subject)} appears more than once (again${at(c5.path)})`,"mcp-config-unreadable":c5=>`MCP configuration ${q3(c5.path)} is not valid JSON: ${c5.detail??"parse error"}`,"mcp-config-shape":c5=>`MCP configuration ${q3(c5.path)} must be an object with an 'mcpServers' object`,"mcp-config-schema-missing":c5=>`MCP configuration ${q3(c5.path)} is missing the required '$schema' field; an Agent Plugins configuration declares ${q3(AGENT_PLUGINS_MCP_SCHEMA)}`,"mcp-config-schema-unsupported":c5=>`MCP configuration ${q3(c5.path)} declares an unsupported '$schema' ${q3(c5.detail)}; this reader supports ${q3(AGENT_PLUGINS_MCP_SCHEMA)}`,"mcp-config-field-unknown":c5=>`MCP configuration ${q3(c5.path)} has an unexpected top-level field ${q3(c5.subject)}; only '$schema' and 'mcpServers' are allowed`,"mcp-server-shape":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} must be an object`,"mcp-server-type-missing":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} is missing the 'type' field the Agent Plugins format requires ('stdio', 'streamable-http' or 'sse')`,"mcp-server-transport-unknown":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has no 'type' and neither a 'command' nor a 'url' to infer it from`,"mcp-server-type-ambiguous":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} declares both 'command' and 'url'; a server is either stdio or HTTP`,"mcp-server-type-unknown":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an unknown 'type' ${q3(c5.detail)}; expected 'stdio', 'http', 'streamable-http' or 'sse'`,"mcp-server-field-unknown":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a field ${q3(c5.detail)} that its transport does not define`,"mcp-server-field-type":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} field ${q3(c5.detail)} has the wrong type`,"mcp-server-url-missing":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} is missing the 'url' its HTTP transport requires`,"mcp-server-url-invalid":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an invalid 'url' ${q3(c5.detail)}: expected an absolute HTTPS URL (HTTP only for localhost) with no user information or fragment`,"mcp-server-url-variable":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a variable in its 'url'; Stigmer sends the URL as written, so write the URL out and put variables in 'headers'`,"mcp-server-command-missing":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} is missing the 'command' its stdio transport requires`,"mcp-server-command-invalid":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a 'command' that is not a single executable name; put arguments in 'args'`,"mcp-server-command-relative":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} runs a command bundled in the plugin ${q3(c5.detail)}; Stigmer runs only commands on the runner's PATH (for example 'npx' or 'uvx')`,"mcp-server-plugin-root-reference":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} references the plugin's own files through ${q3(c5.detail)}; Stigmer does not mount plugin files into the runner`,"mcp-server-cwd-unsupported":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} sets a working directory; Stigmer does not mount plugin files, so a bundled directory cannot be reached`,"mcp-server-env-literal":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} sets environment variable ${q3(c5.detail)} to a literal value; Stigmer passes declared variables by name, so write ${q3(`${c5.detail??"KEY"}: "\${${c5.detail??"KEY"}}"`)} and declare the variable`,"mcp-server-env-rename":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} maps environment variable ${q3(c5.detail)} to a differently named variable; Stigmer passes declared variables by name, so use the same name on both sides`,"mcp-server-name-duplicate":c5=>`MCP server name ${q3(c5.subject)} appears more than once (again${at(c5.path)})`,"mcp-server-header-duplicate":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} declares header ${q3(c5.detail)} more than once (header names are case-insensitive)`,"mcp-server-header-invalid":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an invalid header name ${q3(c5.detail)}`,"sub-agent-frontmatter-unreadable":c5=>`${q3(c5.path)} frontmatter is not valid YAML: ${c5.detail??"parse error"}`,"sub-agent-instructions-short":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} has instructions under ${c5.detail??""} characters; the body of the file is the sub-agent's prompt`,"sub-agent-name-duplicate":c5=>`sub-agent name ${q3(c5.subject)} appears more than once (again${at(c5.path)})`,"variable-name-invalid":c5=>`variable name ${q3(c5.subject)}${at(c5.path)} is invalid: an environment variable name is letters, digits and underscores, not starting with a digit`,"overlay-server-unknown":c5=>`${q3(c5.path)} overlays MCP server ${q3(c5.subject)}, which the plugin does not declare`,"overlay-document-unknown":c5=>`${q3(c5.path)} is not a document Stigmer reads; the 'ai.stigmer/' folder holds 'agent.yaml', 'workflows/<name>.yaml' and 'mcp-servers/<server>.yaml'`},WARNING_MESSAGES={"manifest-field-unknown":c5=>`manifest ${q3(c5.path)} has an unknown field ${q3(c5.subject)}, ignored`,"manifest-extensions-invalid":c5=>`manifest ${q3(c5.path)} has an 'extensions' field that is not an object, ignored`,"path-missing":c5=>`path ${q3(c5.subject)} declared${at(c5.path)} does not exist in the plugin`,"skill-name-defaulted":c5=>`${q3(c5.path)} has no 'name' in its frontmatter; the skill is named after its directory, ${q3(c5.subject)}`,"skill-name-differs-from-directory":c5=>`skill ${q3(c5.subject)}${at(c5.path)} is named differently from its directory ${q3(c5.detail)}`,"skill-description-missing":c5=>`skill ${q3(c5.subject)}${at(c5.path)} has no 'description'`,"mcp-config-field-ignored":c5=>`MCP configuration ${q3(c5.path)} has a top-level field ${q3(c5.subject)} Stigmer does not read, ignored`,"mcp-server-sse-mapped":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} declares the legacy 'sse' transport; Stigmer connects over Streamable HTTP and falls back to SSE only when the server rejects it`,"mcp-server-field-ignored":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has a field ${q3(c5.detail)} Stigmer does not read, ignored`,"mcp-server-auth-ignored":c5=>`MCP server ${q3(c5.subject)}${at(c5.path)} has an 'auth' block Stigmer does not read; OAuth for a server is declared in 'ai.stigmer/mcp-servers/${c5.subject??"<server>"}.yaml'`,"variable-inferred":c5=>`variable ${q3(c5.subject)} is referenced by MCP server ${q3(c5.detail)} but not declared; it is declared as a required secret`,"variable-unreferenced":c5=>`variable ${q3(c5.subject)}${at(c5.path)} is declared but no MCP server references it`,"variable-default-dropped":c5=>`variable ${q3(c5.subject)}${at(c5.path)} has a default value, which Stigmer does not carry; the user supplies the value`,"variable-type-narrowed":c5=>`variable ${q3(c5.subject)}${at(c5.path)} is typed ${q3(c5.detail)}; Stigmer variables are strings`,"variable-option-dropped":c5=>`variable ${q3(c5.subject)}${at(c5.path)} has a ${q3(c5.detail)} constraint, which Stigmer does not carry`,"sub-agent-name-defaulted":c5=>`${q3(c5.path)} has no 'name' in its frontmatter; the sub-agent is named after the file, ${q3(c5.subject)}`,"sub-agent-skill-unknown":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} asks for skill ${q3(c5.detail)}, which the plugin does not ship`,"sub-agent-model-unknown":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} names model ${q3(c5.detail)}, which Stigmer cannot map; the sub-agent runs on the session's model`,"sub-agent-field-ignored":c5=>`sub-agent ${q3(c5.subject)}${at(c5.path)} has a field ${q3(c5.detail)} Stigmer does not read, ignored`};var FindingCollector=class{errorSentences;warningSentences;errors=[];warnings=[];constructor(errorSentences,warningSentences){this.errorSentences=errorSentences,this.warningSentences=warningSentences}error(kind,ctx={}){this.errors.push(compose(kind,ctx,this.errorSentences[kind](ctx)))}warn(kind,ctx={}){this.warnings.push(compose(kind,ctx,this.warningSentences[kind](ctx)))}},Findings=class extends FindingCollector{constructor(){super(ERROR_MESSAGES,WARNING_MESSAGES)}};function compose(kind,ctx,message6){return{kind,...ctx.path!==void 0&&{path:ctx.path},...ctx.subject!==void 0&&{subject:ctx.subject},...ctx.detail!==void 0&&{detail:ctx.detail},message:message6}}var KNOWN_FIELDS3=new Set(["$schema","name","version","description","author","homepage","repository","license","keywords","extensions"]);function readOpenManifest(object,path14,findings){let schema2=object.$schema;return schema2===void 0?findings.error("manifest-schema-missing",{path:path14}):schema2!==AGENT_PLUGINS_MANIFEST_SCHEMA&&findings.error("manifest-schema-unsupported",{path:path14,detail:describeValue(schema2)}),warnUnknownFields(object,KNOWN_FIELDS3,path14,findings),{dialect:"agent-plugins",path:path14,identity:readIdentity(object,path14,findings),skillPaths:[],mcpConfigs:[],ignored:extensionComponents(object,path14,findings)}}var OPEN_MCP_CONFIG="mcp.json",VENDOR_PRECEDENCE=["claude","cursor","codex"],MANIFEST_PRECEDENCE=["agent-plugins",...VENDOR_PRECEDENCE],NAME_MAX_LENGTH=64,NAME_PATTERN=/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/;function detectManifests(index2,findings){let manifests=[],present=dialect=>{let path14=MANIFEST_LOCATIONS[dialect];if(!index2.has(path14))return;let object=readManifestObject(index2,path14,findings),manifest=object===void 0?emptyManifest(dialect,path14):readDialect(dialect,object,path14,findings);return manifests.push(manifest),manifest},root5=present("agent-plugins"),vendors=VENDOR_PRECEDENCE.map(present).filter(m3=>m3!==void 0);if(manifests.length===0){findings.error("no-manifest");return}let identity2=root5??vendors[0];if(identity2===void 0)throw new Error("manifest set without an identity manifest");let ordered=[identity2,...manifests.filter(m3=>m3!==identity2)],name=resolveName(identity2,ordered,findings);return{dialect:identity2.dialect,manifests:ordered,name,readsAgents:vendors.length>0,mcpSources:resolveMcpSources(index2,root5,vendors)}}function readManifestObject(index2,path14,findings){let text2=readText(index2,path14,"manifest",findings);return text2===void 0?void 0:parseJsonObject2(text2,path14,"manifest-unreadable",findings)}function readDialect(dialect,object,path14,findings){switch(dialect){case"agent-plugins":return readOpenManifest(object,path14,findings);case"claude":return readClaudeManifest(object,path14,findings);case"cursor":return readCursorManifest(object,path14,findings);case"codex":return readCodexManifest(object,path14,findings);default:{let exhaustive=dialect;throw new Error(`unknown dialect ${String(exhaustive)}`)}}}function emptyManifest(dialect,path14){return{dialect,path:path14,identity:{},skillPaths:[],mcpConfigs:[],ignored:[]}}function resolveName(identity2,all,findings){let name=identity2.identity.name;if(name===void 0){if(findings.errors.some(f5=>f5.kind==="manifest-unreadable"&&f5.path===identity2.path))return;findings.error("manifest-name-missing",{path:identity2.path});return}let valid=!0;isValidPluginName(name)||(findings.error("manifest-name-invalid",{path:identity2.path,subject:name}),valid=!1);for(let other of all){if(other===identity2)continue;let otherName=other.identity.name;otherName!==void 0&&otherName!==name&&(findings.error("manifest-name-conflict",{path:identity2.path,subject:name,detail:`'${otherName}' in '${other.path}'`}),valid=!1)}return valid?name:void 0}function isValidPluginName(name){return name.length<=NAME_MAX_LENGTH&&NAME_PATTERN.test(name)&&!name.includes("--")&&!name.includes("..")}function resolveMcpSources(index2,root5,vendors){let sources=[];root5!==void 0&&index2.has(OPEN_MCP_CONFIG)&&sources.push({kind:"file",path:OPEN_MCP_CONFIG,dialect:"agent-plugins",manifest:root5.path});for(let vendor of vendors)vendor.mcpConfigs.length>0?sources.push(...vendor.mcpConfigs):vendor.dialect!=="cursor"&&index2.has(CLAUDE_DEFAULT_MCP_CONFIG)&&sources.push({kind:"file",path:CLAUDE_DEFAULT_MCP_CONFIG,dialect:vendor.dialect,manifest:vendor.path});let seen=new Set;return sources.filter(source=>source.kind==="inline"?!0:seen.has(source.path)?!1:(seen.add(source.path),!0))}var import_yaml=__toESM(require_dist2(),1);var SKILL_NAME_PATTERN=/^[a-z0-9]+([.-][a-z0-9]+)*$/;function extractFrontmatter(content){let lines=content.split(/\r?\n/);if(lines.length===0||lines[0]?.trim()!=="---")return{ok:!1,reason:"missing"};for(let i6=1;i6<lines.length;i6++)if(lines[i6]?.trim()==="---")return{ok:!0,yaml:lines.slice(1,i6).join(`
|
|
489
489
|
`),body:lines.slice(i6+1).join(`
|
|
490
490
|
`)};return{ok:!1,reason:"unclosed"}}function parseFrontmatter(yaml2){let value;try{value=(0,import_yaml.parse)(yaml2)}catch(error2){return{ok:!1,detail:error2 instanceof Error?error2.message:String(error2)}}return value==null?{ok:!0,fields:{}}:isJsonObject2(value)?{ok:!0,fields:value}:{ok:!1,detail:"the frontmatter is not a mapping"}}var DEFAULT_AGENTS_DIR="agents",SUB_AGENT_INSTRUCTIONS_MIN=10,READ_FIELDS=new Set(["name","description","model","skills"]);function normaliseSubAgents(index2,set2,skills,findings){if(!set2.readsAgents)return[];let skillNames=new Set(skills.map(skill=>skill.name)),agents=[],seen=new Set;for(let path14 of discoverAgentFiles(index2,set2,findings)){let agent=readSubAgent(index2,path14,skillNames,findings);if(agent!==void 0){if(seen.has(agent.name)){findings.error("sub-agent-name-duplicate",{subject:agent.name,path:path14});continue}seen.add(agent.name),agents.push(agent)}}return agents}function discoverAgentFiles(index2,set2,findings){let files=new Set,addMarkdownUnder=dir=>{for(let name of index2.childFiles(dir))name.endsWith(".md")&&files.add(joinPath(dir,name))},declared=set2.manifests.flatMap(m3=>m3.agentPaths??[]);set2.manifests.every(m3=>m3.agentPaths===void 0)&&addMarkdownUnder(DEFAULT_AGENTS_DIR);for(let{path:path14,manifest}of declared)path14!==""&&index2.has(path14)&&path14.endsWith(".md")?files.add(path14):index2.isDirectory(path14)?addMarkdownUnder(path14):findings.warn("path-missing",{path:manifest,subject:path14===""?".":`./${path14}`});return[...files].sort(comparePaths)}function readSubAgent(index2,path14,skillNames,findings){let text2=readText(index2,path14,"subAgent",findings);if(text2===void 0)return;let extracted=extractFrontmatter(text2),fieldsMap={},body=text2;if(extracted.ok){let parsed=parseFrontmatter(extracted.yaml);if(!parsed.ok){findings.error("sub-agent-frontmatter-unreadable",{path:path14,detail:parsed.detail});return}fieldsMap=parsed.fields,body=extracted.body}else if(extracted.reason==="unclosed"){findings.error("sub-agent-frontmatter-unreadable",{path:path14,detail:"the frontmatter is not closed (missing the closing '---')"});return}let stem=basename(path14).replace(/\.md$/,""),name;typeof fieldsMap.name=="string"&&fieldsMap.name!==""?name=fieldsMap.name:(name=stem,findings.warn("sub-agent-name-defaulted",{path:path14,subject:name}));let instructions=body.trim();if(instructions.length<SUB_AGENT_INSTRUCTIONS_MIN){findings.error("sub-agent-instructions-short",{path:path14,subject:name,detail:String(SUB_AGENT_INSTRUCTIONS_MIN)});return}let description=fieldsMap.description,requested=fieldsMap.skills,matchedSkills=[];if(Array.isArray(requested))for(let skill of requested)typeof skill=="string"&&(skillNames.has(skill)?matchedSkills.push(skill):findings.warn("sub-agent-skill-unknown",{path:path14,subject:name,detail:skill}));let modelHint,model=fieldsMap.model;typeof model=="string"&&model.trim()!==""&&(modelHint=classifyModel(model),modelHint.alias==="unknown"&&findings.warn("sub-agent-model-unknown",{path:path14,subject:name,detail:model}));for(let field3 of Object.keys(fieldsMap))READ_FIELDS.has(field3)||findings.warn("sub-agent-field-ignored",{path:path14,subject:name,detail:field3});return{name,...typeof description=="string"&&description!==""&&{description},instructions,skillNames:matchedSkills,...modelHint!==void 0&&{modelHint},path:path14}}function classifyModel(raw){let value=raw.trim().toLowerCase(),alias=value==="inherit"?"inherit":value==="fast"?"fast":value.includes("haiku")?"haiku":value.includes("sonnet")?"sonnet":value.includes("opus")?"opus":"unknown";return{raw,alias}}var PLACEHOLDER_PATTERN=/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,VARIABLE_NAME_PATTERN=/^[A-Za-z_][A-Za-z0-9_]*$/,USER_CONFIG_PATTERN=/\$\{user_config\.([A-Za-z_][A-Za-z0-9_]*)\}/g,PLUGIN_ROOT_PLACEHOLDERS=new Set(["${PLUGIN_ROOT}","${PLUGIN_DATA}","${CLAUDE_PLUGIN_ROOT}","${CLAUDE_PLUGIN_DATA}","${CLAUDE_PROJECT_DIR}","${CURSOR_PLUGIN_ROOT}"]),PLUGIN_ROOT_ENV_NAMES=new Set(["PLUGIN_ROOT","PLUGIN_DATA"]);function rewriteUserConfig(value){return value.replace(USER_CONFIG_PATTERN,(_match,key)=>`\${${key}}`)}function findPluginRootPlaceholder(value){for(let placeholder of PLUGIN_ROOT_PLACEHOLDERS)if(value.includes(placeholder))return placeholder}function referencedVariables(value){let names=[];for(let match of value.matchAll(PLACEHOLDER_PATTERN)){let name=match[1];name!==void 0&&!names.includes(name)&&names.push(name)}return names}function singlePlaceholderName(value){return/^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/.exec(value)?.[1]}var IGNORED_DIRECTORIES={rules:"rules",hooks:"hooks",commands:"commands",canvases:"canvases",workflows:"workflows","output-styles":"output-styles",themes:"themes",monitors:"monitors",bin:"bin",assets:"assets",evals:"evals"},IGNORED_FILES={".lsp.json":"lsp-servers","settings.json":"settings",".app.json":"apps"};function ignoredOnDisk(index2,readsAgents){let ignored=[];for(let dir of index2.childDirectories("")){let kind=IGNORED_DIRECTORIES[dir];kind!==void 0&&ignored.push({kind,path:`${dir}/`}),dir==="agents"&&!readsAgents&&ignored.push({kind:"agents",path:`${dir}/`})}for(let file of index2.childFiles("")){let kind=IGNORED_FILES[file];kind!==void 0&&ignored.push({kind,path:file})}return ignored}function dedupeIgnored(lists){let seen=new Set,out=[];for(let list12 of lists)for(let component of list12){let key=`${component.kind}\0${component.path}`;seen.has(key)||(seen.add(key),out.push(component))}return out}var OPEN_CONFIG_FIELDS=new Set(["$schema","mcpServers"]),OPEN_STDIO_FIELDS=new Set(["type","command","args","env","cwd"]),OPEN_HTTP_FIELDS=new Set(["type","url","headers"]),VENDOR_STDIO_FIELDS=new Set(["type","command","args","env","cwd"]),VENDOR_HTTP_FIELDS=new Set(["type","url","headers"]),HEADER_NAME_PATTERN=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function normaliseMcpServers(index2,sources,findings){let servers=[],seen=new Set,refused=0;for(let source of sources){let entries=readSource(index2,source,findings);if(entries===void 0){refused++;continue}for(let[name,raw]of fields(entries.servers)){if(seen.has(name)){findings.error("mcp-server-name-duplicate",{subject:name,path:entries.path}),refused++;continue}seen.add(name);let server=readServer(name,raw,entries.path,source.dialect==="agent-plugins",findings);server!==void 0?servers.push(server):refused++}}return{servers,refused,declaredNames:seen}}function readSource(index2,source,findings){let open=source.dialect==="agent-plugins";if(source.kind==="inline"){let wrapped=isJsonObject2(source.servers)?source.servers.mcpServers:void 0,servers2=isJsonObject2(wrapped)?wrapped:source.servers;if(!isJsonObject2(servers2)){findings.error("mcp-config-shape",{path:source.manifest});return}return{path:source.manifest,servers:servers2}}if(!index2.has(source.path)){findings.warn("path-missing",{path:source.manifest,subject:`./${source.path}`});return}let text2=readText(index2,source.path,"mcpConfig",findings);if(text2===void 0)return;let object=parseJsonObject2(text2,source.path,"mcp-config-unreadable",findings);if(object===void 0)return;if(open){let schema2=object.$schema;schema2===void 0?findings.error("mcp-config-schema-missing",{path:source.path}):schema2!==AGENT_PLUGINS_MCP_SCHEMA&&findings.error("mcp-config-schema-unsupported",{path:source.path,detail:describeValue(schema2)})}for(let[name]of fields(object))OPEN_CONFIG_FIELDS.has(name)||(open?findings.error("mcp-config-field-unknown",{path:source.path,subject:name}):findings.warn("mcp-config-field-ignored",{path:source.path,subject:name}));let servers=object.mcpServers;if(!isJsonObject2(servers)){findings.error("mcp-config-shape",{path:source.path});return}return{path:source.path,servers}}function readServer(name,raw,path14,open,findings){let ctx={subject:name,path:path14};if(!isJsonObject2(raw)){findings.error("mcp-server-shape",ctx);return}let transport=resolveTransport(raw,ctx,open,findings);if(transport===void 0)return;let known=transport==="stdio"?open?OPEN_STDIO_FIELDS:VENDOR_STDIO_FIELDS:open?OPEN_HTTP_FIELDS:VENDOR_HTTP_FIELDS,references=new Set,valid=!0;for(let[field3,value]of fields(raw))if(!known.has(field3))if(open)findings.error("mcp-server-field-unknown",{...ctx,detail:field3}),valid=!1;else if(field3==="auth"){findings.warn("mcp-server-auth-ignored",ctx);for(let text2 of stringsWithin(value))collectReferences(text2,references)}else findings.warn("mcp-server-field-ignored",{...ctx,detail:field3});if(valid)return transport==="stdio"?readStdio(name,raw,ctx,references,findings):readHttp(name,raw,ctx,references,findings)}function resolveTransport(raw,ctx,open,findings){let type2=raw.type;if(type2!==void 0&&typeof type2!="string"){findings.error("mcp-server-field-type",{...ctx,detail:"type"});return}if(type2===void 0){if(open){findings.error("mcp-server-type-missing",ctx);return}let hasCommand=raw.command!==void 0,hasUrl=raw.url!==void 0;if(hasCommand&&hasUrl){findings.error("mcp-server-type-ambiguous",ctx);return}if(hasCommand)return"stdio";if(hasUrl)return"http";findings.error("mcp-server-transport-unknown",ctx);return}switch(type2){case"stdio":return"stdio";case"streamable-http":return"http";case"http":if(open){findings.error("mcp-server-type-unknown",{...ctx,detail:type2});return}return"http";case"sse":return findings.warn("mcp-server-sse-mapped",ctx),"http";default:findings.error("mcp-server-type-unknown",{...ctx,detail:type2});return}}function readStdio(name,raw,ctx,references,findings){let valid=!0,fail=()=>{valid=!1},command5=raw.command;if(command5===void 0)findings.error("mcp-server-command-missing",ctx),fail();else if(typeof command5!="string")findings.error("mcp-server-field-type",{...ctx,detail:"command"}),fail();else{let root5=findPluginRootPlaceholder(command5);root5!==void 0?(findings.error("mcp-server-plugin-root-reference",{...ctx,detail:root5}),fail()):command5.startsWith("./")?(findings.error("mcp-server-command-relative",{...ctx,detail:command5}),fail()):(command5===""||/\s/.test(command5)||command5.includes("/"))&&(findings.error("mcp-server-command-invalid",ctx),fail())}let args=[],rawArgs=raw.args;if(rawArgs!==void 0)if(!isStringArray(rawArgs))findings.error("mcp-server-field-type",{...ctx,detail:"args"}),fail();else for(let arg of rawArgs){let rewritten=rewriteUserConfig(arg),root5=findPluginRootPlaceholder(rewritten);if(root5!==void 0){findings.error("mcp-server-plugin-root-reference",{...ctx,detail:root5}),fail();continue}collectReferences(rewritten,references),args.push(rewritten)}let rawEnv=raw.env;if(rawEnv!==void 0)if(!isStringRecord(rawEnv))findings.error("mcp-server-field-type",{...ctx,detail:"env"}),fail();else for(let[key,value]of Object.entries(rawEnv)){if(PLUGIN_ROOT_ENV_NAMES.has(key)){findings.error("mcp-server-plugin-root-reference",{...ctx,detail:key}),fail();continue}if(!VARIABLE_NAME_PATTERN.test(key)){findings.error("variable-name-invalid",{subject:key,path:ctx.path}),fail();continue}let rewritten=rewriteUserConfig(value),root5=findPluginRootPlaceholder(rewritten);if(root5!==void 0){findings.error("mcp-server-plugin-root-reference",{...ctx,detail:root5}),fail();continue}let referenced=singlePlaceholderName(rewritten);referenced===void 0?(findings.error("mcp-server-env-literal",{...ctx,detail:key}),fail()):referenced!==key?(findings.error("mcp-server-env-rename",{...ctx,detail:key}),fail()):references.add(key)}if(raw.cwd!==void 0&&(findings.error("mcp-server-cwd-unsupported",ctx),fail()),!(!valid||typeof command5!="string"))return{name,transport:"stdio",command:command5,args,env:[...references].sort()}}function readHttp(name,raw,ctx,references,findings){let valid=!0,fail=()=>{valid=!1},url,rawUrl=raw.url;if(rawUrl===void 0)findings.error("mcp-server-url-missing",ctx),fail();else if(typeof rawUrl!="string")findings.error("mcp-server-field-type",{...ctx,detail:"url"}),fail();else{url=rewriteUserConfig(rawUrl);let root5=findPluginRootPlaceholder(url);root5!==void 0?(findings.error("mcp-server-plugin-root-reference",{...ctx,detail:root5}),fail()):referencedVariables(url).length>0?(findings.error("mcp-server-url-variable",ctx),fail()):isAcceptableServerUrl(url)||(findings.error("mcp-server-url-invalid",{...ctx,detail:url}),fail())}let headers2=[],rawHeaders=raw.headers;if(rawHeaders!==void 0)if(!isStringRecord(rawHeaders))findings.error("mcp-server-field-type",{...ctx,detail:"headers"}),fail();else{let lowered=new Set;for(let[header,value]of Object.entries(rawHeaders)){if(!HEADER_NAME_PATTERN.test(header)){findings.error("mcp-server-header-invalid",{...ctx,detail:header}),fail();continue}let key=header.toLowerCase();if(lowered.has(key)){findings.error("mcp-server-header-duplicate",{...ctx,detail:header}),fail();continue}lowered.add(key);let rewritten=rewriteUserConfig(value),root5=findPluginRootPlaceholder(rewritten);if(root5!==void 0){findings.error("mcp-server-plugin-root-reference",{...ctx,detail:root5}),fail();continue}collectReferences(rewritten,references),headers2.push([header,rewritten])}}if(!(!valid||url===void 0))return{name,transport:"http",url,headers:Object.fromEntries(headers2),env:[...references].sort()}}function isAcceptableServerUrl(value){let url;try{url=new URL(value)}catch{return!1}return url.username!==""||url.password!==""||url.hash!==""?!1:url.protocol==="https:"?!0:url.protocol!=="http:"?!1:isLoopbackHost(url.hostname)}function isLoopbackHost(hostname){return hostname==="localhost"||hostname==="[::1]"||hostname==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(hostname)}function collectReferences(text2,into){for(let name of referencedVariables(text2))into.add(name)}function stringsWithin(value){return typeof value=="string"?[rewriteUserConfig(value)]:Array.isArray(value)?value.flatMap(stringsWithin):isJsonObject2(value)?Object.values(value).flatMap(stringsWithin):[]}var OVERLAY_DIR="ai.stigmer",AGENT_DOCUMENT=`${OVERLAY_DIR}/agent.yaml`,WORKFLOWS_DIR=`${OVERLAY_DIR}/workflows`,MCP_SERVERS_DIR=`${OVERLAY_DIR}/mcp-servers`;function normaliseOverlay(index2,serverNames,findings){let overlay={workflows:[],mcpServers:[]},workflows=[],mcpServers=[];for(let path14 of index2.filesUnder(OVERLAY_DIR)){if(path14===AGENT_DOCUMENT){let bytes=readBytes(index2,path14,"overlay",findings);bytes!==void 0&&(overlay.agent={path:path14,bytes});continue}let name=yamlStem(path14);if(name!==void 0&&dirname(path14)===WORKFLOWS_DIR){let bytes=readBytes(index2,path14,"overlay",findings);bytes!==void 0&&workflows.push({path:path14,bytes,name});continue}if(name!==void 0&&dirname(path14)===MCP_SERVERS_DIR){if(!serverNames.has(name)){findings.error("overlay-server-unknown",{path:path14,subject:name});continue}let bytes=readBytes(index2,path14,"overlay",findings);bytes!==void 0&&mcpServers.push({path:path14,bytes,server:name});continue}findings.error("overlay-document-unknown",{path:path14})}return overlay.workflows=workflows,overlay.mcpServers=mcpServers,overlay}function yamlStem(path14){let name=basename(path14);return name.endsWith(".yaml")&&name.length>5?name.slice(0,-5):void 0}var SKILL_FILE="SKILL.md",DEFAULT_SKILLS_DIR="skills";function normaliseSkills(index2,set2,findings){let skills=[],seenNames=new Map;for(let dir of discoverSkillDirs(index2,set2,findings)){let skill=readSkill(index2,dir,set2,findings);if(skill===void 0)continue;if(seenNames.get(skill.name)!==void 0){findings.error("skill-name-duplicate",{subject:skill.name,path:joinPath(dir,SKILL_FILE)});continue}seenNames.set(skill.name,dir),skills.push(skill)}return skills}function discoverSkillDirs(index2,set2,findings){let dirs=new Set,addSkillsUnder=parent=>{for(let child of index2.childDirectories(parent)){let dir=joinPath(parent,child);index2.has(joinPath(dir,SKILL_FILE))&&dirs.add(dir)}};addSkillsUnder(DEFAULT_SKILLS_DIR);let declared=set2.manifests.flatMap(m3=>m3.skillPaths);for(let{path:path14,manifest}of declared)index2.has(joinPath(path14,SKILL_FILE))?dirs.add(path14):index2.isDirectory(path14)?addSkillsUnder(path14):findings.warn("path-missing",{path:manifest,subject:path14===""?".":`./${path14}`});return declared.length===0&&!index2.isDirectory(DEFAULT_SKILLS_DIR)&&index2.has(SKILL_FILE)&&dirs.add(""),[...dirs].sort(comparePaths)}function readSkill(index2,dir,set2,findings){let path14=joinPath(dir,SKILL_FILE),text2=readText(index2,path14,"skillMd",findings);if(text2===void 0)return;let extracted=extractFrontmatter(text2);if(!extracted.ok){findings.error(extracted.reason==="missing"?"skill-frontmatter-missing":"skill-frontmatter-unclosed",{path:path14});return}let parsed=parseFrontmatter(extracted.yaml);if(!parsed.ok){findings.error("skill-frontmatter-unreadable",{path:path14,detail:parsed.detail});return}let directoryName=dir===""?set2.name??"skill":basename(dir),name;if(typeof parsed.fields.name=="string"&&parsed.fields.name!==""?name=parsed.fields.name:(name=directoryName,findings.warn("skill-name-defaulted",{path:path14,subject:name})),!SKILL_NAME_PATTERN.test(name)){findings.error("skill-name-invalid",{path:path14,subject:name});return}dir!==""&&name!==directoryName&&findings.warn("skill-name-differs-from-directory",{path:path14,subject:name,detail:directoryName});let description=parsed.fields.description;return(typeof description!="string"||description==="")&&findings.warn("skill-description-missing",{path:path14,subject:name}),{name,...typeof description=="string"&&description!==""&&{description},dir,files:index2.filesUnder(dir)}}function normaliseVariables(set2,servers,findings){let declared=new Map,declaredIn=new Map;for(let manifest of set2.manifests){let declaration=manifest.variables;if(declaration===void 0)continue;let variables=declaration.dialect==="cursor"?readCursorVariables(declaration.value,declaration.manifest,findings):readClaudeVariables(declaration.value,declaration.manifest,findings);for(let variable of variables)declared.has(variable.name)||(declared.set(variable.name,variable),declaredIn.set(variable.name,declaration.manifest))}let referencedBy=new Map;for(let server of servers.servers)for(let name of server.env)referencedBy.has(name)||referencedBy.set(name,server.name);if(servers.refused===0)for(let[name,variable]of declared)referencedBy.has(name)||findings.warn("variable-unreferenced",{subject:variable.name,path:declaredIn.get(name)});let inferred=[];for(let[name,server]of[...referencedBy].sort(([a5],[b7])=>a5<b7?-1:a5>b7?1:0))declared.has(name)||(findings.warn("variable-inferred",{subject:name,detail:server}),inferred.push({name,isSecret:!0,optional:!1,declaredBy:"inferred"}));return[...declared.values(),...inferred]}function readCursorVariables(value,manifest,findings){if(!isJsonObject2(value)||value.type!=="object")return findings.error("manifest-field-type",{path:manifest,subject:"variables",detail:"a JSON Schema object with type 'object'"}),[];let properties=value.properties??{};if(!isJsonObject2(properties))return findings.error("manifest-field-type",{path:manifest,subject:"variables.properties",detail:"an object"}),[];let required=value.required??[];if(!isStringArray(required))return findings.error("manifest-field-type",{path:manifest,subject:"variables.required",detail:"an array of strings"}),[];let variables=[];for(let[name,schema2]of fields(properties)){if(!VARIABLE_NAME_PATTERN.test(name)){findings.error("variable-name-invalid",{subject:name,path:manifest});continue}let property=isJsonObject2(schema2)?schema2:{},type2=property.type;type2!==void 0&&type2!=="string"&&findings.warn("variable-type-narrowed",{subject:name,path:manifest,detail:describeValue(type2)}),property.default!==void 0&&findings.warn("variable-default-dropped",{subject:name,path:manifest}),property.enum!==void 0&&findings.warn("variable-option-dropped",{subject:name,path:manifest,detail:"enum"});let description=describe(property);variables.push({name,...description!==void 0&&{description},isSecret:!0,optional:!required.includes(name),declaredBy:"cursor"})}return variables}function readClaudeVariables(value,manifest,findings){if(!isJsonObject2(value))return findings.error("manifest-field-type",{path:manifest,subject:"userConfig",detail:"an object"}),[];let variables=[];for(let[name,entry]of fields(value)){if(!VARIABLE_NAME_PATTERN.test(name)){findings.error("variable-name-invalid",{subject:name,path:manifest});continue}if(!isJsonObject2(entry)){findings.error("manifest-field-type",{path:manifest,subject:`userConfig.${name}`,detail:"an object"});continue}let type2=entry.type;type2!==void 0&&type2!=="string"&&findings.warn("variable-type-narrowed",{subject:name,path:manifest,detail:describeValue(type2)}),entry.default!==void 0&&findings.warn("variable-default-dropped",{subject:name,path:manifest});for(let option of["options","multiple","min","max"])entry[option]!==void 0&&findings.warn("variable-option-dropped",{subject:name,path:manifest,detail:option});let description=describe(entry);variables.push({name,...description!==void 0&&{description},isSecret:entry.sensitive===!0,optional:entry.required!==!0,declaredBy:"claude"})}return variables}function describe(entry){let parts=[entry.title,entry.description].filter(part=>typeof part=="string"&&part!=="");return parts.length===0?void 0:parts.join(": ")}function readPluginPackage(files){let findings=new Findings;for(let entry of files.entries)isContainedPath(entry.path)||findings.error("path-uncontained",{path:entry.path});let index2=new PluginFileIndex(files),set2=detectManifests(index2,findings);if(set2===void 0)return{ok:!1,errors:findings.errors,warnings:findings.warnings};let skills=normaliseSkills(index2,set2,findings),servers=normaliseMcpServers(index2,set2.mcpSources,findings),mcpServers=servers.servers,variables=normaliseVariables(set2,servers,findings),subAgents=normaliseSubAgents(index2,set2,skills,findings),overlay=normaliseOverlay(index2,servers.declaredNames,findings),ignored=dedupeIgnored([ignoredOnDisk(index2,set2.readsAgents),...set2.manifests.map(m3=>m3.ignored)]);if(findings.errors.length>0||set2.name===void 0)return{ok:!1,errors:findings.errors,warnings:findings.warnings};let identity2=set2.manifests[0]?.identity??{};return{ok:!0,plugin:{name:set2.name,...identity2.version!==void 0&&{version:identity2.version},...identity2.description!==void 0&&{description:identity2.description},...identity2.author!==void 0&&{author:identity2.author},...identity2.homepage!==void 0&&{homepage:identity2.homepage},...identity2.repository!==void 0&&{repository:identity2.repository},...identity2.license!==void 0&&{license:identity2.license},keywords:identity2.keywords??[],dialect:set2.dialect,manifestsFound:set2.manifests.map(m3=>m3.path),skills,mcpServers,subAgents,variables,overlay,ignored},warnings:findings.warnings}}var import_node_zlib=require("node:zlib");function parseZipStructure(data){let view=new DataView(data.buffer,data.byteOffset,data.byteLength),eocd=findEndOfCentralDirectory(data,view),entries=[],offset=eocd.centralDirectoryOffset;for(let i6=0;i6<eocd.entryCount;i6++){if(offset+46>data.length||view.getUint32(offset,!0)!==33639248)throw new Error(`invalid central directory record at offset ${offset}`);let versionMadeBy=view.getUint16(offset+4,!0),compressionMethod=view.getUint16(offset+10,!0),crc323=view.getUint32(offset+16,!0),compressedSize=view.getUint32(offset+20,!0),uncompressedSize=view.getUint32(offset+24,!0),fileNameLength=view.getUint16(offset+28,!0),extraFieldLength=view.getUint16(offset+30,!0),commentLength=view.getUint16(offset+32,!0),externalAttributes=view.getUint32(offset+38,!0),localHeaderOffset=view.getUint32(offset+42,!0),fileName=new TextDecoder().decode(data.subarray(offset+46,offset+46+fileNameLength)),dataStart=payloadStart(data,view,localHeaderOffset,fileName);if(dataStart+compressedSize>data.length)throw new Error(`entry "${fileName}" payload runs past end of archive`);entries.push({name:fileName,isDirectory:fileName.endsWith("/"),compressionMethod,uncompressedSize,compressedSize,crc32:crc323,versionMadeBy,externalAttributes,compressedData:data.subarray(dataStart,dataStart+compressedSize)}),offset+=46+fileNameLength+extraFieldLength+commentLength}return entries}function findEndOfCentralDirectory(data,view){let scanFloor=Math.max(0,data.length-22-65535);for(let pos=data.length-22;pos>=scanFloor;pos--){if(view.getUint32(pos,!0)!==101010256)continue;let entryCount=view.getUint16(pos+10,!0),centralDirectorySize=view.getUint32(pos+12,!0),centralDirectoryOffset=view.getUint32(pos+16,!0),directoryEndsAtRecord=centralDirectoryOffset+centralDirectorySize<=pos,directoryLooksReal=entryCount===0||centralDirectoryOffset+4<=data.length&&view.getUint32(centralDirectoryOffset,!0)===33639248;if(directoryEndsAtRecord&&directoryLooksReal)return{centralDirectoryOffset,entryCount}}throw new Error("no end-of-central-directory record found")}var CRC_TABLE=(()=>{let table2=new Uint32Array(256);for(let n3=0;n3<256;n3++){let c5=n3;for(let bit=0;bit<8;bit++)c5=c5>>>1^3988292384&-(c5&1);table2[n3]=c5}return table2})();function crc322(data){let crc2=4294967295;for(let i6=0;i6<data.length;i6++)crc2=crc2>>>8^CRC_TABLE[(crc2^data[i6])&255];return(crc2^4294967295)>>>0}function payloadStart(data,view,localHeaderOffset,fileName){if(localHeaderOffset+30>data.length||view.getUint32(localHeaderOffset,!0)!==67324752)throw new Error(`entry "${fileName}" has no local file header at offset ${localHeaderOffset}`);let localNameLength=view.getUint16(localHeaderOffset+26,!0),localExtraLength=view.getUint16(localHeaderOffset+28,!0);return localHeaderOffset+30+localNameLength+localExtraLength}var METHOD_STORED=0,METHOD_DEFLATED=8,InflateError=class extends Error{kind;detail;constructor(kind,detail){super(`${kind}: ${detail}`),this.kind=kind,this.detail=detail,this.name="InflateError"}};function inflateEntry(entry,maxSize){let content;switch(entry.compressionMethod){case METHOD_STORED:content=entry.compressedData;break;case METHOD_DEFLATED:try{content=new Uint8Array((0,import_node_zlib.inflateRawSync)(entry.compressedData,{maxOutputLength:maxSize+1}))}catch(error2){throw isOutputLengthError(error2)?new InflateError("too-large",`output exceeds ${maxSize} bytes`):new InflateError("read-failed",error2 instanceof Error?error2.message:String(error2))}break;default:throw new InflateError("unsupported-method","zip: unsupported compression algorithm")}if(content.length>maxSize)throw new InflateError("too-large",`output exceeds ${maxSize} bytes`);if(crc322(content)!==entry.crc32)throw new InflateError("checksum","zip: checksum error");return content}function isOutputLengthError(error2){return error2 instanceof Error&&("code"in error2&&error2.code==="ERR_BUFFER_TOO_LARGE"||error2.message.includes("maxOutputLength"))}var import_node_crypto25=require("node:crypto");function sanitizePath(input){let sanitized=sanitizeCore(input);return input.length>0&&(input.endsWith("/")||input.endsWith("\\"))&&sanitized.length>0?`${sanitized}/`:sanitized}function sanitizeCore(input){let segments=`/${input.replaceAll("\\","/")}`.split("/"),resolved=[];for(let segment of segments)if(!(segment===""||segment===".")){if(segment===".."){resolved.pop();continue}resolved.push(segment)}return resolved.join("/")}var WINDOWS_SHORT_FILENAME_PATTERN=/~\d+\.?/;function hasWindowsShortFilenames(input){return input.replaceAll("\\","/").split("/").some(part=>WINDOWS_SHORT_FILENAME_PATTERN.test(part))}var CREATOR_UNIX=3,CREATOR_MACOSX=19,S_IFMT=61440,S_IFBLK=24576,S_IFCHR=8192,S_IFIFO=4096,S_IFLNK=40960,S_IFSOCK=49152;function entryTypeBits(entry){let creator=entry.versionMadeBy>>8;if(creator!==CREATOR_UNIX&&creator!==CREATOR_MACOSX)return{isSymlink:!1,isSpecial:!1};let fileType=entry.externalAttributes>>>16&65535&S_IFMT;return{isSymlink:fileType===S_IFLNK,isSpecial:fileType===S_IFBLK||fileType===S_IFCHR||fileType===S_IFIFO||fileType===S_IFSOCK}}function applyEntryPrefilter(entries){let symlinks=new Set,result=[];for(let entry of entries){let name=sanitizePath(entry.name);if(hasWindowsShortFilenames(name))continue;let shadowKey=trimTrailingSlash(sanitizePath(name)).toLowerCase(),parts=shadowKey.split("/"),traversal=!1;for(let i6=1;i6<=parts.length;i6++)if(symlinks.has(parts.slice(0,i6).join("/"))){traversal=!0;break}if(traversal)continue;let typeBits=entryTypeBits(entry);typeBits.isSymlink&&symlinks.add(shadowKey),!typeBits.isSpecial&&result.push({name,entry})}return result}function trimTrailingSlash(path14){return path14.endsWith("/")?path14.slice(0,-1):path14}function openArchive(bytes,maxZipSize=104857600){if(bytes.length>maxZipSize)throw new Error(`ZIP file too large: ${bytes.length} bytes (max: ${maxZipSize})`);let hash=calculateHash(bytes),entries;try{entries=parseZipStructure(bytes)}catch{throw new Error("invalid ZIP file: zip: not a valid zip file")}return{hash,entries:applyEntryPrefilter(entries)}}function validateArchiveStructure(entries,limits,onEntry){if(entries.length===0)throw new Error("ZIP file is empty");if(entries.length>limits.maxFiles)throw new Error(`too many files in ZIP: ${entries.length} (max: ${limits.maxFiles})`);let totalUncompressedSize=0;for(let{name,entry}of entries){onEntry?.(name);for(let ch of name){let codePoint=ch.codePointAt(0);if(codePoint<32||codePoint===127)throw new Error(`invalid character in filename: ${name}`)}if(totalUncompressedSize+=entry.uncompressedSize,totalUncompressedSize>limits.maxUncompressedSize)throw new Error(`total uncompressed size too large: ${totalUncompressedSize} bytes (max: ${limits.maxUncompressedSize})`);if(entry.compressedSize>0){let ratio=Math.floor(entry.uncompressedSize/entry.compressedSize);if(ratio>limits.maxCompressionRatio)throw new Error(`suspicious compression ratio in ${name}: ${ratio}:1 (max: ${limits.maxCompressionRatio}:1)`)}}}function calculateHash(data){return(0,import_node_crypto25.createHash)("sha256").update(data).digest("hex")}function openPluginArchive(bytes){let{hash,entries}=openArchive(bytes,104857600);validateArchiveStructure(entries,PLATFORM_ARCHIVE_LIMITS);let byPath=new Map;for(let prefiltered of entries){let{name}=prefiltered;name.endsWith("/")||!isContainedPath(name)||byPath.has(name)||byPath.set(name,prefiltered)}let files={entries:[...byPath.values()].map(({name,entry})=>({path:name,size:entry.uncompressedSize})).sort((a5,b7)=>comparePaths(a5.path,b7.path)),read(path14){let prefiltered=byPath.get(path14);if(prefiltered===void 0)throw new Error(`plugin file '${path14}' is not listed`);try{return inflateEntry(prefiltered.entry,prefiltered.entry.uncompressedSize)}catch(error2){throw error2 instanceof InflateError?new Error(`failed to read '${path14}' from the plugin archive: ${error2.detail}`):error2}}};return{digest:hash,files}}function memberLabels(identity2){return{[PLUGIN_LABEL]:identity2.id,[PLUGIN_VERSION_LABEL]:identity2.digest}}function memberMetadata(identity2,member2,authored){let metadata=authored===void 0?create2(ApiResourceMetadataSchema,{}):authored;return metadata.org=identity2.org,metadata.name=member2.name,metadata.slug=member2.slug,metadata.id="",identity2.visibility!==ApiResourceVisibility.api_resource_visibility_unspecified&&(metadata.visibility=identity2.visibility),metadata.labels={...metadata.labels,...memberLabels(identity2)},metadata}var McpServerOverlayError=class extends Error{constructor(server,reason){super(`overlay for MCP server '${server}': ${reason}`),this.name="McpServerOverlayError"}};function mcpServerSlugOf(server){return generateSlug(server.name)}function planMcpServers(plugin2,overlays,identity2){let env2=declaredVariables(plugin2);return plugin2.mcpServers.map(server=>{let overlay=overlays.get(server.name),spec=create2(McpServerSpecSchema,{description:plugin2.description??"",env:Object.fromEntries(server.env.map(name=>[name,env2.get(name)??inferredSecret()]))});switch(server.transport){case"http":spec.serverType={case:"http",value:create2(HttpServerConfigSchema,{url:server.url,headers:{...server.headers}})};break;case"stdio":spec.serverType={case:"stdio",value:create2(StdioServerConfigSchema,{command:server.command,args:[...server.args]})};break;default:{let exhaustive=server;throw new Error(`unknown transport ${JSON.stringify(exhaustive)}`)}}overlay!==void 0&&layerOverlay(server.name,spec,overlay);let slug=mcpServerSlugOf(server);return{name:server.name,slug,resource:create2(McpServerSchema,{apiVersion:"agentic.stigmer.ai/v1",kind:"McpServer",metadata:memberMetadata(identity2,{name:server.name,slug},overlay?.metadata),spec})}})}function declaredVariables(plugin2){return new Map(plugin2.variables.map(variable=>[variable.name,create2(EnvVarDeclarationSchema,{isSecret:variable.isSecret,description:variable.description??"",optional:variable.optional})]))}function inferredSecret(){return create2(EnvVarDeclarationSchema,{isSecret:!0,optional:!1})}function layerOverlay(serverName,spec,overlay){let authored=overlay.spec;if(authored!==void 0){if(authored.serverType.case!==void 0)throw new McpServerOverlayError(serverName,"the transport (http or stdio) lives in mcp.json, where every client reads it; the overlay may not redefine it");if(Object.keys(authored.env).length>0)throw new McpServerOverlayError(serverName,"variables are declared where mcp.json references them (the plugin's variables or userConfig); the overlay may not declare env");authored.description!==""&&(spec.description=authored.description),authored.iconUrl!==""&&(spec.iconUrl=authored.iconUrl),authored.tags.length>0&&(spec.tags=[...authored.tags]),authored.defaultEnabledTools.length>0&&(spec.defaultEnabledTools=[...authored.defaultEnabledTools]),authored.pinnedToolApprovals.length>0&&(spec.pinnedToolApprovals=[...authored.pinnedToolApprovals]),authored.repositoryUrl!==""&&(spec.repositoryUrl=authored.repositoryUrl),authored.auth!==void 0&&(spec.auth=authored.auth)}}function renderDefaultAgentInstructions(plugin2){let lines=[],description=plugin2.description?.trim()??"";if(lines.push(description===""?`You are ${plugin2.name}, an agent installed from the ${plugin2.name} plugin.`:`You are ${plugin2.name}: ${description}`),plugin2.skills.length>0){lines.push(""),lines.push("Your skills:");for(let skill of plugin2.skills){let summary=skill.description?.trim()??"";lines.push(summary===""?`- ${skill.name}`:`- ${skill.name}: ${summary}`)}}if(plugin2.mcpServers.length>0){lines.push(""),lines.push("Your tools come from these MCP servers:");for(let server of plugin2.mcpServers)lines.push(`- ${server.name}`)}return lines.push(""),lines.push("Before acting on a task a skill covers, read that skill and follow it. Use the tools your servers provide rather than guessing at their results. When you finish, state what you did and what you could not do."),lines.join(`
|
|
491
491
|
`)}var file_ai_stigmer_agentic_skill_v1_io=fileDesc("CiRhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvaW8ucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MSIgCgdTa2lsbElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEijgQKEFB1c2hTa2lsbFJlcXVlc3QSEwoDb3JnGAEgASgJQga6SAPIAQESEAoIYXJ0aWZhY3QYAiABKAwSKAoDdGFnGAMgASgJQhu6SBhyFjIUXiR8XlthLXpBLVowLTkuXy1dKyQSQgoOZ2l0X3Byb3ZlbmFuY2UYBCABKAsyKi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuR2l0UHJvdmVuYW5jZRIPCgdtZXNzYWdlGAYgASgJEhsKE2FydGlmYWN0X3VwbG9hZF9yZWYYByABKAkSSQoGbGFiZWxzGAggAygLMjkuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlB1c2hTa2lsbFJlcXVlc3QuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ATq2AbpIsgEarwEKInB1c2hfc2tpbGxfcmVxdWVzdC5hcnRpZmFjdF9zb3VyY2USSWV4YWN0bHkgb25lIG9mIGFydGlmYWN0IChpbmxpbmUgYnl0ZXMpIG9yIGFydGlmYWN0X3VwbG9hZF9yZWYgbXVzdCBiZSBzZXQaPih0aGlzLmFydGlmYWN0LnNpemUoKSA+IDApICE9ICh0aGlzLmFydGlmYWN0X3VwbG9hZF9yZWYgIT0gJycpSgQIBRAGIlcKI0NyZWF0ZVNraWxsQXJ0aWZhY3RVcGxvYWRVcmxSZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEhsKCnNpemVfYnl0ZXMYAiABKANCB7pIBCICIAAiVwoWU2tpbGxBcnRpZmFjdFVwbG9hZFVybBILCgN1cmwYASABKAkSGwoTYXJ0aWZhY3RfdXBsb2FkX3JlZhgCIAEoCRITCgt0dGxfc2Vjb25kcxgDIAEoBSJQChhTa2lsbEFydGlmYWN0RG93bmxvYWRVcmwSCwoDdXJsGAEgASgJEhMKC3R0bF9zZWNvbmRzGAIgASgFEhIKCnNpemVfYnl0ZXMYAyABKAMiowEKJVB1c2hTa2lsbEZyb21FeGVjdXRpb25BcnRpZmFjdFJlcXVlc3QSEwoDb3JnGAEgASgJQga6SAPIAQESHQoMZXhlY3V0aW9uX2lkGAIgASgJQge6SARyAhABEhwKC3N0b3JhZ2Vfa2V5GAMgASgJQge6SARyAhABEigKA3RhZxgEIAEoCUIbukgYchYyFF4kfF5bYS16QS1aMC05Ll8tXSskIjoKEkdldEFydGlmYWN0UmVxdWVzdBIkChRhcnRpZmFjdF9zdG9yYWdlX2tleRgBIAEoCUIGukgDyAEBIicKE0dldEFydGlmYWN0UmVzcG9uc2USEAoIYXJ0aWZhY3QYASABKAwiagoWTGlzdFNraWxsVmVyc2lvbnNJbnB1dBITCgNvcmcYASABKAlCBrpIA8gBARIUCgRzbHVnGAIgASgJQga6SAPIAQESEgoKcGFnZV90b2tlbhgDIAEoCRIRCglwYWdlX3NpemUYBCABKAUitgIKEVNraWxsVmVyc2lvbkVudHJ5EhQKDHZlcnNpb25faGFzaBgBIAEoCRItCglwdXNoZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkgKCXB1c2hlZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSQgoOZ2l0X3Byb3ZlbmFuY2UYBiABKAsyKi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuR2l0UHJvdmVuYW5jZRIPCgdtZXNzYWdlGAcgASgJEhwKFGFydGlmYWN0X3N0b3JhZ2Vfa2V5GAggASgJIosBChlMaXN0U2tpbGxWZXJzaW9uc1Jlc3BvbnNlEkAKCHZlcnNpb25zGAEgAygLMi4uYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsVmVyc2lvbkVudHJ5EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoBWIGcHJvdG8z",[file_ai_stigmer_agentic_skill_v1_status,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]),SkillIdSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,0),PushSkillRequestSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,1);var SkillArtifactUploadUrlSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,3),SkillArtifactDownloadUrlSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,4);var GetArtifactResponseSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,7);var SkillVersionEntrySchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,9),ListSkillVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,10);var DETERMINISTIC_ZIP_MTIME=new Date(1980,0,1),DEFLATE_LEVEL=6;function writeArchive(files){let sorted=[...files].sort((a5,b7)=>a5.path<b7.path?-1:a5.path>b7.path?1:0),tree={};for(let file of sorted){if(file.path in tree)throw new Error(`archive path '${file.path}' listed twice`);tree[file.path]=file.bytes}return zipSync(tree,{level:DEFLATE_LEVEL,mtime:DETERMINISTIC_ZIP_MTIME})}function skillSlugOf(skill){return generateSlug(skill.name)}function planSkills(plugin2,files,identity2,tag2,message6){return plugin2.skills.map(skill=>{let prefix=skill.dir===""?"":`${skill.dir}/`,archive=writeArchive(skill.files.map(path14=>({path:path14.startsWith(prefix)?path14.slice(prefix.length):path14,bytes:files.read(path14)})));return{name:skill.name,slug:skillSlugOf(skill),request:create2(PushSkillRequestSchema,{org:identity2.org,artifact:archive,tag:tag2,message:message6,labels:memberLabels(identity2)})}})}function carriesAgent(plugin2){return plugin2.skills.length>0||plugin2.subAgents.length>0||plugin2.overlay.agent!==void 0}function planAgent(plugin2,overlayAgent,mcpServers,identity2,warnings){if(!carriesAgent(plugin2))return;let member2={name:identity2.name,slug:identity2.slug};if(overlayAgent!==void 0)return{...member2,resource:create2(AgentSchema,{apiVersion:"agentic.stigmer.ai/v1",kind:"Agent",metadata:memberMetadata(identity2,member2,overlayAgent.metadata),spec:overlayAgent.spec})};let serverSlugs=plugin2.mcpServers.map(mcpServerSlugOf),skillSlugByName=new Map(plugin2.skills.map(skill=>[skill.name,skillSlugOf(skill)])),spec=create2(AgentSpecSchema,{description:plugin2.description??"",instructions:renderDefaultAgentInstructions(plugin2),env:toolVariables(mcpServers),skillRefs:[...skillSlugByName.values()].map(slug=>create2(ApiResourceReferenceSchema,{org:identity2.org,kind:ApiResourceKind.skill,slug})),mcpServerUsages:serverSlugs.map(slug=>create2(McpServerUsageSchema,{mcpServerRef:create2(ApiResourceReferenceSchema,{org:identity2.org,kind:ApiResourceKind.mcp_server,slug})})),subAgents:plugin2.subAgents.map(subAgent=>planSubAgent(subAgent,identity2,serverSlugs,skillSlugByName,warnings))});return{...member2,resource:create2(AgentSchema,{apiVersion:"agentic.stigmer.ai/v1",kind:"Agent",metadata:memberMetadata(identity2,member2),spec})}}function toolVariables(mcpServers){let declarations={};for(let server of mcpServers){let spec=server.resource.spec;if(spec===void 0)continue;let oauthTarget=spec.auth?.targetEnvVar??"";for(let[name,declaration]of Object.entries(spec.env))name===oauthTarget||name in declarations||(declarations[name]=declaration)}return declarations}function planSubAgent(subAgent,identity2,serverSlugs,skillSlugByName,warnings){BUILT_IN_SUB_AGENT_NAMES.has(subAgent.name)&&warnings.push(create2(PluginWarningSchema,{kind:SERVER_WARNING_KINDS.subAgentNameBuiltin,path:subAgent.path,message:`sub-agent '${subAgent.name}' shares its name with a built-in sub-agent; the runner warns and runs the plugin's`}));let hint=subAgent.modelHint;return hint!==void 0&&hint.alias!=="inherit"&&hint.alias!=="unknown"&&warnings.push(create2(PluginWarningSchema,{kind:SERVER_WARNING_KINDS.modelHintUnresolved,path:subAgent.path,message:`sub-agent '${subAgent.name}' names model '${hint.raw}'; Stigmer does not pin a model from a plugin, so it runs on the session's model`})),create2(SubAgentSchema,{name:subAgent.name,description:subAgent.description??"",instructions:subAgent.instructions,mcpAccess:serverSlugs.map(slug=>create2(McpAccessSchema,{mcpServer:slug})),skillRefs:subAgent.skillNames.flatMap(name=>{let slug=skillSlugByName.get(name);return slug===void 0?[]:[create2(ApiResourceReferenceSchema,{org:identity2.org,kind:ApiResourceKind.skill,slug})]})})}function workflowSlugOf(name){return generateSlug(name)}function planWorkflows(overlays,identity2){return overlays.map(({name,resource})=>{let slug=workflowSlugOf(name);return{name,slug,resource:create2(WorkflowSchema,{apiVersion:"agentic.stigmer.ai/v1",kind:"Workflow",metadata:memberMetadata(identity2,{name,slug},resource.metadata),spec:resource.spec})}})}function versionTag(version,warnings){return version===void 0||version===""?"":VERSION_TAG_PATTERN.test(version)?version:(warnings.push(create2(PluginWarningSchema,{kind:SERVER_WARNING_KINDS.versionNotTaggable,message:`version '${version}' cannot be a tag (letters, digits, '.', '_' and '-' only); this version is reachable by its digest but not by name`})),"")}function planMaterialization(plugin2,files,overlays,identity2,message6){let warnings=[];for(let ignored of plugin2.ignored)warnings.push(create2(PluginWarningSchema,{kind:SERVER_WARNING_KINDS.componentIgnored,path:ignored.path,message:`${ignored.kind} at '${ignored.path}' is not installed; Stigmer reads skills, MCP servers, sub-agents and the ai.stigmer/ overlay`}));let tag2=versionTag(plugin2.version,warnings),skills=planSkills(plugin2,files,identity2,tag2,message6),mcpServers=planMcpServers(plugin2,new Map(overlays.mcpServers.map(document2=>[document2.server,document2.resource])),identity2),agent=planAgent(plugin2,overlays.agent?.resource,mcpServers,identity2,warnings),workflows=planWorkflows(overlays.workflows,identity2),members=[...skills.map(skill=>({kind:ApiResourceKind.skill,slug:skill.slug,name:skill.name,system:skill.request.labels[SYSTEM_LABEL]===RESERVED_LABEL_TRUE})),...mcpServers.map(server=>({kind:ApiResourceKind.mcp_server,slug:server.slug,name:server.name,system:isSystemContent(server.resource.metadata)})),...agent===void 0?[]:[{kind:ApiResourceKind.agent,slug:agent.slug,name:agent.name,system:isSystemContent(agent.resource.metadata)}],...workflows.map(workflow=>({kind:ApiResourceKind.workflow,slug:workflow.slug,name:workflow.name,system:isSystemContent(workflow.resource.metadata)}))];return{skills,mcpServers,agent,workflows,members,tag:tag2,warnings}}function getDefaultExportFromCjs(x2){return x2&&x2.__esModule&&Object.prototype.hasOwnProperty.call(x2,"default")?x2.default:x2}var jsYaml={},loader={},common={},hasRequiredCommon;function requireCommon(){if(hasRequiredCommon)return common;hasRequiredCommon=1;function isNothing(subject){return typeof subject>"u"||subject===null}function isObject4(subject){return typeof subject=="object"&&subject!==null}function toArray(sequence){return Array.isArray(sequence)?sequence:isNothing(sequence)?[]:[sequence]}function extend(target,source){if(source){let sourceKeys=Object.keys(source);for(let index2=0,length=sourceKeys.length;index2<length;index2+=1){let key=sourceKeys[index2];target[key]=source[key]}}return target}function repeat(string,count){let result="";for(let cycle=0;cycle<count;cycle+=1)result+=string;return result}function isNegativeZero(number){return number===0&&Number.NEGATIVE_INFINITY===1/number}return common.isNothing=isNothing,common.isObject=isObject4,common.toArray=toArray,common.repeat=repeat,common.isNegativeZero=isNegativeZero,common.extend=extend,common}var exception,hasRequiredException;function requireException(){if(hasRequiredException)return exception;hasRequiredException=1;function formatError2(exception2,compact){let where="",message6=exception2.reason||"(unknown reason)";return exception2.mark?(exception2.mark.name&&(where+='in "'+exception2.mark.name+'" '),where+="("+(exception2.mark.line+1)+":"+(exception2.mark.column+1)+")",!compact&&exception2.mark.snippet&&(where+=`
|
|
@@ -1521,7 +1521,7 @@ Headers: `+JSON.stringify(headers2)),this.code=code,this.body=body,this.headers=
|
|
|
1521
1521
|
\r
|
|
1522
1522
|
SM\r
|
|
1523
1523
|
\r
|
|
1524
|
-
`,"latin1");function createProtocolDemuxServer(targets){return(0,import_node_net4.createServer)({noDelay:!0},socket=>{routeByPreface(socket,targets)})}function routeByPreface(socket,targets){let peeked=[],peekedLength=0,cleanup=()=>{socket.removeListener("data",onData),socket.removeListener("error",onPeekError),socket.removeListener("close",cleanup)},onPeekError=()=>{cleanup(),socket.destroy()},onData=chunk=>{peeked.push(chunk),peekedLength+=chunk.length;let seen=Buffer.concat(peeked,Math.min(peekedLength,HTTP2_CONNECTION_PREFACE.length)),comparable=seen.subarray(0,Math.min(seen.length,HTTP2_CONNECTION_PREFACE.length));if(!HTTP2_CONNECTION_PREFACE.subarray(0,comparable.length).equals(comparable)){handoffHttp1();return}if(peekedLength>=HTTP2_CONNECTION_PREFACE.length){handoffHttp2();return}};function handoffHttp1(){cleanup(),socket.pause(),socket.unshift(Buffer.concat(peeked,peekedLength)),targets.http1.emit("connection",socket),socket.resume()}function handoffHttp2(){cleanup(),socket.pause();let replay=createReplayDuplex(socket,Buffer.concat(peeked,peekedLength));targets.http2.emit("connection",replay)}socket.on("data",onData),socket.on("error",onPeekError),socket.on("close",cleanup)}function createReplayDuplex(socket,head){let replay=new import_node_stream13.Duplex({read(){socket.resume()},write(chunk,encoding,callback){socket.write(chunk,encoding,callback)},final(callback){socket.end(callback)},destroy(error2,callback){socket.destroy(),callback(error2)}});return socket.on("data",chunk=>{replay.push(chunk)||socket.pause()}),socket.on("end",()=>{replay.push(null)}),socket.on("error",error2=>{replay.destroy(error2)}),replay.push(head),replay}function createUnifiedPortServer(options){let rpcHandler=connectNodeAdapter({routes:options.routes,interceptors:options.interceptors,readMaxBytes:10485760,writeMaxBytes:10485760}),laneRouter=(request,response)=>{let path14=(request.url??"").split("?",1)[0]??"";if(path14===TASK_KIND_REGISTRY_PATH){options.taskKindRegistryLane(request,response);return}if(path14===MODEL_REGISTRY_PATH){options.modelRegistryLane(request,response);return}if(options.skillTransferLane!==void 0&&path14.startsWith(SKILL_ARTIFACTS_PATH_PREFIX)){options.skillTransferLane(request,response);return}if(options.consoleLane!==void 0&&consoleLaneEligible(request)){options.consoleLane(request,response);return}if(isRpcPreflight(request)){handleRpcPreflight(request,response);return}applyRpcCorsHeaders(request,response),rpcHandler(request,response)},http1=(0,import_node_http4.createServer)(laneRouter),http22=(0,import_node_http22.createServer)(laneRouter),liveSessions=new Set;http22.on("session",session=>{liveSessions.add(session),session.on("close",()=>liveSessions.delete(session)),armKeepalivePings(session,options.logger)}),http22.on("sessionError",error2=>{options.logger.debug("http2 session error",{error:String(error2)})});let demux=createProtocolDemuxServer({http1,http2:http22}),liveSockets=new Set;return demux.on("connection",socket=>{liveSockets.add(socket),socket.on("close",()=>liveSockets.delete(socket))}),{listen(port,host="0.0.0.0"){return new Promise((resolve,reject2)=>{demux.once("error",reject2),demux.listen(port,host,()=>{let address=demux.address();if(address===null||typeof address=="string"){reject2(new Error("unified port bound without a TCP address"));return}resolve(address.port)})})},async shutdown(){let closed=new Promise(resolve=>demux.close(()=>resolve()));http1.close(),http1.closeIdleConnections(),http22.close();for(let session of liveSessions)session.close();await Promise.race([closed.then(()=>!0),new Promise(resolve=>setTimeout(()=>resolve(!1),1e4).unref())])||options.logger.warn("shutdown drain budget exhausted; destroying remaining connections",{remaining:liveSockets.size});for(let socket of liveSockets)socket.destroy();await closed}}}function armKeepalivePings(session,logger2){let interval=setInterval(()=>{let acked=!1,deadline=setTimeout(()=>{!acked&&!session.destroyed&&(logger2.debug("closing http2 session: keepalive ping unacknowledged"),session.destroy())},5e3);deadline.unref();try{session.ping(()=>{acked=!0,clearTimeout(deadline)})}catch{clearTimeout(deadline),session.destroyed||session.destroy()}},15e3);interval.unref(),session.on("close",()=>clearInterval(interval))}function registerExtensionServicesUnshadowed(router,registrations){let servedBy=new Map(router.handlers.map(handler=>[handler.requestPath,"the core"]));for(let{unit,register}of registrations){let before=router.handlers.length;register(router);for(let handler of router.handlers.slice(before)){let server=servedBy.get(handler.requestPath);if(server!==void 0)throw new Error(`extension '${unit}' registers ${handler.requestPath}, which ${server} already serves \u2014 a route is never registered twice; an edition changes a core domain's behaviour through its driver points`);servedBy.set(handler.requestPath,`extension '${unit}'`)}}}function createInProcessClients(routes,logger2){let transport=createRouterTransport(routes,{router:{interceptors:buildInterceptorChain(logger2,createInProcessCallerInterceptor())}}),agentInstanceCommand=createClient(AgentInstanceCommandController,transport),agentInstanceQuery=createClient(AgentInstanceQueryController,transport),agentQuery=createClient(AgentQueryController,transport),sessionCommand=createClient(SessionCommandController,transport),sessionQuery=createClient(SessionQueryController,transport),environmentCommand=createClient(EnvironmentCommandController,transport),environmentQuery=createClient(EnvironmentQueryController,transport),executionContextCommand=createClient(ExecutionContextCommandController,transport),workflowInstanceCommand=createClient(WorkflowInstanceCommandController,transport),workflowInstanceQuery=createClient(WorkflowInstanceQueryController,transport),workflowQuery=createClient(WorkflowQueryController,transport),agentExecutionCommand=createClient(AgentExecutionCommandController,transport),agentCommand=createClient(AgentCommandController,transport),workflowCommand=createClient(WorkflowCommandController,transport),mcpServerCommand=createClient(McpServerCommandController,transport),skillCommand=createClient(SkillCommandController,transport),asCaller=caller=>({headers:{[IN_PROCESS_CALLER_HEADER]:encodeInProcessCaller(caller)}}),clients={agentInstanceApplier:{applyAsCaller:(instance,caller)=>agentInstanceCommand.apply(instance,asCaller(caller))},parentAgentLoader:{get:agentId=>agentQuery.get(create2(AgentIdSchema,{value:agentId}))},workflowInstanceCreator:{createAsCaller:(instance,caller)=>workflowInstanceCommand.create(instance,asCaller(caller))},parentWorkflowLoader:{get:workflowId=>workflowQuery.get(create2(WorkflowIdSchema,{value:workflowId}))},executionAgentLoader:{get:agentId=>agentQuery.get(create2(AgentIdSchema,{value:agentId}))},executionAgentInstanceLoader:{get:instanceId=>agentInstanceQuery.get(create2(AgentInstanceIdSchema,{value:instanceId}))},executionAgentInstanceCreator:{createAsCaller:(instance,caller)=>agentInstanceCommand.create(instance,asCaller(caller))},executionSessionLoader:{get:sessionId=>sessionQuery.get(create2(SessionIdSchema,{value:sessionId}))},executionSessionCreator:{createAsCaller:(session,caller)=>sessionCommand.create(session,asCaller(caller))},executionEnvironmentReader:{list:request=>environmentQuery.list(request),getSecretValue:input=>environmentQuery.getSecretValue(input),updateVariables:request=>environmentCommand.updateVariables(request),create:(environment,caller)=>environmentCommand.create(environment,caller===void 0?void 0:asCaller(caller)),delete:input=>environmentCommand.delete(input)},executionContextCreator:{create:ec2=>executionContextCommand.create(ec2)},connectExecutionContextClient:{create:(ec2,caller)=>executionContextCommand.create(ec2,asCaller(caller)),delete:input=>executionContextCommand.delete(input)},workflowExecutionInstanceCreator:{createAsCaller:(instance,caller)=>workflowInstanceCommand.create(instance,asCaller(caller))},workflowExecutionInstanceLoader:{get:instanceId=>workflowInstanceQuery.get(create2(WorkflowInstanceIdSchema,{value:instanceId}))},workflowExecutionContextCreator:{create:ec2=>executionContextCommand.create(ec2)},workflowExecutionApprovalForwarder:{submitApproval:input=>agentExecutionCommand.submitApproval(input)},workflowExecutionFileDecisionForwarder:{submitFileDecision:input=>agentExecutionCommand.submitFileDecision(input)},scheduleExecutionCreator:{create:(execution,fireCaller)=>agentExecutionCommand.create(execution,fireCaller===void 0?void 0:asCaller(fireCaller))},executionStatusWriter:{updateStatus:input=>agentExecutionCommand.updateStatus(input)},pluginMaterializer:{pushSkill:(request,caller)=>skillCommand.push(request,asCaller(caller)),applyMcpServer:(server,caller)=>mcpServerCommand.apply(server,asCaller(caller)),applyAgent:(agent,caller)=>agentCommand.apply(agent,asCaller(caller)),applyWorkflow:(workflow,caller)=>workflowCommand.apply(workflow,asCaller(caller)),updateVisibility:(kind,resourceId,visibility,caller)=>updateVisibilityByKind(kind,resourceId,visibility,asCaller(caller)),deleteByKind:(kind,resourceId,caller)=>deleteByKind(kind,resourceId,asCaller(caller))}};async function deleteByKind(kind,resourceId,options){switch(kind){case ApiResourceKind.agent:await agentCommand.delete(create2(AgentIdSchema,{value:resourceId}),options);return;case ApiResourceKind.workflow:await workflowCommand.delete(create2(WorkflowIdSchema,{value:resourceId}),options);return;case ApiResourceKind.mcp_server:await mcpServerCommand.delete(create2(ApiResourceDeleteInputSchema,{resourceId}),options);return;case ApiResourceKind.skill:await skillCommand.delete(create2(SkillIdSchema,{value:resourceId}),options);return;default:throw new Error(`unsupported resource kind for delete: ${ApiResourceKind[kind]??String(kind)}`)}}async function updateVisibilityByKind(kind,resourceId,visibility,options){let input=create2(UpdateVisibilityInputSchema,{resourceId,visibility});switch(kind){case ApiResourceKind.agent:await agentCommand.updateVisibility(input,options);return;case ApiResourceKind.workflow:await workflowCommand.updateVisibility(input,options);return;case ApiResourceKind.mcp_server:await mcpServerCommand.updateVisibility(input,options);return;case ApiResourceKind.skill:await skillCommand.updateVisibility(input,options);return;default:throw new Error(`unsupported resource kind for updateVisibility: ${ApiResourceKind[kind]??String(kind)}`)}}return{clients,transport}}var LIST_INDEXES=[agentExecutionListIndex,artifactListIndex,iamPolicyListIndex,sessionListIndex,workflowExecutionListIndex];async function composeServer(options){let{config:config2,logger:logger2}=options,extensions=resolveExtensions(options.extensions);extensions.unitNames.length>0&&logger2.info("extension units composed",{units:extensions.unitNames.join(", ")});let store,storeOptions={listIndexes:LIST_INDEXES};config2.databaseUrl!==""?(store=await PostgresStore.open(config2.databaseUrl,logger2,storeOptions),logger2.info("storage driver selected",{driver:"postgres"})):(store=SqliteStore.open(config2.dbPath,logger2,storeOptions),logger2.info("storage driver selected",{driver:"sqlite",dbPath:config2.dbPath}));let authEnabled=config2.oidcIssuer!=="",requireAuthentication=authEnabled||extensions.requireAuthentication!==void 0,authorizationPosture=authorizationPostureOf({unitAuthorizer:extensions.authorizer!==void 0,requireAuthentication}),builtInAuthorization=authorizationPosture!=="unit-authorizer";if(authorizationPosture==="built-in"&&extensions.edition!==ServerEdition.oss)throw new Error(`the composition serves edition '${ServerEdition[extensions.edition]}' under the require-authentication posture but registers no Authorizer \u2014 the built-in authorizer enforces the open-source kinds only; register an Authorizer or serve the open-source edition`);let identityAccounts=extensions.drivers.identityAccountStore??newResourceIdentityAccountStore(store),iamPolicies=extensions.drivers.iamPolicyStore??newResourceIamPolicyStore(store),platformClients=extensions.drivers.platformClientStore??newResourcePlatformClientStore(store),iamPolicyGrantPath=newIamPolicyGrantPath({policies:iamPolicies,lifecycle:extensions.drivers.resourceAuthorizationLifecycle,logger:logger2}),authorizationLifecycle=extensions.drivers.resourceAuthorizationLifecycle,roleLifecycle=authorizationLifecycle??(builtInAuthorization?newBuiltInRoleLifecycle({grantPath:iamPolicyGrantPath,accounts:identityAccounts}):void 0),operatorIdentity=operatorIdentitySnapshot(),membership=builtInAuthorization?newMembershipRules({grantPath:iamPolicyGrantPath,policies:iamPolicies,store,operatorEmail:operatorIdentity.email}):void 0,runnerAuthService=RunnerAuthService.fromEnv(),runnerCredentials=extensions.drivers.runnerCredentialProvider??(authorizationPosture==="built-in"?newBuiltInRunnerCredentialProvider({service:runnerAuthService,store,accounts:identityAccounts}):newExecutionScopedRunnerCredentialProvider(runnerAuthService)),authorizer=extensions.authorizer??(authorizationPosture==="built-in"?newLaneAdmittedAuthorizer(newBuiltInAuthorizer({store,policies:iamPolicies,accounts:identityAccounts,edition:extensions.edition,logger:logger2}),caller=>isWorkflowBoundRunner(runnerAuthService,caller)):newPermissiveSingleTeamAuthorizer()),organizationDirectory=extensions.drivers.organizationDirectory??(authorizationPosture==="built-in"?newBuiltInOrganizationDirectory({store,policies:iamPolicies,accounts:identityAccounts}):void 0),scheduleFireCaller=extensions.drivers.scheduleFireCaller??(authorizationPosture==="built-in"?newBuiltInScheduleFireCaller({store,accounts:identityAccounts}):void 0),listReadScope=extensions.drivers.listReadScope??(authorizationPosture==="built-in"?newBuiltInListReadScope({store,policies:iamPolicies,accounts:identityAccounts,logger:logger2}):void 0);logger2.info("authorization posture resolved",{posture:authorizationPosture,authorizer:extensions.authorizer!==void 0?"extension":authorizationPosture==="built-in"?"built-in":"permissive",listReadScope:extensions.drivers.listReadScope!==void 0?"extension":authorizationPosture==="built-in"?"built-in":"none"});let identityAccountPath={accounts:identityAccounts,logger:logger2,authorizer,authorizationLifecycle:roleLifecycle},createIdentityAccount=newCreateAccountPath(identityAccountPath,ApiResourceKind.identity_account),issuerDiscovery=newIssuerDiscovery(),identityAccountProvisioner=newDirectAccountProvisioner({accounts:identityAccounts,createAccount:createIdentityAccount,userInfo:newOidcUserInfoClient(issuerDiscovery)});if(!requireAuthentication){let operator=await ensureOperatorAccount({accounts:identityAccounts,createAccount:createIdentityAccount},operatorIdentity);logger2.info("trusted-local operator account ensured",{accountId:operator.metadata?.id??""}),membership!==void 0&&(await membership.ensureOperatorOwnership(operator),logger2.info("trusted-local operator ownership ensured",{accountId:operator.metadata?.id??""}))}authorizationPosture==="built-in"&&membership!==void 0&&(await membership.ensureRolesForExistingAccounts(),logger2.info("built-in posture role reconciliation ensured"));let v1Key;try{v1Key=getOrCreateNamedKey(ENCRYPTION_KEY_ENV_VAR,ENCRYPTION_KEY_FILE_NAME)}catch(error2){logger2.warn("Failed to initialize encryption - secret values will be stored in plaintext",{error:error2 instanceof Error?error2.message:String(error2)}),v1Key=void 0}let secretCodecs=new Map([[V1_VERSION,new StaticKeySecretCodec(v1Key)],...extensions.drivers.secretCodecs]),writeVersionValue=process.env[ENCRYPTION_WRITE_VERSION_ENV_VAR]??"",secretService=SecretService.withCodecs({codecs:secretCodecs,writeVersion:writeVersionValue===""?DEFAULT_WRITE_VERSION:writeVersionValue});logger2.info("secret encryption configured",{writeVersion:writeVersionValue===""?DEFAULT_WRITE_VERSION:writeVersionValue,registeredCodecs:[...secretCodecs.keys()].sort()});let platformTokenKeys=resolvePlatformTokenKeys({requireAuthentication,supplied:extensions.drivers.platformTokenKeys,edition:extensions.edition});logger2.info("platform-token keys resolved",{source:platformTokenKeys===void 0?"none (no authentication posture)":extensions.drivers.platformTokenKeys!==void 0?"extension":"open-source ladder",signing:platformTokenKeys?.signer!==void 0});let temporalConfig=newConfigFromEnv(),workflowExecutionTemporalConfig=newWorkflowExecutionConfigFromEnv(),sandboxProvisioner=newSandboxProvisioner(config2.sandboxProvisionerType,{config:{backendEndpoint:config2.sandboxBackendEndpoint,temporalAddress:config2.sandboxTemporalAddress,temporalNamespace:config2.temporalNamespace,temporalConnectionEnv:temporalConnectionEnv(config2.temporalConnection),runnerImage:config2.sandboxRunnerImage,runnerCommand:config2.sandboxRunnerCommand,kubernetesNamespace:config2.sandboxKubernetesNamespace},logger:logger2},builtInSandboxProvisionerFactories(),extensions.drivers.sandboxProvisionerDrivers);if(sandboxProvisioner!==void 0&&temporalConfig.activityRouting!==ROUTING_SESSION&&workflowExecutionTemporalConfig.workflowActivityRouting!==WORKFLOW_ROUTING_EXECUTION)throw new Error(`SANDBOX_PROVISIONER_TYPE='${config2.sandboxProvisionerType}' requires a per-queue routing mode \u2014 set STIGMER_ACTIVITY_ROUTING=session and/or STIGMER_WORKFLOW_ACTIVITY_ROUTING=execution (a provisioner no dispatch can reach must fail loudly, not sit dark)`);let sandboxLane=newSandboxLane(sandboxProvisioner,runnerCredentials);sandboxLane.enabled&&logger2.info("sandbox provisioner composed",{type:config2.sandboxProvisionerType});let workflowSandboxTerminalObserver=newWorkflowSandboxTerminalObserver(sandboxLane,logger2),healthState=new HealthState,modelCatalog,ossModelRegistryStore;extensions.drivers.modelCatalogProvider!==void 0?modelCatalog=extensions.drivers.modelCatalogProvider:(ossModelRegistryStore=new ModelRegistryStore({bundledDocument:bundledModelRegistryDocument(),upstreamOrigin:config2.modelRegistryUpstream,refreshEnabled:config2.modelRegistryRefreshEnabled,logger:logger2,fetchImpl:options.fetchImpl}),modelCatalog=ossModelRegistryStore);let registryLanes=createRegistryLanes({taskKindRegistryDocument:bundledTaskKindRegistryDocument(),modelRegistryStore:modelCatalog}),workflowValidator=new InProcessValidator(modelCatalog,logger2),agentExecutionStreamBroker=new StreamBroker(logger2),workflowExecutionStreamBroker=new StreamBroker2(logger2),scheduleTemporalConfig=newScheduleConfigFromEnv(),scheduleClientProvider=()=>temporalManager.getClient(),scheduleArtifact=new ScheduleArtifact(scheduleTemporalConfig),scheduleSyncer=new ScheduleSyncer(scheduleClientProvider,store,scheduleArtifact,logger2),scheduleRunStarter=new RunStarter({store,config:scheduleTemporalConfig,executions:{create:(execution,fireCaller)=>requireInProcess().scheduleExecutionCreator.create(execution,fireCaller)},fireCallerMint:scheduleFireCaller,logger:logger2}),scheduleReconciler=new ScheduleReconciler(scheduleClientProvider,store,scheduleSyncer,scheduleTemporalConfig,logger2),temporalManager=new TemporalManager({hostPort:config2.temporalHostPort,namespace:config2.temporalNamespace,connection:config2.temporalConnection,logger:logger2,payloadCodecs:loadServerPayloadCodecs(runnerCredentials.resolvePayloadKey?.bind(runnerCredentials)),workerFactories:[newAgentExecutionWorkerFactory({store,logger:logger2,statusWriter:()=>requireInProcess().executionStatusWriter,temporalConfig}),newWorkflowExecutionWorkerFactory({store,logger:logger2,broker:workflowExecutionStreamBroker,temporalConfig:workflowExecutionTemporalConfig,sandboxTerminalObserver:workflowSandboxTerminalObserver}),newScheduleWorkerFactory({store,config:scheduleTemporalConfig,syncer:scheduleSyncer,runStarter:scheduleRunStarter,logger:logger2}),...extensions.workers]}),executionEngineState=newExecutionEngineStateProvider({manager:temporalManager,config:temporalConfig,store,runnerCredentials,logger:logger2}),workflowExecutionEngineState=newWorkflowExecutionEngineStateProvider({manager:temporalManager,config:workflowExecutionTemporalConfig,runnerCredentials,logger:logger2}),artifactStorage=newArtifactStorage({type:config2.artifactStorageType,localBasePath:config2.artifactLocalBasePath,localServeUrl:config2.artifactLocalServeUrl,r2Bucket:config2.r2Bucket,r2Endpoint:config2.r2Endpoint,r2AccessKeyId:config2.r2AccessKeyId,r2SecretAccessKey:config2.r2SecretAccessKey,r2Region:config2.r2Region},extensions.drivers.artifactStorageDrivers),artifactFileServer=config2.artifactStorageType==="local"?createArtifactFileServer({basePath:config2.artifactLocalBasePath,logger:logger2}):void 0,skillUploadSlots=new UploadSlots(config2.storagePath,STAGING_KEY_PREFIX,DEFAULT_SLOT_TTL_MS,104857600),skillType=config2.skillArtifactStorageType===""?"local":config2.skillArtifactStorageType,skillStorageDriver=skillType==="local"?((0,import_node_fs16.mkdirSync)(import_node_path18.default.join(config2.storagePath,"skills"),{recursive:!0,mode:493}),new LocalArtifactStorage(config2.storagePath,transferServeUrl(config2.skillTransferBaseUrl),{reserve:(key,declaredSizeBytes)=>{let{ttlMs}=skillUploadSlots.reserve(key,declaredSizeBytes);return{url:uploadUrl(config2.skillTransferBaseUrl,uploadRefOf(key)),ttlMs}}})):newArtifactStorage({type:skillType,localBasePath:config2.storagePath,localServeUrl:"",r2Bucket:config2.r2Bucket,r2Endpoint:config2.r2Endpoint,r2AccessKeyId:config2.r2AccessKeyId,r2SecretAccessKey:config2.r2SecretAccessKey,r2Region:config2.r2Region},extensions.drivers.artifactStorageDrivers),skillArtifactStorage=newSkillArtifactStorage(skillStorageDriver),pluginArtifactStorage=newContentAddressedArchiveStore(skillStorageDriver,PLUGIN_ARTIFACT_KEY_PREFIX),skillArchiveStaging=newArchiveStaging(skillStorageDriver,logger2),skillTransferLane=newSkillTransferLane(skillUploadSlots,skillArtifactStorage,logger2),transferOrigin=assessSkillTransferOrigin({baseUrl:config2.skillTransferBaseUrl,relaysThroughServer:skillType==="local",requireAuthentication});transferOrigin.kind==="loopback-hosted"&&logger2.warn("skill artifact transfer lane mints capability URLs on the server's own loopback while the server requires authentication; pushes above the gRPC message cap and sandbox skill downloads will fail \u2014 set SKILL_TRANSFER_BASE_URL to the origin callers reach this server on",{baseUrl:transferOrigin.baseUrl});let consoleAssets=resolveConsoleAssets(config2.consoleDir,logger2);consoleAssets!==void 0?logger2.info("web console serving from unified port",{dir:consoleAssets.root,files:consoleAssets.fileCount}):logger2.debug("no web console export bundled; console lane disabled");let consoleSignIn=authEnabled?{posture:"oidc",issuer:config2.oidcIssuer,audience:config2.oidcAudience,consoleClientId:config2.oidcConsoleClientId}:{posture:"trusted-local"};consoleAssets!==void 0&&consoleSignIn.posture==="oidc"&&consoleSignIn.consoleClientId===""&&logger2.warn("STIGMER_OIDC_ISSUER is set but STIGMER_OIDC_CONSOLE_CLIENT_ID is not \u2014 the web console this server serves cannot sign in; register a public PKCE client for the console at the issuer and set it");let consoleLane=consoleAssets!==void 0?createConsoleLane({assets:consoleAssets,signIn:consoleSignIn,logger:logger2}):void 0,searchRegistry=newSearchableResourceRegistry();searchRegistry.validateExpectedKinds(logger2);let searchQueryStore=new SqliteSearchQueryStore(store,searchRegistry,logger2),searchHandler=new SearchHandler(searchQueryStore,logger2,listReadScope),activityHandler=new ActivityHandler(store,logger2,listReadScope),environmentResolution=new RuntimeResolutionService(store,secretService,logger2),managedEnvService=new ManagedEnvironmentService({getSecretValue:input=>requireInProcess().executionEnvironmentReader.getSecretValue(input),updateVariables:request=>requireInProcess().executionEnvironmentReader.updateVariables(request),create:(environment,caller)=>requireInProcess().executionEnvironmentReader.create(environment,caller),delete:input=>requireInProcess().executionEnvironmentReader.delete(input)},logger2),mcpServerEngineState=newMcpServerEngineStateProvider({manager:temporalManager,config:temporalConfig,logger:logger2}),oauthRedirect=resolveOAuthRedirectUri({configured:config2.oauthRedirectUri,servesConsole:consoleAssets!==void 0,port:options.portOverride??config2.grpcPort});switch(oauthRedirect.kind){case"configured":break;case"derived":logger2.info("STIGMER_OAUTH_REDIRECT_URI is not set \u2014 deriving the served console's callback for MCP server OAuth Connect",{redirectUri:oauthRedirect.uri});break;case"absent":logger2.warn("STIGMER_OAUTH_REDIRECT_URI is not set \u2014 OAuth Connect flows for MCP servers are unavailable (initiateOAuthConnect will refuse)");break;default:{let exhaustive=oauthRedirect;throw new Error(String(exhaustive))}}let oauthRedirectUri=oauthRedirect.kind==="absent"?"":oauthRedirect.uri,outboundFetch=guardedFetch(extensions.drivers.outboundEgress??relaxedEgressPolicy(),{fetchImpl:options.fetchImpl??fetch,lookup:nodeLookup()}),inProcess;function requireInProcess(){if(inProcess===void 0)throw new Error("in-process clients not wired (boot ordering bug)");return inProcess}let routes=router=>{registerHealthService(router,healthState),registerOrganizationServices(router,{store,logger:logger2,authorizer,gateSteps:extensions.gateSteps,grantPath:iamPolicyGrantPath,authorizationLifecycle:roleLifecycle,organizationDirectory}),registerApiKeyServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerIdentityAccountServices(router,{...identityAccountPath,provisioner:identityAccountProvisioner,federation:extensions.drivers.identityFederation,gateSteps:extensions.gateSteps,membership}),registerIamPolicyServices(router,{grantPath:iamPolicyGrantPath,policies:iamPolicies,accounts:identityAccounts,authorizer,grantScope:extensions.drivers.policyGrantScope??newOrganizationOnlyGrantScope(),queries:extensions.drivers.authorizationQueries,principalDisplay:extensions.drivers.principalDisplay,gateSteps:extensions.gateSteps,edition:extensions.edition,logger:logger2}),registerEnvironmentServices(router,{store,logger:logger2,authorizer,secretService,authorizationLifecycle,listReadScope}),registerOAuthAppServices(router,{store,secretService,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerPlatformClientServices(router,{clients:platformClients,store,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerPlatformClientTokenService(router,{mint:{clients:platformClients,accounts:identityAccounts,createAccount:createIdentityAccount,grantPath:iamPolicyGrantPath,keys:platformTokenKeys,logger:logger2,now:()=>new Date},guestTokenMinting:extensions.drivers.guestTokenMinting}),registerExecutionContextServices(router,{store,logger:logger2,authorizer,secretService,runnerAuthService:runnerCredentials,authorizationLifecycle}),registerAgentServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,agentInstanceApplier:()=>requireInProcess().agentInstanceApplier}),registerAgentInstanceServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,parentAgentLoader:()=>requireInProcess().parentAgentLoader,listReadScope}),registerSessionServices(router,{store,logger:logger2,authorizer,temporalConfig,gateSteps:extensions.gateSteps,sandboxLane,authorizationLifecycle,listReadScope}),registerAgentShareServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerAgentChannelServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,modelRegistry:modelCatalog,channelRuntime:extensions.drivers.channelRuntime}),registerChannelMessageServices(router,extensions.drivers.channelRuntime),registerChannelConversationServices(router,extensions.drivers.channelRuntime),registerChannelAppServices(router,{store,logger:logger2,authorizer,secretService,authorizationLifecycle}),registerScheduleServices(router,{store,logger:logger2,authorizer,modelRegistry:modelCatalog,clock:()=>scheduleSyncer,runner:()=>scheduleRunStarter,authorizationLifecycle,listReadScope}),registerMemoryServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,runnerCredentialProvider:runnerCredentials}),registerAgentExecutionServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,runnerCredentialProvider:runnerCredentials,broker:agentExecutionStreamBroker,engineState:executionEngineState,modelRegistry:modelCatalog,artifactStorage,gateSteps:extensions.gateSteps,statusObservers:extensions.statusObservers,responseDecorators:extensions.responseDecorators,sandboxLane,temporalConfig,agentLoader:()=>requireInProcess().executionAgentLoader,agentInstanceCreator:()=>requireInProcess().executionAgentInstanceCreator,sessionCreator:()=>requireInProcess().executionSessionCreator,executionContextBuilder:{store,logger:logger2,agentLoader:()=>requireInProcess().executionAgentLoader,agentInstanceLoader:()=>requireInProcess().executionAgentInstanceLoader,sessionLoader:()=>requireInProcess().executionSessionLoader,environmentReader:()=>requireInProcess().executionEnvironmentReader,environmentResolution,executionContextCreator:()=>requireInProcess().executionContextCreator,managedEnvService,platformClients,fetchImpl:asFetch(outboundFetch)}}),registerWorkflowServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,validator:workflowValidator,workflowInstanceCreator:()=>requireInProcess().workflowInstanceCreator}),registerWorkflowInstanceServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,parentWorkflowLoader:()=>requireInProcess().parentWorkflowLoader,listReadScope}),registerWorkflowExecutionServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,gateSteps:extensions.gateSteps,engineState:workflowExecutionEngineState,broker:workflowExecutionStreamBroker,sandboxLane,temporalConfig:workflowExecutionTemporalConfig,sandboxTerminalObserver:workflowSandboxTerminalObserver,workflowInstanceCreator:()=>requireInProcess().workflowExecutionInstanceCreator,approvalForwarder:()=>requireInProcess().workflowExecutionApprovalForwarder,fileDecisionForwarder:()=>requireInProcess().workflowExecutionFileDecisionForwarder,executionContextBuilder:{store,logger:logger2,workflowInstanceLoader:()=>requireInProcess().workflowExecutionInstanceLoader,environmentResolution,executionContextCreator:()=>requireInProcess().workflowExecutionContextCreator}}),registerMcpServerServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,connect:{store,logger:logger2,authorizer,engineState:mcpServerEngineState,environmentReader:{list:request=>requireInProcess().executionEnvironmentReader.list(request),getSecretValue:input=>requireInProcess().executionEnvironmentReader.getSecretValue(input)},executionContext:{create:(ec2,caller)=>requireInProcess().connectExecutionContextClient.create(ec2,caller),delete:input=>requireInProcess().connectExecutionContextClient.delete(input)},runnerAuth:runnerCredentials,managedEnv:managedEnvService,oauthGrants:store.oauthGrants,pendingOAuthStates:store.pendingOAuthStates,secretService,oauthRedirectUri,outboundFetch}}),registerSkillServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,artifactStorage:skillArtifactStorage,executionArtifactStorage:artifactStorage,staging:skillArchiveStaging}),registerPluginServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,artifactStorage:pluginArtifactStorage,materializerProvider:()=>requireInProcess().pluginMaterializer,staging:skillArchiveStaging}),registerArtifactServices(router,{store,artifactStorage,logger:logger2,authorizer}),registerSearchServices(router,{handler:searchHandler,logger:logger2}),registerActivityServices(router,{handler:activityHandler,logger:logger2}),registerGitHubServices(router,{clientId:config2.gitHubOAuthClientId,clientSecret:config2.gitHubOAuthClientSecret,logger:logger2,fetchImpl:options.fetchImpl}),registerPlatformServices(router,{temporalHostPort:config2.temporalHostPort,temporalNamespace:config2.temporalNamespace,runnerAuthService:runnerCredentials,edition:extensions.edition,version:options.version??SERVER_VERSION,authenticationRequired:requireAuthentication,licenseStatus:extensions.drivers.licenseStatus??ABSENT_LICENSE_STATUS,now:()=>new Date,logger:logger2}),registerExtensionServicesUnshadowed(router,extensions.services)},inProcessWiring=createInProcessClients(routes,logger2);inProcess=inProcessWiring.clients;let identityVerifiers=[...requireAuthentication?[newApiKeyIdentityVerifier({store,accounts:identityAccounts,logger:logger2,now:()=>new Date})]:[],...platformTokenKeys!==void 0?[newPlatformClientTokenVerifier({keys:platformTokenKeys,clients:platformClients})]:[],...authorizationPosture==="built-in"?[newRunnerSubjectIdentityVerifier({store,accounts:identityAccounts,credentials:runnerCredentials})]:[],...authEnabled?[newOidcIdentityVerifier({issuer:config2.oidcIssuer,audience:config2.oidcAudience,accounts:identityAccounts,discovery:issuerDiscovery})]:[],...extensions.identityVerifiers];if(extensions.requireAuthentication!==void 0&&extensions.identityVerifiers.length===0)throw new Error(`extension '${extensions.requireAuthentication.declaredBy}' declares the require-authentication posture, but registers no identity verifier of its own \u2014 the OSS API-key lane alone cannot admit the first caller (nobody could mint a key), so every non-public request would be refused; register a verifier or omit the declaration`);let postureSources=[...authEnabled?["oidc-issuer"]:[],...extensions.requireAuthentication!==void 0?[`extension '${extensions.requireAuthentication.declaredBy}'`]:[]],callerGuards=[...platformTokenKeys!==void 0?[newPlatformClientOriginGuard({clients:platformClients,logger:logger2})]:[],...extensions.callerGuards];logger2.info("authentication posture resolved",{posture:requireAuthentication?"required":"trusted-local",source:postureSources.length>0?postureSources.join(" + "):"none",verifiers:identityVerifiers.map(v=>v.name).join(", ")});let server=createUnifiedPortServer({logger:logger2,routes,interceptors:buildInterceptorChain(logger2,createVerifierChainInterceptor(identityVerifiers,callerGuards,logger2,requireAuthentication),{errorBoundary:createErrorBoundaryInterceptor(logger2,extensions.drivers.visitorErrorPolicy),requestMetrics:createRequestMetricsInterceptor()}),taskKindRegistryLane:registryLanes.taskKindRegistryLane,modelRegistryLane:registryLanes.modelRegistryLane,skillTransferLane,consoleLane});return{healthState,store,secrets:secretService,temporalManager,runnerAuthService,agentExecutionStreamBroker,workflowExecutionStreamBroker,inProcessTransport:inProcessWiring.transport,identityVerifiers,routes,async start(){await temporalManager.initialConnect()&&await temporalManager.startWorkers(),temporalManager.startHealthMonitor();let kickScheduleReconcile=scheduleReconciler.startReconciliation();temporalManager.addReconnectHook(kickScheduleReconcile),await artifactStorage.health();try{let indexed=await searchQueryStore.rebuildIndex();logger2.info("Search index rebuilt at startup",{indexed})}catch(error2){logger2.warn("Failed to rebuild search index at startup",{error:error2 instanceof Error?error2.message:String(error2)})}await initRpcMetrics(),logger2.info("request metrics",{posture:await metricsExportPosture(),instruments:"stigmer.grpc.request.count, stigmer.grpc.request.duration"}),healthState.setOverall(HealthCheckResponse_ServingStatus.SERVING),ossModelRegistryStore?.startRefresh();let port=await server.listen(options.portOverride??config2.grpcPort,options.host);if(logger2.info("stigmer-server listening",{port}),artifactFileServer!==void 0){await warnOnLegacyArtifactLayout(config2.artifactLocalBasePath,logger2);try{await artifactFileServer.listen(config2.artifactHttpPort,config2.artifactHttpHost)}catch(error2){logger2.error("Artifact HTTP file server failed",{error:error2 instanceof Error?error2.message:String(error2)})}}return port},async shutdown(){healthState.setOverall(HealthCheckResponse_ServingStatus.NOT_SERVING),ossModelRegistryStore?.stopRefresh(),await artifactFileServer?.shutdown(),await scheduleReconciler.stop(),await temporalManager.close(),await server.shutdown(),await store.close(),logger2.info("stigmer-server stopped")}}}var LEVEL_RANK={debug:10,info:20,warn:30,error:40};function createLogger(options){let threshold=LEVEL_RANK[options.level]??LEVEL_RANK.info,write2=options.write??(line=>process.stderr.write(line+`
|
|
1524
|
+
`,"latin1");function createProtocolDemuxServer(targets){return(0,import_node_net4.createServer)({noDelay:!0},socket=>{routeByPreface(socket,targets)})}function routeByPreface(socket,targets){let peeked=[],peekedLength=0,cleanup=()=>{socket.removeListener("data",onData),socket.removeListener("error",onPeekError),socket.removeListener("close",cleanup)},onPeekError=()=>{cleanup(),socket.destroy()},onData=chunk=>{peeked.push(chunk),peekedLength+=chunk.length;let seen=Buffer.concat(peeked,Math.min(peekedLength,HTTP2_CONNECTION_PREFACE.length)),comparable=seen.subarray(0,Math.min(seen.length,HTTP2_CONNECTION_PREFACE.length));if(!HTTP2_CONNECTION_PREFACE.subarray(0,comparable.length).equals(comparable)){handoffHttp1();return}if(peekedLength>=HTTP2_CONNECTION_PREFACE.length){handoffHttp2();return}};function handoffHttp1(){cleanup(),socket.pause(),socket.unshift(Buffer.concat(peeked,peekedLength)),targets.http1.emit("connection",socket),socket.resume()}function handoffHttp2(){cleanup(),socket.pause();let replay=createReplayDuplex(socket,Buffer.concat(peeked,peekedLength));targets.http2.emit("connection",replay)}socket.on("data",onData),socket.on("error",onPeekError),socket.on("close",cleanup)}function createReplayDuplex(socket,head){let replay=new import_node_stream13.Duplex({read(){socket.resume()},write(chunk,encoding,callback){socket.write(chunk,encoding,callback)},final(callback){socket.end(callback)},destroy(error2,callback){socket.destroy(),callback(error2)}});return socket.on("data",chunk=>{replay.push(chunk)||socket.pause()}),socket.on("end",()=>{replay.push(null)}),socket.on("error",error2=>{replay.destroy(error2)}),replay.push(head),replay}function createUnifiedPortServer(options){let rpcHandler=connectNodeAdapter({routes:options.routes,interceptors:options.interceptors,readMaxBytes:10485760,writeMaxBytes:10485760}),laneRouter=(request,response)=>{let path14=(request.url??"").split("?",1)[0]??"";if(path14===TASK_KIND_REGISTRY_PATH){options.taskKindRegistryLane(request,response);return}if(path14===MODEL_REGISTRY_PATH){options.modelRegistryLane(request,response);return}if(options.skillTransferLane!==void 0&&path14.startsWith(SKILL_ARTIFACTS_PATH_PREFIX)){options.skillTransferLane(request,response);return}if(options.consoleLane!==void 0&&consoleLaneEligible(request)){options.consoleLane(request,response);return}if(isRpcPreflight(request)){handleRpcPreflight(request,response);return}applyRpcCorsHeaders(request,response),rpcHandler(request,response)},http1=(0,import_node_http4.createServer)(laneRouter),http22=(0,import_node_http22.createServer)(laneRouter),liveSessions=new Set;http22.on("session",session=>{liveSessions.add(session),session.on("close",()=>liveSessions.delete(session)),armKeepalivePings(session,options.logger)}),http22.on("sessionError",error2=>{options.logger.debug("http2 session error",{error:String(error2)})});let demux=createProtocolDemuxServer({http1,http2:http22}),liveSockets=new Set;return demux.on("connection",socket=>{liveSockets.add(socket),socket.on("close",()=>liveSockets.delete(socket))}),{listen(port,host="0.0.0.0"){return new Promise((resolve,reject2)=>{demux.once("error",reject2),demux.listen(port,host,()=>{let address=demux.address();if(address===null||typeof address=="string"){reject2(new Error("unified port bound without a TCP address"));return}resolve(address.port)})})},async shutdown(){let closed=new Promise(resolve=>demux.close(()=>resolve()));http1.close(),http1.closeIdleConnections(),http22.close();for(let session of liveSessions)session.close();await Promise.race([closed.then(()=>!0),new Promise(resolve=>setTimeout(()=>resolve(!1),1e4).unref())])||options.logger.warn("shutdown drain budget exhausted; destroying remaining connections",{remaining:liveSockets.size});for(let socket of liveSockets)socket.destroy();await closed}}}function armKeepalivePings(session,logger2){let interval=setInterval(()=>{let acked=!1,deadline=setTimeout(()=>{!acked&&!session.destroyed&&(logger2.debug("closing http2 session: keepalive ping unacknowledged"),session.destroy())},5e3);deadline.unref();try{session.ping(()=>{acked=!0,clearTimeout(deadline)})}catch{clearTimeout(deadline),session.destroyed||session.destroy()}},15e3);interval.unref(),session.on("close",()=>clearInterval(interval))}function registerExtensionServicesUnshadowed(router,registrations){let servedBy=new Map(router.handlers.map(handler=>[handler.requestPath,"the core"]));for(let{unit,register}of registrations){let before=router.handlers.length;register(router);for(let handler of router.handlers.slice(before)){let server=servedBy.get(handler.requestPath);if(server!==void 0)throw new Error(`extension '${unit}' registers ${handler.requestPath}, which ${server} already serves \u2014 a route is never registered twice; an edition changes a core domain's behaviour through its driver points`);servedBy.set(handler.requestPath,`extension '${unit}'`)}}}function createInProcessClients(routes,logger2){let transport=createRouterTransport(routes,{router:{interceptors:buildInterceptorChain(logger2,createInProcessCallerInterceptor())}}),agentInstanceCommand=createClient(AgentInstanceCommandController,transport),agentInstanceQuery=createClient(AgentInstanceQueryController,transport),agentQuery=createClient(AgentQueryController,transport),sessionCommand=createClient(SessionCommandController,transport),sessionQuery=createClient(SessionQueryController,transport),environmentCommand=createClient(EnvironmentCommandController,transport),environmentQuery=createClient(EnvironmentQueryController,transport),executionContextCommand=createClient(ExecutionContextCommandController,transport),workflowInstanceCommand=createClient(WorkflowInstanceCommandController,transport),workflowInstanceQuery=createClient(WorkflowInstanceQueryController,transport),workflowQuery=createClient(WorkflowQueryController,transport),agentExecutionCommand=createClient(AgentExecutionCommandController,transport),agentCommand=createClient(AgentCommandController,transport),workflowCommand=createClient(WorkflowCommandController,transport),mcpServerCommand=createClient(McpServerCommandController,transport),skillCommand=createClient(SkillCommandController,transport),asCaller=caller=>({headers:{[IN_PROCESS_CALLER_HEADER]:encodeInProcessCaller(caller)}}),clients={agentInstanceApplier:{applyAsCaller:(instance,caller)=>agentInstanceCommand.apply(instance,asCaller(caller))},parentAgentLoader:{get:agentId=>agentQuery.get(create2(AgentIdSchema,{value:agentId}))},workflowInstanceCreator:{createAsCaller:(instance,caller)=>workflowInstanceCommand.create(instance,asCaller(caller))},parentWorkflowLoader:{get:workflowId=>workflowQuery.get(create2(WorkflowIdSchema,{value:workflowId}))},executionAgentLoader:{get:agentId=>agentQuery.get(create2(AgentIdSchema,{value:agentId}))},executionAgentInstanceLoader:{get:instanceId=>agentInstanceQuery.get(create2(AgentInstanceIdSchema,{value:instanceId}))},executionAgentInstanceCreator:{createAsCaller:(instance,caller)=>agentInstanceCommand.create(instance,asCaller(caller))},executionSessionLoader:{get:sessionId=>sessionQuery.get(create2(SessionIdSchema,{value:sessionId}))},executionSessionCreator:{createAsCaller:(session,caller)=>sessionCommand.create(session,asCaller(caller))},executionEnvironmentReader:{list:request=>environmentQuery.list(request),getSecretValue:input=>environmentQuery.getSecretValue(input),updateVariables:request=>environmentCommand.updateVariables(request),create:(environment,caller)=>environmentCommand.create(environment,caller===void 0?void 0:asCaller(caller)),delete:input=>environmentCommand.delete(input)},executionContextCreator:{create:ec2=>executionContextCommand.create(ec2)},connectExecutionContextClient:{create:(ec2,caller)=>executionContextCommand.create(ec2,asCaller(caller)),delete:input=>executionContextCommand.delete(input)},workflowExecutionInstanceCreator:{createAsCaller:(instance,caller)=>workflowInstanceCommand.create(instance,asCaller(caller))},workflowExecutionInstanceLoader:{get:instanceId=>workflowInstanceQuery.get(create2(WorkflowInstanceIdSchema,{value:instanceId}))},workflowExecutionContextCreator:{create:ec2=>executionContextCommand.create(ec2)},workflowExecutionApprovalForwarder:{submitApproval:input=>agentExecutionCommand.submitApproval(input)},workflowExecutionFileDecisionForwarder:{submitFileDecision:input=>agentExecutionCommand.submitFileDecision(input)},scheduleExecutionCreator:{create:(execution,fireCaller)=>agentExecutionCommand.create(execution,fireCaller===void 0?void 0:asCaller(fireCaller))},executionStatusWriter:{updateStatus:input=>agentExecutionCommand.updateStatus(input)},pluginMaterializer:{pushSkill:(request,caller)=>skillCommand.push(request,asCaller(caller)),applyMcpServer:(server,caller)=>mcpServerCommand.apply(server,asCaller(caller)),applyAgent:(agent,caller)=>agentCommand.apply(agent,asCaller(caller)),applyWorkflow:(workflow,caller)=>workflowCommand.apply(workflow,asCaller(caller)),updateVisibility:(kind,resourceId,visibility,caller)=>updateVisibilityByKind(kind,resourceId,visibility,asCaller(caller)),deleteByKind:(kind,resourceId,caller)=>deleteByKind(kind,resourceId,asCaller(caller))}};async function deleteByKind(kind,resourceId,options){switch(kind){case ApiResourceKind.agent:await agentCommand.delete(create2(AgentIdSchema,{value:resourceId}),options);return;case ApiResourceKind.workflow:await workflowCommand.delete(create2(WorkflowIdSchema,{value:resourceId}),options);return;case ApiResourceKind.mcp_server:await mcpServerCommand.delete(create2(ApiResourceDeleteInputSchema,{resourceId}),options);return;case ApiResourceKind.skill:await skillCommand.delete(create2(SkillIdSchema,{value:resourceId}),options);return;default:throw new Error(`unsupported resource kind for delete: ${ApiResourceKind[kind]??String(kind)}`)}}async function updateVisibilityByKind(kind,resourceId,visibility,options){let input=create2(UpdateVisibilityInputSchema,{resourceId,visibility});switch(kind){case ApiResourceKind.agent:await agentCommand.updateVisibility(input,options);return;case ApiResourceKind.workflow:await workflowCommand.updateVisibility(input,options);return;case ApiResourceKind.mcp_server:await mcpServerCommand.updateVisibility(input,options);return;case ApiResourceKind.skill:await skillCommand.updateVisibility(input,options);return;default:throw new Error(`unsupported resource kind for updateVisibility: ${ApiResourceKind[kind]??String(kind)}`)}}return{clients,transport}}var LIST_INDEXES=[agentExecutionListIndex,artifactListIndex,iamPolicyListIndex,sessionListIndex,workflowExecutionListIndex];async function composeServer(options){let{config:config2,logger:logger2}=options,extensions=resolveExtensions(options.extensions);extensions.unitNames.length>0&&logger2.info("extension units composed",{units:extensions.unitNames.join(", ")});let store,storeOptions={listIndexes:LIST_INDEXES};config2.databaseUrl!==""?(store=await PostgresStore.open(config2.databaseUrl,logger2,storeOptions),logger2.info("storage driver selected",{driver:"postgres"})):(store=SqliteStore.open(config2.dbPath,logger2,storeOptions),logger2.info("storage driver selected",{driver:"sqlite",dbPath:config2.dbPath}));let authEnabled=config2.oidcIssuer!=="",requireAuthentication=authEnabled||extensions.requireAuthentication!==void 0,authorizationPosture=authorizationPostureOf({unitAuthorizer:extensions.authorizer!==void 0,requireAuthentication}),builtInAuthorization=authorizationPosture!=="unit-authorizer";if(authorizationPosture==="built-in"&&extensions.edition!==ServerEdition.oss)throw new Error(`the composition serves edition '${ServerEdition[extensions.edition]}' under the require-authentication posture but registers no Authorizer \u2014 the built-in authorizer enforces the open-source kinds only; register an Authorizer or serve the open-source edition`);let identityAccounts=extensions.drivers.identityAccountStore??newResourceIdentityAccountStore(store),iamPolicies=extensions.drivers.iamPolicyStore??newResourceIamPolicyStore(store),platformClients=extensions.drivers.platformClientStore??newResourcePlatformClientStore(store),iamPolicyGrantPath=newIamPolicyGrantPath({policies:iamPolicies,lifecycle:extensions.drivers.resourceAuthorizationLifecycle,logger:logger2}),authorizationLifecycle=extensions.drivers.resourceAuthorizationLifecycle,roleLifecycle=authorizationLifecycle??(builtInAuthorization?newBuiltInRoleLifecycle({grantPath:iamPolicyGrantPath,accounts:identityAccounts}):void 0),operatorIdentity=operatorIdentitySnapshot(),membership=builtInAuthorization?newMembershipRules({grantPath:iamPolicyGrantPath,policies:iamPolicies,store,operatorEmail:operatorIdentity.email}):void 0,runnerAuthService=RunnerAuthService.fromEnv(),runnerCredentials=extensions.drivers.runnerCredentialProvider??(authorizationPosture==="built-in"?newBuiltInRunnerCredentialProvider({service:runnerAuthService,store,accounts:identityAccounts}):newExecutionScopedRunnerCredentialProvider(runnerAuthService)),authorizer=extensions.authorizer??(authorizationPosture==="built-in"?newLaneAdmittedAuthorizer(newBuiltInAuthorizer({store,policies:iamPolicies,accounts:identityAccounts,edition:extensions.edition,logger:logger2}),caller=>isWorkflowBoundRunner(runnerAuthService,caller)):newPermissiveSingleTeamAuthorizer()),organizationDirectory=extensions.drivers.organizationDirectory??(authorizationPosture==="built-in"?newBuiltInOrganizationDirectory({store,policies:iamPolicies,accounts:identityAccounts}):void 0),scheduleFireCaller=extensions.drivers.scheduleFireCaller??(authorizationPosture==="built-in"?newBuiltInScheduleFireCaller({store,accounts:identityAccounts}):void 0),listReadScope=extensions.drivers.listReadScope??(authorizationPosture==="built-in"?newBuiltInListReadScope({store,policies:iamPolicies,accounts:identityAccounts,logger:logger2}):void 0);logger2.info("authorization posture resolved",{posture:authorizationPosture,authorizer:extensions.authorizer!==void 0?"extension":authorizationPosture==="built-in"?"built-in":"permissive",listReadScope:extensions.drivers.listReadScope!==void 0?"extension":authorizationPosture==="built-in"?"built-in":"none"});let identityAccountPath={accounts:identityAccounts,logger:logger2,authorizer,authorizationLifecycle:roleLifecycle},createIdentityAccount=newCreateAccountPath(identityAccountPath,ApiResourceKind.identity_account),issuerDiscovery=newIssuerDiscovery(),identityAccountProvisioner=newDirectAccountProvisioner({accounts:identityAccounts,createAccount:createIdentityAccount,userInfo:newOidcUserInfoClient(issuerDiscovery)});if(!requireAuthentication){let operator=await ensureOperatorAccount({accounts:identityAccounts,createAccount:createIdentityAccount},operatorIdentity);logger2.info("trusted-local operator account ensured",{accountId:operator.metadata?.id??""}),membership!==void 0&&(await membership.ensureOperatorOwnership(operator),logger2.info("trusted-local operator ownership ensured",{accountId:operator.metadata?.id??""}))}authorizationPosture==="built-in"&&membership!==void 0&&(await membership.ensureRolesForExistingAccounts(),logger2.info("built-in posture role reconciliation ensured"));let v1Key;try{v1Key=getOrCreateNamedKey(ENCRYPTION_KEY_ENV_VAR,ENCRYPTION_KEY_FILE_NAME)}catch(error2){logger2.warn("Failed to initialize encryption - secret values will be stored in plaintext",{error:error2 instanceof Error?error2.message:String(error2)}),v1Key=void 0}let secretCodecs=new Map([[V1_VERSION,new StaticKeySecretCodec(v1Key)],...extensions.drivers.secretCodecs]),writeVersionValue=process.env[ENCRYPTION_WRITE_VERSION_ENV_VAR]??"",secretService=SecretService.withCodecs({codecs:secretCodecs,writeVersion:writeVersionValue===""?DEFAULT_WRITE_VERSION:writeVersionValue});logger2.info("secret encryption configured",{writeVersion:writeVersionValue===""?DEFAULT_WRITE_VERSION:writeVersionValue,registeredCodecs:[...secretCodecs.keys()].sort()});let platformTokenKeys=resolvePlatformTokenKeys({requireAuthentication,supplied:extensions.drivers.platformTokenKeys,edition:extensions.edition});logger2.info("platform-token keys resolved",{source:platformTokenKeys===void 0?"none (no authentication posture)":extensions.drivers.platformTokenKeys!==void 0?"extension":"open-source ladder",signing:platformTokenKeys?.signer!==void 0});let temporalConfig=newConfigFromEnv(),workflowExecutionTemporalConfig=newWorkflowExecutionConfigFromEnv(),sandboxProvisioner=newSandboxProvisioner(config2.sandboxProvisionerType,{config:{backendEndpoint:config2.sandboxBackendEndpoint,temporalAddress:config2.sandboxTemporalAddress,temporalNamespace:config2.temporalNamespace,temporalConnectionEnv:temporalConnectionEnv(config2.temporalConnection),runnerImage:config2.sandboxRunnerImage,runnerCommand:config2.sandboxRunnerCommand,kubernetesNamespace:config2.sandboxKubernetesNamespace},logger:logger2},builtInSandboxProvisionerFactories(),extensions.drivers.sandboxProvisionerDrivers);if(sandboxProvisioner!==void 0&&temporalConfig.activityRouting!==ROUTING_SESSION&&workflowExecutionTemporalConfig.workflowActivityRouting!==WORKFLOW_ROUTING_EXECUTION)throw new Error(`SANDBOX_PROVISIONER_TYPE='${config2.sandboxProvisionerType}' requires a per-queue routing mode \u2014 set STIGMER_ACTIVITY_ROUTING=session and/or STIGMER_WORKFLOW_ACTIVITY_ROUTING=execution (a provisioner no dispatch can reach must fail loudly, not sit dark)`);let sandboxLane=newSandboxLane(sandboxProvisioner,runnerCredentials);sandboxLane.enabled&&logger2.info("sandbox provisioner composed",{type:config2.sandboxProvisionerType});let workflowSandboxTerminalObserver=newWorkflowSandboxTerminalObserver(sandboxLane,logger2),healthState=new HealthState,modelCatalog,ossModelRegistryStore;extensions.drivers.modelCatalogProvider!==void 0?modelCatalog=extensions.drivers.modelCatalogProvider:(ossModelRegistryStore=new ModelRegistryStore({bundledDocument:bundledModelRegistryDocument(),upstreamOrigin:config2.modelRegistryUpstream,refreshEnabled:config2.modelRegistryRefreshEnabled,logger:logger2,fetchImpl:options.fetchImpl}),modelCatalog=ossModelRegistryStore);let registryLanes=createRegistryLanes({taskKindRegistryDocument:bundledTaskKindRegistryDocument(),modelRegistryStore:modelCatalog}),workflowValidator=new InProcessValidator(modelCatalog,logger2),agentExecutionStreamBroker=new StreamBroker(logger2),workflowExecutionStreamBroker=new StreamBroker2(logger2),scheduleTemporalConfig=newScheduleConfigFromEnv(),scheduleClientProvider=()=>temporalManager.getClient(),scheduleArtifact=new ScheduleArtifact(scheduleTemporalConfig),scheduleSyncer=new ScheduleSyncer(scheduleClientProvider,store,scheduleArtifact,logger2),scheduleRunStarter=new RunStarter({store,config:scheduleTemporalConfig,executions:{create:(execution,fireCaller)=>requireInProcess().scheduleExecutionCreator.create(execution,fireCaller)},fireCallerMint:scheduleFireCaller,logger:logger2}),scheduleReconciler=new ScheduleReconciler(scheduleClientProvider,store,scheduleSyncer,scheduleTemporalConfig,logger2),temporalManager=new TemporalManager({hostPort:config2.temporalHostPort,namespace:config2.temporalNamespace,connection:config2.temporalConnection,logger:logger2,payloadCodecs:loadServerPayloadCodecs(runnerCredentials.resolvePayloadKey?.bind(runnerCredentials)),workerFactories:[newAgentExecutionWorkerFactory({store,logger:logger2,statusWriter:()=>requireInProcess().executionStatusWriter,temporalConfig}),newWorkflowExecutionWorkerFactory({store,logger:logger2,broker:workflowExecutionStreamBroker,temporalConfig:workflowExecutionTemporalConfig,sandboxTerminalObserver:workflowSandboxTerminalObserver}),newScheduleWorkerFactory({store,config:scheduleTemporalConfig,syncer:scheduleSyncer,runStarter:scheduleRunStarter,logger:logger2}),...extensions.workers]}),executionEngineState=newExecutionEngineStateProvider({manager:temporalManager,config:temporalConfig,store,runnerCredentials,logger:logger2}),workflowExecutionEngineState=newWorkflowExecutionEngineStateProvider({manager:temporalManager,config:workflowExecutionTemporalConfig,runnerCredentials,logger:logger2}),artifactStorage=newArtifactStorage({type:config2.artifactStorageType,localBasePath:config2.artifactLocalBasePath,localServeUrl:config2.artifactLocalServeUrl,r2Bucket:config2.r2Bucket,r2Endpoint:config2.r2Endpoint,r2AccessKeyId:config2.r2AccessKeyId,r2SecretAccessKey:config2.r2SecretAccessKey,r2Region:config2.r2Region},extensions.drivers.artifactStorageDrivers),artifactFileServer=config2.artifactStorageType==="local"?createArtifactFileServer({basePath:config2.artifactLocalBasePath,logger:logger2}):void 0,skillUploadSlots=new UploadSlots(config2.storagePath,STAGING_KEY_PREFIX,DEFAULT_SLOT_TTL_MS,104857600),skillType=config2.skillArtifactStorageType===""?"local":config2.skillArtifactStorageType,skillStorageDriver=skillType==="local"?((0,import_node_fs16.mkdirSync)(import_node_path18.default.join(config2.storagePath,"skills"),{recursive:!0,mode:493}),new LocalArtifactStorage(config2.storagePath,transferServeUrl(config2.skillTransferBaseUrl),{reserve:(key,declaredSizeBytes)=>{let{ttlMs}=skillUploadSlots.reserve(key,declaredSizeBytes);return{url:uploadUrl(config2.skillTransferBaseUrl,uploadRefOf(key)),ttlMs}}})):newArtifactStorage({type:skillType,localBasePath:config2.storagePath,localServeUrl:"",r2Bucket:config2.r2Bucket,r2Endpoint:config2.r2Endpoint,r2AccessKeyId:config2.r2AccessKeyId,r2SecretAccessKey:config2.r2SecretAccessKey,r2Region:config2.r2Region},extensions.drivers.artifactStorageDrivers),skillArtifactStorage=newSkillArtifactStorage(skillStorageDriver),pluginArtifactStorage=newContentAddressedArchiveStore(skillStorageDriver,PLUGIN_ARTIFACT_KEY_PREFIX),skillArchiveStaging=newArchiveStaging(skillStorageDriver,logger2),skillTransferLane=newSkillTransferLane(skillUploadSlots,skillArtifactStorage,logger2),transferOrigin=assessSkillTransferOrigin({baseUrl:config2.skillTransferBaseUrl,relaysThroughServer:skillType==="local",requireAuthentication});transferOrigin.kind==="loopback-hosted"&&logger2.warn("skill artifact transfer lane mints capability URLs on the server's own loopback while the server requires authentication; pushes above the gRPC message cap and sandbox skill downloads will fail \u2014 set SKILL_TRANSFER_BASE_URL to the origin callers reach this server on",{baseUrl:transferOrigin.baseUrl});let consoleAssets=resolveConsoleAssets(config2.consoleDir,logger2);consoleAssets!==void 0?logger2.info("web console serving from unified port",{dir:consoleAssets.root,files:consoleAssets.fileCount}):logger2.debug("no web console export bundled; console lane disabled");let consoleSignIn=authEnabled?{posture:"oidc",issuer:config2.oidcIssuer,audience:config2.oidcAudience,consoleClientId:config2.oidcConsoleClientId}:{posture:"trusted-local"};consoleAssets!==void 0&&consoleSignIn.posture==="oidc"&&consoleSignIn.consoleClientId===""&&logger2.warn("STIGMER_OIDC_ISSUER is set but STIGMER_OIDC_CONSOLE_CLIENT_ID is not \u2014 the web console this server serves cannot sign in; register a public PKCE client for the console at the issuer and set it");let consoleLane=consoleAssets!==void 0?createConsoleLane({assets:consoleAssets,signIn:consoleSignIn,logger:logger2}):void 0,searchRegistry=newSearchableResourceRegistry();searchRegistry.validateExpectedKinds(logger2);let searchQueryStore=new SqliteSearchQueryStore(store,searchRegistry,logger2),searchHandler=new SearchHandler(searchQueryStore,logger2,listReadScope),activityHandler=new ActivityHandler(store,logger2,listReadScope),environmentResolution=new RuntimeResolutionService(store,secretService,logger2),managedEnvService=new ManagedEnvironmentService({getSecretValue:input=>requireInProcess().executionEnvironmentReader.getSecretValue(input),updateVariables:request=>requireInProcess().executionEnvironmentReader.updateVariables(request),create:(environment,caller)=>requireInProcess().executionEnvironmentReader.create(environment,caller),delete:input=>requireInProcess().executionEnvironmentReader.delete(input)},logger2),mcpServerEngineState=newMcpServerEngineStateProvider({manager:temporalManager,config:temporalConfig,logger:logger2}),oauthRedirect=resolveOAuthRedirectUri({configured:config2.oauthRedirectUri,servesConsole:consoleAssets!==void 0,port:options.portOverride??config2.grpcPort});switch(oauthRedirect.kind){case"configured":break;case"derived":logger2.info("STIGMER_OAUTH_REDIRECT_URI is not set \u2014 deriving the served console's callback for MCP server OAuth Connect",{redirectUri:oauthRedirect.uri});break;case"absent":logger2.warn("STIGMER_OAUTH_REDIRECT_URI is not set \u2014 OAuth Connect flows for MCP servers are unavailable (initiateOAuthConnect will refuse)");break;default:{let exhaustive=oauthRedirect;throw new Error(String(exhaustive))}}let oauthRedirectUri=oauthRedirect.kind==="absent"?"":oauthRedirect.uri,outboundFetch=guardedFetch(extensions.drivers.outboundEgress??relaxedEgressPolicy(),{fetchImpl:options.fetchImpl??fetch,lookup:nodeLookup()}),inProcess;function requireInProcess(){if(inProcess===void 0)throw new Error("in-process clients not wired (boot ordering bug)");return inProcess}let routes=router=>{registerHealthService(router,healthState),registerOrganizationServices(router,{store,logger:logger2,authorizer,gateSteps:extensions.gateSteps,grantPath:iamPolicyGrantPath,authorizationLifecycle:roleLifecycle,organizationDirectory}),registerApiKeyServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerIdentityAccountServices(router,{...identityAccountPath,provisioner:identityAccountProvisioner,federation:extensions.drivers.identityFederation,gateSteps:extensions.gateSteps,membership}),registerIamPolicyServices(router,{grantPath:iamPolicyGrantPath,policies:iamPolicies,accounts:identityAccounts,authorizer,grantScope:extensions.drivers.policyGrantScope??newOrganizationOnlyGrantScope(),queries:extensions.drivers.authorizationQueries,principalDisplay:extensions.drivers.principalDisplay,gateSteps:extensions.gateSteps,edition:extensions.edition,logger:logger2}),registerEnvironmentServices(router,{store,logger:logger2,authorizer,secretService,authorizationLifecycle,listReadScope}),registerOAuthAppServices(router,{store,secretService,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerPlatformClientServices(router,{clients:platformClients,store,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerPlatformClientTokenService(router,{mint:{clients:platformClients,accounts:identityAccounts,createAccount:createIdentityAccount,grantPath:iamPolicyGrantPath,keys:platformTokenKeys,logger:logger2,now:()=>new Date},guestTokenMinting:extensions.drivers.guestTokenMinting}),registerExecutionContextServices(router,{store,logger:logger2,authorizer,secretService,runnerAuthService:runnerCredentials,authorizationLifecycle}),registerAgentServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,agentInstanceApplier:()=>requireInProcess().agentInstanceApplier}),registerAgentInstanceServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,parentAgentLoader:()=>requireInProcess().parentAgentLoader,listReadScope}),registerSessionServices(router,{store,logger:logger2,authorizer,temporalConfig,gateSteps:extensions.gateSteps,sandboxLane,authorizationLifecycle,listReadScope}),registerAgentShareServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope}),registerAgentChannelServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,modelRegistry:modelCatalog,channelRuntime:extensions.drivers.channelRuntime}),registerChannelMessageServices(router,extensions.drivers.channelRuntime),registerChannelConversationServices(router,extensions.drivers.channelRuntime),registerChannelAppServices(router,{store,logger:logger2,authorizer,secretService,authorizationLifecycle}),registerScheduleServices(router,{store,logger:logger2,authorizer,modelRegistry:modelCatalog,clock:()=>scheduleSyncer,runner:()=>scheduleRunStarter,authorizationLifecycle,listReadScope}),registerMemoryServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,runnerCredentialProvider:runnerCredentials}),registerAgentExecutionServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,runnerCredentialProvider:runnerCredentials,broker:agentExecutionStreamBroker,engineState:executionEngineState,modelRegistry:modelCatalog,artifactStorage,gateSteps:extensions.gateSteps,statusObservers:extensions.statusObservers,responseDecorators:extensions.responseDecorators,sandboxLane,temporalConfig,agentLoader:()=>requireInProcess().executionAgentLoader,agentInstanceCreator:()=>requireInProcess().executionAgentInstanceCreator,sessionCreator:()=>requireInProcess().executionSessionCreator,executionContextBuilder:{store,logger:logger2,agentLoader:()=>requireInProcess().executionAgentLoader,agentInstanceLoader:()=>requireInProcess().executionAgentInstanceLoader,sessionLoader:()=>requireInProcess().executionSessionLoader,environmentReader:()=>requireInProcess().executionEnvironmentReader,environmentResolution,executionContextCreator:()=>requireInProcess().executionContextCreator,managedEnvService,platformClients,fetchImpl:asFetch(outboundFetch)}}),registerWorkflowServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,validator:workflowValidator,workflowInstanceCreator:()=>requireInProcess().workflowInstanceCreator}),registerWorkflowInstanceServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,parentWorkflowLoader:()=>requireInProcess().parentWorkflowLoader,listReadScope}),registerWorkflowExecutionServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,listReadScope,gateSteps:extensions.gateSteps,engineState:workflowExecutionEngineState,broker:workflowExecutionStreamBroker,sandboxLane,temporalConfig:workflowExecutionTemporalConfig,sandboxTerminalObserver:workflowSandboxTerminalObserver,workflowInstanceCreator:()=>requireInProcess().workflowExecutionInstanceCreator,approvalForwarder:()=>requireInProcess().workflowExecutionApprovalForwarder,fileDecisionForwarder:()=>requireInProcess().workflowExecutionFileDecisionForwarder,executionContextBuilder:{store,logger:logger2,workflowInstanceLoader:()=>requireInProcess().workflowExecutionInstanceLoader,environmentResolution,executionContextCreator:()=>requireInProcess().workflowExecutionContextCreator}}),registerMcpServerServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,connect:{store,logger:logger2,authorizer,engineState:mcpServerEngineState,environmentReader:{list:request=>requireInProcess().executionEnvironmentReader.list(request),getSecretValue:input=>requireInProcess().executionEnvironmentReader.getSecretValue(input)},executionContext:{create:(ec2,caller)=>requireInProcess().connectExecutionContextClient.create(ec2,caller),delete:input=>requireInProcess().connectExecutionContextClient.delete(input)},runnerAuth:runnerCredentials,managedEnv:managedEnvService,oauthGrants:store.oauthGrants,pendingOAuthStates:store.pendingOAuthStates,secretService,oauthRedirectUri,outboundFetch}}),registerSkillServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,artifactStorage:skillArtifactStorage,executionArtifactStorage:artifactStorage,staging:skillArchiveStaging}),registerPluginServices(router,{store,logger:logger2,authorizer,authorizationLifecycle,artifactStorage:pluginArtifactStorage,materializerProvider:()=>requireInProcess().pluginMaterializer,staging:skillArchiveStaging}),registerArtifactServices(router,{store,artifactStorage,logger:logger2,authorizer}),registerSearchServices(router,{handler:searchHandler,logger:logger2}),registerActivityServices(router,{handler:activityHandler,logger:logger2}),registerGitHubServices(router,{clientId:config2.gitHubOAuthClientId,clientSecret:config2.gitHubOAuthClientSecret,logger:logger2,fetchImpl:options.fetchImpl}),registerPlatformServices(router,{runnerBootstrapTemporalAddress:config2.runnerBootstrapTemporalAddress,temporalNamespace:config2.temporalNamespace,runnerAuthService:runnerCredentials,edition:extensions.edition,version:options.version??SERVER_VERSION,authenticationRequired:requireAuthentication,licenseStatus:extensions.drivers.licenseStatus??ABSENT_LICENSE_STATUS,now:()=>new Date,logger:logger2}),registerExtensionServicesUnshadowed(router,extensions.services)},inProcessWiring=createInProcessClients(routes,logger2);inProcess=inProcessWiring.clients;let identityVerifiers=[...requireAuthentication?[newApiKeyIdentityVerifier({store,accounts:identityAccounts,logger:logger2,now:()=>new Date})]:[],...platformTokenKeys!==void 0?[newPlatformClientTokenVerifier({keys:platformTokenKeys,clients:platformClients})]:[],...authorizationPosture==="built-in"?[newRunnerSubjectIdentityVerifier({store,accounts:identityAccounts,credentials:runnerCredentials})]:[],...authEnabled?[newOidcIdentityVerifier({issuer:config2.oidcIssuer,audience:config2.oidcAudience,accounts:identityAccounts,discovery:issuerDiscovery})]:[],...extensions.identityVerifiers];if(extensions.requireAuthentication!==void 0&&extensions.identityVerifiers.length===0)throw new Error(`extension '${extensions.requireAuthentication.declaredBy}' declares the require-authentication posture, but registers no identity verifier of its own \u2014 the OSS API-key lane alone cannot admit the first caller (nobody could mint a key), so every non-public request would be refused; register a verifier or omit the declaration`);let postureSources=[...authEnabled?["oidc-issuer"]:[],...extensions.requireAuthentication!==void 0?[`extension '${extensions.requireAuthentication.declaredBy}'`]:[]],callerGuards=[...platformTokenKeys!==void 0?[newPlatformClientOriginGuard({clients:platformClients,logger:logger2})]:[],...extensions.callerGuards];logger2.info("authentication posture resolved",{posture:requireAuthentication?"required":"trusted-local",source:postureSources.length>0?postureSources.join(" + "):"none",verifiers:identityVerifiers.map(v=>v.name).join(", ")});let server=createUnifiedPortServer({logger:logger2,routes,interceptors:buildInterceptorChain(logger2,createVerifierChainInterceptor(identityVerifiers,callerGuards,logger2,requireAuthentication),{errorBoundary:createErrorBoundaryInterceptor(logger2,extensions.drivers.visitorErrorPolicy),requestMetrics:createRequestMetricsInterceptor()}),taskKindRegistryLane:registryLanes.taskKindRegistryLane,modelRegistryLane:registryLanes.modelRegistryLane,skillTransferLane,consoleLane});return{healthState,store,secrets:secretService,temporalManager,runnerAuthService,agentExecutionStreamBroker,workflowExecutionStreamBroker,inProcessTransport:inProcessWiring.transport,identityVerifiers,routes,async start(){await temporalManager.initialConnect()&&await temporalManager.startWorkers(),temporalManager.startHealthMonitor();let kickScheduleReconcile=scheduleReconciler.startReconciliation();temporalManager.addReconnectHook(kickScheduleReconcile),await artifactStorage.health();try{let indexed=await searchQueryStore.rebuildIndex();logger2.info("Search index rebuilt at startup",{indexed})}catch(error2){logger2.warn("Failed to rebuild search index at startup",{error:error2 instanceof Error?error2.message:String(error2)})}await initRpcMetrics(),logger2.info("request metrics",{posture:await metricsExportPosture(),instruments:"stigmer.grpc.request.count, stigmer.grpc.request.duration"}),healthState.setOverall(HealthCheckResponse_ServingStatus.SERVING),ossModelRegistryStore?.startRefresh();let port=await server.listen(options.portOverride??config2.grpcPort,options.host);if(logger2.info("stigmer-server listening",{port}),artifactFileServer!==void 0){await warnOnLegacyArtifactLayout(config2.artifactLocalBasePath,logger2);try{await artifactFileServer.listen(config2.artifactHttpPort,config2.artifactHttpHost)}catch(error2){logger2.error("Artifact HTTP file server failed",{error:error2 instanceof Error?error2.message:String(error2)})}}return port},async shutdown(){healthState.setOverall(HealthCheckResponse_ServingStatus.NOT_SERVING),ossModelRegistryStore?.stopRefresh(),await artifactFileServer?.shutdown(),await scheduleReconciler.stop(),await temporalManager.close(),await server.shutdown(),await store.close(),logger2.info("stigmer-server stopped")}}}var LEVEL_RANK={debug:10,info:20,warn:30,error:40};function createLogger(options){let threshold=LEVEL_RANK[options.level]??LEVEL_RANK.info,write2=options.write??(line=>process.stderr.write(line+`
|
|
1525
1525
|
`)),sink=options.sink,emit=(level,message6,fields2)=>{if(LEVEL_RANK[level]<threshold)return;let time2=new Date;if(options.pretty){let suffix=fields2===void 0||Object.keys(fields2).length===0?"":" "+JSON.stringify(fields2);write2(`${time2.toISOString()} ${level.toUpperCase().padEnd(5)} ${message6}${suffix}`)}else write2(JSON.stringify({level,time:time2.toISOString(),message:message6,...fields2}));sink?.({level,time:time2,message:message6,fields:fields2})};return{debug:(message6,fields2)=>emit("debug",message6,fields2),info:(message6,fields2)=>emit("info",message6,fields2),warn:(message6,fields2)=>emit("warn",message6,fields2),error:(message6,fields2)=>emit("error",message6,fields2)}}async function main(){let config2=loadConfig(),logger2=createLogger({level:config2.logLevel,pretty:config2.env==="local"});setOperatorIdentity(config2.operatorEmail,config2.operatorName);let server=await composeServer({config:config2,logger:logger2}),shuttingDown=!1,shutdown=signal3=>{shuttingDown||(shuttingDown=!0,logger2.info("shutting down",{signal:signal3}),server.shutdown().then(()=>process.exit(0)).catch(error2=>{logger2.error("shutdown failed",{error:String(error2)}),process.exit(1)}))};process.on("SIGTERM",()=>shutdown("SIGTERM")),process.on("SIGINT",()=>shutdown("SIGINT"));try{await server.start()}catch(error2){logger2.error("boot failed",{error:error2 instanceof Error?error2.message:String(error2)}),process.exit(1)}}main().catch(error2=>{console.error("boot failed:",error2 instanceof Error?error2.message:String(error2)),process.exit(1)});
|
|
1526
1526
|
/*! Bundled license information:
|
|
1527
1527
|
|