You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Wired to queues, correct (event, context) calling convention
trigger
Function (trigger)
✅ Full
Registered by event name, fireable via fire_trigger
scheduledTrigger
Function (scheduled)
✅ Full
Single-arg (request) convention, fireable on demand
webtrigger
Function (web trigger)
✅ Full
Manifest parsed, function registered, HTTP endpoints served at /__trigger/<key>. Full request/response mapping: headers and query params as multi-value maps, CORS support. webTrigger.getUrl() returns the real local URL when dev server is running.
endpoint
—
✅ Full
Parsed, used for Forge Remotes endpoint resolution
Jira Modules
Standard UI Modules
These all follow the UI + Resolver or UI + Custom UI pattern. They have resource:, optional resolver:, and render in the browser.
Primary test target. Full context hydration via real API.
jira:issueActivity
✅ Full
Issue context
Same as issuePanel
jira:issueContext
✅ Full
Issue context
Same as issuePanel
jira:issueGlance
✅ Full
Issue context
Same as issuePanel
jira:issueAction
✅ Full
Issue context
Renders in modal in real Forge. We render as panel.
jira:globalPage
✅ Full
{ type }
Full-page module. view.createHistory() works for routing.
jira:projectPage
✅ Full
project: { key, id }
Project-scoped page
jira:adminPage
✅ Full
{ type }
Admin settings page
jira:projectSettingsPage
✅ Full
project: { key, id }
Same project context as jira:projectPage (hydrated via JIRA_PROJECT_MODULES set in context.ts). No settings-specific subfields.
jira:personalSettingsPage
⚠️ Partial
Generic
Parsed as UI module. No user-settings-specific context. (Preview)
jira:dashboardGadget
✅ Full
{ type }
Dashboard widget
jira:issueNavigatorAction
⚠️ Partial
Generic
Parsed as UI module. No issue-navigator-specific context. (Preview)
jira:backlogAction
⚠️ Partial
Generic
Parsed as UI module. No backlog-specific context. (Preview)
jira:boardAction
⚠️ Partial
Generic
Parsed as UI module. No board-specific context. (Preview)
jira:sprintAction
⚠️ Partial
Generic
Parsed as UI module. No sprint-specific context. (Preview)
jira:command
⚠️ Partial
Generic
Command palette item. Parsed with page targets and resource-based commands. No command palette simulation. (Preview)
Background Scripts
Module Key
Level
Notes
jira:issueViewBackgroundScript
✅ Full
Filtered from module picker. Loaded via hidden iframe when compatible UI module has checkbox enabled. Cross-module events relay via WebSocket. Compatible with: issuePanel, issueContext, issueGlance, issueActivity, issueAction.
jira:dashboardBackgroundScript
✅ Full
Same pattern. Compatible with: dashboardGadget.
jira:globalBackgroundScript
✅ Full
Same pattern. Compatible with: globalPage, fullPage. (Preview)
Custom Fields
Module Key
Level
Notes
jira:customField
✅ Full
View and edit sub-modules extracted from nested view.resource / edit.resource. Module picker shows grouped row with View/Edit toggle. Mock fieldValue provided in context based on field type (number, string, user, group, date, datetime, object). Value function registered as resolver. Formatter expressions, edit.validation.expression (Jira Expressions DSL), and search suggestions are not evaluated — an invalid value that a validation expression would reject in production saves normally in forge-sim. Prefer app-side validation via CustomFieldEdit (the idiomatic inline-edit pattern), which behaves identically in both.
jira:customFieldType
✅ Full
Same treatment as jira:customField. View/edit extraction, context enrichment, value function registration. Schema validation not enforced locally.
Data / Logic Modules
Module Key
Level
Notes
jira:jqlFunction
❌ None
Has resolver.function or resolver.endpoint but no resource:. Returns JQL-compatible data. Not parsed as UI module (correctly), but no invocation path exists. Would need a JQL context simulation.
jira:entityProperty
❌ None
Config-only. Declares indexed entity properties for JQL. No function, no resource. Nothing to simulate; this is a Forge platform indexing instruction.
jira:globalPermission
❌ None
Host-driven function.function: returns boolean. Only invoked by Jira permission checks. No simulation path.
jira:projectPermission
❌ None
Same as globalPermission but project-scoped.
jira:timeTrackingProvider
❌ None
Nested UI. Has view.resource, edit.resource. Replaces Jira's native time tracking. (Preview)
Workflow Modules
Module Key
Level
Notes
jira:workflowValidator
⚠️ Partial
Manifest parsed, config UI renders (create/edit/view resources), function invocable. No workflow transition simulation: the function runs but there's no simulated transition context.
jira:workflowCondition
⚠️ Partial
Same as workflowValidator. (Preview)
jira:workflowPostFunction
⚠️ Partial
Same as workflowValidator. (Preview)
UI Modifications
Module Key
Level
Notes
jira:uiModifications
🔇 Stub
No resource/function in manifest. Host calls uiModificationsApi.onInit/onChange from @forge/jira-bridge, which we stub as no-ops. Not planned — niche module; open an issue if you need it.
Full Page (New)
Module Key
Level
Notes
jira:fullPage
⚠️ Partial
Parsed as UI module if it has resource:. Functionally same as jira:globalPage. (Preview)
Confluence Modules
Standard UI Modules
Module Key
Level
Context
Notes
confluence:globalPage
✅ Full
{ type }
Full-page Confluence module
confluence:spacePage
✅ Full
{ type }
Space-scoped page
confluence:contentAction
✅ Full
content: { id }, space: { key, id }
More actions menu on pages/blogs
confluence:contentBylineItem
✅ Full
content: { id }, space: { key, id }
Content byline metadata
confluence:contextMenu
✅ Full
content: { id }, space: { key, id }
Text selection context menu
macro
✅ Full
content: { id }, space: { key }, config: {}
Confluence macro. Custom config (config: { resource: '...' }) splits the module into separately-routed view/config sub-modules with View / Config tabs in the parent shell. Inline config (config: true / config: {} + ForgeReconciler.addConfig(<Config />)) is captured from the second reconciler container and rendered as in-iframe View / Config tabs. Both flows store the submitted config keyed by the macro key; useConfig() reads extension.config via the real @forge/react package.
confluence:spaceSettings
⚠️ Partial
Generic
Parsed as UI module. No space-settings-specific context.
confluence:globalSettings
⚠️ Partial
Generic
Parsed as UI module. No global-settings-specific context.
confluence:spaceSidebar
⚠️ Partial
Generic
Parsed as UI module if it has resource:.
confluence:homepageFeed
⚠️ Partial
Generic
Parsed as UI module. No homepage-specific context.
confluence:pageBanner
⚠️ Partial
Generic
Parsed as UI module.
confluence:customContent
⚠️ Partial
Generic
Parsed as UI module if it has resource:. Custom content type definition.
Background Scripts
Module Key
Level
Notes
confluence:backgroundScript
✅ Full
Same iframe + events pattern as Jira background scripts. Compatible with: globalPage, spacePage, contentByLineItem, contextMenu, contentAction, homepageFeed.
Bitbucket Modules
All Bitbucket modules follow standard UI patterns (resource + resolver) but we have no Bitbucket-specific context hydration.
Module Key
Level
Notes
bitbucket:repoCodeOverviewCard
⚠️ Partial
Parsed as UI module. No repo context.
bitbucket:repoCodeOverviewAction
⚠️ Partial
Parsed as UI module. Renders modal in real Forge.
bitbucket:repoCodeOverviewPanel
⚠️ Partial
Parsed as UI module.
bitbucket:repoPullRequestCard
⚠️ Partial
Parsed as UI module. No PR context.
bitbucket:repoPullRequestAction
⚠️ Partial
Parsed as UI module.
bitbucket:repoPullRequestOverviewPanel
⚠️ Partial
Parsed as UI module.
bitbucket:repoMainMenuPage
⚠️ Partial
Parsed as UI module. Full page.
bitbucket:repoSettingsMenuPage
⚠️ Partial
Parsed as UI module. Settings page.
bitbucket:workspaceSettingsMenuPage
⚠️ Partial
Parsed as UI module.
bitbucket:mergeCheck
❌ None
Host-driven function. Called during PR merge. Returns pass/fail. No simulation path.
bitbucket:dynamicPipelinesProvider
❌ None
Host-driven function. Generates pipeline YAML at runtime.
Compass Modules
Module Key
Level
Notes
compass:adminPage
⚠️ Partial
Parsed as UI module. Standard admin page pattern.
compass:componentPage
⚠️ Partial
Parsed as UI module. No component context.
compass:globalPage
⚠️ Partial
Parsed as UI module.
compass:teamPage
⚠️ Partial
Parsed as UI module. No team context.
compass:dataProvider
❌ None
Host-driven function. Pushes metrics/events to Compass.
Jira Service Management Modules
All JSM modules follow standard UI patterns but target the customer portal, which has its own context and rendering surface.
Module Key
Level
Notes
jiraServiceManagement:assetsImportType
❌ None
Modal for configuring asset imports. Specialized UI.
Parsed as UI module. Saves data as issue properties during request creation.
jiraServiceManagement:portalRequestDetail
⚠️ Partial
Parsed as UI module.
jiraServiceManagement:portalRequestDetailPanel
⚠️ Partial
Parsed as UI module. Side panel.
jiraServiceManagement:portalRequestViewAction
⚠️ Partial
Parsed as UI module.
jiraServiceManagement:portalSubheader
⚠️ Partial
Parsed as UI module.
jiraServiceManagement:portalUserMenuAction
⚠️ Partial
Parsed as UI module.
jiraServiceManagement:queuePage
⚠️ Partial
Parsed as UI module. Queue management page.
Rovo Modules
Module Key
Level
Notes
rovo:agent
❌ None
Config-only + AI. Defines an AI agent with prompt, conversation starters, and action references. No function, no resource (except for icons). Would need an LLM integration to simulate. Entirely different paradigm.
action
✅ Full
Typed function. Manifest parsed, input schema validated, function invocable via MCP invoke with actionKey. Input/output schema enforced.