Skip to content

chore: plugin manifest definition#82

Open
MarioCadenas wants to merge 3 commits intomainfrom
plugin-manifest-definition
Open

chore: plugin manifest definition#82
MarioCadenas wants to merge 3 commits intomainfrom
plugin-manifest-definition

Conversation

@MarioCadenas
Copy link
Collaborator

@MarioCadenas MarioCadenas commented Feb 3, 2026

This PR introduces the definition for manifests, resources and so on for plugins plus the manifests for both analytics and server plugin

Base automatically changed from refactor-move-core-plugins to main February 4, 2026 10:33
@MarioCadenas MarioCadenas force-pushed the plugin-manifest-definition branch 2 times, most recently from d218b64 to 0c73331 Compare February 4, 2026 11:00
chore: make plugin manifest required

All plugins must now declare a static manifest property with their
metadata and resource requirements. This simplifies the manifest loader
and provides better error messages.
@MarioCadenas MarioCadenas force-pushed the plugin-manifest-definition branch from 0c73331 to eb19da1 Compare February 4, 2026 13:18
Implement manifest loader with validation and error handling.
All plugins must have a static manifest property.

Features:
- getPluginManifest() - loads and validates plugin manifests
- getResourceRequirements() - extracts resource requirements
- Comprehensive validation with clear error messages
- Unit tests and integration tests with core plugins
@MarioCadenas MarioCadenas force-pushed the plugin-manifest-definition branch from 780c458 to 14b339e Compare February 4, 2026 13:28
@MarioCadenas MarioCadenas marked this pull request as ready for review February 4, 2026 13:32
@MarioCadenas MarioCadenas requested a review from pkosiec February 4, 2026 13:32
Copy link
Member

@pkosiec pkosiec left a comment

Choose a reason for hiding this comment

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

Overall LGTM, just small comments

Copy link
Member

Choose a reason for hiding this comment

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

Something went wrong with displaying an icon near to the enum in the docs - it falls-back to the "other" category, but it should use enum:

.api-kind-enum .menu__link::before {
border-color: var(--api-kind-enum-color);
color: var(--api-kind-enum-color);
content: "E";
}

appkit/docs/sidebars.ts

Lines 35 to 46 in b70ea1c

for (const subItem of item.items) {
// Extract kind from the id (e.g., "Function." from "api/appkit/Function.name")
// To get "function", "class", "interface", etc.
const idParts = subItem.id.split("/").pop() || "";
const rawKind = idParts.split(".")[0].toLowerCase();
const kind = SUPPORTED_KINDS.has(rawKind) ? rawKind : "other";
flatItems.push({
...subItem,
className: `api-kind-${kind}`,
});
}

Could you please check? maybe it's just named "enumeration" or sth, and the fix will be easy. Thanks!

image

]);

/** Base abstract class for creating AppKit plugins */
/**
Copy link
Member

Choose a reason for hiding this comment

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

Awesome you documented this 👌

Comment on lines +32 to +45
timeout: {
type: "number",
default: 30000,
description: "Query execution timeout in milliseconds",
},
queriesDir: {
type: "string",
description: "Directory containing SQL query files",
},
cacheEnabled: {
type: "boolean",
default: true,
description: "Enable query result caching",
},
Copy link
Member

Choose a reason for hiding this comment

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

Timeout is defined on the constructor level, but what about the other properties? 🤔

export interface IAnalyticsConfig extends BasePluginConfig {
timeout?: number;
}

* Configuration schema definition for plugin config.
* Uses JSON Schema format for validation and documentation.
*/
export interface ConfigSchema {
Copy link
Member

@pkosiec pkosiec Feb 4, 2026

Choose a reason for hiding this comment

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

Maybe we should already use existing JSON schema types from some library? I believe at some point we'll use some lib to validate the configuration, right?

(totally fine to skip this comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants