ExtensionMessage.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // type that represents json data that is sent from extension to webview, called ExtensionMessage and has 'type' enum which can be 'plusButtonTapped' or 'settingsButtonTapped' or 'hello'
  2. // webview will hold state
  3. export interface ExtensionMessage {
  4. type: "action" | "state"
  5. text?: string
  6. action?: "plusButtonTapped" | "settingsButtonTapped" | "didBecomeVisible"
  7. state?: ExtensionState
  8. }
  9. export interface ExtensionState {
  10. apiKey?: string
  11. maxRequestsPerTask?: number
  12. themeName?: string
  13. claudeMessages: ClaudeMessage[]
  14. shouldShowAnnouncement: boolean
  15. }
  16. export interface ClaudeMessage {
  17. ts: number
  18. type: "ask" | "say"
  19. ask?: ClaudeAsk
  20. say?: ClaudeSay
  21. text?: string
  22. }
  23. export type ClaudeAsk =
  24. | "request_limit_reached"
  25. | "followup"
  26. | "command"
  27. | "command_output"
  28. | "completion_result"
  29. | "tool"
  30. | "api_req_failed"
  31. export type ClaudeSay =
  32. | "task"
  33. | "error"
  34. | "api_req_started"
  35. | "api_req_finished"
  36. | "text"
  37. | "completion_result"
  38. | "user_feedback"
  39. | "api_req_retried"
  40. | "command_output"
  41. export interface ClaudeSayTool {
  42. tool:
  43. | "editedExistingFile"
  44. | "newFileCreated"
  45. | "readFile"
  46. | "listFilesTopLevel"
  47. | "listFilesRecursive"
  48. | "viewSourceCodeDefinitionsTopLevel"
  49. path?: string
  50. diff?: string
  51. content?: string
  52. }