feat: integrate ghidra-cli v0.1

This commit is contained in:
hermes 2026-07-28 20:20:05 +00:00
52 changed files with 6689 additions and 126 deletions

View file

@ -6,7 +6,7 @@
"properties": {
"data": {
"description": "Operation-specific result.",
"$ref": "#/$defs/CleanupData"
"$ref": "#/$defs/InlineOrArtifact"
},
"kind": {
"type": "string",
@ -54,6 +54,41 @@
"source"
]
},
"ArtifactDescriptor": {
"description": "Artifact descriptor returned instead of oversized inline data.",
"type": "object",
"properties": {
"bytes": {
"description": "Exact file bytes including trailing LF.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"contains": {
"description": "Always `complete_success_response`.",
"type": "string"
},
"media_type": {
"description": "Always `application/json`.",
"type": "string"
},
"path": {
"description": "Tagged absolute Artifact path.",
"$ref": "#/$defs/TaggedPath"
},
"sha256": {
"description": "SHA-256 of exact file bytes.",
"$ref": "#/$defs/Digest"
}
},
"required": [
"path",
"bytes",
"sha256",
"media_type",
"contains"
]
},
"CleanupData": {
"description": "Cleanup result data; detailed count contracts are carried as typed snapshots.",
"type": "object",
@ -215,6 +250,19 @@
"description": "A lowercase SHA-256 digest.",
"type": "string"
},
"InlineOrArtifact": {
"description": "Successful command data emitted inline or represented by a complete Artifact.",
"anyOf": [
{
"description": "Complete command-specific data.",
"$ref": "#/$defs/CleanupData"
},
{
"description": "Bounded descriptor for the complete stored success response.",
"$ref": "#/$defs/SpilledData"
}
]
},
"SandboxBackend": {
"description": "Sandbox backend.",
"oneOf": [
@ -273,6 +321,24 @@
}
]
},
"SpilledData": {
"description": "Public data shape returned when a complete success exceeds the inline byte budget.",
"type": "object",
"properties": {
"artifact": {
"description": "Immutable complete-success Artifact.",
"$ref": "#/$defs/ArtifactDescriptor"
},
"spilled": {
"description": "Always true for this variant.",
"type": "boolean"
}
},
"required": [
"spilled",
"artifact"
]
},
"StorageUsage": {
"description": "Filesystem usage represented without implying freed space.",
"type": "object",

View file

@ -6,7 +6,7 @@
"properties": {
"data": {
"description": "Operation-specific result.",
"$ref": "#/$defs/DecompilationData"
"$ref": "#/$defs/InlineOrArtifact"
},
"kind": {
"type": "string",
@ -72,6 +72,41 @@
"source"
]
},
"ArtifactDescriptor": {
"description": "Artifact descriptor returned instead of oversized inline data.",
"type": "object",
"properties": {
"bytes": {
"description": "Exact file bytes including trailing LF.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"contains": {
"description": "Always `complete_success_response`.",
"type": "string"
},
"media_type": {
"description": "Always `application/json`.",
"type": "string"
},
"path": {
"description": "Tagged absolute Artifact path.",
"$ref": "#/$defs/TaggedPath"
},
"sha256": {
"description": "SHA-256 of exact file bytes.",
"$ref": "#/$defs/Digest"
}
},
"required": [
"path",
"bytes",
"sha256",
"media_type",
"contains"
]
},
"DecompilationData": {
"description": "Successful targeted decompilation data.",
"type": "object",
@ -166,6 +201,19 @@
}
]
},
"InlineOrArtifact": {
"description": "Successful command data emitted inline or represented by a complete Artifact.",
"anyOf": [
{
"description": "Complete command-specific data.",
"$ref": "#/$defs/DecompilationData"
},
{
"description": "Bounded descriptor for the complete stored success response.",
"$ref": "#/$defs/SpilledData"
}
]
},
"Limits": {
"description": "Resource policy selected for one invocation.",
"type": "object",
@ -367,6 +415,24 @@
"entry"
]
},
"SpilledData": {
"description": "Public data shape returned when a complete success exceeds the inline byte budget.",
"type": "object",
"properties": {
"artifact": {
"description": "Immutable complete-success Artifact.",
"$ref": "#/$defs/ArtifactDescriptor"
},
"spilled": {
"description": "Always true for this variant.",
"type": "boolean"
}
},
"required": [
"spilled",
"artifact"
]
},
"StoreSource": {
"description": "Analysis Store resolution source.",
"oneOf": [

View file

@ -6,7 +6,7 @@
"properties": {
"data": {
"description": "Operation-specific result.",
"$ref": "#/$defs/DoctorData"
"$ref": "#/$defs/InlineOrArtifact"
},
"kind": {
"type": "string",
@ -36,6 +36,34 @@
"warnings"
],
"$defs": {
"AnalysisStoreComponent": {
"description": "Diagnosed Analysis Store.",
"type": "object",
"properties": {
"path": {
"description": "Resolved absolute store path.",
"$ref": "#/$defs/TaggedPath"
},
"source": {
"description": "Resolution precedence source.",
"$ref": "#/$defs/StoreSource"
},
"status": {
"description": "Stable readiness classification.",
"$ref": "#/$defs/ComponentStatus"
},
"usage": {
"description": "Complete non-following store usage scan.",
"$ref": "#/$defs/StorageUsage"
}
},
"required": [
"status",
"path",
"source",
"usage"
]
},
"AnalysisStoreProvenance": {
"description": "Analysis Store provenance.",
"type": "object",
@ -54,23 +82,39 @@
"source"
]
},
"ComponentReport": {
"description": "One diagnosed component.",
"ArtifactDescriptor": {
"description": "Artifact descriptor returned instead of oversized inline data.",
"type": "object",
"properties": {
"details": {
"description": "Component-specific facts.",
"type": "object",
"additionalProperties": true
"bytes": {
"description": "Exact file bytes including trailing LF.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"status": {
"description": "Stable readiness classification.",
"$ref": "#/$defs/ComponentStatus"
"contains": {
"description": "Always `complete_success_response`.",
"type": "string"
},
"media_type": {
"description": "Always `application/json`.",
"type": "string"
},
"path": {
"description": "Tagged absolute Artifact path.",
"$ref": "#/$defs/TaggedPath"
},
"sha256": {
"description": "SHA-256 of exact file bytes.",
"$ref": "#/$defs/Digest"
}
},
"required": [
"status",
"details"
"path",
"bytes",
"sha256",
"media_type",
"contains"
]
},
"ComponentStatus": {
@ -103,16 +147,45 @@
}
]
},
"Digest": {
"description": "A lowercase SHA-256 digest.",
"type": "string"
},
"DoctorComponents": {
"description": "Fixed installation components checked safely by `doctor`.",
"type": "object",
"properties": {
"analysis_store": {
"description": "Analysis Store.",
"$ref": "#/$defs/AnalysisStoreComponent"
},
"ghidra": {
"description": "Ghidra launcher and adapter.",
"$ref": "#/$defs/GhidraComponent"
},
"java": {
"description": "Java runtime.",
"$ref": "#/$defs/JavaComponent"
},
"sandbox": {
"description": "Worker isolation backend.",
"$ref": "#/$defs/SandboxComponent"
}
},
"required": [
"ghidra",
"java",
"analysis_store",
"sandbox"
]
},
"DoctorData": {
"description": "Installation diagnosis data.",
"type": "object",
"properties": {
"components": {
"description": "Typed component reports keyed by stable component name.",
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/ComponentReport"
}
"description": "Complete fixed component report.",
"$ref": "#/$defs/DoctorComponents"
},
"ready": {
"description": "True only when every required component is ready.",
@ -124,6 +197,81 @@
"components"
]
},
"GhidraComponent": {
"description": "Diagnosed Ghidra installation.",
"type": "object",
"properties": {
"launcher": {
"description": "Configured official launcher.",
"anyOf": [
{
"$ref": "#/$defs/TaggedPath"
},
{
"type": "null"
}
]
},
"status": {
"description": "Stable readiness classification.",
"$ref": "#/$defs/ComponentStatus"
},
"version": {
"description": "Observed version when the probe ran.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
]
},
"InlineOrArtifact": {
"description": "Successful command data emitted inline or represented by a complete Artifact.",
"anyOf": [
{
"description": "Complete command-specific data.",
"$ref": "#/$defs/DoctorData"
},
{
"description": "Bounded descriptor for the complete stored success response.",
"$ref": "#/$defs/SpilledData"
}
]
},
"JavaComponent": {
"description": "Diagnosed Java installation.",
"type": "object",
"properties": {
"executable": {
"description": "Configured Java executable.",
"anyOf": [
{
"$ref": "#/$defs/TaggedPath"
},
{
"type": "null"
}
]
},
"status": {
"description": "Stable readiness classification.",
"$ref": "#/$defs/ComponentStatus"
},
"version": {
"description": "Observed feature version.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
]
},
"SandboxBackend": {
"description": "Sandbox backend.",
"oneOf": [
@ -144,6 +292,29 @@
}
]
},
"SandboxComponent": {
"description": "Diagnosed sandbox backend.",
"type": "object",
"properties": {
"backend": {
"description": "Explicit selected backend.",
"$ref": "#/$defs/SandboxBackend"
},
"status": {
"description": "Stable readiness classification.",
"$ref": "#/$defs/ComponentStatus"
},
"verification": {
"description": "Verification state.",
"$ref": "#/$defs/SandboxVerification"
}
},
"required": [
"status",
"backend",
"verification"
]
},
"SandboxProvenance": {
"description": "Worker sandbox provenance.",
"type": "object",
@ -182,6 +353,46 @@
}
]
},
"SpilledData": {
"description": "Public data shape returned when a complete success exceeds the inline byte budget.",
"type": "object",
"properties": {
"artifact": {
"description": "Immutable complete-success Artifact.",
"$ref": "#/$defs/ArtifactDescriptor"
},
"spilled": {
"description": "Always true for this variant.",
"type": "boolean"
}
},
"required": [
"spilled",
"artifact"
]
},
"StorageUsage": {
"description": "Filesystem usage represented without implying freed space.",
"type": "object",
"properties": {
"allocated_bytes": {
"description": "Sum of Linux allocated blocks including directories.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"logical_bytes": {
"description": "Sum of file lengths.",
"type": "integer",
"format": "uint64",
"minimum": 0
}
},
"required": [
"logical_bytes",
"allocated_bytes"
]
},
"StoreSource": {
"description": "Analysis Store resolution source.",
"oneOf": [

View file

@ -120,11 +120,6 @@
"type": "string",
"const": "java_incompatible"
},
{
"description": "A later integration layer has not connected execution yet.",
"type": "string",
"const": "internal_not_implemented"
},
{
"description": "Rust/Java request or response validation failed.",
"type": "string",

View file

@ -6,7 +6,7 @@
"properties": {
"data": {
"description": "Operation-specific result.",
"$ref": "#/$defs/FunctionsData"
"$ref": "#/$defs/InlineOrArtifact"
},
"kind": {
"type": "string",
@ -72,6 +72,41 @@
"source"
]
},
"ArtifactDescriptor": {
"description": "Artifact descriptor returned instead of oversized inline data.",
"type": "object",
"properties": {
"bytes": {
"description": "Exact file bytes including trailing LF.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"contains": {
"description": "Always `complete_success_response`.",
"type": "string"
},
"media_type": {
"description": "Always `application/json`.",
"type": "string"
},
"path": {
"description": "Tagged absolute Artifact path.",
"$ref": "#/$defs/TaggedPath"
},
"sha256": {
"description": "SHA-256 of exact file bytes.",
"$ref": "#/$defs/Digest"
}
},
"required": [
"path",
"bytes",
"sha256",
"media_type",
"contains"
]
},
"Digest": {
"description": "A lowercase SHA-256 digest.",
"type": "string"
@ -173,6 +208,19 @@
"items"
]
},
"InlineOrArtifact": {
"description": "Successful command data emitted inline or represented by a complete Artifact.",
"anyOf": [
{
"description": "Complete command-specific data.",
"$ref": "#/$defs/FunctionsData"
},
{
"description": "Bounded descriptor for the complete stored success response.",
"$ref": "#/$defs/SpilledData"
}
]
},
"Limits": {
"description": "Resource policy selected for one invocation.",
"type": "object",
@ -399,6 +447,24 @@
}
]
},
"SpilledData": {
"description": "Public data shape returned when a complete success exceeds the inline byte budget.",
"type": "object",
"properties": {
"artifact": {
"description": "Immutable complete-success Artifact.",
"$ref": "#/$defs/ArtifactDescriptor"
},
"spilled": {
"description": "Always true for this variant.",
"type": "boolean"
}
},
"required": [
"spilled",
"artifact"
]
},
"StoreSource": {
"description": "Analysis Store resolution source.",
"oneOf": [

View file

@ -6,7 +6,7 @@
"properties": {
"data": {
"description": "Operation-specific result.",
"$ref": "#/$defs/InspectionData"
"$ref": "#/$defs/InlineOrArtifact"
},
"kind": {
"type": "string",
@ -105,10 +105,58 @@
"disposition"
]
},
"ArtifactDescriptor": {
"description": "Artifact descriptor returned instead of oversized inline data.",
"type": "object",
"properties": {
"bytes": {
"description": "Exact file bytes including trailing LF.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"contains": {
"description": "Always `complete_success_response`.",
"type": "string"
},
"media_type": {
"description": "Always `application/json`.",
"type": "string"
},
"path": {
"description": "Tagged absolute Artifact path.",
"$ref": "#/$defs/TaggedPath"
},
"sha256": {
"description": "SHA-256 of exact file bytes.",
"$ref": "#/$defs/Digest"
}
},
"required": [
"path",
"bytes",
"sha256",
"media_type",
"contains"
]
},
"Digest": {
"description": "A lowercase SHA-256 digest.",
"type": "string"
},
"InlineOrArtifact": {
"description": "Successful command data emitted inline or represented by a complete Artifact.",
"anyOf": [
{
"description": "Complete command-specific data.",
"$ref": "#/$defs/InspectionData"
},
{
"description": "Bounded descriptor for the complete stored success response.",
"$ref": "#/$defs/SpilledData"
}
]
},
"InspectionData": {
"description": "Sample inspection data.",
"type": "object",
@ -378,6 +426,24 @@
}
]
},
"SpilledData": {
"description": "Public data shape returned when a complete success exceeds the inline byte budget.",
"type": "object",
"properties": {
"artifact": {
"description": "Immutable complete-success Artifact.",
"$ref": "#/$defs/ArtifactDescriptor"
},
"spilled": {
"description": "Always true for this variant.",
"type": "boolean"
}
},
"required": [
"spilled",
"artifact"
]
},
"StoreSource": {
"description": "Analysis Store resolution source.",
"oneOf": [