@sprucelabs/spruce-templates
Version:
Templates used for code generation in skills!
309 lines (308 loc) • 14.4 kB
JavaScript
;
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);