@firefliesai/schema-forge
Version:
Transform TypeScript classes into JSON Schema definitions with automatic support for OpenAI, Anthropic, and Google Gemini function calling (tool) formats
233 lines (232 loc) • 8.55 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FirstLevelDto = exports.SecondLevelDto = exports.ThirdLevelDto = exports.GameCharacterV2 = exports.GameCharacter = exports.GameCharacterToolDesc = exports.GameCharacterToolName = void 0;
const schema_forge_1 = require("../schema-forge");
var StatusType;
(function (StatusType) {
StatusType["Online"] = "ONLINE";
StatusType["Offline"] = "OFFLINE";
StatusType["Away"] = "AWAY";
StatusType["Busy"] = "BUSY";
})(StatusType || (StatusType = {}));
var RankType;
(function (RankType) {
RankType[RankType["Novice"] = 1] = "Novice";
RankType[RankType["Intermediate"] = 2] = "Intermediate";
RankType[RankType["Expert"] = 3] = "Expert";
RankType[RankType["Master"] = 4] = "Master";
})(RankType || (RankType = {}));
exports.GameCharacterToolName = 'Game Character Configuration';
exports.GameCharacterToolDesc = 'Configure a game character with various attributes';
/**
* tips:
* 1. for array or enum type, you need to add @ToolProp({items:{type}, or enum instead}.
* for string/number property, you can just use TypeScript type
* 2. you can pass TypeScript Enum or [1, 2, 3] or ['a', 'b', 'c'] as enum
*/
let GameCharacter = class GameCharacter {
};
exports.GameCharacter = GameCharacter;
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Character name' }),
__metadata("design:type", String)
], GameCharacter.prototype, "name", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Character level' }),
__metadata("design:type", Number)
], GameCharacter.prototype, "level", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Character titles', items: { type: 'string' } }),
__metadata("design:type", Array)
], GameCharacter.prototype, "titles", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Score history', items: { type: 'number' } }),
__metadata("design:type", Array)
], GameCharacter.prototype, "scores", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character current status',
enum: StatusType,
}),
__metadata("design:type", String)
], GameCharacter.prototype, "status", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character allowed statuses',
enum: StatusType,
}),
__metadata("design:type", Array)
], GameCharacter.prototype, "allowedStatuses", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character class type',
enum: ['Warrior', 'Mage', 'Rogue', 'Priest'],
}),
__metadata("design:type", String)
], GameCharacter.prototype, "classType", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character roles',
enum: ['Tank', 'Healer', 'DPS', 'Support'],
}),
__metadata("design:type", Array)
], GameCharacter.prototype, "roles", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character rank',
enum: RankType,
}),
__metadata("design:type", Number)
], GameCharacter.prototype, "rank", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character available ranks',
enum: RankType,
}),
__metadata("design:type", Array)
], GameCharacter.prototype, "availableRanks", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character tier',
enum: [1, 2, 3, 4, 5],
}),
__metadata("design:type", Number)
], GameCharacter.prototype, "tier", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character unlocked tiers',
enum: [1, 2, 3, 4, 5],
}),
__metadata("design:type", Array)
], GameCharacter.prototype, "unlockedTiers", void 0);
exports.GameCharacter = GameCharacter = __decorate([
(0, schema_forge_1.ToolMeta)({
name: exports.GameCharacterToolName,
description: exports.GameCharacterToolDesc,
})
], GameCharacter);
class Location {
}
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'country name' }),
__metadata("design:type", String)
], Location.prototype, "country", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'city name' }),
__metadata("design:type", String)
], Location.prototype, "city", void 0);
class Bank {
}
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'bank name' }),
__metadata("design:type", String)
], Bank.prototype, "bankName", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'account number' }),
__metadata("design:type", Number)
], Bank.prototype, "account", void 0);
let GameCharacterV2 = class GameCharacterV2 {
};
exports.GameCharacterV2 = GameCharacterV2;
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Character name' }),
__metadata("design:type", String)
], GameCharacterV2.prototype, "name", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Character level' }),
__metadata("design:type", Number)
], GameCharacterV2.prototype, "level", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character titles',
items: { type: 'string' },
}),
__metadata("design:type", Array)
], GameCharacterV2.prototype, "titles", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Score history',
items: { type: 'number' },
}),
__metadata("design:type", Array)
], GameCharacterV2.prototype, "scores", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character status',
enum: StatusType,
}),
__metadata("design:type", String)
], GameCharacterV2.prototype, "status", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character rank',
enum: RankType,
}),
__metadata("design:type", Number)
], GameCharacterV2.prototype, "rank", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Available statuses',
enum: StatusType,
}),
__metadata("design:type", Array)
], GameCharacterV2.prototype, "availableStatuses", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({ description: 'Location info' }),
__metadata("design:type", Location)
], GameCharacterV2.prototype, "location", void 0);
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Bank info',
items: { type: Bank },
}),
__metadata("design:type", Array)
], GameCharacterV2.prototype, "banks", void 0);
exports.GameCharacterV2 = GameCharacterV2 = __decorate([
(0, schema_forge_1.ToolMeta)({
name: 'game_character',
description: 'Game character with location and bank information',
})
], GameCharacterV2);
class ThirdLevelDto {
}
exports.ThirdLevelDto = ThirdLevelDto;
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'ThirdLevelDto name',
enum: ['A', 'B', 'C', 'D'],
}),
__metadata("design:type", String)
], ThirdLevelDto.prototype, "name", void 0);
class SecondLevelDto {
}
exports.SecondLevelDto = SecondLevelDto;
__decorate([
(0, schema_forge_1.ToolProp)({
description: 'Character name',
items: { type: ThirdLevelDto },
}),
__metadata("design:type", Array)
], SecondLevelDto.prototype, "thirdLevelObjs", void 0);
let FirstLevelDto = class FirstLevelDto {
};
exports.FirstLevelDto = FirstLevelDto;
__decorate([
(0, schema_forge_1.ToolProp)({ description: '2nd level object' }),
__metadata("design:type", SecondLevelDto)
], FirstLevelDto.prototype, "secondLevelObj", void 0);
exports.FirstLevelDto = FirstLevelDto = __decorate([
(0, schema_forge_1.ToolMeta)({
name: '3_level_dto',
description: 'First level object',
})
], FirstLevelDto);