Created
August 3, 2026 10:19
-
-
Save tarasyarema/8e1edd61f36c1376eb01f454ede91d05 to your computer and use it in GitHub Desktop.
PM Example agent-swarm app spike
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "models": { | |
| "issue": { | |
| "columns": { | |
| "taskId": { | |
| "kind": "string" | |
| }, | |
| "githubNumber": { | |
| "kind": "string" | |
| }, | |
| "taskStatus": { | |
| "kind": "string", | |
| "source": { | |
| "of": "tasks", | |
| "field": "status" | |
| } | |
| }, | |
| "taskPrompt": { | |
| "kind": "string", | |
| "source": { | |
| "of": "tasks", | |
| "field": "prompt" | |
| } | |
| }, | |
| "taskOrigin": { | |
| "kind": "string", | |
| "source": { | |
| "of": "tasks", | |
| "field": "source" | |
| } | |
| }, | |
| "taskAgentId": { | |
| "kind": "string", | |
| "source": { | |
| "of": "tasks", | |
| "field": "agentId" | |
| } | |
| }, | |
| "taskPriority": { | |
| "kind": "number", | |
| "source": { | |
| "of": "tasks", | |
| "field": "priority" | |
| } | |
| }, | |
| "taskCreatedAt": { | |
| "kind": "date", | |
| "source": { | |
| "of": "tasks", | |
| "field": "createdAt", | |
| "transform": "date-parse" | |
| } | |
| }, | |
| "taskUpdatedAt": { | |
| "kind": "date", | |
| "source": { | |
| "of": "tasks", | |
| "field": "updatedAt", | |
| "transform": "date-parse" | |
| } | |
| }, | |
| "ghTitle": { | |
| "kind": "string", | |
| "source": { | |
| "of": "github", | |
| "field": "title" | |
| } | |
| }, | |
| "ghState": { | |
| "kind": "string", | |
| "source": { | |
| "of": "github", | |
| "field": "state", | |
| "transform": "lower" | |
| } | |
| }, | |
| "ghBody": { | |
| "kind": "string", | |
| "source": { | |
| "of": "github", | |
| "field": "body" | |
| } | |
| }, | |
| "ghAuthor": { | |
| "kind": "string", | |
| "source": { | |
| "of": "github", | |
| "field": "userLogin", | |
| "transform": "lower" | |
| } | |
| }, | |
| "ghLabels": { | |
| "kind": "string", | |
| "source": { | |
| "of": "github", | |
| "field": "labelsCsv" | |
| } | |
| }, | |
| "ghComments": { | |
| "kind": "number", | |
| "source": { | |
| "of": "github", | |
| "field": "comments" | |
| } | |
| }, | |
| "ghUrl": { | |
| "kind": "string", | |
| "source": { | |
| "of": "github", | |
| "field": "htmlUrl" | |
| } | |
| }, | |
| "ghCreatedAt": { | |
| "kind": "date", | |
| "source": { | |
| "of": "github", | |
| "field": "createdAt", | |
| "transform": "date-parse" | |
| } | |
| }, | |
| "ghUpdatedAt": { | |
| "kind": "date", | |
| "source": { | |
| "of": "github", | |
| "field": "updatedAt", | |
| "transform": "date-parse" | |
| } | |
| }, | |
| "note": { | |
| "kind": "string", | |
| "default": "" | |
| }, | |
| "flag": { | |
| "kind": "enum", | |
| "enum": [ | |
| "none", | |
| "watch", | |
| "urgent", | |
| "done" | |
| ], | |
| "default": "none" | |
| } | |
| }, | |
| "sources": { | |
| "tasks": { | |
| "connector": "swarm-tasks", | |
| "joinKey": "taskId", | |
| "config": { | |
| "limit": 100, | |
| "includeHeartbeat": false | |
| } | |
| }, | |
| "github": { | |
| "connector": "github-issues", | |
| "joinKey": "githubNumber", | |
| "config": { | |
| "repo": "desplega-ai/agent-swarm", | |
| "state": "all", | |
| "limit": 100 | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "queries": { | |
| "inbox": { | |
| "model": "issue", | |
| "sort": { | |
| "column": "syncedAt", | |
| "dir": "desc" | |
| }, | |
| "limit": 500 | |
| }, | |
| "urgent": { | |
| "model": "issue", | |
| "filter": { | |
| "flag": "urgent" | |
| }, | |
| "sort": { | |
| "column": "updatedAt", | |
| "dir": "desc" | |
| }, | |
| "limit": 100 | |
| } | |
| }, | |
| "actions": { | |
| "refreshAll": { | |
| "kind": "sync", | |
| "model": "issue" | |
| }, | |
| "refreshTasks": { | |
| "kind": "sync", | |
| "model": "issue", | |
| "source": "tasks" | |
| }, | |
| "refreshGithub": { | |
| "kind": "sync", | |
| "model": "issue", | |
| "source": "github" | |
| }, | |
| "tackle": { | |
| "kind": "task", | |
| "prompt": "Tackle this PM Inbox item. The full app row is supplied as context under `issue` — it is either a swarm task-pool row (taskId/taskStatus/taskPrompt/taskTags) or a GitHub issue from desplega-ai/agent-swarm (githubNumber/ghTitle/ghBody/ghUrl/ghLabels). Read the context, decide what concrete work it implies, do that work, and report what you did plus any follow-up needed. If the item is already closed/completed or turns out to be a duplicate, say so instead of inventing work." | |
| } | |
| }, | |
| "page": { | |
| "root": "root", | |
| "elements": { | |
| "root": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "column", | |
| "gap": "lg", | |
| "padding": "md" | |
| }, | |
| "children": [ | |
| "header", | |
| "headerDivider", | |
| "body" | |
| ] | |
| }, | |
| "header": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "row", | |
| "gap": "sm", | |
| "align": "center", | |
| "wrap": true | |
| }, | |
| "children": [ | |
| "title", | |
| "subtitle", | |
| "refreshAllBtn", | |
| "refreshAllStatus" | |
| ] | |
| }, | |
| "title": { | |
| "type": "Heading", | |
| "props": { | |
| "text": "PM Inbox", | |
| "level": "h1" | |
| } | |
| }, | |
| "subtitle": { | |
| "type": "Text", | |
| "props": { | |
| "content": "swarm task pool + desplega-ai/agent-swarm issues", | |
| "tone": "muted" | |
| } | |
| }, | |
| "refreshAllBtn": { | |
| "type": "Button", | |
| "props": { | |
| "label": "Refresh", | |
| "variant": "default" | |
| }, | |
| "on": { | |
| "press": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "refreshAll" | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "refreshAllStatus": { | |
| "type": "Badge", | |
| "props": { | |
| "text": { | |
| "$state": "/actions/refreshAll/status" | |
| }, | |
| "tone": "info" | |
| } | |
| }, | |
| "headerDivider": { | |
| "type": "Divider", | |
| "props": {} | |
| }, | |
| "body": { | |
| "type": "Split", | |
| "props": { | |
| "ratio": "1-3", | |
| "gap": "lg", | |
| "collapseBelow": "md" | |
| }, | |
| "children": [ | |
| "sidebar", | |
| "inboxTabs" | |
| ] | |
| }, | |
| "sidebar": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "column", | |
| "gap": "md" | |
| }, | |
| "children": [ | |
| "filtersCard", | |
| "syncCard", | |
| "annotateCard", | |
| "helpCard" | |
| ] | |
| }, | |
| "filtersCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "Filters", | |
| "description": "Client-side over the polled rows." | |
| }, | |
| "children": [ | |
| "filtersStack" | |
| ] | |
| }, | |
| "filtersStack": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "column", | |
| "gap": "sm" | |
| }, | |
| "children": [ | |
| "searchInput", | |
| "sourceSelect", | |
| "flagSelect", | |
| "ghStateSelect" | |
| ] | |
| }, | |
| "searchInput": { | |
| "type": "SearchInput", | |
| "props": { | |
| "id": "inboxSearch", | |
| "label": "Search", | |
| "placeholder": "title, body, note, author…" | |
| } | |
| }, | |
| "sourceSelect": { | |
| "type": "Select", | |
| "props": { | |
| "id": "sourceFilter", | |
| "label": "Source", | |
| "placeholder": "All sources", | |
| "clearable": true, | |
| "options": [ | |
| { | |
| "value": "tasks", | |
| "label": "Swarm tasks" | |
| }, | |
| { | |
| "value": "github", | |
| "label": "GitHub issues" | |
| } | |
| ] | |
| } | |
| }, | |
| "flagSelect": { | |
| "type": "Select", | |
| "props": { | |
| "id": "flagFilter", | |
| "label": "My flag", | |
| "placeholder": "Any flag", | |
| "clearable": true, | |
| "options": [ | |
| "none", | |
| "watch", | |
| "urgent", | |
| "done" | |
| ] | |
| } | |
| }, | |
| "ghStateSelect": { | |
| "type": "Select", | |
| "props": { | |
| "id": "ghStateFilter", | |
| "label": "GitHub state", | |
| "placeholder": "Open + closed", | |
| "clearable": true, | |
| "options": [ | |
| "open", | |
| "closed" | |
| ] | |
| } | |
| }, | |
| "syncCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "Sync", | |
| "description": "Re-pull one source at a time." | |
| }, | |
| "children": [ | |
| "syncStack" | |
| ] | |
| }, | |
| "syncStack": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "column", | |
| "gap": "sm" | |
| }, | |
| "children": [ | |
| "syncTasksRow", | |
| "syncGithubRow", | |
| "syncHint" | |
| ] | |
| }, | |
| "syncTasksRow": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "row", | |
| "gap": "sm", | |
| "align": "center" | |
| }, | |
| "children": [ | |
| "syncTasksBtn", | |
| "syncTasksStatus" | |
| ] | |
| }, | |
| "syncTasksBtn": { | |
| "type": "Button", | |
| "props": { | |
| "label": "Sync swarm tasks", | |
| "variant": "outline" | |
| }, | |
| "on": { | |
| "press": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "refreshTasks" | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "syncTasksStatus": { | |
| "type": "Badge", | |
| "props": { | |
| "text": { | |
| "$state": "/actions/refreshTasks/status" | |
| }, | |
| "tone": "neutral" | |
| } | |
| }, | |
| "syncGithubRow": { | |
| "type": "Stack", | |
| "props": { | |
| "direction": "row", | |
| "gap": "sm", | |
| "align": "center" | |
| }, | |
| "children": [ | |
| "syncGithubBtn", | |
| "syncGithubStatus" | |
| ] | |
| }, | |
| "syncGithubBtn": { | |
| "type": "Button", | |
| "props": { | |
| "label": "Sync GitHub issues", | |
| "variant": "outline" | |
| }, | |
| "on": { | |
| "press": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "refreshGithub" | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "syncGithubStatus": { | |
| "type": "Badge", | |
| "props": { | |
| "text": { | |
| "$state": "/actions/refreshGithub/status" | |
| }, | |
| "tone": "neutral" | |
| } | |
| }, | |
| "syncHint": { | |
| "type": "Text", | |
| "props": { | |
| "content": "Each row shows when it was last confirmed present upstream. A Stale badge means the last pass no longer found it inside the 100-item pull window.", | |
| "tone": "muted" | |
| } | |
| }, | |
| "annotateCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "Annotate", | |
| "description": "Type a note here, then press Note on any row to write it. Synced columns stay read-only." | |
| }, | |
| "children": [ | |
| "noteForm" | |
| ] | |
| }, | |
| "noteForm": { | |
| "type": "Form", | |
| "props": { | |
| "id": "noteDraft", | |
| "fields": [ | |
| { | |
| "name": "note", | |
| "label": "Note draft", | |
| "kind": "text", | |
| "placeholder": "why this matters / next step" | |
| } | |
| ], | |
| "submitLabel": "Reload rows", | |
| "onSubmit": [ | |
| { | |
| "action": "app.refresh", | |
| "params": {} | |
| } | |
| ] | |
| } | |
| }, | |
| "helpCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "How it works" | |
| }, | |
| "children": [ | |
| "helpMd" | |
| ] | |
| }, | |
| "helpMd": { | |
| "type": "Markdown", | |
| "props": { | |
| "content": "**Sources**\n\n- `tasks` — this swarm's task pool (100 most recent, heartbeats excluded)\n- `github` — `desplega-ai/agent-swarm` issues, open **and** closed, 100-item window (PRs excluded by the connector)\n\n**Row actions**\n\n- **Tackle** hands the whole row to an agent as a new task.\n- **Note** writes the staged note draft onto that row.\n- **Watch / Urgent / Done / Clear** write the local `flag` column.\n\nSynced fields never accept direct writes — change them upstream and re-sync." | |
| } | |
| }, | |
| "inboxTabs": { | |
| "type": "Tabs", | |
| "props": { | |
| "id": "inboxTabs", | |
| "defaultTab": "all", | |
| "tabs": [ | |
| { | |
| "key": "all", | |
| "label": "All" | |
| }, | |
| { | |
| "key": "tasks", | |
| "label": "Swarm tasks" | |
| }, | |
| { | |
| "key": "github", | |
| "label": "GitHub" | |
| }, | |
| { | |
| "key": "urgent", | |
| "label": "Urgent" | |
| } | |
| ] | |
| }, | |
| "children": [ | |
| "allCard", | |
| "tasksCard", | |
| "githubCard", | |
| "urgentCard" | |
| ] | |
| }, | |
| "allCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "Everything" | |
| }, | |
| "children": [ | |
| "allTable" | |
| ] | |
| }, | |
| "allTable": { | |
| "type": "Table", | |
| "props": { | |
| "data": { | |
| "$state": "/queries/inbox/data" | |
| }, | |
| "loading": { | |
| "$state": "/queries/inbox/loading" | |
| }, | |
| "error": { | |
| "$state": "/queries/inbox/error" | |
| }, | |
| "emptyMessage": "No rows yet — hit Refresh to pull from the task pool and GitHub.", | |
| "search": { | |
| "$state": "/ui/inboxSearch/value" | |
| }, | |
| "filters": { | |
| "source": { | |
| "$state": "/ui/sourceFilter/value" | |
| }, | |
| "flag": { | |
| "$state": "/ui/flagFilter/value" | |
| } | |
| }, | |
| "columns": [ | |
| { | |
| "key": "source", | |
| "label": "Source", | |
| "kind": "badge", | |
| "tones": { | |
| "tasks": "info", | |
| "github": "active" | |
| }, | |
| "width": 90 | |
| }, | |
| { | |
| "key": "ghTitle", | |
| "label": "GitHub title" | |
| }, | |
| { | |
| "key": "taskPrompt", | |
| "label": "Task prompt" | |
| }, | |
| { | |
| "key": "flag", | |
| "label": "Flag", | |
| "kind": "badge", | |
| "tones": { | |
| "none": "neutral", | |
| "watch": "pending", | |
| "urgent": "error", | |
| "done": "success" | |
| }, | |
| "width": 90 | |
| }, | |
| { | |
| "key": "note", | |
| "label": "Note" | |
| }, | |
| { | |
| "key": "syncedAt", | |
| "label": "Last synced", | |
| "kind": "date", | |
| "width": 160 | |
| }, | |
| { | |
| "key": "stale", | |
| "label": "Freshness", | |
| "kind": "badge", | |
| "tones": { | |
| "true": "warning", | |
| "false": "success" | |
| }, | |
| "width": 100 | |
| } | |
| ], | |
| "rowActions": [ | |
| { | |
| "label": "Tackle", | |
| "variant": "default", | |
| "confirm": "Spawn an agent task carrying this row's full context?", | |
| "actions": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "tackle", | |
| "input": { | |
| "issue": { | |
| "$row": "" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Note", | |
| "variant": "outline", | |
| "confirm": false, | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "note": { | |
| "$state": "/forms/noteDraft/note" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Watch", | |
| "variant": "ghost", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "watch" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Urgent", | |
| "variant": "secondary", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "urgent" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Clear", | |
| "variant": "ghost", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "none" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "tasksCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "Swarm task pool" | |
| }, | |
| "children": [ | |
| "tasksTable" | |
| ] | |
| }, | |
| "tasksTable": { | |
| "type": "Table", | |
| "props": { | |
| "data": { | |
| "$state": "/queries/inbox/data" | |
| }, | |
| "loading": { | |
| "$state": "/queries/inbox/loading" | |
| }, | |
| "error": { | |
| "$state": "/queries/inbox/error" | |
| }, | |
| "emptyMessage": "No swarm tasks synced yet.", | |
| "search": { | |
| "$state": "/ui/inboxSearch/value" | |
| }, | |
| "filters": { | |
| "source": "tasks", | |
| "flag": { | |
| "$state": "/ui/flagFilter/value" | |
| } | |
| }, | |
| "columns": [ | |
| { | |
| "key": "taskStatus", | |
| "label": "Status", | |
| "kind": "badge", | |
| "tones": { | |
| "completed": "success", | |
| "failed": "error", | |
| "cancelled": "neutral", | |
| "in_progress": "active", | |
| "pending": "pending", | |
| "unassigned": "neutral" | |
| }, | |
| "width": 110 | |
| }, | |
| { | |
| "key": "taskPrompt", | |
| "label": "Prompt" | |
| }, | |
| { | |
| "key": "taskOrigin", | |
| "label": "Origin", | |
| "width": 90 | |
| }, | |
| { | |
| "key": "taskPriority", | |
| "label": "Prio", | |
| "kind": "number", | |
| "width": 70 | |
| }, | |
| { | |
| "key": "taskUpdatedAt", | |
| "label": "Updated", | |
| "kind": "date", | |
| "width": 150 | |
| }, | |
| { | |
| "key": "flag", | |
| "label": "Flag", | |
| "kind": "badge", | |
| "tones": { | |
| "none": "neutral", | |
| "watch": "pending", | |
| "urgent": "error", | |
| "done": "success" | |
| }, | |
| "width": 90 | |
| }, | |
| { | |
| "key": "note", | |
| "label": "Note" | |
| }, | |
| { | |
| "key": "syncedAt", | |
| "label": "Last synced", | |
| "kind": "date", | |
| "width": 160 | |
| }, | |
| { | |
| "key": "stale", | |
| "label": "Freshness", | |
| "kind": "badge", | |
| "tones": { | |
| "true": "warning", | |
| "false": "success" | |
| }, | |
| "width": 100 | |
| } | |
| ], | |
| "rowActions": [ | |
| { | |
| "label": "Tackle", | |
| "variant": "default", | |
| "confirm": "Spawn an agent task carrying this row's full context?", | |
| "actions": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "tackle", | |
| "input": { | |
| "issue": { | |
| "$row": "" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Note", | |
| "variant": "outline", | |
| "confirm": false, | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "note": { | |
| "$state": "/forms/noteDraft/note" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Urgent", | |
| "variant": "secondary", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "urgent" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Done", | |
| "variant": "ghost", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "done" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "githubCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "desplega-ai/agent-swarm issues" | |
| }, | |
| "children": [ | |
| "githubTable" | |
| ] | |
| }, | |
| "githubTable": { | |
| "type": "Table", | |
| "props": { | |
| "data": { | |
| "$state": "/queries/inbox/data" | |
| }, | |
| "loading": { | |
| "$state": "/queries/inbox/loading" | |
| }, | |
| "error": { | |
| "$state": "/queries/inbox/error" | |
| }, | |
| "emptyMessage": "No GitHub issues synced yet.", | |
| "search": { | |
| "$state": "/ui/inboxSearch/value" | |
| }, | |
| "filters": { | |
| "source": "github", | |
| "ghState": { | |
| "$state": "/ui/ghStateFilter/value" | |
| }, | |
| "flag": { | |
| "$state": "/ui/flagFilter/value" | |
| } | |
| }, | |
| "columns": [ | |
| { | |
| "key": "githubNumber", | |
| "label": "#", | |
| "width": 70 | |
| }, | |
| { | |
| "key": "ghTitle", | |
| "label": "Title" | |
| }, | |
| { | |
| "key": "ghState", | |
| "label": "State", | |
| "kind": "badge", | |
| "tones": { | |
| "open": "success", | |
| "closed": "neutral" | |
| }, | |
| "width": 90 | |
| }, | |
| { | |
| "key": "ghAuthor", | |
| "label": "Author", | |
| "width": 120 | |
| }, | |
| { | |
| "key": "ghLabels", | |
| "label": "Labels", | |
| "width": 150 | |
| }, | |
| { | |
| "key": "ghComments", | |
| "label": "Comments", | |
| "kind": "number", | |
| "width": 90 | |
| }, | |
| { | |
| "key": "ghUpdatedAt", | |
| "label": "Updated", | |
| "kind": "date", | |
| "width": 150 | |
| }, | |
| { | |
| "key": "flag", | |
| "label": "Flag", | |
| "kind": "badge", | |
| "tones": { | |
| "none": "neutral", | |
| "watch": "pending", | |
| "urgent": "error", | |
| "done": "success" | |
| }, | |
| "width": 90 | |
| }, | |
| { | |
| "key": "note", | |
| "label": "Note" | |
| }, | |
| { | |
| "key": "syncedAt", | |
| "label": "Last synced", | |
| "kind": "date", | |
| "width": 160 | |
| }, | |
| { | |
| "key": "stale", | |
| "label": "Freshness", | |
| "kind": "badge", | |
| "tones": { | |
| "true": "warning", | |
| "false": "success" | |
| }, | |
| "width": 100 | |
| } | |
| ], | |
| "rowActions": [ | |
| { | |
| "label": "Tackle", | |
| "variant": "default", | |
| "confirm": "Spawn an agent task carrying this issue's full context?", | |
| "actions": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "tackle", | |
| "input": { | |
| "issue": { | |
| "$row": "" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Note", | |
| "variant": "outline", | |
| "confirm": false, | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "note": { | |
| "$state": "/forms/noteDraft/note" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Urgent", | |
| "variant": "secondary", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "urgent" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Clear", | |
| "variant": "ghost", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "none" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "urgentCard": { | |
| "type": "Card", | |
| "props": { | |
| "title": "Flagged urgent", | |
| "description": "Server-side query on the local flag column." | |
| }, | |
| "children": [ | |
| "urgentTable" | |
| ] | |
| }, | |
| "urgentTable": { | |
| "type": "Table", | |
| "props": { | |
| "data": { | |
| "$state": "/queries/urgent/data" | |
| }, | |
| "loading": { | |
| "$state": "/queries/urgent/loading" | |
| }, | |
| "error": { | |
| "$state": "/queries/urgent/error" | |
| }, | |
| "emptyMessage": "Nothing flagged urgent.", | |
| "search": { | |
| "$state": "/ui/inboxSearch/value" | |
| }, | |
| "columns": [ | |
| { | |
| "key": "source", | |
| "label": "Source", | |
| "kind": "badge", | |
| "tones": { | |
| "tasks": "info", | |
| "github": "active" | |
| }, | |
| "width": 90 | |
| }, | |
| { | |
| "key": "ghTitle", | |
| "label": "GitHub title" | |
| }, | |
| { | |
| "key": "taskPrompt", | |
| "label": "Task prompt" | |
| }, | |
| { | |
| "key": "note", | |
| "label": "Note" | |
| }, | |
| { | |
| "key": "syncedAt", | |
| "label": "Last synced", | |
| "kind": "date", | |
| "width": 160 | |
| }, | |
| { | |
| "key": "stale", | |
| "label": "Freshness", | |
| "kind": "badge", | |
| "tones": { | |
| "true": "warning", | |
| "false": "success" | |
| }, | |
| "width": 100 | |
| } | |
| ], | |
| "rowActions": [ | |
| { | |
| "label": "Tackle", | |
| "variant": "default", | |
| "confirm": "Spawn an agent task carrying this row's full context?", | |
| "actions": [ | |
| { | |
| "action": "app.action", | |
| "params": { | |
| "name": "tackle", | |
| "input": { | |
| "issue": { | |
| "$row": "" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "Clear", | |
| "variant": "ghost", | |
| "actions": [ | |
| { | |
| "action": "app.mutate", | |
| "params": { | |
| "model": "issue", | |
| "op": "update", | |
| "rowId": { | |
| "$row": "id" | |
| }, | |
| "values": { | |
| "flag": "none" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment