Skip to content

[Security Solution] Adds Inbox plugin#265634

Merged
spong merged 17 commits intoelastic:mainfrom
spong:inbox-a-go-go
Apr 28, 2026
Merged

[Security Solution] Adds Inbox plugin#265634
spong merged 17 commits intoelastic:mainfrom
spong:inbox-a-go-go

Conversation

@spong
Copy link
Copy Markdown
Member

@spong spong commented Apr 24, 2026

Summary

Introduces the Inbox plugin/package and surrounding scaffolding. Includes plugin with RBAC, stubbed out API routes, and client hooks, and kbn-inbox-common package for OAS generation and zod schemas. Please see README.md for detailed architecture.

Disabled by default, enabled via kibana.dev.yml:

xpack.inbox.enabled: true

Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

PR developed with Cursor + Claude Opus 4.7 Super Duper xHigh Thinking++

@spong spong self-assigned this Apr 24, 2026
@spong spong added the release_note:skip Skip the PR/issue when compiling release notes label Apr 24, 2026
@spong spong requested a review from a team as a code owner April 24, 2026 23:33
@spong spong added backport:skip This PR does not require backporting Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. v9.5.0 labels Apr 24, 2026
@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/security-solution (Team: SecuritySolution)

@spong spong requested a review from a team as a code owner April 25, 2026 01:16
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 25, 2026

🔍 Preview links for changed docs

@github-actions
Copy link
Copy Markdown
Contributor

Vale Linting Results

Summary: 1 warning, 1 suggestion found

⚠️ Warnings (1)
File Line Rule Message
docs/extend/plugin-list.md 169 Elastic.Latinisms Latin terms and abbreviations are a common source of confusion. Use 'and so on' instead of 'etc'.
💡 Suggestions (1)
File Line Rule Message
docs/extend/plugin-list.md 167 Elastic.Wordiness Consider using 'all' instead of 'all of '.

The Vale linter checks documentation changes against the Elastic Docs style guide.

To use Vale locally or report issues, refer to Elastic style guide for Vale.

Comment thread x-pack/platform/packages/shared/kbn-inbox-common/impl/schemas/common.ts Outdated
Comment on lines +5 to +6
"group": "platform",
"visibility": "shared",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to make sure I'm following - is the idea that observability or search might also drop items into the inbox later on, which is why we’re going with a platform/shared setup?

Copy link
Copy Markdown
Member Author

@spong spong Apr 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup! Treating this as a generic platform capability for now to see how managing workflow approvals and surfacing summaries pans out at large. We can lock this down as a security specific implementation later if that makes more sense. RBAC is only surfaced in Security now fwiw, but this should at least give us the flexibility depending on how things shake out.

Copy link
Copy Markdown
Member

@delanni delanni left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

limits 👍

@spong spong requested a review from a team as a code owner April 28, 2026 04:20
@spong spong requested a review from sdesalas April 28, 2026 04:20
@kibanamachine
Copy link
Copy Markdown
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] affected Scout: [ observability / apm ] plugin / local-serverless-observability_complete - Custom links template validation - Create custom link with template URL and filters

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
inbox - 20 +20

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/inbox-common - 17 +17
inbox - 7 +7
total +24

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
inbox - 4.9KB +4.9KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
inbox - 4.7KB +4.7KB
securitySolutionEss 37.4KB 37.4KB +28.0B
securitySolutionServerless 49.9KB 50.0KB +56.0B
total +4.8KB
Unknown metric groups

API count

id before after diff
@kbn/inbox-common - 17 +17
inbox - 7 +7
total +24

async chunk count

id before after diff
inbox - 1 +1

ESLint disabled line counts

id before after diff
@kbn/inbox-common - 1 +1

Total ESLint disabled count

id before after diff
@kbn/inbox-common - 1 +1

History

cc @spong

@maximpn maximpn requested review from maximpn and removed request for sdesalas April 28, 2026 07:26
Copy link
Copy Markdown
Contributor

@maximpn maximpn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spong Thanks for fix in @kbn/openapi-generator 🙏

Comment on lines +73 to +74
actions: z.array(InboxAction),
total: z.number().int(),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider a TODO re: paging

Comment on lines +8 to +10
export const PLUGIN_ID = 'inbox' as const;
export const PLUGIN_NAME = 'Inbox' as const;
export const APP_PATH = '/app/inbox' as const;
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-export from x-pack/platform/packages/shared/kbn-inbox-common/constants.ts?

Copy link
Copy Markdown
Contributor

@andrew-goldstein andrew-goldstein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @spong for getting the Inbox party started 🎉
LGTM 🚀

@spong spong added the Feature:Inbox This is the label for the Inbox Project label Apr 28, 2026
@spong spong merged commit 36544cf into elastic:main Apr 28, 2026
22 checks passed
@spong spong deleted the inbox-a-go-go branch April 28, 2026 17:19
spong added a commit that referenced this pull request May 1, 2026
…types (#267326)

### Summary

Cleanup pass on `@kbn/evals-common` and the `evals` plugin, mirroring
what was done for `@kbn/inbox-common` in #265634. No functional changes
for end users, but the OAS docs generated from these routes are now
correct, and the in-memory cost of the Zod schemas drops via the
upstream lazy-bind optimization.

### Changes

- **Switch to canonical `buildRouteValidationWithZod` from
`@kbn/zod-helpers/v4`**
- Deleted the local copy in `kbn-evals-common/impl/schemas/common.ts`
and its re-export from `kbn-evals-common/index.ts`.
- Updated all 18 evals route files to import the helper from
`@kbn/zod-helpers/v4`.
- Pruned `@kbn/zod-helpers` and `@kbn/core` from `kbn-evals-common`'s
`moon.yml` / `tsconfig.json`; added `@kbn/zod-helpers` to the `evals`
plugin's instead.
- The canonical helper attaches `_sourceSchema` to the returned
validator (added in #263354), which `kbn-router-to-openapispec` unwraps
so route `params` / `query` / `body` actually appear in generated OAS
docs. The local copy did not, so any OAS doc generation for these routes
was silently dropping schema info.

- **Regenerated OAS types** (`yarn openapi:generate` in
`kbn-evals-common`)
- Picks up the `lazySchema(() => …)` wrappers introduced by #264125 and
tuned in #266343 (upstream `colinhacks/zod#5897` lazy-bind memory
optimization). 19 `.gen.ts` files updated; pattern matches the prior
inbox regen exactly.

- **README cleanup** — pointed at the new helper location and dropped
the obsolete "after regenerating, you may need to fix unused imports"
workaround (no longer needed thanks to the OAS-generator `fix_eslint.ts`
fix from #265634, which forces the non-editor branch when invoked from
agent/IDE terminals).


_PR developed with Cursor + Claude Opus 4.7 Super Duper xHigh
Thinking++_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting Feature:Inbox This is the label for the Inbox Project release_note:skip Skip the PR/issue when compiling release notes Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. v9.5.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants