models
This commit is contained in:
@@ -51,6 +51,18 @@ class SkillSummaryRecord(StrictFrozenModel):
|
||||
document_uri: str
|
||||
version: str
|
||||
|
||||
@classmethod
|
||||
def from_record(cls, record: SkillRecord) -> "SkillSummaryRecord":
|
||||
return cls(
|
||||
skill_id=record.skill_id,
|
||||
name=record.name,
|
||||
description=record.description,
|
||||
tags=record.tags,
|
||||
capabilities=record.capabilities,
|
||||
document_uri=record.document_uri,
|
||||
version=record.version,
|
||||
)
|
||||
|
||||
|
||||
class PromptRecord(StrictFrozenModel):
|
||||
"""Registry record containing a fully resolved prompt document."""
|
||||
@@ -83,6 +95,103 @@ class PromptSummaryRecord(StrictFrozenModel):
|
||||
document_uri: str
|
||||
version: str
|
||||
|
||||
@classmethod
|
||||
def from_record(cls, record: PromptRecord) -> "PromptSummaryRecord":
|
||||
return cls(
|
||||
prompt_id=record.prompt_id,
|
||||
name=record.name,
|
||||
description=record.description,
|
||||
tags=record.tags,
|
||||
capabilities=record.capabilities,
|
||||
document_uri=record.document_uri,
|
||||
version=record.version,
|
||||
)
|
||||
|
||||
|
||||
class SkillPatternPayload(StrictFrozenModel):
|
||||
"""Catalog payload model for skill pattern search results."""
|
||||
|
||||
id: str
|
||||
name: str
|
||||
version: str
|
||||
description: str
|
||||
tags: list[str]
|
||||
depends_on: list[str]
|
||||
capabilities: list[str]
|
||||
resources: list[str]
|
||||
|
||||
@classmethod
|
||||
def from_record(cls, record: SkillRecord) -> "SkillPatternPayload":
|
||||
return cls(
|
||||
id=record.skill_id,
|
||||
name=record.name,
|
||||
version=record.version,
|
||||
description=record.description,
|
||||
tags=list(record.tags),
|
||||
depends_on=list(record.depends_on),
|
||||
capabilities=list(record.capabilities),
|
||||
resources=list(record.capabilities),
|
||||
)
|
||||
|
||||
|
||||
class SkillSummaryPayload(StrictFrozenModel):
|
||||
"""Catalog payload model for skill index summaries."""
|
||||
|
||||
id: str
|
||||
name: str
|
||||
description: str
|
||||
tags: list[str]
|
||||
capabilities: list[str]
|
||||
version: str
|
||||
document_uri: str
|
||||
detail_uri: str
|
||||
resources: dict[str, str | list[str]]
|
||||
|
||||
@classmethod
|
||||
def from_record(cls, record: SkillRecord) -> "SkillSummaryPayload":
|
||||
return cls(
|
||||
id=record.skill_id,
|
||||
name=record.name,
|
||||
description=record.description,
|
||||
tags=list(record.tags),
|
||||
capabilities=list(record.capabilities),
|
||||
version=record.version,
|
||||
document_uri=record.document_uri,
|
||||
detail_uri=f"resource://catalog/skills/{record.skill_id}",
|
||||
resources={
|
||||
"document": record.document_uri,
|
||||
"references": [
|
||||
f"resource://skills/{record.skill_id}/references/{ref_id}" for ref_id in sorted(record.references)
|
||||
],
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class PromptSummaryPayload(StrictFrozenModel):
|
||||
"""Catalog payload model for prompt index summaries."""
|
||||
|
||||
id: str
|
||||
name: str
|
||||
description: str
|
||||
tags: list[str]
|
||||
capabilities: list[str]
|
||||
version: str
|
||||
document_uri: str
|
||||
detail_uri: str
|
||||
|
||||
@classmethod
|
||||
def from_record(cls, record: PromptRecord) -> "PromptSummaryPayload":
|
||||
return cls(
|
||||
id=record.prompt_id,
|
||||
name=record.name,
|
||||
description=record.description,
|
||||
tags=list(record.tags),
|
||||
capabilities=list(record.capabilities),
|
||||
version=record.version,
|
||||
document_uri=record.document_uri,
|
||||
detail_uri=f"resource://catalog/prompts/{record.prompt_id}",
|
||||
)
|
||||
|
||||
|
||||
class DocsRegistry(StrictFrozenModel):
|
||||
"""In-memory index of loaded skills, prompts, and docs content."""
|
||||
|
||||
Reference in New Issue
Block a user