UNPKG

@sprucelabs/spruce-templates

Version:

Templates used for code generation in skills!

309 lines (308 loc) • 14.4 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.importExtractorUtil = exports.templates = void 0; const path_1 = __importDefault(require("path")); const schema_1 = require("@sprucelabs/schema"); const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils"); const handlebars_1 = __importDefault(require("handlebars")); const templates_types_1 = require("./types/templates.types"); const DirectoryTemplateUtility_1 = __importDefault(require("./utilities/DirectoryTemplateUtility")); const importExtractor_utility_1 = __importDefault(require("./utilities/importExtractor.utility")); const KeyGeneratorUtility_1 = __importDefault(require("./utilities/KeyGeneratorUtility")); const templateImporter_utility_1 = __importDefault(require("./utilities/templateImporter.utility")); const templateItem_utility_1 = __importDefault(require("./utilities/templateItem.utility")); // Manual import of addons for Bun require("./addons"); // addonUtil.importSync({}, __dirname, 'addons') exports.templates = { schemasTypes(options) { var _a, _b; const imports = importExtractor_utility_1.default.extractFieldImports(options.fieldTemplateItems); const template = templateImporter_utility_1.default.getTemplate((_a = options.typesTemplate) !== null && _a !== void 0 ? _a : 'schema/schemas.types.ts.hbs', options.language); const schemaImports = importExtractor_utility_1.default.extractSchemaImports(options.schemaTemplateItems); return template({ ...options, imports, schemaImports, globalSchemaNamespace: (_b = options.globalSchemaNamespace) !== null && _b !== void 0 ? _b : spruce_skill_utils_1.DEFAULT_GLOBAL_SCHEMA_NAMESPACE, }); }, valueTypes(options) { var _a; const imports = importExtractor_utility_1.default.extractFieldImports(options.fieldTemplateItems); const rendersAs = Object.values(schema_1.TemplateRenderAs); const schemaTemplatesByNamespaceAndName = templateItem_utility_1.default.groupSchemaTemplatesByNamespaceAndName(options.schemaTemplateItems); const fieldTemplatesByType = templateItem_utility_1.default.groupFieldItemsByNamespace(options.fieldTemplateItems); const template = templateImporter_utility_1.default.getTemplate('schema/valueTypes.ts.hbs'); return template({ ...options, imports, fieldTemplatesByType, schemaTemplatesByNamespaceAndName, SCHEMA_VERSION_FALLBACK: spruce_skill_utils_1.SCHEMA_VERSION_FALLBACK, rendersAs, globalSchemaNamespace: (_a = options.globalSchemaNamespace) !== null && _a !== void 0 ? _a : spruce_skill_utils_1.DEFAULT_GLOBAL_SCHEMA_NAMESPACE, }); }, schema(options) { var _a, _b, _c; const imports = importExtractor_utility_1.default.extractFieldImports(options.fieldTemplateItems); const template = templateImporter_utility_1.default.getTemplate((_a = options.schemaFile) !== null && _a !== void 0 ? _a : 'schema/schema.ts.hbs', options.language); return template({ ...options, imports, globalSchemaNamespace: (_b = options.globalSchemaNamespace) !== null && _b !== void 0 ? _b : spruce_skill_utils_1.DEFAULT_GLOBAL_SCHEMA_NAMESPACE, typesFile: (_c = options.typesFile) !== null && _c !== void 0 ? _c : spruce_skill_utils_1.DEFAULT_SCHEMA_TYPES_FILE, }); }, schemaBuilder(options) { var _a; const template = templateImporter_utility_1.default.getTemplate('schema/builder.ts.hbs'); return template({ ...options, builderFunction: (_a = options.builderFunction) !== null && _a !== void 0 ? _a : spruce_skill_utils_1.DEFAULT_BUILDER_FUNCTION, }); }, error(options) { const template = templateImporter_utility_1.default.getTemplate('error/SpruceError.ts.hbs'); return template({ renderClassDefinition: true, ...options }); }, errorOptionsTypes(options) { const template = templateImporter_utility_1.default.getTemplate('error/options.types.ts.hbs'); return template(options); }, schemaExample(options) { const template = templateImporter_utility_1.default.getTemplate('schema/example.ts.hbs'); return template(options); }, schemaPlugin() { const template = templateImporter_utility_1.default.getTemplate('schema/schema.plugin.ts.hbs'); return template({}); }, errorPlugin() { const template = templateImporter_utility_1.default.getTemplate('error/error.plugin.ts.hbs'); return template({}); }, conversationPlugin() { const template = templateImporter_utility_1.default.getTemplate('conversation/conversation.plugin.ts.hbs'); return template({}); }, deployPlugin() { const template = templateImporter_utility_1.default.getTemplate('deploy/deploy.plugin.ts.hbs'); return template({}); }, errorExample(options) { const template = templateImporter_utility_1.default.getTemplate('error/example.ts.hbs'); return template(options); }, test(options) { const { testType } = options; const template = templateImporter_utility_1.default.getTemplate(testType === 'static' ? 'test/StaticTest.test.ts.hbs' : 'test/Test.test.ts.hbs'); return template(options); }, fieldsTypes(options) { const template = templateImporter_utility_1.default.getTemplate('schema/fields/fields.types.ts.hbs'); return template(options); }, fieldClassMap(options) { const template = templateImporter_utility_1.default.getTemplate('schema/fields/fieldClassMap.ts.hbs'); return template(options); }, launchConfig() { const template = templateImporter_utility_1.default.getTemplate('vscode/launch.json'); return template({}); }, async vsCodeSettings() { const files = await exports.templates.directoryTemplate({ kind: templates_types_1.DirectoryTemplateCode.VsCode, context: {}, }); const settings = files.find((f) => f.filename === 'settings.json'); return settings.contents; }, listener(options) { const template = templateImporter_utility_1.default.getTemplate('event/listener.ts.hbs'); return template({ globalSchemaNamespace: spruce_skill_utils_1.DEFAULT_GLOBAL_SCHEMA_NAMESPACE, ...options, shouldImportGlobalSchema: options.emitPayloadSchemaTemplateItem || options.responsePayloadSchemaTemplateItem, }); }, listeners(options) { const template = templateImporter_utility_1.default.getTemplate('event/listeners.ts.hbs'); return template({ ...options, }); }, eventContract(options) { const template = templateImporter_utility_1.default.getTemplate('event/event.contract.ts.hbs'); return template(options); }, eventOptions(options) { const template = templateImporter_utility_1.default.getTemplate('event/event.options.ts.hbs'); return template({ ...options, isGlobal: options.isGlobal ? 'true' : 'false', }); }, permissionPlugin() { const template = templateImporter_utility_1.default.getTemplate('permissions/permission.plugin.ts.hbs'); return template({}); }, permissions(options) { const template = templateImporter_utility_1.default.getTemplate('permissions/permissions.ts.hbs'); return template({ ...options }); }, permissionContractBuilder(options) { const template = templateImporter_utility_1.default.getTemplate('permissions/contract.builder.ts.hbs'); return template(options); }, permissionTypes(options) { const template = templateImporter_utility_1.default.getTemplate('permissions/permissions.types.ts.hbs'); return template(options); }, eventEmitPayload(options) { const template = templateImporter_utility_1.default.getTemplate('event/payload.builder.ts.hbs'); return template({ ...options, actionCamel: 'EmitPayload' }); }, eventEmitTarget(options) { const template = templateImporter_utility_1.default.getTemplate('event/payload.builder.ts.hbs'); return template({ ...options, actionCamel: 'EmitTarget' }); }, eventResponsePayload(options) { const template = templateImporter_utility_1.default.getTemplate('event/payload.builder.ts.hbs'); return template({ ...options, actionCamel: 'ResponsePayload' }); }, combinedEventsContract(options) { const template = templateImporter_utility_1.default.getTemplate('event/events.contract.ts.hbs'); return template({ ...options, contracts: options.templateItems }); }, sandboxWillBootListener() { const template = templateImporter_utility_1.default.getTemplate('sandbox/will-boot.listener.ts.hbs'); return template({}); }, polish() { const template = templateImporter_utility_1.default.getTemplate('polish/polish.ts.hbs'); return template({}); }, async directoryTemplate(options) { return DirectoryTemplateUtility_1.default.build(options); }, async isValidTemplatedDirectory(options) { const { kind, dir } = options; if (kind === templates_types_1.DirectoryTemplateCode.Skill) { return spruce_skill_utils_1.diskUtil.doesFileExist(path_1.default.join(dir, 'package.json')); } const filesToCheck = await DirectoryTemplateUtility_1.default.filesInTemplate(kind); let filesMissing = false; for (const file of filesToCheck) { if (!spruce_skill_utils_1.diskUtil.doesDirExist(file.path)) { filesMissing = true; break; } } if (!filesMissing) { return true; } return false; }, conversationTopic(options) { const template = templateImporter_utility_1.default.getTemplate('conversation/conversation.topic.ts.hbs'); return template(options); }, generateFieldKey(renderAs, definition) { return KeyGeneratorUtility_1.default.generateFieldKey(renderAs, definition); }, storePlugin() { const template = templateImporter_utility_1.default.getTemplate('store/store.plugin.ts.hbs'); return template({}); }, store(options) { const template = templateImporter_utility_1.default.getTemplate('store/Store.store.ts.hbs'); return template(options); }, storeTypes(options) { const template = templateImporter_utility_1.default.getTemplate('store/stores.types.ts.hbs'); return template(options); }, stores(options) { const template = templateImporter_utility_1.default.getTemplate('store/stores.ts.hbs'); return template(options); }, skillViewController(options) { const template = templateImporter_utility_1.default.getTemplate('view/View.svc.ts.hbs'); return template(options); }, viewController(options) { const template = templateImporter_utility_1.default.getTemplate('view/View.vc.ts.hbs'); return template(options); }, appController(options) { const template = templateImporter_utility_1.default.getTemplate('view/App.ac.ts.hbs'); return template(options); }, views(options) { const template = templateImporter_utility_1.default.getTemplate('view/views.ts.hbs'); return template(options); }, viewPlugin() { const template = templateImporter_utility_1.default.getTemplate('view/view.plugin.ts.hbs'); return template({}); }, agentPlugin() { const template = templateImporter_utility_1.default.getTemplate('agent/agent.plugin.ts.hbs'); return template({}); }, agentSystemPrompt(options) { const template = templateImporter_utility_1.default.getTemplate('agent/SYSTEM_PROMPT.md.hbs', 'markdown'); return template(options); }, viewControllerPlugin(options) { const template = templateImporter_utility_1.default.getTemplate('view/viewController.plugin.ts.hbs'); return template(options); }, theme() { const template = templateImporter_utility_1.default.getTemplate('view/skill.theme.ts.hbs'); return template({}); }, logTransport() { const template = templateImporter_utility_1.default.getTemplate('log/transport.plugin.ts.hbs'); return template({}); }, claudeMd() { const template = templateImporter_utility_1.default.getTemplate('CLAUDE.md.hbs', 'markdown'); return template({}); }, agentsMd() { const template = templateImporter_utility_1.default.getTemplate('AGENTS.md.hbs', 'markdown'); return template({}); }, projectMd() { const template = templateImporter_utility_1.default.getTemplate('PROJECT.md.hbs', 'markdown'); return template({}); }, }; var importExtractor_utility_2 = require("./utilities/importExtractor.utility"); Object.defineProperty(exports, "importExtractorUtil", { enumerable: true, get: function () { return __importDefault(importExtractor_utility_2).default; } }); exports.default = handlebars_1.default; __exportStar(require("./types/templates.types"), exports);