MCPcopy Index your code
hub / github.com/anomalyco/opencode / createPromptSubmit

Function createPromptSubmit

packages/app/src/components/prompt-input/submit.ts:196–591  ·  view source on GitHub ↗
(input: PromptSubmitInput)

Source from the content-addressed store, hash-verified

194}
195
196export function createPromptSubmit(input: PromptSubmitInput) {
197 const navigate = useNavigate()
198 const sdk = useSDK()
199 const sync = useSync()
200 const serverSync = useServerSync()
201 const local = useLocal()
202 const permission = usePermission()
203 const prompt = input.prompt
204 const layout = useLayout()
205 const language = useLanguage()
206 const params = useParams()
207 const [search] = useSearchParams<{ draftId?: string }>()
208 const tabs = useTabs()
209 const pendingKey = (sessionID: string) => ScopedKey.from(sdk().scope, sessionID)
210
211 const errorMessage = (err: unknown) => {
212 if (err && typeof err === "object" && "data" in err) {
213 const data = (err as { data?: { message?: string } }).data
214 if (data?.message) return data.message
215 }
216 if (err instanceof Error) return err.message
217 return language.t("common.requestFailed")
218 }
219
220 const abort = async () => {
221 const sessionID = params.id
222 if (!sessionID) return Promise.resolve()
223
224 serverSync().session.set("todo", sessionID, [])
225
226 input.onAbort?.()
227
228 const key = pendingKey(sessionID)
229 const queued = pending.get(key)
230 if (queued) {
231 queued.abort.abort()
232 queued.cleanup()
233 pending.delete(key)
234 return Promise.resolve()
235 }
236 return sdk()
237 .client.session.abort({
238 sessionID,
239 })
240 .catch(() => {})
241 }
242
243 const restoreCommentItems = (
244 target: ReturnType<ReturnType<typeof usePrompt>["capture"]>,
245 items: (ContextItem & { key: string })[],
246 ) => {
247 for (const item of items) {
248 target.context.add({
249 type: "file",
250 path: item.path,
251 selection: item.selection,
252 comment: item.comment,
253 commentID: item.commentID,

Callers 2

PromptInputFunction · 0.90
submit.test.tsFile · 0.85

Calls 1

useSyncFunction · 0.90

Tested by

no test coverage detected