@tensorify.io/sdk
Version:
TypeScript SDK for developing Tensorify plugins with comprehensive validation, frontend enforcement, and publishing tools
214 lines • 10.5 kB
JavaScript
;
/**
* @tensorify.io/sdk
*
* TypeScript SDK for developing Tensorify plugins with comprehensive validation,
* frontend enforcement, and publishing tools.
*
* @version 1.0.0
* @author AlphaWolf Ventures, Inc.
* @license ISC
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.MANIFEST_VERSIONS = exports.MIN_TYPESCRIPT_VERSION = exports.SDK_VERSION = exports.PLUGIN_CATEGORIES = exports.getPluginMetadata = exports.createPluginTemplate = exports.isValidPluginDirectory = exports.autoDetectEntrypointClassName = exports.indentCode = exports.sanitizeVariableName = exports.generateVariableName = exports.processDynamicLabelTemplate = exports.mergeSettingsWithDefaults = exports.createDefaultSettings = exports.validatePluginSettings = exports.validatePlugin = exports.buildPluginManifest = exports.writeManifestFile = exports.readPackageJson = exports.generatePluginManifest = exports.DEFAULT_VALUES = exports.UI_TYPE_TO_DATA_TYPE_MAP = exports.SettingsDataType = exports.SettingsUIType = exports.NextNodeAsOutput = exports.PrevNodeAsInput = exports.IconType = exports.NodeViewContainerType = exports.EdgeType = exports.HandlePosition = exports.HandleViewType = exports.PluginCapability = exports.NodeType = exports.TensorifyPlugin = void 0;
exports.createManifest = createManifest;
exports.validateManifest = validateManifest;
exports.createEntryPoint = createEntryPoint;
// ========================================
// CORE CLASSES
// ========================================
// Main abstract class that all plugins extend
var TensorifyPlugin_1 = require("./core/TensorifyPlugin");
Object.defineProperty(exports, "TensorifyPlugin", { enumerable: true, get: function () { return TensorifyPlugin_1.TensorifyPlugin; } });
// ========================================
// TYPE DEFINITIONS
// ========================================
// Core types
var core_1 = require("./types/core");
Object.defineProperty(exports, "NodeType", { enumerable: true, get: function () { return core_1.NodeType; } });
Object.defineProperty(exports, "PluginCapability", { enumerable: true, get: function () { return core_1.PluginCapability; } });
// Visual configuration types
var visual_1 = require("./types/visual");
Object.defineProperty(exports, "HandleViewType", { enumerable: true, get: function () { return visual_1.HandleViewType; } });
Object.defineProperty(exports, "HandlePosition", { enumerable: true, get: function () { return visual_1.HandlePosition; } });
Object.defineProperty(exports, "EdgeType", { enumerable: true, get: function () { return visual_1.EdgeType; } });
Object.defineProperty(exports, "NodeViewContainerType", { enumerable: true, get: function () { return visual_1.NodeViewContainerType; } });
Object.defineProperty(exports, "IconType", { enumerable: true, get: function () { return visual_1.IconType; } });
// Convenience handle presets for mandatory flow
var handles_1 = require("./constants/handles");
Object.defineProperty(exports, "PrevNodeAsInput", { enumerable: true, get: function () { return handles_1.PrevNodeAsInput; } });
Object.defineProperty(exports, "NextNodeAsOutput", { enumerable: true, get: function () { return handles_1.NextNodeAsOutput; } });
// Settings field types
var settings_1 = require("./types/settings");
Object.defineProperty(exports, "SettingsUIType", { enumerable: true, get: function () { return settings_1.SettingsUIType; } });
Object.defineProperty(exports, "SettingsDataType", { enumerable: true, get: function () { return settings_1.SettingsDataType; } });
Object.defineProperty(exports, "UI_TYPE_TO_DATA_TYPE_MAP", { enumerable: true, get: function () { return settings_1.UI_TYPE_TO_DATA_TYPE_MAP; } });
Object.defineProperty(exports, "DEFAULT_VALUES", { enumerable: true, get: function () { return settings_1.DEFAULT_VALUES; } });
const core_2 = require("./types/core");
const visual_2 = require("./types/visual");
// ========================================
// UTILITY FUNCTIONS
// ========================================
// Plugin development utilities
var plugin_utils_1 = require("./utils/plugin-utils");
Object.defineProperty(exports, "generatePluginManifest", { enumerable: true, get: function () { return plugin_utils_1.generatePluginManifest; } });
Object.defineProperty(exports, "readPackageJson", { enumerable: true, get: function () { return plugin_utils_1.readPackageJson; } });
Object.defineProperty(exports, "writeManifestFile", { enumerable: true, get: function () { return plugin_utils_1.writeManifestFile; } });
Object.defineProperty(exports, "buildPluginManifest", { enumerable: true, get: function () { return plugin_utils_1.buildPluginManifest; } });
Object.defineProperty(exports, "validatePlugin", { enumerable: true, get: function () { return plugin_utils_1.validatePlugin; } });
Object.defineProperty(exports, "validatePluginSettings", { enumerable: true, get: function () { return plugin_utils_1.validatePluginSettings; } });
Object.defineProperty(exports, "createDefaultSettings", { enumerable: true, get: function () { return plugin_utils_1.createDefaultSettings; } });
Object.defineProperty(exports, "mergeSettingsWithDefaults", { enumerable: true, get: function () { return plugin_utils_1.mergeSettingsWithDefaults; } });
Object.defineProperty(exports, "processDynamicLabelTemplate", { enumerable: true, get: function () { return plugin_utils_1.processDynamicLabelTemplate; } });
Object.defineProperty(exports, "generateVariableName", { enumerable: true, get: function () { return plugin_utils_1.generateVariableName; } });
Object.defineProperty(exports, "sanitizeVariableName", { enumerable: true, get: function () { return plugin_utils_1.sanitizeVariableName; } });
Object.defineProperty(exports, "indentCode", { enumerable: true, get: function () { return plugin_utils_1.indentCode; } });
Object.defineProperty(exports, "autoDetectEntrypointClassName", { enumerable: true, get: function () { return plugin_utils_1.autoDetectEntrypointClassName; } });
Object.defineProperty(exports, "isValidPluginDirectory", { enumerable: true, get: function () { return plugin_utils_1.isValidPluginDirectory; } });
Object.defineProperty(exports, "createPluginTemplate", { enumerable: true, get: function () { return plugin_utils_1.createPluginTemplate; } });
Object.defineProperty(exports, "getPluginMetadata", { enumerable: true, get: function () { return plugin_utils_1.getPluginMetadata; } });
// ========================================
// CONSTANTS AND HELPERS
// ========================================
/**
* Supported node type categories for plugins
*/
exports.PLUGIN_CATEGORIES = [
"custom",
"trainer",
"evaluator",
"model",
"model_layer",
"dataloader",
"preprocessor",
"postprocessor",
"augmentation_stack",
"optimizer",
"loss_function",
"metric",
"scheduler",
"regularizer",
"function",
"pipeline",
"report",
];
/**
* Current SDK version
*/
exports.SDK_VERSION = "1.0.0";
/**
* Minimum required TypeScript version
*/
exports.MIN_TYPESCRIPT_VERSION = "4.5.0";
/**
* Supported manifest format versions
*/
exports.MANIFEST_VERSIONS = ["1.0.0"];
// ========================================
// CONVENIENCE FUNCTIONS
// ========================================
/**
* Create a new plugin manifest with default values
*
* @param overrides Optional properties to override defaults
* @returns Plugin manifest with defaults applied
*/
function createManifest(overrides = {}) {
const defaults = {
name: "my-plugin",
version: "1.0.0",
description: "A new Tensorify plugin",
author: "",
main: "dist/index.js",
entrypointClassName: "MyPlugin",
keywords: ["tensorify", "plugin"],
frontendConfigs: {
id: "my-plugin",
name: "My Plugin",
category: "custom",
nodeType: core_2.NodeType.CUSTOM,
visual: {
containerType: visual_2.NodeViewContainerType.DEFAULT,
size: { width: 200, height: 120 },
padding: { inner: 16, outer: 8, extraPadding: false },
styling: {
borderRadius: 8,
borderWidth: 2,
shadowLevel: 1,
theme: "auto",
},
icons: { secondary: [], showIconBackground: true, iconSize: "medium" },
labels: { showLabels: true, labelPosition: "top" },
},
inputHandles: [],
outputHandles: [],
settingsFields: [],
},
capabilities: [core_2.PluginCapability.CODE_GENERATION],
requirements: {
minSdkVersion: exports.SDK_VERSION,
dependencies: [],
},
sdkVersion: exports.SDK_VERSION,
generatedAt: new Date().toISOString(),
manifestVersion: "1.0.0",
};
return { ...defaults, ...overrides };
}
/**
* Validate a plugin manifest structure
*
* @param manifest Manifest to validate
* @returns True if valid, throws error if invalid
*/
function validateManifest(manifest) {
const required = [
"name",
"version",
"entrypointClassName",
"frontendConfigs",
];
for (const field of required) {
if (!(field in manifest) ||
!manifest[field]) {
throw new Error(`Required field '${field}' is missing from manifest`);
}
}
// Validate semantic versioning
const versionRegex = /^\d+\.\d+\.\d+$/;
if (!versionRegex.test(manifest.version)) {
throw new Error(`Invalid version format: ${manifest.version}`);
}
return true;
}
/**
* Create a plugin entry point for CLI usage
*
* @param description Entry point description
* @param parameters Entry point parameters
* @returns Plugin entry point object
*/
function createEntryPoint(description, parameters = {}) {
return {
description,
parameters: {
settings: {
type: "object",
required: true,
description: "Plugin settings object",
},
children: {
type: "any",
required: false,
description: "Connected child plugins",
},
context: {
type: "object",
required: false,
description: "Code generation context",
},
...parameters,
},
};
}
//# sourceMappingURL=index.js.map