mirror of
https://github.com/openai/codex.git
synced 2026-10-19 16:17:49 +00:00
## Why Skill selection and disabled-path matching need to recognize equivalent Windows paths across case and separator differences while preserving literal spaces, `%`, and `#` in native filenames. ## What changed - Carry `PathUri` through skill metadata, discovery mappings, filesystem lookups, disabled-path sets, and invocation analytics. - Match linked skill mentions and TUI selections by parsed path identity. - Use `LegacyAppPathString` for app-server skill paths and regenerate schemas and SDK types, preserving native path strings on the wire. - Preserve native catalog display paths and ordering. Keep host filesystem probes and configuration writes restricted to host-compatible paths. ## Testing Add regression tests for Windows path identity and disabled-skill matching, literal filename characters, catalog resource reads, native path ordering, and foreign-path analytics normalization. GitOrigin-RevId: c212916dc9fef0e7616542726e107f0d6a313267
251 lines
5.2 KiB
JSON
Generated
251 lines
5.2 KiB
JSON
Generated
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"AbsolutePathBuf": {
|
|
"description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.",
|
|
"type": "string"
|
|
},
|
|
"LegacyAppPathString": {
|
|
"type": "string"
|
|
},
|
|
"SkillDependencies": {
|
|
"properties": {
|
|
"tools": {
|
|
"items": {
|
|
"$ref": "#/definitions/SkillToolDependency"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"tools"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"SkillErrorInfo": {
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"SkillInterface": {
|
|
"properties": {
|
|
"brandColor": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"defaultPrompt": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"displayName": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"iconLarge": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"iconLargeUrl": {
|
|
"description": "Remote large icon URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"iconSmall": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"iconSmallUrl": {
|
|
"description": "Remote small icon URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"shortDescription": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"SkillMetadata": {
|
|
"properties": {
|
|
"dependencies": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SkillDependencies"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"interface": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SkillInterface"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"$ref": "#/definitions/LegacyAppPathString"
|
|
},
|
|
"pluginId": {
|
|
"description": "Owning plugin ID, matching `PluginSummary.id`, when known.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"scope": {
|
|
"$ref": "#/definitions/SkillScope"
|
|
},
|
|
"shortDescription": {
|
|
"description": "Legacy short_description from SKILL.md. Prefer SKILL.json interface.short_description.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"enabled",
|
|
"name",
|
|
"path",
|
|
"scope"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"SkillScope": {
|
|
"enum": [
|
|
"user",
|
|
"repo",
|
|
"system",
|
|
"admin"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"SkillToolDependency": {
|
|
"properties": {
|
|
"command": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"description": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"transport": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"SkillsListEntry": {
|
|
"properties": {
|
|
"cwd": {
|
|
"type": "string"
|
|
},
|
|
"errors": {
|
|
"items": {
|
|
"$ref": "#/definitions/SkillErrorInfo"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"skills": {
|
|
"items": {
|
|
"$ref": "#/definitions/SkillMetadata"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"cwd",
|
|
"errors",
|
|
"skills"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"data": {
|
|
"items": {
|
|
"$ref": "#/definitions/SkillsListEntry"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"data"
|
|
],
|
|
"title": "SkillsListResponse",
|
|
"type": "object"
|
|
} |