Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
1b38046
feat(appkit): make PluginContext telemetry injectable
IamGalymzhan Aug 10, 2026
dd503f5
feat(appkit): ship @databricks/appkit/testing and migrate first stub
IamGalymzhan Aug 10, 2026
55859c8
test(appkit): migrate route-handler-errors context stub to mockPlugin…
IamGalymzhan Aug 10, 2026
4d37d5e
docs(appkit): document the testing kit and ship a template example test
IamGalymzhan Aug 10, 2026
5821f6b
docs(appkit): fix testing-kit examples to instantiate the plugin class
IamGalymzhan Aug 10, 2026
cc790d0
refactor(appkit): tighten FakeToolResponse so a missing value is a ty…
IamGalymzhan Aug 10, 2026
bace753
refactor(appkit): make tools/test-helpers a shim over the shipped tes…
IamGalymzhan Aug 10, 2026
cfde155
fix(appkit): normalize CRLF in expectStream SSE parsing; sharpen test…
IamGalymzhan Aug 10, 2026
de5b40b
fix(appkit): resolve repo-wide Biome error blocking CI
IamGalymzhan Aug 11, 2026
8acf7ee
fix(appkit): address cross-model review findings in the testing kit
IamGalymzhan Aug 11, 2026
9297c73
chore(appkit): drop knip vitest-ignore now that vitest is a real peer…
IamGalymzhan Aug 11, 2026
3f11ea3
fix(appkit): make vitest a normal dependency, not a package-wide peer
IamGalymzhan Aug 11, 2026
c2c1aa9
refactor(appkit): rename mockPluginContext to createTestPluginContext
IamGalymzhan Aug 12, 2026
2564971
refactor(appkit): dedupe testing fixtures and tidy test-plugin-context
IamGalymzhan Aug 12, 2026
e02375d
Merge branch 'main' into feat/testing-kit
IamGalymzhan Aug 12, 2026
1e28a96
fix(appkit): resolve third-review findings in the testing kit
IamGalymzhan Aug 12, 2026
01dd25c
test(appkit): dogfood the testing kit on analytics and genie plugins
IamGalymzhan Aug 12, 2026
f09ca5d
refactor(appkit): address testing-kit review feedback
IamGalymzhan Aug 13, 2026
90288bb
docs(appkit): move the testing guide under Plugins
IamGalymzhan Aug 13, 2026
ac0f0cb
test(appkit): fold dogfood tests into plugin suites
IamGalymzhan Aug 13, 2026
1ebdee1
test(appkit): restore toHaveLength(1) on the analytics OBO dispatch test
IamGalymzhan Aug 13, 2026
5cdd207
test(appkit): re-assert genie SSE payloads after the expectStream swap
IamGalymzhan Aug 13, 2026
448947f
fix(appkit): drop fabricated workspace-client fields from createMockR…
IamGalymzhan Aug 14, 2026
45601bf
chore(appkit): merge origin/main and reconcile with the oxlint toolchain
IamGalymzhan Aug 18, 2026
7586c50
feat(appkit): add a never-crash mock WorkspaceClient to the testing kit
IamGalymzhan Aug 18, 2026
d4f6355
refactor(appkit): converge the two mock-workspace-client builders
IamGalymzhan Aug 18, 2026
e10cb3b
feat(appkit): split the lifecycle exit from the teardown
IamGalymzhan Aug 18, 2026
ff574f7
feat(appkit): expose close() on the app handle
IamGalymzhan Aug 18, 2026
ef172e1
feat(appkit): make the process-wide singletons re-bootable
IamGalymzhan Aug 18, 2026
3719d5d
feat(appkit): add createTestApp — the customer-grade plugin test harness
IamGalymzhan Aug 18, 2026
a524958
feat(appkit): publish the harness surface, add createTestPlugin, and …
IamGalymzhan Aug 18, 2026
28848bd
test(appkit): tighten the mock-client type contract from tarball find…
IamGalymzhan Aug 18, 2026
5bdb52c
fix(appkit): address code-review findings in the testing kit
IamGalymzhan Aug 18, 2026
48b1a4c
docs(appkit): document `close` as a reserved plugin name
IamGalymzhan Aug 18, 2026
c2649e6
chore: drop the **/.claude ignores from knip, oxlint, and oxfmt
IamGalymzhan Aug 18, 2026
473ecd0
refactor(appkit): slim the comments added by the testing-kit work
IamGalymzhan Aug 18, 2026
efb310d
test(appkit): merge duplicate assertions in the mock-client suite
IamGalymzhan Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 0 additions & 46 deletions apps/dev-playground/client/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions docs/docs/api/appkit/Function.createApp.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions docs/docs/api/appkit/Function.createWorkspaceClient.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions docs/docs/api/appkit/Interface.WorkspaceClientOptions.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 56 additions & 0 deletions docs/docs/api/appkit/TypeAlias.AppHandle.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions docs/docs/api/appkit/index.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions docs/docs/api/appkit/typedoc-sidebar.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions docs/docs/plugins/custom-plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ export const myPlugin = toPlugin(MyPlugin);

JSON is the canonical authoring surface — it is what `appkit plugin sync` reads when aggregating manifests for templates. For the full v2.0 manifest contract (resources, discovery descriptors, scaffolding rules), see [Plugin manifest](./manifest.md).

:::note Reserved plugin names
`close` cannot be used as a plugin `name`. Plugin exports are installed as own
properties on the object `createApp()` returns, and an own property shadows a
prototype method — so a plugin named `close` would silently replace the app
handle's own `close()` and break teardown. `createApp()` rejects it with a
`ConfigurationError` naming the plugin instead of failing quietly at shutdown.
:::

## Config-dependent resources

The manifest defines resources as either `required` (always needed) or `optional` (may be needed).
Expand Down
Loading
Loading