Skip to content

Instantly share code, notes, and snippets.

@jasalt
Created July 1, 2026 09:32
Show Gist options
  • Select an option

  • Save jasalt/27643eaa8f60e06d673fdf2aab6c9fbf to your computer and use it in GitHub Desktop.

Select an option

Save jasalt/27643eaa8f60e06d673fdf2aab6c9fbf to your computer and use it in GitHub Desktop.
{
"project": {
"id": "caf9ab83-29ac-422f-a543-79772d04f7e9",
"name": "asset-json-export-issue",
"createdAt": "2026-07-01T09:05:43.773Z",
"updatedAt": "2026-07-01T09:09:43.072Z",
"settings": {
"runtime": "static",
"models": {
"templateId": "or-recommended",
"overrides": {
"agent": {
"provider": "opencode-go",
"model": "deepseek-v4-flash"
}
}
}
},
"lastSavedCheckpointId": "cp_1782896982570_5",
"lastSavedAt": "2026-07-01T09:09:42.570Z",
"costTracking": {
"totalCost": 0,
"providerBreakdown": {
"opencode-go": {
"totalCost": 0,
"tokenUsage": {
"input": 23481,
"output": 569
},
"requestCount": 5,
"lastUpdated": "2026-07-01T09:09:35.906Z"
}
},
"sessionHistory": [
{
"sessionId": "1782664982672",
"cost": 0,
"provider": "opencode-go",
"timestamp": "2026-07-01T09:09:25.473Z",
"tokenUsage": {
"input": 4319,
"output": 76
}
},
{
"sessionId": "1782664982672",
"cost": 0,
"provider": "opencode-go",
"timestamp": "2026-07-01T09:09:28.447Z",
"tokenUsage": {
"input": 4526,
"output": 190
}
},
{
"sessionId": "1782664982672",
"cost": 0,
"provider": "opencode-go",
"timestamp": "2026-07-01T09:09:31.224Z",
"tokenUsage": {
"input": 4733,
"output": 165
}
},
{
"sessionId": "1782664982672",
"cost": 0,
"provider": "opencode-go",
"timestamp": "2026-07-01T09:09:33.459Z",
"tokenUsage": {
"input": 4915,
"output": 55
}
},
{
"sessionId": "1782664982672",
"cost": 0,
"provider": "opencode-go",
"timestamp": "2026-07-01T09:09:35.906Z",
"tokenUsage": {
"input": 4988,
"output": 83
}
}
]
}
},
"files": [
{
"id": "2b261d2d-7fb3-45de-a943-526426cf728c",
"projectId": "caf9ab83-29ac-422f-a543-79772d04f7e9",
"path": "/myimage.png",
"name": "myimage.png",
"type": "image",
"content": {},
"mimeType": "image/png",
"size": 340717,
"createdAt": "2026-07-01T09:08:11.908Z",
"updatedAt": "2026-07-01T09:08:11.908Z",
"metadata": {
"isEntry": false
}
},
{
"id": "5dd1562c-8ea1-4348-a567-3270878478b7",
"projectId": "caf9ab83-29ac-422f-a543-79772d04f7e9",
"path": "/index.html",
"name": "index.html",
"type": "html",
"content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>My Image</title>\n <link rel=\"stylesheet\" href=\"/styles/style.css\">\n</head>\n<body>\n <main>\n <img src=\"/myimage.png\" alt=\"Image\" class=\"centered-image\">\n </main>\n <script src=\"/scripts/main.js\"></script>\n</body>\n</html>",
"mimeType": "text/html",
"size": 389,
"createdAt": "2026-07-01T09:05:43.791Z",
"updatedAt": "2026-07-01T09:09:28.448Z",
"metadata": {
"isEntry": true
}
},
{
"id": "6269fc4c-b3f0-4861-a855-6c4a8bdbcdf3",
"projectId": "caf9ab83-29ac-422f-a543-79772d04f7e9",
"path": "/scripts/main.js",
"name": "main.js",
"type": "js",
"content": "document.addEventListener('DOMContentLoaded', () => {\n // Add interactivity here\n});\n",
"mimeType": "application/javascript",
"size": 86,
"createdAt": "2026-07-01T09:05:43.802Z",
"updatedAt": "2026-07-01T09:05:43.802Z",
"metadata": {
"isEntry": false
}
},
{
"id": "94e9c218-e746-4772-ae58-abf0748484a0",
"projectId": "caf9ab83-29ac-422f-a543-79772d04f7e9",
"path": "/styles/style.css",
"name": "style.css",
"type": "css",
"content": "* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nhtml, body {\n height: 100%;\n}\n\nbody {\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f5f5;\n}\n\n.centered-image {\n max-width: 90vw;\n max-height: 90vh;\n object-fit: contain;\n display: block;\n}",
"mimeType": "text/css",
"size": 315,
"createdAt": "2026-07-01T09:05:43.793Z",
"updatedAt": "2026-07-01T09:09:31.232Z",
"metadata": {
"isEntry": false
}
},
{
"id": "a4ddb044-949f-470f-a988-885d6132756c",
"projectId": "caf9ab83-29ac-422f-a543-79772d04f7e9",
"path": "/.PROMPT.md",
"name": ".PROMPT.md",
"type": "text",
"content": "🚨 PLATFORM CONSTRAINTS - READ THIS FIRST:\n\nThis is a STATIC WEBSITE builder - you can ONLY create client-side HTML/CSS/JS:\n• ❌ NO backend code (no Node.js, Python, PHP, Ruby, etc.)\n• ❌ NO server-side rendering (no Express, Next.js API routes, etc.)\n• ❌ NO databases or server-side storage\n• ❌ NO template engines (no Handlebars, Mustache, EJS, etc.)\n• ✅ ONLY static files that run in the browser (HTML, CSS, vanilla JS)\n\nROUTING IS AUTOMATIC:\n• Navigation works with standard HTML links: <a href=\"/about.html\">About</a>\n• Supports directory-based routing: /about/ → /about/index.html\n• You can organize pages either way:\n - Direct: /about.html\n - Directory: /about/index.html (accessed as /about/ or /about)\n• DO NOT create routing logic (no History API, hash routing, or SPA routers)\n• DO NOT write JavaScript to handle page navigation\n• Create separate .html files for each page - the preview handles routing\n\nDIRECTORY INDEX RESOLUTION:\n• When a path ends with / or has no extension, the system tries:\n 1. Direct file: /about → /about.html\n 2. Directory index: /about → /about/index.html (fallback)\n• This allows clean URLs and organized file structures\n• Example: /products/ automatically serves /products/index.html\n\nWHAT YOU CAN BUILD:\n• Multi-page websites with .html files\n• Interactive features with vanilla JavaScript (DOM manipulation, fetch API, localStorage)\n• Responsive layouts with CSS (inline, <style> blocks, or external .css files)\n• Client-side data visualization, forms, animations, etc.\n\nES MODULES:\nYou can use <script type=\"module\"> and import/export between project files:\n import { initGame } from '/scripts/game.js';\n import { formatDate } from '/lib/utils.js';\nUse absolute paths starting with / for imports between files.\nFor third-party libraries, use CDN URLs: import confetti from 'https://esm.sh/canvas-confetti';\n\nMULTI-PAGE WEBSITES:\nCreate separate .html files for each page. Share styles and scripts across pages:\n- /index.html — Home page\n- /about.html — About page\n- /styles/style.css — Shared styles (link from every page)\n- /scripts/main.js — Shared scripts (include in every page)\n\nUse consistent navigation across pages:\n<nav>\n <a href=\"/index.html\">Home</a>\n <a href=\"/about.html\">About</a>\n <a href=\"/contact.html\">Contact</a>\n</nav>\n\nREUSABLE CONTENT:\nSince there is no template engine, the simplest reliable approach is to duplicate shared\nelements (nav, footer) directly in each page's HTML. This keeps them visible without\nJavaScript and works wherever the site is hosted.\n\nYou can also load them at runtime, but the fetch path is root-relative, so it only works\nwhen the site is served from the domain root (it breaks under a subpath):\n\n// Load shared nav into all pages\nfetch('/components/nav.html')\n .then(r => r.text())\n .then(html => document.getElementById('nav').innerHTML = html);\n\nBUILD OUTPUT:\n- The preview auto-refreshes when files change\n- Errors appear in the Terminal panel\n\nFILE CREATION GUIDELINES:\n\nPrefer editing existing files over creating new ones. Check if a file exists before creating.\n\nCreate when appropriate:\n- README.md for complex projects (3+ features/pages) — skip for simple single-file changes\n- Config files (package.json, tsconfig.json) only when functionality requires them\n- Component files matching request scope\n\nDo not create unless explicitly requested:\n- .gitignore, .prettierrc, .eslintrc (user preference)\n- .env files (sensitive, user creates manually)\n- LICENSE, temporary/scratch files",
"mimeType": "text/markdown",
"size": 3558,
"createdAt": "2026-07-01T09:05:43.804Z",
"updatedAt": "2026-07-01T09:05:43.804Z",
"metadata": {
"isEntry": false
}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment