SkillPayloadFromSkill converts a skills.Skill into the shared HTTP payload.
(skill *skills.Skill)
| 1381 | |
| 1382 | // SkillPayloadFromSkill converts a skills.Skill into the shared HTTP payload. |
| 1383 | func SkillPayloadFromSkill(skill *skills.Skill) contract.SkillPayload { |
| 1384 | if skill == nil { |
| 1385 | return contract.SkillPayload{} |
| 1386 | } |
| 1387 | |
| 1388 | payload := contract.SkillPayload{ |
| 1389 | Name: skill.Meta.Name, |
| 1390 | Description: skill.Meta.Description, |
| 1391 | Version: skill.Meta.Version, |
| 1392 | Source: skills.SkillSourceName(skill.Source), |
| 1393 | Enabled: skill.Enabled, |
| 1394 | Dir: skill.Dir, |
| 1395 | Metadata: skill.Meta.Metadata, |
| 1396 | Diagnostics: SkillDiagnosticPayloadsFromDiagnostics(skills.DiagnosticsForSkill(skill)), |
| 1397 | } |
| 1398 | payload.Provenance = &contract.ProvenancePayload{ |
| 1399 | InstalledFromBundle: strings.TrimSpace(skill.InstalledFromBundle), |
| 1400 | InstalledFromExtension: strings.TrimSpace(skill.InstalledFromExtension), |
| 1401 | PrecedenceTier: skills.SkillPrecedenceTierName(skill.Source), |
| 1402 | ShadowedBy: SkillShadowEntryPayloadsFromRefs(skill.Diagnostics.ShadowedDefinitions), |
| 1403 | } |
| 1404 | if skill.Provenance != nil { |
| 1405 | payload.Provenance.Slug = skill.Provenance.Slug |
| 1406 | payload.Provenance.Registry = skill.Provenance.Registry |
| 1407 | payload.Provenance.Version = skill.Provenance.Version |
| 1408 | if !skill.Provenance.InstalledAt.IsZero() { |
| 1409 | installedAt := skill.Provenance.InstalledAt.UTC() |
| 1410 | payload.Provenance.InstalledAt = &installedAt |
| 1411 | } |
| 1412 | } |
| 1413 | |
| 1414 | return payload |
| 1415 | } |
| 1416 | |
| 1417 | // SkillShadowsResponseFromDomain converts one resolver shadow snapshot into the shared API payload. |
| 1418 | func SkillShadowsResponseFromDomain(snapshot skills.SkillShadows) contract.SkillShadowsResponse { |