pilotdeck-message.js 1.0 KB

1234567891011121314151617181920212223242526272829
  1. /**
  2. * PilotDeck-flavored chat message helper.
  3. *
  4. * Replaces the legacy `providers/types.js` module. The shape on the wire
  5. * is unchanged (frontend reads `kind`, `sessionId`, `provider`, `timestamp`,
  6. * etc.) so we keep the public name `createNormalizedMessage`. Existing
  7. * imports point at this file via `./pilotdeck-message.js`.
  8. *
  9. * Allowed `kind` values mirror what the chat UI's reducer recognises:
  10. * text | tool_use | tool_result | thinking | stream_delta | stream_end
  11. * error | complete | status | permission_request | permission_cancelled
  12. * session_created | interactive_prompt | task_notification | interrupted
  13. */
  14. import crypto from 'node:crypto';
  15. export function generateMessageId(prefix = 'msg') {
  16. return `${prefix}_${crypto.randomUUID()}`;
  17. }
  18. export function createNormalizedMessage(fields) {
  19. return {
  20. ...fields,
  21. id: fields.id || generateMessageId(fields.kind),
  22. sessionId: fields.sessionId || '',
  23. timestamp: fields.timestamp || new Date().toISOString(),
  24. provider: fields.provider || 'pilotdeck',
  25. };
  26. }