{
"id": "org.latha.island.analyze",
"defs": {
"main": {
"type": "procedure",
"input": {
"schema": {
"type": "object",
"required": [
"island"
],
"properties": {
"did": {
"type": "string",
"format": "did",
"description": "DID of the user requesting analysis (used to look up vault/carry data)."
},
"island": {
"ref": "#islandInput",
"type": "ref"
}
}
},
"encoding": "application/json"
},
"output": {
"schema": {
"type": "object",
"required": [
"analysis"
],
"properties": {
"record": {
"ref": "org.latha.island#main",
"type": "ref",
"description": "Complete org.latha.island record ready to be written to PDS."
},
"analysis": {
"ref": "#analysisResult",
"type": "ref"
}
}
},
"encoding": "application/json"
},
"description": "Run strata analysis on an island. Cross-references the island's vertices and edges against vault and carry data, producing themes, connections, tensions, and a synthesis. Returns an org.latha.island record ready to be written to PDS."
},
"edgeInfo": {
"type": "object",
"required": [
"uri",
"did",
"source",
"target",
"connectionType"
],
"properties": {
"did": {
"type": "string",
"format": "did"
},
"uri": {
"type": "string",
"format": "at-uri"
},
"note": {
"type": "string"
},
"handle": {
"type": "string"
},
"source": {
"type": "string"
},
"target": {
"type": "string"
},
"connectionType": {
"type": "string"
}
}
},
"vertexInfo": {
"type": "object",
"required": [
"uri",
"title"
],
"properties": {
"uri": {
"type": "string",
"description": "Vertex URI (HTTP URL or AT URI)."
},
"type": {
"type": "string",
"description": "Vertex type (url, card, collection, note, unknown)."
},
"title": {
"type": "string",
"description": "Resolved title of the vertex."
},
"description": {
"type": "string",
"description": "Resolved description."
}
}
},
"islandInput": {
"type": "object",
"required": [
"vertices",
"edges"
],
"properties": {
"edges": {
"type": "array",
"items": {
"ref": "#edgeInfo",
"type": "ref"
}
},
"vertices": {
"type": "array",
"items": {
"ref": "#vertexInfo",
"type": "ref"
}
}
}
},
"analysisResult": {
"type": "object",
"required": [
"themes",
"synthesis"
],
"properties": {
"title": {
"type": "string",
"description": "Concise sentence capturing the core argument.",
"maxGraphemes": 300
},
"themes": {
"type": "array",
"items": {
"type": "string"
}
},
"tensions": {
"type": "array",
"items": {
"type": "string"
}
},
"synthesis": {
"type": "string",
"description": "Prose synthesis connecting the island to existing knowledge."
},
"connections": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
}
},
"openQuestions": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}