diff --git a/apps/x/apps/main/src/main.ts b/apps/x/apps/main/src/main.ts index 42c9f3fd..ee95419f 100644 --- a/apps/x/apps/main/src/main.ts +++ b/apps/x/apps/main/src/main.ts @@ -67,12 +67,19 @@ initializeExecutionEnvironment(); const preloadPath = app.isPackaged ? path.join(__dirname, "../preload/dist/preload.js") : path.join(__dirname, "../../../preload/dist/preload.js"); -console.log("preloadPath", preloadPath); const rendererPath = app.isPackaged ? path.join(__dirname, "../renderer/dist") // Production : path.join(__dirname, "../../../renderer/dist"); // Development -console.log("rendererPath", rendererPath); + +// Debug logging (wrapped in safe error handler) +try { + if (process.stderr && process.stderr.write) { + process.stderr.write(`preloadPath: ${preloadPath}\nrendererPath: ${rendererPath}\n`); + } +} catch { + // Silently ignore logging errors +} // Register custom protocol for serving built renderer files in production. // This keeps SPA routes working when users deep link into the packaged app. diff --git a/apps/x/apps/renderer/src/components/settings-dialog.tsx b/apps/x/apps/renderer/src/components/settings-dialog.tsx index 6ff990b7..647656e4 100644 --- a/apps/x/apps/renderer/src/components/settings-dialog.tsx +++ b/apps/x/apps/renderer/src/components/settings-dialog.tsx @@ -213,6 +213,7 @@ function ModelSettings({ dialogOpen }: { dialogOpen: boolean }) { const [testState, setTestState] = useState<{ status: "idle" | "testing" | "success" | "error"; error?: string }>({ status: "idle" }) const [configLoading, setConfigLoading] = useState(true) const [showMoreProviders, setShowMoreProviders] = useState(false) + const [githubCopilotCode, setGithubCopilotCode] = useState<{ userCode: string; verificationUri: string } | null>(null) const activeConfig = providerConfigs[provider] const showApiKey = provider === "openai" || provider === "anthropic" || provider === "google" || provider === "openrouter" || provider === "aigateway" || provider === "openai-compatible" @@ -689,67 +690,155 @@ function ModelSettings({ dialogOpen }: { dialogOpen: boolean }) { {/* GitHub Copilot Authentication */} {isGitHubCopilot && ( -
+
Authentication -

GitHub Copilot uses Device Flow OAuth for authentication. Click the button to authenticate with your GitHub account.

- + }} + variant="outline" + className="w-full" + disabled={testState.status === "testing"} + > + {testState.status === "testing" ? ( + <> + + Getting device code... + + ) : ( + "Get Device Code" + )} + + + ) : ( + <> +
+
+

1. Enter this code on GitHub:

+
+ + {githubCopilotCode.userCode} + + +
+
+ +
+

2. Open this URL (already opened in browser):

+ +
+ +
+

3. After authorizing on GitHub, click the button below:

+ +
+ + +
+ + )} + + {testState.status === "error" && ( +
+ {testState.error} +
+ )}
)} diff --git a/apps/x/dev-server.log b/apps/x/dev-server.log new file mode 100644 index 00000000..4ea30e2e --- /dev/null +++ b/apps/x/dev-server.log @@ -0,0 +1,475 @@ + +> x@0.1.0 dev +> npm run deps && concurrently -k "npm:renderer" "npm:main" + + +> x@0.1.0 deps +> npm run shared && npm run core && npm run preload + + +> x@0.1.0 shared +> cd packages/shared && npm run build + + +> build +> rm -rf dist && tsc + + +> x@0.1.0 core +> cd packages/core && npm run build + + +> build +> rm -rf dist && tsc + + +> x@0.1.0 preload +> cd apps/preload && npm run build + + +> build +> rm -rf dist && tsc && esbuild dist/preload.js --bundle --platform=node --format=cjs --external:electron --outfile=dist/preload.bundle.js && mv dist/preload.bundle.js dist/preload.js + + + dist/preload.bundle.js 526.8kb + +⚡ Done in 16ms +[main] +[main] > x@0.1.0 main +[main] > wait-on http://localhost:5173 && cd apps/main && npm run build && npm run start +[main] +[renderer] +[renderer] > x@0.1.0 renderer +[renderer] > cd apps/renderer && npm run dev +[renderer] +[renderer] +[renderer] > dev +[renderer] > vite +[renderer] +[renderer] +[renderer] VITE v7.3.0 ready in 179 ms +[renderer] +[renderer] ➜ Local: http://localhost:5173/ +[renderer] ➜ Network: use --host to expose +[main] +[main] > rowboat@0.1.0 build +[main] > rm -rf dist && tsc && node bundle.mjs +[main] +[main] ✅ Main process bundled to .package/dist-bundle/main.js +[main] +[main] > rowboat@0.1.0 start +[main] > electron . +[main] +[main] preloadPath: /home/wilber/rowboat/apps/x/apps/preload/dist/preload.js +[main] rendererPath: /home/wilber/rowboat/apps/x/apps/renderer/dist +[main] Starting Gmail Sync (TS)... +[main] Will sync every 300 seconds. +[main] Starting Google Calendar & Notes Sync (TS)... +[main] Will sync every 300 seconds. +[main] [Fireflies] Starting Fireflies Sync... +[main] [Fireflies] Will sync every 1800 seconds. +[main] [Fireflies] Syncing transcripts from the last 7 days. +[main] [Granola] Starting Granola Sync... +[main] [Granola] Will sync every 5 minutes. +[main] [Granola] Notes will be saved to: /home/wilber/.rowboat/knowledge/Meetings/granola +[main] [Granola] Starting sync... +[main] [GraphBuilder] Starting Knowledge Graph Builder Service... +[main] [GraphBuilder] Monitoring folders: gmail_sync, knowledge/Meetings/fireflies, knowledge/Meetings/granola, knowledge/Voice Memos +[main] [GraphBuilder] Will check for new content every 15 seconds +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [EmailLabeling] Starting Email Labeling Service... +[main] [EmailLabeling] Will check for unlabeled emails every 15 seconds +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Starting Note Tagging Service... +[main] [NoteTagging] Will check for untagged notes every 15 seconds +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [InlineTasks] Starting Inline Task Service... +[main] [InlineTasks] Will check for task blocks every 15 seconds +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] [AgentRunner] Starting background agent runner service +[main] [AgentNotes] Starting Agent Notes Service... +[main] [AgentNotes] Will process every 10 seconds +[main] [ChromeSync] Server disabled, watching config for changes... +[main] [GraphBuilder] No new content to process +[main] [Fireflies] Starting sync... +[main] [Granola] Sync disabled in config +[main] [Granola] Sleeping for 5 minutes... +[main] Google OAuth credentials not available or missing required Gmail scope. Sleeping... +[main] Sleeping for 300 seconds... +[main] [Fireflies] Clearing auth cache +[main] [Fireflies] No valid client available +[main] [Fireflies] Sleeping for 1800 seconds... +[main] Google OAuth credentials not available or missing required Calendar/Drive scopes. Sleeping... +[main] Sleeping for 300 seconds... +[main] [OAuth] Clearing Google auth cache +[main] 2026-04-17T15:25:10.180Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:10.180Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:10.180Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-25-09Z-0047239-001 +[main] 2026-04-17T15:25:10.181Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:25:10.218Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:10.218Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:10.218Z [run-2026-04-17T15-25-09Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] Error occurred in handler for 'workspace:readFile': [Error: ENOENT: no such file or directory, lstat '/home/wilber/.rowboat/config/exa-search.json'] { +[main] errno: -2, +[main] code: 'ENOENT', +[main] syscall: 'lstat', +[main] path: '/home/wilber/.rowboat/config/exa-search.json' +[main] } +[main] Error occurred in handler for 'workspace:readFile': [Error: ENOENT: no such file or directory, lstat '/home/wilber/.rowboat/config/exa-search.json'] { +[main] errno: -2, +[main] code: 'ENOENT', +[main] syscall: 'lstat', +[main] path: '/home/wilber/.rowboat/config/exa-search.json' +[main] } +[main] [OAuth] Clearing Google auth cache +[main] [GitHub Copilot] Starting Device Flow authentication... +[main] [GitHub Copilot] Requesting device code... +[main] [GitHub Copilot] Device code received. User code: C39B-A859 +[main] [GitHub Copilot] Verification URI: https://github.com/login/device +[main] [GitHub Copilot] Polling for token... +[main] Abriendo en una sesión existente del navegador +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T15:25:25.228Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:25.228Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:25.228Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-25-25Z-0047239-001 +[main] 2026-04-17T15:25:25.229Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:25:25.240Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:25.240Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:25.240Z [run-2026-04-17T15-25-25Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [OAuth] Clearing Google auth cache +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [OAuth] Clearing Google auth cache +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T15:25:40.250Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:40.250Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:40.250Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-25-40Z-0047239-001 +[main] 2026-04-17T15:25:40.251Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:25:40.263Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:40.263Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:40.263Z [run-2026-04-17T15-25-40Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [OAuth] Clearing Google auth cache +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T15:25:55.274Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:55.274Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:55.274Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-25-55Z-0047239-001 +[main] 2026-04-17T15:25:55.274Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:25:55.290Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:25:55.290Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:25:55.290Z [run-2026-04-17T15-25-55Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [OAuth] Clearing Google auth cache +[main] [GitHub Copilot] Authorization pending, polling again... +[main] Abriendo en una sesión existente del navegador +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [OAuth] Clearing Google auth cache +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T15:26:10.299Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:26:10.299Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:26:10.299Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-26-10Z-0047239-001 +[main] 2026-04-17T15:26:10.299Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:26:10.308Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:26:10.308Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:26:10.308Z [run-2026-04-17T15-26-10Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [OAuth] Clearing Google auth cache +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T15:26:25.316Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:26:25.316Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:26:25.316Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-26-25Z-0047239-001 +[main] 2026-04-17T15:26:25.316Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:26:25.324Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:26:25.324Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:26:25.324Z [run-2026-04-17T15-26-25Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [OAuth] Clearing Google auth cache +[main] [GitHub Copilot] Authorization pending, polling again... +[main] [GitHub Copilot] Polling error: ZodError: [ +[main] { +[main] "code": "invalid_value", +[main] "values": [ +[main] "Bearer" +[main] ], +[main] "path": [ +[main] "token_type" +[main] ], +[main] "message": "Invalid input: expected \"Bearer\"" +[main] } +[main] ] +[main] at pollForToken (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:965133:34) +[main] at process.processTicksAndRejections (node:internal/process/task_queues:105:5) +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [OAuth] Clearing Google auth cache +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T15:26:40.332Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:26:40.332Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:26:40.332Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T15-26-40Z-0047239-001 +[main] 2026-04-17T15:26:40.333Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939836:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953594:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952713:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948085:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944933:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948041:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948382:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944794:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T15:26:40.343Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T15:26:40.343Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T15:26:40.343Z [run-2026-04-17T15-26-40Z-0047239-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] [GitHub Copilot] Polling error: ZodError: [ +[main] { +[main] "code": "invalid_value", +[main] "values": [ +[main] "Bearer" +[main] ], +[main] "path": [ +[main] "token_type" +[main] ], +[main] "message": "Invalid input: expected \"Bearer\"" +[main] } +[main] ] +[main] at pollForToken (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:965133:34) +[main] at process.processTicksAndRejections (node:internal/process/task_queues:105:5) +[main] [GitHub Copilot] Polling error: ZodError: [ +[main] { +[main] "code": "invalid_value", +[main] "values": [ +[main] "Bearer" +[main] ], +[main] "path": [ +[main] "token_type" +[main] ], +[main] "message": "Invalid input: expected \"Bearer\"" +[main] } +[main] ] +[main] at pollForToken (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:965133:34) +[main] at process.processTicksAndRejections (node:internal/process/task_queues:105:5) +[main] [OAuth] Clearing Google auth cache +[renderer] npm run renderer exited with code SIGTERM +--> Sending SIGTERM to other processes.. +[main] /home/wilber/rowboat/apps/x/node_modules/.pnpm/electron@39.2.7/node_modules/electron/dist/electron exited with signal SIGTERM +[main] npm run main exited with code SIGTERM diff --git a/apps/x/dev.log b/apps/x/dev.log new file mode 100644 index 00000000..fa40c7be --- /dev/null +++ b/apps/x/dev.log @@ -0,0 +1,194 @@ + +> x@0.1.0 dev +> npm run deps && concurrently -k "npm:renderer" "npm:main" + + +> x@0.1.0 deps +> npm run shared && npm run core && npm run preload + + +> x@0.1.0 shared +> cd packages/shared && npm run build + + +> build +> rm -rf dist && tsc + + +> x@0.1.0 core +> cd packages/core && npm run build + + +> build +> rm -rf dist && tsc + + +> x@0.1.0 preload +> cd apps/preload && npm run build + + +> build +> rm -rf dist && tsc && esbuild dist/preload.js --bundle --platform=node --format=cjs --external:electron --outfile=dist/preload.bundle.js && mv dist/preload.bundle.js dist/preload.js + + + dist/preload.bundle.js 525.9kb + +⚡ Done in 15ms +[renderer] +[renderer] > x@0.1.0 renderer +[renderer] > cd apps/renderer && npm run dev +[renderer] +[main] +[main] > x@0.1.0 main +[main] > wait-on http://localhost:5173 && cd apps/main && npm run build && npm run start +[main] +[renderer] +[renderer] > dev +[renderer] > vite +[renderer] +[renderer] +[renderer] VITE v7.3.0 ready in 221 ms +[renderer] +[renderer] ➜ Local: http://localhost:5173/ +[renderer] ➜ Network: use --host to expose +[main] +[main] > rowboat@0.1.0 build +[main] > rm -rf dist && tsc && node bundle.mjs +[main] +[main] ✅ Main process bundled to .package/dist-bundle/main.js +[main] +[main] > rowboat@0.1.0 start +[main] > electron . +[main] +[main] preloadPath /home/wilber/rowboat/apps/x/apps/preload/dist/preload.js +[main] rendererPath /home/wilber/rowboat/apps/x/apps/renderer/dist +[main] Starting Gmail Sync (TS)... +[main] Will sync every 300 seconds. +[main] Starting Google Calendar & Notes Sync (TS)... +[main] Will sync every 300 seconds. +[main] [Fireflies] Starting Fireflies Sync... +[main] [Fireflies] Will sync every 1800 seconds. +[main] [Fireflies] Syncing transcripts from the last 7 days. +[main] [Granola] Starting Granola Sync... +[main] [Granola] Will sync every 5 minutes. +[main] [Granola] Notes will be saved to: /home/wilber/.rowboat/knowledge/Meetings/granola +[main] [Granola] Starting sync... +[main] [GraphBuilder] Starting Knowledge Graph Builder Service... +[main] [GraphBuilder] Monitoring folders: gmail_sync, knowledge/Meetings/fireflies, knowledge/Meetings/granola, knowledge/Voice Memos +[main] [GraphBuilder] Will check for new content every 15 seconds +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [EmailLabeling] Starting Email Labeling Service... +[main] [EmailLabeling] Will check for unlabeled emails every 15 seconds +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Starting Note Tagging Service... +[main] [NoteTagging] Will check for untagged notes every 15 seconds +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [InlineTasks] Starting Inline Task Service... +[main] [InlineTasks] Will check for task blocks every 15 seconds +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] [AgentRunner] Starting background agent runner service +[main] [AgentNotes] Starting Agent Notes Service... +[main] [AgentNotes] Will process every 10 seconds +[main] [ChromeSync] Server disabled, watching config for changes... +[main] [GraphBuilder] No new content to process +[main] [Fireflies] Starting sync... +[main] [Granola] Sync disabled in config +[main] [Granola] Sleeping for 5 minutes... +[main] Google OAuth credentials not available or missing required Gmail scope. Sleeping... +[main] Sleeping for 300 seconds... +[main] Google OAuth credentials not available or missing required Calendar/Drive scopes. Sleeping... +[main] Sleeping for 300 seconds... +[main] [Fireflies] Clearing auth cache +[main] [Fireflies] No valid client available +[main] [Fireflies] Sleeping for 1800 seconds... +[main] [OAuth] Clearing Google auth cache +[main] 2026-04-17T14:51:34.860Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T14:51:34.860Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T14:51:34.860Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T14-51-34Z-0033765-001 +[main] 2026-04-17T14:51:34.862Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939803:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953561:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952680:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948052:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944761:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944900:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948008:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948349:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944761:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T14:51:34.901Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T14:51:34.902Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T14:51:34.902Z [run-2026-04-17T14-51-34Z-0033765-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found +[main] Error occurred in handler for 'workspace:readFile': [Error: ENOENT: no such file or directory, lstat '/home/wilber/.rowboat/config/exa-search.json'] { +[main] errno: -2, +[main] code: 'ENOENT', +[main] syscall: 'lstat', +[main] path: '/home/wilber/.rowboat/config/exa-search.json' +[main] } +[main] Error occurred in handler for 'workspace:readFile': [Error: ENOENT: no such file or directory, lstat '/home/wilber/.rowboat/config/exa-search.json'] { +[main] errno: -2, +[main] code: 'ENOENT', +[main] syscall: 'lstat', +[main] path: '/home/wilber/.rowboat/config/exa-search.json' +[main] } +[main] [OAuth] Clearing Google auth cache +[main] [EmailLabeling] Checking for unlabeled emails... +[main] [EmailLabeling] No unlabeled emails found +[main] [NoteTagging] Checking for untagged notes... +[main] [NoteTagging] No untagged notes found +[main] [GraphBuilder] Checking for new content in all sources... +[main] [GraphBuilder] Starting voice memo processing... +[main] [GraphBuilder] Checking directory: /home/wilber/.rowboat/knowledge/Voice Memos +[main] [GraphBuilder] Directory does not exist +[main] [GraphBuilder] No unprocessed voice memos found +[main] [GraphBuilder] No new content to process +[main] [InlineTasks] Checking live notes... +[main] [InlineTasks] Found 1 pending task(s) in knowledge/Today.md +[main] [InlineTasks] Running task: "Create a daily brief for me..." +[main] 2026-04-17T14:51:49.911Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T14:51:49.911Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T14:51:49.911Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] [iter-1] dequeued user message 2026-04-17T14-51-49Z-0033765-001 +[main] 2026-04-17T14:51:49.912Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] [iter-1] running llm turn +[main] ! SENDING payload to model: [{"role":"user","content":"Execute the following instruction from the note \"knowledge/Today.md\":\n\n**Instruction:** Create a daily brief for me\n\n**Full note content for context:**\n```markdown\n---\nlive_note: true\n---\n# Today\n\n```task\n{\"instruction\":\"Create a daily brief for me\",\"schedule\":{\"type\":\"cron\",\"expression\":\"*/15 * * * *\",\"startDate\":\"2026-04-17T14:33:30.959Z\",\"endDate\":\"2027-04-17T14:33:30.959Z\"},\"schedule-label\":\"runs every 15 minutes\",\"targetId\":\"dailybrief\"}\n```\n\n\n\n\n```"}] +[main] -> stream event {"type":"start"} +[main] unknown stream event: {"type":"start"} +[main] LoadAPIKeyError [AI_LoadAPIKeyError]: OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable. +[main] at loadApiKey (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:939803:11) +[main] at Object.getHeaders2 [as headers] (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:953561:32) +[main] at OpenAIResponsesLanguageModel.doStream (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:952680:43) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948052:27) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944761:22 +[main] at async _retryWithExponentialBackoff (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944900:12) +[main] at async streamStep (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948008:15) +[main] at async fn (/home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:948349:9) +[main] at async /home/wilber/rowboat/apps/x/apps/main/.package/dist/main.cjs:944761:22 { +[main] cause: undefined, +[main] [Symbol(vercel.ai.error)]: true, +[main] [Symbol(vercel.ai.error.AI_LoadAPIKeyError)]: true +[main] } +[main] -> stream event {"type":"error","error":{"name":"AI_LoadAPIKeyError"}} +[main] 2026-04-17T14:51:49.925Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] using model: gpt-5.4 +[main] 2026-04-17T14:51:49.925Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] [iter-1] starting loop iteration +[main] 2026-04-17T14:51:49.925Z [run-2026-04-17T14-51-49Z-0033765-000-inline_task_agent] [iter-1] exiting loop, reason: last message is from assistant and text +[main] [InlineTasks] No response from agent for task +[main] [InlineTasks] Updated knowledge/Today.md +[main] [InlineTasks] No pending tasks found diff --git a/apps/x/packages/core/src/auth/types.ts b/apps/x/packages/core/src/auth/types.ts index 249d63b4..ead705e3 100644 --- a/apps/x/packages/core/src/auth/types.ts +++ b/apps/x/packages/core/src/auth/types.ts @@ -7,7 +7,7 @@ export const OAuthTokens = z.object({ access_token: z.string(), refresh_token: z.string().nullable(), expires_at: z.number(), // Unix timestamp - token_type: z.literal('Bearer').optional(), + token_type: z.string().optional(), // Accept any token type (Bearer, bearer, etc.) scopes: z.array(z.string()).optional(), // Granted scopes from OAuth response }); diff --git a/compile-output.log b/compile-output.log new file mode 100644 index 00000000..bd3c51bf --- /dev/null +++ b/compile-output.log @@ -0,0 +1,8 @@ +npm error code ENOENT +npm error syscall open +npm error path /home/wilber/rowboat/package.json +npm error errno -2 +npm error enoent Could not read package.json: Error: ENOENT: no such file or directory, open '/home/wilber/rowboat/package.json' +npm error enoent This is related to npm not being able to find a file. +npm error enoent +npm error A complete log of this run can be found in: /home/wilber/.npm/_logs/2026-04-17T15_19_27_924Z-debug-0.log