Files
OpenQode/bin/goose-ultra-final/master_plan_v2.json

56 lines
2.5 KiB
JSON

{
"meta": {
"version": "2.0",
"codename": "Goose Ultra SAP (Streaming Artifact Protocol)",
"target_platform": "Goose Ultra / Electron Shim",
"objective": "Eliminate malformed code generation and prose pollution in AI output."
},
"architecture": {
"protocol": "Streaming Artifact Protocol (SAP)",
"format": "XML-based structured stream (inspired by Bolt/Claude Artifacts)",
"tags": {
"artifact_container": "goose_artifact",
"file_unit": "goose_file",
"shell_action": "goose_action",
"thought_chain": "goose_thought"
}
},
"implementation_steps": [
{
"step": 1,
"component": "Parser",
"action": "Implement StateMachineParser",
"details": "Create a class that implements a char-by-char state machine (WAITING -> TAG_OPEN -> CONTENT -> TAG_CLOSE). Must handle CDATA sections to prevent double-escaping of HTML entities.",
"file": "src/services/ArtifactParser.ts"
},
{
"step": 2,
"component": "SystemPrompt",
"action": "Hard-Enforce XML Schema",
"details": "Update 'MODERN_TEMPLATE_PROMPT' to strictly forbid markdown code blocks (```) and require <goose_file> tags. Add 'negative constraints' against conversational prose outside of <goose_thought> tags.",
"file": "src/services/automationService.ts"
},
{
"step": 3,
"component": "Orchestrator",
"action": "Stream Transformation",
"details": "Pipe the raw LLM stream through the ArtifactParser. Update 'redux' state only with the 'clean' file content, discarding the raw chat buffer.",
"file": "src/components/Views.tsx"
},
{
"step": 4,
"component": "Validation",
"action": "Pre-Write Validation",
"details": "Before writing to disk: 1. Validate XML structure. 2. Check for missing closing tags. 3. Ensure critical files (index.html) are present.",
"file": "src/services/automationService.ts"
}
],
"prompt_engineering": {
"xml_template": "<goose_artifact id=\"{id}\">\n <goose_file path=\"{path}\">\n <![CDATA[\n {content}\n ]]>\n </goose_file>\n</goose_artifact>",
"constraints": [
"NO markdown code blocks",
"NO conversational text outside <goose_thought>",
"ALL code must be CDATA wrapped"
]
}
}