Files
upstream-tldraw/templates/agent/worker/prompt/getSystemPromptFlags.ts
upstream-mirror a774ac673a
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
snapshot of https://github.com/tldraw/tldraw.git (main, 2026-09-23; blobs > 131072B omitted)
2026-09-23 16:12:52 +05:00

82 lines
2.7 KiB
TypeScript

import { getActionMeta } from '../../shared/types/AgentAction'
import type { AgentAction } from '../../shared/types/AgentAction'
import type { PromptPart } from '../../shared/types/PromptPart'
import type { SystemPromptCategory } from '../../shared/types/SystemPromptCategory'
export function getSystemPromptFlags(actions: AgentAction['_type'][], parts: PromptPart['type'][]) {
return {
// Communication
hasMessage: actions.includes('message'),
// Planning
hasThink: actions.includes('think'),
hasReview: actions.includes('review'),
hasSetMyView: actions.includes('setMyView'),
hasTodoList: actions.includes('update-todo-list') && parts.includes('todoList'),
hasAddDetail: actions.includes('add-detail'),
// Individual shapes
hasCreate: actions.includes('create'),
hasDelete: actions.includes('delete'),
hasUpdate: actions.includes('update'),
hasLabel: actions.includes('label'),
hasMove: actions.includes('move'),
// Groups of shapes
hasPlace: actions.includes('place'),
hasBringToFront: actions.includes('bringToFront'),
hasSendToBack: actions.includes('sendToBack'),
hasRotate: actions.includes('rotate'),
hasResize: actions.includes('resize'),
hasAlign: actions.includes('align'),
hasDistribute: actions.includes('distribute'),
hasStack: actions.includes('stack'),
hasClear: actions.includes('clear'),
// Drawing
hasPen: actions.includes('pen'),
// Request
hasMessagesPart: parts.includes('messages'),
hasDataPart: parts.includes('data'),
hasContextItemsPart: parts.includes('contextItems'),
// Viewport
hasScreenshotPart: parts.includes('screenshot'),
hasUserViewportBoundsPart: parts.includes('userViewportBounds'),
hasAgentViewportBoundsPart: parts.includes('agentViewportBounds'),
// Shapes
hasBlurryShapesPart: parts.includes('blurryShapes'),
hasPeripheralShapesPart: parts.includes('peripheralShapes'),
hasSelectedShapesPart: parts.includes('selectedShapes'),
// History
hasChatHistoryPart: parts.includes('chatHistory'),
hasUserActionHistoryPart: parts.includes('userActionHistory'),
hasTodoListPart: parts.includes('todoList'),
// Lints
hasCanvasLintsPart: parts.includes('canvasLints'),
// Metadata
hasTimePart: parts.includes('time'),
// Derived flags for convenience
canEdit: actions.some(isEditAction),
}
}
export type SystemPromptFlags = ReturnType<typeof getSystemPromptFlags>
function isEditAction(type: AgentAction['_type']): boolean {
return isActionCategory(type, 'edit')
}
function isActionCategory(type: AgentAction['_type'], category: SystemPromptCategory): boolean {
const meta = getActionMeta(type)
if (!meta) return false
if (!meta._systemPromptCategory) return false
return meta._systemPromptCategory === category
}