71c7672545
* feat(skill-hub): add Skill Hub catalog, publish flow, and lite materialize pipeline Introduce Skill Hub for browsing, importing, publishing, and installing skills, with lite instance package materialization and runtime sync support. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(skill-hub): remove token-governance hooks from Skill Hub PR Strip validateManagedRuntimeEnvironmentOverrides, network lock policy sync, and egress proxy audit wiring that belong to the upcoming token-usage work, so the Skill Hub branch compiles independently. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(skill-hub): update migration number in materialize docs Co-authored-by: Cursor <cursoragent@cursor.com> * fix(skill-hub): make RuntimeAgentClient test stub and hub tests compile-safe Add ResyncInstanceSkills to the runtime pool handler fake client, and harden skill hub payload helpers/tests against nil storage/instance repos so go test passes. Co-authored-by: Cursor <cursoragent@cursor.com> * feat: add Skill Hub hardening with session usage tracking and egress governance Unify Skill Hub runtime sync improvements with session-token observability, egress network policy, and admin/instance usage reporting for reopenable PR. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(skill-hub): repair CI tests and nested skill install * fix(ci): restore release deployment configuration --------- Co-authored-by: heshengran <heshengran@ieisystem.com> Co-authored-by: Cursor <cursoragent@cursor.com>
89 lines
4.4 KiB
Go
89 lines
4.4 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
type Skill struct {
|
|
ID int `db:"id,primarykey,autoincrement" json:"id"`
|
|
UserID int `db:"user_id" json:"user_id"`
|
|
SkillKey string `db:"skill_key" json:"skill_key"`
|
|
Name string `db:"name" json:"name"`
|
|
Description *string `db:"description" json:"description,omitempty"`
|
|
CurrentVersionID *int `db:"current_version_id" json:"current_version_id,omitempty"`
|
|
SourceType string `db:"source_type" json:"source_type"`
|
|
Status string `db:"status" json:"status"`
|
|
Visibility string `db:"visibility" json:"visibility"`
|
|
PublishedAt *time.Time `db:"published_at" json:"published_at,omitempty"`
|
|
PublishedBy *int `db:"published_by" json:"published_by,omitempty"`
|
|
RiskLevel string `db:"risk_level" json:"risk_level"`
|
|
LastScannedAt *time.Time `db:"last_scanned_at" json:"last_scanned_at,omitempty"`
|
|
LastScanResultID *int `db:"last_scan_result_id" json:"last_scan_result_id,omitempty"`
|
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
|
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
|
}
|
|
|
|
func (s Skill) TableName() string { return "skills" }
|
|
|
|
type SkillBlob struct {
|
|
ID int `db:"id,primarykey,autoincrement" json:"id"`
|
|
ContentHash string `db:"content_hash" json:"content_hash"`
|
|
ArchiveHash string `db:"archive_hash" json:"archive_hash"`
|
|
ObjectKey string `db:"object_key" json:"object_key"`
|
|
FileName string `db:"file_name" json:"file_name"`
|
|
MediaType string `db:"media_type" json:"media_type"`
|
|
SizeBytes int64 `db:"size_bytes" json:"size_bytes"`
|
|
ScanStatus string `db:"scan_status" json:"scan_status"`
|
|
RiskLevel string `db:"risk_level" json:"risk_level"`
|
|
LastScannedAt *time.Time `db:"last_scanned_at" json:"last_scanned_at,omitempty"`
|
|
LastScanResultID *int `db:"last_scan_result_id" json:"last_scan_result_id,omitempty"`
|
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
|
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
|
}
|
|
|
|
func (s SkillBlob) TableName() string { return "skill_blobs" }
|
|
|
|
type SkillVersion struct {
|
|
ID int `db:"id,primarykey,autoincrement" json:"id"`
|
|
SkillID int `db:"skill_id" json:"skill_id"`
|
|
BlobID int `db:"blob_id" json:"blob_id"`
|
|
VersionNo int `db:"version_no" json:"version_no"`
|
|
ManifestJSON *string `db:"manifest_json" json:"-"`
|
|
SourceType string `db:"source_type" json:"source_type"`
|
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
|
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
|
}
|
|
|
|
func (s SkillVersion) TableName() string { return "skill_versions" }
|
|
|
|
type InstanceSkill struct {
|
|
ID int `db:"id,primarykey,autoincrement" json:"id"`
|
|
InstanceID int `db:"instance_id" json:"instance_id"`
|
|
SkillID int `db:"skill_id" json:"skill_id"`
|
|
SkillVersionID *int `db:"skill_version_id" json:"skill_version_id,omitempty"`
|
|
SourceType string `db:"source_type" json:"source_type"`
|
|
InstallPath *string `db:"install_path" json:"install_path,omitempty"`
|
|
WorkspaceDir *string `db:"workspace_dir" json:"workspace_dir,omitempty"`
|
|
ObservedHash *string `db:"observed_hash" json:"observed_hash,omitempty"`
|
|
Status string `db:"status" json:"status"`
|
|
LastSeenAt *time.Time `db:"last_seen_at" json:"last_seen_at,omitempty"`
|
|
RemovedAt *time.Time `db:"removed_at" json:"removed_at,omitempty"`
|
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
|
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
|
}
|
|
|
|
func (s InstanceSkill) TableName() string { return "instance_skills" }
|
|
|
|
type SkillScanResult struct {
|
|
ID int `db:"id,primarykey,autoincrement" json:"id"`
|
|
BlobID int `db:"blob_id" json:"blob_id"`
|
|
Engine string `db:"engine" json:"engine"`
|
|
RiskLevel string `db:"risk_level" json:"risk_level"`
|
|
Status string `db:"status" json:"status"`
|
|
Summary *string `db:"summary" json:"summary,omitempty"`
|
|
FindingsJSON *string `db:"findings_json" json:"-"`
|
|
ScannedAt *time.Time `db:"scanned_at" json:"scanned_at,omitempty"`
|
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
|
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
|
}
|
|
|
|
func (s SkillScanResult) TableName() string { return "skill_scan_results" }
|