@brianli/kimaki 0.4.72-brianli.1
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.
- package/bin.js +2 -0
- package/dist/ai-tool-to-genai.js +233 -0
- package/dist/ai-tool-to-genai.test.js +267 -0
- package/dist/ai-tool.js +6 -0
- package/dist/bin.js +87 -0
- package/dist/bot-token.js +121 -0
- package/dist/bot-token.test.js +134 -0
- package/dist/channel-management.js +101 -0
- package/dist/cli-parsing.test.js +89 -0
- package/dist/cli.js +2529 -0
- package/dist/commands/abort.js +82 -0
- package/dist/commands/action-buttons.js +257 -0
- package/dist/commands/add-project.js +114 -0
- package/dist/commands/agent.js +291 -0
- package/dist/commands/ask-question.js +223 -0
- package/dist/commands/compact.js +120 -0
- package/dist/commands/context-usage.js +140 -0
- package/dist/commands/create-new-project.js +118 -0
- package/dist/commands/diff.js +128 -0
- package/dist/commands/file-upload.js +275 -0
- package/dist/commands/fork.js +217 -0
- package/dist/commands/gemini-apikey.js +70 -0
- package/dist/commands/login.js +490 -0
- package/dist/commands/mention-mode.js +51 -0
- package/dist/commands/merge-worktree.js +124 -0
- package/dist/commands/model.js +694 -0
- package/dist/commands/permissions.js +163 -0
- package/dist/commands/queue.js +217 -0
- package/dist/commands/remove-project.js +115 -0
- package/dist/commands/restart-opencode-server.js +116 -0
- package/dist/commands/resume.js +159 -0
- package/dist/commands/run-command.js +79 -0
- package/dist/commands/session-id.js +78 -0
- package/dist/commands/session.js +192 -0
- package/dist/commands/share.js +80 -0
- package/dist/commands/types.js +2 -0
- package/dist/commands/undo-redo.js +159 -0
- package/dist/commands/unset-model.js +152 -0
- package/dist/commands/upgrade.js +42 -0
- package/dist/commands/user-command.js +148 -0
- package/dist/commands/verbosity.js +60 -0
- package/dist/commands/worktree-settings.js +50 -0
- package/dist/commands/worktree.js +299 -0
- package/dist/condense-memory.js +33 -0
- package/dist/config.js +110 -0
- package/dist/database.js +1050 -0
- package/dist/db.js +159 -0
- package/dist/db.test.js +49 -0
- package/dist/discord-api.js +28 -0
- package/dist/discord-auth.js +231 -0
- package/dist/discord-auth.test.js +80 -0
- package/dist/discord-bot.js +997 -0
- package/dist/discord-utils.js +560 -0
- package/dist/discord-utils.test.js +115 -0
- package/dist/errors.js +167 -0
- package/dist/escape-backticks.test.js +429 -0
- package/dist/format-tables.js +122 -0
- package/dist/format-tables.test.js +199 -0
- package/dist/forum-sync/config.js +79 -0
- package/dist/forum-sync/discord-operations.js +154 -0
- package/dist/forum-sync/index.js +5 -0
- package/dist/forum-sync/markdown.js +117 -0
- package/dist/forum-sync/sync-to-discord.js +417 -0
- package/dist/forum-sync/sync-to-files.js +190 -0
- package/dist/forum-sync/types.js +53 -0
- package/dist/forum-sync/watchers.js +307 -0
- package/dist/gateway-consumer.js +232 -0
- package/dist/gateway-consumer.test.js +18 -0
- package/dist/genai-worker-wrapper.js +111 -0
- package/dist/genai-worker.js +311 -0
- package/dist/genai.js +232 -0
- package/dist/generated/browser.js +17 -0
- package/dist/generated/client.js +35 -0
- package/dist/generated/commonInputTypes.js +10 -0
- package/dist/generated/enums.js +30 -0
- package/dist/generated/internal/class.js +41 -0
- package/dist/generated/internal/prismaNamespace.js +239 -0
- package/dist/generated/internal/prismaNamespaceBrowser.js +209 -0
- package/dist/generated/models/bot_api_keys.js +1 -0
- package/dist/generated/models/bot_tokens.js +1 -0
- package/dist/generated/models/channel_agents.js +1 -0
- package/dist/generated/models/channel_directories.js +1 -0
- package/dist/generated/models/channel_mention_mode.js +1 -0
- package/dist/generated/models/channel_models.js +1 -0
- package/dist/generated/models/channel_verbosity.js +1 -0
- package/dist/generated/models/channel_worktrees.js +1 -0
- package/dist/generated/models/forum_sync_configs.js +1 -0
- package/dist/generated/models/global_models.js +1 -0
- package/dist/generated/models/ipc_requests.js +1 -0
- package/dist/generated/models/part_messages.js +1 -0
- package/dist/generated/models/scheduled_tasks.js +1 -0
- package/dist/generated/models/session_agents.js +1 -0
- package/dist/generated/models/session_models.js +1 -0
- package/dist/generated/models/session_start_sources.js +1 -0
- package/dist/generated/models/thread_sessions.js +1 -0
- package/dist/generated/models/thread_worktrees.js +1 -0
- package/dist/generated/models.js +1 -0
- package/dist/heap-monitor.js +95 -0
- package/dist/hrana-server.js +416 -0
- package/dist/hrana-server.test.js +368 -0
- package/dist/image-utils.js +112 -0
- package/dist/interaction-handler.js +327 -0
- package/dist/ipc-polling.js +251 -0
- package/dist/kimaki-digital-twin.e2e.test.js +165 -0
- package/dist/limit-heading-depth.js +25 -0
- package/dist/limit-heading-depth.test.js +105 -0
- package/dist/logger.js +160 -0
- package/dist/markdown.js +342 -0
- package/dist/markdown.test.js +253 -0
- package/dist/message-formatting.js +433 -0
- package/dist/message-formatting.test.js +73 -0
- package/dist/openai-realtime.js +228 -0
- package/dist/opencode-plugin-loading.e2e.test.js +91 -0
- package/dist/opencode-plugin.js +536 -0
- package/dist/opencode-plugin.test.js +98 -0
- package/dist/opencode.js +409 -0
- package/dist/privacy-sanitizer.js +105 -0
- package/dist/runtime-mode.js +51 -0
- package/dist/runtime-mode.test.js +115 -0
- package/dist/sentry.js +127 -0
- package/dist/session-handler/state.js +151 -0
- package/dist/session-handler.js +1874 -0
- package/dist/session-search.js +100 -0
- package/dist/session-search.test.js +40 -0
- package/dist/startup-service.js +153 -0
- package/dist/system-message.js +499 -0
- package/dist/task-runner.js +282 -0
- package/dist/task-schedule.js +191 -0
- package/dist/task-schedule.test.js +71 -0
- package/dist/thinking-utils.js +35 -0
- package/dist/thread-message-queue.e2e.test.js +781 -0
- package/dist/tools.js +359 -0
- package/dist/unnest-code-blocks.js +136 -0
- package/dist/unnest-code-blocks.test.js +641 -0
- package/dist/upgrade.js +114 -0
- package/dist/utils.js +109 -0
- package/dist/voice-handler.js +606 -0
- package/dist/voice.js +304 -0
- package/dist/voice.test.js +187 -0
- package/dist/wait-session.js +94 -0
- package/dist/worker-types.js +4 -0
- package/dist/worktree-utils.js +727 -0
- package/dist/xml.js +92 -0
- package/dist/xml.test.js +32 -0
- package/package.json +82 -0
- package/schema.prisma +246 -0
- package/skills/batch/SKILL.md +87 -0
- package/skills/critique/SKILL.md +129 -0
- package/skills/errore/SKILL.md +589 -0
- package/skills/goke/.prettierrc +5 -0
- package/skills/goke/CHANGELOG.md +40 -0
- package/skills/goke/LICENSE +21 -0
- package/skills/goke/README.md +666 -0
- package/skills/goke/SKILL.md +458 -0
- package/skills/goke/package.json +43 -0
- package/skills/goke/src/__test__/coerce.test.ts +411 -0
- package/skills/goke/src/__test__/index.test.ts +1798 -0
- package/skills/goke/src/__test__/types.test-d.ts +111 -0
- package/skills/goke/src/coerce.ts +547 -0
- package/skills/goke/src/goke.ts +1362 -0
- package/skills/goke/src/index.ts +16 -0
- package/skills/goke/src/mri.ts +164 -0
- package/skills/goke/tsconfig.json +15 -0
- package/skills/jitter/EDITOR.md +219 -0
- package/skills/jitter/EXPORT-INTERNALS.md +309 -0
- package/skills/jitter/SKILL.md +158 -0
- package/skills/jitter/jitter-clipboard.json +1042 -0
- package/skills/jitter/package.json +14 -0
- package/skills/jitter/tsconfig.json +15 -0
- package/skills/jitter/utils/actions.ts +212 -0
- package/skills/jitter/utils/export.ts +114 -0
- package/skills/jitter/utils/index.ts +141 -0
- package/skills/jitter/utils/snapshot.ts +154 -0
- package/skills/jitter/utils/traverse.ts +246 -0
- package/skills/jitter/utils/types.ts +279 -0
- package/skills/jitter/utils/wait.ts +133 -0
- package/skills/playwriter/SKILL.md +31 -0
- package/skills/security-review/SKILL.md +208 -0
- package/skills/simplify/SKILL.md +58 -0
- package/skills/termcast/SKILL.md +945 -0
- package/skills/tuistory/SKILL.md +250 -0
- package/skills/zustand-centralized-state/SKILL.md +582 -0
- package/src/__snapshots__/compact-session-context-no-system.md +35 -0
- package/src/__snapshots__/compact-session-context.md +41 -0
- package/src/__snapshots__/first-session-no-info.md +17 -0
- package/src/__snapshots__/first-session-with-info.md +23 -0
- package/src/__snapshots__/session-1.md +17 -0
- package/src/__snapshots__/session-2.md +5871 -0
- package/src/__snapshots__/session-3.md +17 -0
- package/src/__snapshots__/session-with-tools.md +5871 -0
- package/src/ai-tool-to-genai.test.ts +296 -0
- package/src/ai-tool-to-genai.ts +282 -0
- package/src/ai-tool.ts +39 -0
- package/src/bin.ts +108 -0
- package/src/bot-token.test.ts +171 -0
- package/src/bot-token.ts +159 -0
- package/src/channel-management.ts +172 -0
- package/src/cli-parsing.test.ts +132 -0
- package/src/cli.ts +3605 -0
- package/src/commands/abort.ts +112 -0
- package/src/commands/action-buttons.ts +376 -0
- package/src/commands/add-project.ts +152 -0
- package/src/commands/agent.ts +404 -0
- package/src/commands/ask-question.ts +330 -0
- package/src/commands/compact.ts +157 -0
- package/src/commands/context-usage.ts +199 -0
- package/src/commands/create-new-project.ts +179 -0
- package/src/commands/diff.ts +165 -0
- package/src/commands/file-upload.ts +389 -0
- package/src/commands/fork.ts +320 -0
- package/src/commands/gemini-apikey.ts +104 -0
- package/src/commands/login.ts +634 -0
- package/src/commands/mention-mode.ts +77 -0
- package/src/commands/merge-worktree.ts +177 -0
- package/src/commands/model.ts +961 -0
- package/src/commands/permissions.ts +261 -0
- package/src/commands/queue.ts +296 -0
- package/src/commands/remove-project.ts +155 -0
- package/src/commands/restart-opencode-server.ts +162 -0
- package/src/commands/resume.ts +242 -0
- package/src/commands/run-command.ts +123 -0
- package/src/commands/session-id.ts +109 -0
- package/src/commands/session.ts +250 -0
- package/src/commands/share.ts +106 -0
- package/src/commands/types.ts +25 -0
- package/src/commands/undo-redo.ts +221 -0
- package/src/commands/unset-model.ts +189 -0
- package/src/commands/upgrade.ts +52 -0
- package/src/commands/user-command.ts +193 -0
- package/src/commands/verbosity.ts +88 -0
- package/src/commands/worktree-settings.ts +79 -0
- package/src/commands/worktree.ts +431 -0
- package/src/condense-memory.ts +36 -0
- package/src/config.ts +148 -0
- package/src/database.ts +1530 -0
- package/src/db.test.ts +60 -0
- package/src/db.ts +190 -0
- package/src/discord-api.ts +35 -0
- package/src/discord-bot.ts +1316 -0
- package/src/discord-utils.test.ts +132 -0
- package/src/discord-utils.ts +767 -0
- package/src/errors.ts +213 -0
- package/src/escape-backticks.test.ts +469 -0
- package/src/format-tables.test.ts +223 -0
- package/src/format-tables.ts +145 -0
- package/src/forum-sync/config.ts +92 -0
- package/src/forum-sync/discord-operations.ts +241 -0
- package/src/forum-sync/index.ts +9 -0
- package/src/forum-sync/markdown.ts +176 -0
- package/src/forum-sync/sync-to-discord.ts +595 -0
- package/src/forum-sync/sync-to-files.ts +294 -0
- package/src/forum-sync/types.ts +175 -0
- package/src/forum-sync/watchers.ts +454 -0
- package/src/genai-worker-wrapper.ts +164 -0
- package/src/genai-worker.ts +386 -0
- package/src/genai.ts +321 -0
- package/src/generated/browser.ts +109 -0
- package/src/generated/client.ts +131 -0
- package/src/generated/commonInputTypes.ts +512 -0
- package/src/generated/enums.ts +46 -0
- package/src/generated/internal/class.ts +362 -0
- package/src/generated/internal/prismaNamespace.ts +2251 -0
- package/src/generated/internal/prismaNamespaceBrowser.ts +308 -0
- package/src/generated/models/bot_api_keys.ts +1288 -0
- package/src/generated/models/bot_tokens.ts +1577 -0
- package/src/generated/models/channel_agents.ts +1256 -0
- package/src/generated/models/channel_directories.ts +2104 -0
- package/src/generated/models/channel_mention_mode.ts +1300 -0
- package/src/generated/models/channel_models.ts +1288 -0
- package/src/generated/models/channel_verbosity.ts +1224 -0
- package/src/generated/models/channel_worktrees.ts +1308 -0
- package/src/generated/models/forum_sync_configs.ts +1452 -0
- package/src/generated/models/global_models.ts +1288 -0
- package/src/generated/models/ipc_requests.ts +1485 -0
- package/src/generated/models/part_messages.ts +1302 -0
- package/src/generated/models/scheduled_tasks.ts +2320 -0
- package/src/generated/models/session_agents.ts +1086 -0
- package/src/generated/models/session_models.ts +1114 -0
- package/src/generated/models/session_start_sources.ts +1408 -0
- package/src/generated/models/thread_sessions.ts +1599 -0
- package/src/generated/models/thread_worktrees.ts +1352 -0
- package/src/generated/models.ts +29 -0
- package/src/heap-monitor.ts +121 -0
- package/src/hrana-server.test.ts +428 -0
- package/src/hrana-server.ts +547 -0
- package/src/image-utils.ts +149 -0
- package/src/interaction-handler.ts +461 -0
- package/src/ipc-polling.ts +325 -0
- package/src/kimaki-digital-twin.e2e.test.ts +201 -0
- package/src/limit-heading-depth.test.ts +116 -0
- package/src/limit-heading-depth.ts +26 -0
- package/src/logger.ts +203 -0
- package/src/markdown.test.ts +360 -0
- package/src/markdown.ts +410 -0
- package/src/message-formatting.test.ts +81 -0
- package/src/message-formatting.ts +549 -0
- package/src/openai-realtime.ts +362 -0
- package/src/opencode-plugin-loading.e2e.test.ts +112 -0
- package/src/opencode-plugin.test.ts +108 -0
- package/src/opencode-plugin.ts +652 -0
- package/src/opencode.ts +554 -0
- package/src/privacy-sanitizer.ts +142 -0
- package/src/schema.sql +158 -0
- package/src/sentry.ts +137 -0
- package/src/session-handler/state.ts +232 -0
- package/src/session-handler.ts +2668 -0
- package/src/session-search.test.ts +50 -0
- package/src/session-search.ts +148 -0
- package/src/startup-service.ts +200 -0
- package/src/system-message.ts +568 -0
- package/src/task-runner.ts +425 -0
- package/src/task-schedule.test.ts +84 -0
- package/src/task-schedule.ts +287 -0
- package/src/thinking-utils.ts +61 -0
- package/src/thread-message-queue.e2e.test.ts +997 -0
- package/src/tools.ts +432 -0
- package/src/unnest-code-blocks.test.ts +679 -0
- package/src/unnest-code-blocks.ts +168 -0
- package/src/upgrade.ts +127 -0
- package/src/utils.ts +145 -0
- package/src/voice-handler.ts +852 -0
- package/src/voice.test.ts +219 -0
- package/src/voice.ts +444 -0
- package/src/wait-session.ts +147 -0
- package/src/worker-types.ts +64 -0
- package/src/worktree-utils.ts +988 -0
- package/src/xml.test.ts +38 -0
- package/src/xml.ts +121 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Wait utilities for polling session completion.
|
|
2
|
+
// Used by `kimaki send --wait` to block until a session finishes,
|
|
3
|
+
// then output the session markdown to stdout.
|
|
4
|
+
|
|
5
|
+
import { getThreadSession } from './database.js'
|
|
6
|
+
import { initializeOpencodeForDirectory } from './opencode.js'
|
|
7
|
+
import { ShareMarkdown } from './markdown.js'
|
|
8
|
+
import { createLogger, LogPrefix } from './logger.js'
|
|
9
|
+
|
|
10
|
+
const waitLogger = createLogger(LogPrefix.SESSION)
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Poll the kimaki database until a session ID appears for the given thread.
|
|
14
|
+
* The bot writes this mapping in session-handler.ts:551 when it picks up
|
|
15
|
+
* the thread and creates/reuses a session.
|
|
16
|
+
*/
|
|
17
|
+
export async function waitForSessionId({
|
|
18
|
+
threadId,
|
|
19
|
+
timeoutMs = 120_000,
|
|
20
|
+
}: {
|
|
21
|
+
threadId: string
|
|
22
|
+
timeoutMs?: number
|
|
23
|
+
}): Promise<string> {
|
|
24
|
+
const startTime = Date.now()
|
|
25
|
+
const pollIntervalMs = 2_000
|
|
26
|
+
|
|
27
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
28
|
+
const sessionId = await getThreadSession(threadId)
|
|
29
|
+
if (sessionId) {
|
|
30
|
+
waitLogger.log(`Session ID resolved: ${sessionId}`)
|
|
31
|
+
return sessionId
|
|
32
|
+
}
|
|
33
|
+
await new Promise((resolve) => {
|
|
34
|
+
setTimeout(resolve, pollIntervalMs)
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
throw new Error(
|
|
39
|
+
`Timed out waiting for session ID (thread: ${threadId}, timeout: ${timeoutMs}ms)`,
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Poll the OpenCode SDK until the session's last assistant message
|
|
45
|
+
* has `time.completed` set, meaning the model finished responding.
|
|
46
|
+
*/
|
|
47
|
+
export async function waitForSessionComplete({
|
|
48
|
+
projectDirectory,
|
|
49
|
+
sessionId,
|
|
50
|
+
timeoutMs = 30 * 60 * 1000,
|
|
51
|
+
}: {
|
|
52
|
+
projectDirectory: string
|
|
53
|
+
sessionId: string
|
|
54
|
+
timeoutMs?: number
|
|
55
|
+
}): Promise<void> {
|
|
56
|
+
const pollIntervalMs = 3_000
|
|
57
|
+
const startTime = Date.now()
|
|
58
|
+
|
|
59
|
+
const getClient = await initializeOpencodeForDirectory(projectDirectory)
|
|
60
|
+
if (getClient instanceof Error) {
|
|
61
|
+
throw new Error(
|
|
62
|
+
`Failed to connect to OpenCode server: ${getClient.message}`,
|
|
63
|
+
{
|
|
64
|
+
cause: getClient,
|
|
65
|
+
},
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
70
|
+
const messagesResponse = await getClient().session.messages({
|
|
71
|
+
sessionID: sessionId,
|
|
72
|
+
})
|
|
73
|
+
const messages = messagesResponse.data || []
|
|
74
|
+
|
|
75
|
+
// Find the last assistant message
|
|
76
|
+
const lastAssistant = [...messages]
|
|
77
|
+
.reverse()
|
|
78
|
+
.find((m) => m.info.role === 'assistant')
|
|
79
|
+
|
|
80
|
+
if (
|
|
81
|
+
lastAssistant &&
|
|
82
|
+
lastAssistant.info.role === 'assistant' &&
|
|
83
|
+
lastAssistant.info.time.completed
|
|
84
|
+
) {
|
|
85
|
+
waitLogger.log(`Session ${sessionId} completed`)
|
|
86
|
+
return
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
await new Promise((resolve) => {
|
|
90
|
+
setTimeout(resolve, pollIntervalMs)
|
|
91
|
+
})
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
throw new Error(
|
|
95
|
+
`Timed out waiting for session completion (session: ${sessionId}, timeout: ${timeoutMs}ms)`,
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Wait for session completion and output the session markdown to stdout.
|
|
101
|
+
* Orchestrates the full wait flow: session ID resolution -> completion -> output.
|
|
102
|
+
*/
|
|
103
|
+
export async function waitAndOutputSession({
|
|
104
|
+
threadId,
|
|
105
|
+
projectDirectory,
|
|
106
|
+
sessionIdTimeoutMs,
|
|
107
|
+
completionTimeoutMs,
|
|
108
|
+
}: {
|
|
109
|
+
threadId: string
|
|
110
|
+
projectDirectory: string
|
|
111
|
+
sessionIdTimeoutMs?: number
|
|
112
|
+
completionTimeoutMs?: number
|
|
113
|
+
}): Promise<void> {
|
|
114
|
+
waitLogger.log('Waiting for session ID...')
|
|
115
|
+
const sessionId = await waitForSessionId({
|
|
116
|
+
threadId,
|
|
117
|
+
timeoutMs: sessionIdTimeoutMs,
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
waitLogger.log(`Waiting for session ${sessionId} to complete...`)
|
|
121
|
+
await waitForSessionComplete({
|
|
122
|
+
projectDirectory,
|
|
123
|
+
sessionId,
|
|
124
|
+
timeoutMs: completionTimeoutMs,
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
waitLogger.log('Generating session output...')
|
|
128
|
+
const getClient = await initializeOpencodeForDirectory(projectDirectory)
|
|
129
|
+
if (getClient instanceof Error) {
|
|
130
|
+
throw new Error(
|
|
131
|
+
`Failed to connect to OpenCode server: ${getClient.message}`,
|
|
132
|
+
{
|
|
133
|
+
cause: getClient,
|
|
134
|
+
},
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const markdown = new ShareMarkdown(getClient())
|
|
139
|
+
const result = await markdown.generate({ sessionID: sessionId })
|
|
140
|
+
if (result instanceof Error) {
|
|
141
|
+
throw new Error(`Failed to generate session markdown: ${result.message}`, {
|
|
142
|
+
cause: result,
|
|
143
|
+
})
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
process.stdout.write(result)
|
|
147
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Type definitions for worker thread message passing.
|
|
2
|
+
// Defines the protocol between main thread and GenAI worker for
|
|
3
|
+
// audio streaming, tool calls, and session lifecycle management.
|
|
4
|
+
|
|
5
|
+
// Messages sent from main thread to worker
|
|
6
|
+
export type WorkerInMessage =
|
|
7
|
+
| {
|
|
8
|
+
type: 'init'
|
|
9
|
+
directory: string // Project directory for tools
|
|
10
|
+
systemMessage?: string
|
|
11
|
+
guildId: string
|
|
12
|
+
channelId: string
|
|
13
|
+
appId: string
|
|
14
|
+
geminiApiKey?: string | null
|
|
15
|
+
}
|
|
16
|
+
| {
|
|
17
|
+
type: 'sendRealtimeInput'
|
|
18
|
+
audio?: {
|
|
19
|
+
mimeType: string
|
|
20
|
+
data: string // base64
|
|
21
|
+
}
|
|
22
|
+
audioStreamEnd?: boolean
|
|
23
|
+
}
|
|
24
|
+
| {
|
|
25
|
+
type: 'sendTextInput'
|
|
26
|
+
text: string
|
|
27
|
+
}
|
|
28
|
+
| {
|
|
29
|
+
type: 'interrupt'
|
|
30
|
+
}
|
|
31
|
+
| {
|
|
32
|
+
type: 'stop'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Messages sent from worker to main thread via parentPort
|
|
36
|
+
export type WorkerOutMessage =
|
|
37
|
+
| {
|
|
38
|
+
type: 'assistantOpusPacket'
|
|
39
|
+
packet: ArrayBuffer // Opus encoded audio packet
|
|
40
|
+
}
|
|
41
|
+
| {
|
|
42
|
+
type: 'assistantStartSpeaking'
|
|
43
|
+
}
|
|
44
|
+
| {
|
|
45
|
+
type: 'assistantStopSpeaking'
|
|
46
|
+
}
|
|
47
|
+
| {
|
|
48
|
+
type: 'assistantInterruptSpeaking'
|
|
49
|
+
}
|
|
50
|
+
| {
|
|
51
|
+
type: 'toolCallCompleted'
|
|
52
|
+
sessionId: string
|
|
53
|
+
messageId: string
|
|
54
|
+
data?: unknown
|
|
55
|
+
error?: unknown
|
|
56
|
+
markdown?: string
|
|
57
|
+
}
|
|
58
|
+
| {
|
|
59
|
+
type: 'error'
|
|
60
|
+
error: string
|
|
61
|
+
}
|
|
62
|
+
| {
|
|
63
|
+
type: 'ready'
|
|
64
|
+
}
|