56 lines
2.5 KiB
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"
|
|
]
|
|
}
|
|
} |