@cuongtran001/kanna 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/client/assets/{arc-CAysfmX5.js → arc-BHj370W7.js} +1 -1
  2. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BKqRYsm4.js → architectureDiagram-3BPJPVTR-1G88q1PY.js} +1 -1
  3. package/dist/client/assets/{blockDiagram-GPEHLZMM-Ce7Eorec.js → blockDiagram-GPEHLZMM-D0L3Co5v.js} +1 -1
  4. package/dist/client/assets/{c4Diagram-AAUBKEIU-CJ77zauH.js → c4Diagram-AAUBKEIU-CQtERl3H.js} +1 -1
  5. package/dist/client/assets/channel-BP9IMEvd.js +1 -0
  6. package/dist/client/assets/{chunk-2J33WTMH-Rk_3zLxJ.js → chunk-2J33WTMH-DxOwt09f.js} +1 -1
  7. package/dist/client/assets/{chunk-4BX2VUAB-DPIz6Nvf.js → chunk-4BX2VUAB-Wry66y9R.js} +1 -1
  8. package/dist/client/assets/{chunk-55IACEB6-D-TkbGh2.js → chunk-55IACEB6-D6p-Hi4x.js} +1 -1
  9. package/dist/client/assets/{chunk-727SXJPM-B4NOSIZV.js → chunk-727SXJPM-CRQZt23N.js} +1 -1
  10. package/dist/client/assets/{chunk-AQP2D5EJ-Cm_TGLYm.js → chunk-AQP2D5EJ-BzgTKOM9.js} +1 -1
  11. package/dist/client/assets/{chunk-FMBD7UC4-Bu45BUVh.js → chunk-FMBD7UC4-CKfD-91C.js} +1 -1
  12. package/dist/client/assets/{chunk-ND2GUHAM-C1Bw8_gg.js → chunk-ND2GUHAM-a71B27wc.js} +1 -1
  13. package/dist/client/assets/{chunk-QZHKN3VN-DueG15o0.js → chunk-QZHKN3VN-vv9gJwx0.js} +1 -1
  14. package/dist/client/assets/classDiagram-4FO5ZUOK--W6Wt7FF.js +1 -0
  15. package/dist/client/assets/classDiagram-v2-Q7XG4LA2--W6Wt7FF.js +1 -0
  16. package/dist/client/assets/{cose-bilkent-S5V4N54A-YgpMurXf.js → cose-bilkent-S5V4N54A-Cu-dCCaI.js} +1 -1
  17. package/dist/client/assets/{dagre-BM42HDAG-Dop7Oq67.js → dagre-BM42HDAG-D8coOWLK.js} +1 -1
  18. package/dist/client/assets/{diagram-2AECGRRQ-unMfBEJH.js → diagram-2AECGRRQ-NIwZ65jE.js} +1 -1
  19. package/dist/client/assets/{diagram-5GNKFQAL-D9EJ9qMI.js → diagram-5GNKFQAL-d46aE_le.js} +1 -1
  20. package/dist/client/assets/{diagram-KO2AKTUF-C5IykOIR.js → diagram-KO2AKTUF-xdm2UxWc.js} +1 -1
  21. package/dist/client/assets/{diagram-LMA3HP47-DJAuPngz.js → diagram-LMA3HP47-hDbLwC5K.js} +1 -1
  22. package/dist/client/assets/{diagram-OG6HWLK6-B3wHFtS-.js → diagram-OG6HWLK6-MHUGG7ki.js} +1 -1
  23. package/dist/client/assets/{erDiagram-TEJ5UH35-Dm7kt9o5.js → erDiagram-TEJ5UH35-Ro6n9X70.js} +1 -1
  24. package/dist/client/assets/{flowDiagram-I6XJVG4X-s9Lds3ny.js → flowDiagram-I6XJVG4X-DOZqvRMu.js} +1 -1
  25. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CRQNYdAf.js → ganttDiagram-6RSMTGT7-Bn2NXYIy.js} +1 -1
  26. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DhYjK4Jb.js → gitGraphDiagram-PVQCEYII-DK44bfbC.js} +1 -1
  27. package/dist/client/assets/{index-C0U2kwuB.js → index-CWJpHyQy.js} +115 -115
  28. package/dist/client/assets/{index-CLsOWXff.css → index-Cyzd4zZx.css} +1 -1
  29. package/dist/client/assets/{index-CbSY9HfS.js → index-DU56d4oC.js} +1 -1
  30. package/dist/client/assets/{infoDiagram-5YYISTIA-CRKJ0PSH.js → infoDiagram-5YYISTIA-C2tW_Dwj.js} +1 -1
  31. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CEAkB0IY.js → ishikawaDiagram-YF4QCWOH-C__4Z1wz.js} +1 -1
  32. package/dist/client/assets/{journeyDiagram-JHISSGLW-CyOK5_DG.js → journeyDiagram-JHISSGLW-Bbn5EawR.js} +1 -1
  33. package/dist/client/assets/{kanban-definition-UN3LZRKU-BfKjiJSo.js → kanban-definition-UN3LZRKU-RgS5IRWl.js} +1 -1
  34. package/dist/client/assets/{linear-DLR6miy3.js → linear-DfI0qBO_.js} +1 -1
  35. package/dist/client/assets/{mermaid.core-D7AdC_lE.js → mermaid.core-BiN10VHc.js} +4 -4
  36. package/dist/client/assets/{mindmap-definition-RKZ34NQL-zYyJtDSa.js → mindmap-definition-RKZ34NQL-BQhibhh3.js} +1 -1
  37. package/dist/client/assets/{pieDiagram-4H26LBE5-BgP8PFlo.js → pieDiagram-4H26LBE5-BEfLRn7a.js} +1 -1
  38. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-Di8h7J96.js → quadrantDiagram-W4KKPZXB-ba641Y2x.js} +1 -1
  39. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DuTzFl3R.js → requirementDiagram-4Y6WPE33-BGtl-tVO.js} +1 -1
  40. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DBRoMm_T.js → sankeyDiagram-5OEKKPKP-DyziaSFr.js} +1 -1
  41. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-Bmb-1HUN.js → sequenceDiagram-3UESZ5HK-BfYBAYga.js} +1 -1
  42. package/dist/client/assets/{stateDiagram-AJRCARHV-fnv5ayn-.js → stateDiagram-AJRCARHV-BfUfmLYA.js} +1 -1
  43. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CdGcgYEq.js +1 -0
  44. package/dist/client/assets/{timeline-definition-PNZ67QCA-ByWRdpQX.js → timeline-definition-PNZ67QCA-T6z7dEFl.js} +1 -1
  45. package/dist/client/assets/{vennDiagram-CIIHVFJN--2WGpVXW.js → vennDiagram-CIIHVFJN-BAwQbFFd.js} +1 -1
  46. package/dist/client/assets/{wardley-L42UT6IY-24zlnzxK.js → wardley-L42UT6IY-DF1cRKsP.js} +1 -1
  47. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Cllvqb3K.js → wardleyDiagram-YWT4CUSO-BRtAZ8za.js} +1 -1
  48. package/dist/client/assets/{xychartDiagram-2RQKCTM6-ZcdC6nPE.js → xychartDiagram-2RQKCTM6-Brb-q76h.js} +1 -1
  49. package/dist/client/index.html +2 -2
  50. package/package.json +1 -1
  51. package/src/server/agent-coordinator-types.ts +158 -0
  52. package/src/server/agent-coordinator.ts +919 -0
  53. package/src/server/agent-deps-builders.ts +425 -0
  54. package/src/server/agent.test.ts +22 -6
  55. package/src/server/agent.ts +35 -4987
  56. package/src/server/chat-op-log.test.ts +63 -0
  57. package/src/server/chat-op-log.ts +71 -0
  58. package/src/server/chat-ops-diff.test.ts +120 -0
  59. package/src/server/chat-ops-diff.ts +97 -0
  60. package/src/server/chat-ops-parity.test.ts +140 -0
  61. package/src/server/claude-autocontinue-commands.test.ts +494 -0
  62. package/src/server/claude-autocontinue-commands.ts +256 -0
  63. package/src/server/claude-cancel-handler.test.ts +472 -0
  64. package/src/server/claude-cancel-handler.ts +241 -0
  65. package/src/server/claude-chat-management.test.ts +395 -0
  66. package/src/server/claude-chat-management.ts +251 -0
  67. package/src/server/claude-harness-stream.test.ts +273 -0
  68. package/src/server/claude-harness-stream.ts +158 -0
  69. package/src/server/claude-loop-orch-commands.test.ts +579 -0
  70. package/src/server/claude-loop-orch-commands.ts +466 -0
  71. package/src/server/claude-message-normalizer.test.ts +213 -0
  72. package/src/server/claude-message-normalizer.ts +436 -0
  73. package/src/server/claude-prompt-helpers.test.ts +248 -0
  74. package/src/server/claude-prompt-helpers.ts +139 -0
  75. package/src/server/claude-sdk-queue.test.ts +169 -0
  76. package/src/server/claude-sdk-queue.ts +82 -0
  77. package/src/server/claude-send-command.test.ts +414 -0
  78. package/src/server/claude-send-command.ts +420 -0
  79. package/src/server/claude-session-config-helpers.test.ts +279 -0
  80. package/src/server/claude-session-config-helpers.ts +151 -0
  81. package/src/server/claude-session-config.test.ts +250 -0
  82. package/src/server/claude-session-config.ts +159 -0
  83. package/src/server/claude-session-error-handler.test.ts +498 -0
  84. package/src/server/claude-session-error-handler.ts +361 -0
  85. package/src/server/claude-session-lifecycle.test.ts +669 -0
  86. package/src/server/claude-session-lifecycle.ts +283 -0
  87. package/src/server/claude-session-rebuild.test.ts +224 -0
  88. package/src/server/claude-session-rebuild.ts +101 -0
  89. package/src/server/claude-session-runner.test.ts +523 -0
  90. package/src/server/claude-session-runner.ts +521 -0
  91. package/src/server/claude-session-spawner.test.ts +401 -0
  92. package/src/server/claude-session-spawner.ts +401 -0
  93. package/src/server/claude-session-start.test.ts +205 -0
  94. package/src/server/claude-session-start.ts +277 -0
  95. package/src/server/claude-session-state-queries.test.ts +344 -0
  96. package/src/server/claude-session-state-queries.ts +160 -0
  97. package/src/server/claude-session-state.ts +104 -0
  98. package/src/server/claude-slash-commands.test.ts +277 -0
  99. package/src/server/claude-slash-commands.ts +234 -0
  100. package/src/server/claude-spawn-helpers.test.ts +221 -0
  101. package/src/server/claude-spawn-helpers.ts +179 -0
  102. package/src/server/claude-steer-log.test.ts +243 -0
  103. package/src/server/claude-steer-log.ts +58 -0
  104. package/src/server/claude-subagent-tool-response.test.ts +213 -0
  105. package/src/server/claude-subagent-tool-response.ts +165 -0
  106. package/src/server/claude-subagent-wiring.test.ts +263 -0
  107. package/src/server/claude-subagent-wiring.ts +324 -0
  108. package/src/server/claude-tool-respond.test.ts +321 -0
  109. package/src/server/claude-tool-respond.ts +142 -0
  110. package/src/server/claude-turn-runner.test.ts +310 -0
  111. package/src/server/claude-turn-runner.ts +228 -0
  112. package/src/server/claude-turn-starter.test.ts +266 -0
  113. package/src/server/claude-turn-starter.ts +566 -0
  114. package/src/server/claude-usage-math.test.ts +169 -0
  115. package/src/server/claude-usage-math.ts +132 -0
  116. package/src/server/diff-store-branch-ops.adapter.test.ts +332 -0
  117. package/src/server/diff-store-branch-ops.adapter.ts +602 -0
  118. package/src/server/diff-store-commit-ops.adapter.test.ts +358 -0
  119. package/src/server/diff-store-commit-ops.adapter.ts +258 -0
  120. package/src/server/diff-store-errors.ts +85 -0
  121. package/src/server/diff-store-file-ops.adapter.ts +212 -0
  122. package/src/server/diff-store-git-branch.adapter.ts +686 -0
  123. package/src/server/diff-store-io.adapter.ts +27 -0
  124. package/src/server/diff-store-parse.test.ts +212 -0
  125. package/src/server/diff-store-parse.ts +122 -0
  126. package/src/server/diff-store-state.ts +82 -0
  127. package/src/server/diff-store.ts +76 -1854
  128. package/src/server/event-store-apply.test.ts +280 -0
  129. package/src/server/event-store-apply.ts +132 -0
  130. package/src/server/event-store-chat-lifecycle.test.ts +408 -0
  131. package/src/server/event-store-chat-lifecycle.ts +441 -0
  132. package/src/server/event-store-entity-write.ts +356 -0
  133. package/src/server/event-store-helpers.test.ts +230 -0
  134. package/src/server/event-store-helpers.ts +235 -0
  135. package/src/server/event-store-init.ts +276 -0
  136. package/src/server/event-store-messages.adapter.test.ts +532 -0
  137. package/src/server/event-store-messages.adapter.ts +455 -0
  138. package/src/server/event-store-orch-subscription.ts +124 -0
  139. package/src/server/event-store-orch.test.ts +462 -0
  140. package/src/server/event-store-orch.ts +312 -0
  141. package/src/server/event-store-peripheral-events.adapter.test.ts +254 -0
  142. package/src/server/event-store-peripheral-events.adapter.ts +105 -0
  143. package/src/server/event-store-snapshot.test.ts +597 -0
  144. package/src/server/event-store-snapshot.ts +658 -0
  145. package/src/server/event-store-subagent.test.ts +408 -0
  146. package/src/server/event-store-subagent.ts +198 -0
  147. package/src/server/event-store-tool-requests.test.ts +210 -0
  148. package/src/server/event-store-tool-requests.ts +131 -0
  149. package/src/server/event-store-transcript-write.adapter.ts +291 -0
  150. package/src/server/event-store-write-ops.test.ts +554 -0
  151. package/src/server/event-store-write-ops.ts +529 -0
  152. package/src/server/event-store.test.ts +75 -0
  153. package/src/server/event-store.ts +257 -2285
  154. package/src/server/events.ts +1 -1
  155. package/src/server/harness-types.ts +15 -1
  156. package/src/server/oauth-errors.ts +19 -0
  157. package/src/server/storage/backend.ts +7 -0
  158. package/src/server/storage/fs-storage.adapter.ts +21 -1
  159. package/src/server/storage/in-memory-storage.ts +12 -0
  160. package/src/server/ws-router-agent-ctrl.test.ts +187 -0
  161. package/src/server/ws-router-agent-ctrl.ts +137 -0
  162. package/src/server/ws-router-broadcast.ts +560 -0
  163. package/src/server/ws-router-chat.test.ts +461 -0
  164. package/src/server/ws-router-chat.ts +279 -0
  165. package/src/server/ws-router-defaults.test.ts +283 -0
  166. package/src/server/ws-router-defaults.ts +434 -0
  167. package/src/server/ws-router-diff.test.ts +167 -0
  168. package/src/server/ws-router-diff.ts +250 -0
  169. package/src/server/ws-router-envelope.ts +360 -0
  170. package/src/server/ws-router-misc.test.ts +422 -0
  171. package/src/server/ws-router-misc.ts +265 -0
  172. package/src/server/ws-router-orch.test.ts +190 -0
  173. package/src/server/ws-router-orch.ts +93 -0
  174. package/src/server/ws-router-project.test.ts +403 -0
  175. package/src/server/ws-router-project.ts +256 -0
  176. package/src/server/ws-router-push.test.ts +193 -0
  177. package/src/server/ws-router-push.ts +120 -0
  178. package/src/server/ws-router-settings.test.ts +173 -0
  179. package/src/server/ws-router-settings.ts +416 -0
  180. package/src/server/ws-router-skills.test.ts +194 -0
  181. package/src/server/ws-router-skills.ts +204 -0
  182. package/src/server/ws-router-utils.ts +238 -0
  183. package/src/server/ws-router.test.ts +90 -0
  184. package/src/server/ws-router.ts +340 -2254
  185. package/src/shared/app-settings-types.ts +365 -0
  186. package/src/shared/chat-ops.test.ts +138 -0
  187. package/src/shared/chat-ops.ts +71 -0
  188. package/src/shared/core-types.ts +27 -0
  189. package/src/shared/git-diff-types.ts +165 -0
  190. package/src/shared/mcp-types.ts +105 -0
  191. package/src/shared/protocol.ts +3 -2
  192. package/src/shared/provider-model-types.ts +437 -0
  193. package/src/shared/subagent-types.ts +198 -0
  194. package/src/shared/tool-call-types.ts +314 -0
  195. package/src/shared/transcript-types.ts +270 -0
  196. package/src/shared/types.ts +31 -1711
  197. package/dist/client/assets/channel-KQhRwDzJ.js +0 -1
  198. package/dist/client/assets/classDiagram-4FO5ZUOK-ChxT1GNq.js +0 -1
  199. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-ChxT1GNq.js +0 -1
  200. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D4X-ZnLV.js +0 -1
@@ -0,0 +1,165 @@
1
+ // Git diff, branch, and worktree types.
2
+ // Extracted from types.ts to keep the barrel lean.
3
+ // All external consumers importing from "../shared/types" continue to work unchanged.
4
+
5
+ export interface ChatDiffFile {
6
+ path: string
7
+ changeType: "added" | "deleted" | "modified" | "renamed"
8
+ isUntracked: boolean
9
+ additions: number
10
+ deletions: number
11
+ patchDigest: string
12
+ mimeType?: string
13
+ size?: number
14
+ }
15
+
16
+ export interface ChatBranchHistoryEntry {
17
+ sha: string
18
+ summary: string
19
+ description: string
20
+ authorName?: string
21
+ authoredAt: string
22
+ tags: string[]
23
+ githubUrl?: string
24
+ }
25
+
26
+ export interface ChatBranchHistorySnapshot {
27
+ entries: ChatBranchHistoryEntry[]
28
+ }
29
+
30
+ export type ChatBranchListEntryKind = "local" | "remote" | "pull_request"
31
+
32
+ export interface ChatBranchListEntry {
33
+ id: string
34
+ kind: ChatBranchListEntryKind
35
+ name: string
36
+ displayName: string
37
+ updatedAt?: string
38
+ description?: string
39
+ remoteRef?: string
40
+ prNumber?: number
41
+ prTitle?: string
42
+ headRefName?: string
43
+ headLabel?: string
44
+ headRepoCloneUrl?: string
45
+ isCrossRepository?: boolean
46
+ }
47
+
48
+ export interface ChatBranchListResult {
49
+ currentBranchName?: string
50
+ defaultBranchName?: string
51
+ recent: ChatBranchListEntry[]
52
+ local: ChatBranchListEntry[]
53
+ remote: ChatBranchListEntry[]
54
+ pullRequests: ChatBranchListEntry[]
55
+ pullRequestsStatus: "available" | "unavailable" | "error"
56
+ pullRequestsError?: string
57
+ }
58
+
59
+ export interface GitHubPublishInfo {
60
+ ghInstalled: boolean
61
+ authenticated: boolean
62
+ activeAccountLogin?: string
63
+ owners: string[]
64
+ suggestedRepoName: string
65
+ }
66
+
67
+ export interface GitHubRepoAvailabilityResult {
68
+ available: boolean
69
+ message: string
70
+ }
71
+
72
+ export interface BranchMetadata {
73
+ branchName?: string
74
+ defaultBranchName?: string
75
+ hasOriginRemote?: boolean
76
+ originRepoSlug?: string
77
+ hasUpstream?: boolean
78
+ }
79
+
80
+ export interface UpstreamStatus {
81
+ aheadCount?: number
82
+ behindCount?: number
83
+ lastFetchedAt?: string
84
+ }
85
+
86
+ export interface ChatDiffSnapshot extends BranchMetadata, UpstreamStatus {
87
+ status: "unknown" | "ready" | "no_repo"
88
+ files: ChatDiffFile[]
89
+ branchHistory?: ChatBranchHistorySnapshot
90
+ }
91
+
92
+ export interface BranchActionSuccess {
93
+ ok: true
94
+ branchName?: string
95
+ snapshotChanged: boolean
96
+ }
97
+
98
+ export interface BranchActionFailure {
99
+ ok: false
100
+ title: string
101
+ message: string
102
+ detail?: string
103
+ cancelled?: boolean
104
+ snapshotChanged?: boolean
105
+ }
106
+
107
+ export type ChatSyncSuccess = BranchActionSuccess & {
108
+ action: "fetch" | "pull" | "push" | "publish"
109
+ aheadCount?: number
110
+ behindCount?: number
111
+ }
112
+
113
+ export type ChatSyncFailure = BranchActionFailure & {
114
+ action: "fetch" | "pull" | "push" | "publish"
115
+ }
116
+
117
+ export type ChatSyncResult = ChatSyncSuccess | ChatSyncFailure
118
+
119
+ export type DiffCommitMode = "commit_and_push" | "commit_only"
120
+
121
+ export type ChatCheckoutBranchSuccess = BranchActionSuccess
122
+ export type ChatCheckoutBranchFailure = BranchActionFailure
123
+ export type ChatCheckoutBranchResult = ChatCheckoutBranchSuccess | ChatCheckoutBranchFailure
124
+
125
+ export type ChatCreateBranchSuccess = BranchActionSuccess & { branchName: string }
126
+ export type ChatCreateBranchFailure = BranchActionFailure
127
+ export type ChatCreateBranchResult = ChatCreateBranchSuccess | ChatCreateBranchFailure
128
+
129
+ export type ChatMergePreviewStatus = "up_to_date" | "mergeable" | "conflicts" | "error"
130
+
131
+ export interface ChatMergePreviewResult {
132
+ currentBranchName?: string
133
+ targetBranchName: string
134
+ targetDisplayName: string
135
+ status: ChatMergePreviewStatus
136
+ commitCount: number
137
+ hasConflicts: boolean
138
+ message: string
139
+ detail?: string
140
+ }
141
+
142
+ export type ChatMergeBranchSuccess = BranchActionSuccess
143
+ export type ChatMergeBranchFailure = BranchActionFailure
144
+ export type ChatMergeBranchResult = ChatMergeBranchSuccess | ChatMergeBranchFailure
145
+
146
+ export type DiffCommitSuccess = BranchActionSuccess & {
147
+ mode: DiffCommitMode
148
+ pushed: boolean
149
+ }
150
+
151
+ export type DiffCommitFailure = BranchActionFailure & {
152
+ mode: DiffCommitMode
153
+ phase: "commit" | "push"
154
+ localCommitCreated?: boolean
155
+ }
156
+
157
+ export type DiffCommitResult = DiffCommitSuccess | DiffCommitFailure
158
+
159
+ export interface GitWorktree {
160
+ path: string // absolute
161
+ branch: string // e.g. "main", "feat/x", "(detached)"
162
+ sha: string // HEAD commit sha
163
+ isPrimary: boolean
164
+ isLocked: boolean // git has flagged this worktree as locked (pruning inhibited)
165
+ }
@@ -0,0 +1,105 @@
1
+ // MCP (Model Context Protocol) server types.
2
+ // Extracted from types.ts to keep the barrel lean.
3
+ // All external consumers importing from "../shared/types" continue to work unchanged.
4
+
5
+ import type {
6
+ OAuthTokens,
7
+ OAuthClientInformationFull,
8
+ AuthorizationServerMetadata,
9
+ } from "@modelcontextprotocol/sdk/shared/auth.js"
10
+
11
+ export type McpServerTransport = "stdio" | "http" | "sse" | "ws"
12
+
13
+ export type McpServerTestResult =
14
+ | { status: "untested" }
15
+ | { status: "pending"; startedAt: string }
16
+ | { status: "ok"; testedAt: string; toolCount: number }
17
+ | { status: "error"; testedAt: string; message: string }
18
+
19
+ export interface McpOAuthFlowState {
20
+ codeVerifier: string
21
+ state: string
22
+ issuer: string
23
+ authorizationUrl: string
24
+ // AS metadata cached between start and complete (avoids re-discovery)
25
+ metadata: AuthorizationServerMetadata
26
+ }
27
+
28
+ export interface McpOAuthState {
29
+ enabled: boolean
30
+ status: "unauthenticated" | "authenticated" | "error"
31
+ errorMessage?: string
32
+ // resolved AS issuer (set on complete; used by refresh without re-discovery)
33
+ issuer?: string
34
+ // cached AS metadata (token_endpoint, etc.) persisted at complete so refresh
35
+ // uses it directly instead of re-discovering from issuer (which may be a
36
+ // non-resolvable resource URL, e.g. claude.ai design MCP)
37
+ metadata?: AuthorizationServerMetadata
38
+ // DCR result keyed by AS issuer (SEP-2352)
39
+ clientByIssuer?: Record<string, OAuthClientInformationFull>
40
+ tokens?: OAuthTokens
41
+ obtainedAt?: number
42
+ // present only mid-flow; cleared on complete/cancel
43
+ flow?: McpOAuthFlowState
44
+ }
45
+
46
+ interface McpServerBase {
47
+ id: string
48
+ name: string
49
+ enabled: boolean
50
+ createdAt: string
51
+ updatedAt: string
52
+ lastTest: McpServerTestResult
53
+ }
54
+
55
+ export interface McpServerStdioFields {
56
+ transport: "stdio"
57
+ command: string
58
+ args: string[]
59
+ env: Record<string, string>
60
+ cwd?: string
61
+ }
62
+
63
+ export interface McpServerNetworkFields {
64
+ transport: "http" | "sse" | "ws"
65
+ url: string
66
+ headers: Record<string, string>
67
+ oauth?: McpOAuthState
68
+ }
69
+
70
+ export type McpServerConfig =
71
+ | (McpServerBase & McpServerStdioFields)
72
+ | (McpServerBase & McpServerNetworkFields)
73
+
74
+ export type McpServerInput =
75
+ | (McpServerStdioFields & { name: string; enabled?: boolean })
76
+ | (McpServerNetworkFields & { name: string; enabled?: boolean })
77
+
78
+ export type McpServerPatch = Partial<{
79
+ name: string
80
+ enabled: boolean
81
+ transport: McpServerTransport
82
+ command: string
83
+ args: string[]
84
+ env: Record<string, string>
85
+ cwd: string | undefined
86
+ url: string
87
+ headers: Record<string, string>
88
+ oauth: McpOAuthState
89
+ }>
90
+
91
+ export interface McpValidationError {
92
+ code:
93
+ | "INVALID_NAME"
94
+ | "DUPLICATE_NAME"
95
+ | "RESERVED_NAME"
96
+ | "INVALID_TRANSPORT"
97
+ | "MISSING_COMMAND"
98
+ | "INVALID_URL"
99
+ | "INVALID_HEADER_KEY"
100
+ | "INVALID_ENV_KEY"
101
+ | "NOT_FOUND"
102
+ | "INVALID_OAUTH_TRANSPORT"
103
+ field?: string
104
+ message: string
105
+ }
@@ -26,6 +26,7 @@ import type {
26
26
  UpdateSnapshot,
27
27
  EditorPreset,
28
28
  } from "./types"
29
+ import type { ChatOpsEvent } from "./chat-ops"
29
30
  import type { ChatPermissionPolicyOverride, ToolRequestDecision } from "./permission-policy"
30
31
  import type { PtyInstanceDelta, PtyInstancesSnapshot } from "./pty-instance"
31
32
  import type { WorkflowRunSummary } from "./workflow-types"
@@ -45,7 +46,7 @@ export type SubscriptionTopic =
45
46
  | { type: "keybindings" }
46
47
  | { type: "app-settings" }
47
48
  | { type: "push-config" }
48
- | { type: "chat"; chatId: string; recentLimit?: number }
49
+ | { type: "chat"; chatId: string; recentLimit?: number; since?: number }
49
50
  | { type: "project-git"; projectId: string }
50
51
  | { type: "terminal"; terminalId: string }
51
52
  | { type: "pty-instances" }
@@ -90,7 +91,7 @@ export interface OrchRunsSnapshot {
90
91
  runs: OrchRunSummary[]
91
92
  }
92
93
 
93
- export type WsEvent = TerminalEvent | PtyInstancesEvent
94
+ export type WsEvent = TerminalEvent | PtyInstancesEvent | ChatOpsEvent
94
95
 
95
96
  export type ClientCommand =
96
97
  | { type: "project.open"; localPath: string }