Skip to content

Commit

Permalink
refactor: domain, skill-config and skill in skills/schemas.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
theoludwig committed Nov 1, 2022
1 parent 6e8c326 commit 65246dc
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 107 deletions.
4 changes: 1 addition & 3 deletions server/src/helpers/skill-domain-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ import fs from 'node:fs'
import path from 'node:path'

import type { ShortLanguageCode } from '@/helpers/lang-helper'
import type { Domain } from '@/models/domain'
import type { GlobalEntity } from '@@/core/data/schemas'
import type { SkillConfig } from '@/models/skill-config'
import type { Skill, SkillBridge } from '@/models/skill'
import type { Domain, Skill, SkillConfig, SkillBridge } from '@@/skills/schemas'

interface SkillDomain {
name: string
Expand Down
12 changes: 0 additions & 12 deletions server/src/models/domain.ts

This file was deleted.

68 changes: 0 additions & 68 deletions server/src/models/skill-config.ts

This file was deleted.

23 changes: 0 additions & 23 deletions server/src/models/skill.ts

This file was deleted.

91 changes: 90 additions & 1 deletion skills/schemas.ts
Original file line number Diff line number Diff line change
@@ -1 +1,90 @@
// TODO
import type { Static } from '@sinclair/typebox'
import { Type } from '@sinclair/typebox'

const domainSchema = {
name: Type.String({ minLength: 1 })
}
const skillBridges = [Type.Literal('python')]
const skillSchema = {
name: Type.String({ minLength: 1 }),
bridge: Type.Union(skillBridges),
version: Type.String({ minLength: 1 }),
description: Type.String({ minLength: 1 }),
author: Type.Object({
name: Type.String({ minLength: 1 }),
email: Type.String({ minLength: 1, maxLength: 254, format: 'email' }),
url: Type.String({ minLength: 1, maxLength: 255, format: 'uri' })
})
}
const skillActionTypes = [Type.Literal('logic'), Type.Literal('dialog')]
const skillDataTypes = [
Type.Literal('skill_resolver'),
Type.Literal('global_resolver'),
Type.Literal('entity')
]
const skillConfigSchema = {
variables: Type.Optional(Type.Record(Type.String(), Type.String())),
actions: Type.Record(
Type.String(),
Type.Object({
type: Type.Union(skillActionTypes),
loop: Type.Optional(
Type.Object({
expected_item: Type.Object({
type: Type.Union(skillDataTypes),
name: Type.String()
})
})
),
utterance_samples: Type.Optional(Type.Array(Type.String())),
answers: Type.Optional(Type.Array(Type.String())),
unknown_answers: Type.Optional(Type.Array(Type.String())),
suggestions: Type.Optional(Type.Array(Type.String())),
slots: Type.Optional(
Type.Array(
Type.Object({
name: Type.String(),
item: Type.Object({
type: Type.Union(skillDataTypes),
name: Type.String()
}),
questions: Type.Array(Type.String()),
suggestions: Type.Optional(Type.Array(Type.String()))
})
)
),
entities: Type.Optional(
Type.Array(
Type.Object({
type: Type.Literal('enum'),
name: Type.String(),
options: Type.Record(
Type.String(),
Type.Object({
synonyms: Type.Array(Type.String())
})
)
})
)
),
next_action: Type.Optional(Type.String())
})
),
answers: Type.Optional(Type.Record(Type.String(), Type.Array(Type.String()))),
entities: Type.Optional(Type.Record(Type.String(), Type.String()))
}

const domainSchemaObject = Type.Strict(
Type.Object(domainSchema, { additionalProperties: false })
)
const skillSchemaObject = Type.Strict(
Type.Object(skillSchema, { additionalProperties: false })
)
const skillConfigSchemaObject = Type.Strict(
Type.Object(skillConfigSchema, { additionalProperties: false })
)

export type Domain = Static<typeof domainSchemaObject>
export type Skill = Static<typeof skillSchemaObject>
export type SkillConfig = Static<typeof skillConfigSchemaObject>
export type SkillBridge = Static<typeof skillSchema.bridge>

0 comments on commit 65246dc

Please sign in to comment.