claude-code as channel model, container trust/permissions fixes, terminal cwd fix

- add claude-code as virtual model in channel messaging (telegram/discord/whatsapp)
- new send-claude-code.ts: docker exec claude -p with session resumption
- route claude-code model in sendAndAwait before Pi pipeline
- append claude-code to listPiModels output
- fix container .claude mount (rw for sub-mounts), hooks format (matcher-based)
- pre-seed hasTrustDialogAccepted and bypassPermissions in container settings
- git init in entrypoint to skip workspace trust prompt
- fix ~/~ double-tilde in CommandTerminalWrapper cwd resolution
- remove --continue from claude-code panel command

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-02 20:00:45 +00:00
co-authored by Claude Opus 4.6
parent 192ae63c0e
commit 0068244356
20 changed files with 1168 additions and 73 deletions
+9
View File
@@ -29,6 +29,7 @@ import { channelsRouter } from './channels/routes';
import { browserRouter } from './api/browser/router';
import { appsRouter, appServeRouter } from './api/apps';
import { bugReportRouter } from './api/bug-report/bug-report';
import { broadcastPanelRefresh } from './api/terminal/websocket';
import { CustomError } from './custom-errors';
import { userMiddleware, bodyParser, isOriginAllowed, superAdminMiddleware } from './_middlewares';
@@ -56,6 +57,14 @@ honoServer.route('/api/waitlist', waitlistRouter);
honoServer.route('/api/dev-server-proxy', devServerProxyRouter);
honoServer.route('/api/app-serve', appServeRouter);
honoServer.get('/api/integrations/google/callback', googleCallbackHandler);
honoServer.post('/api/hooks/claude-done', async (ctx) => {
const body = await ctx.req.json().catch(() => null);
const email = (body as Record<string, unknown> | null)?.email;
if (typeof email === 'string' && email.includes('@')) {
broadcastPanelRefresh(email);
}
return ctx.json({ ok: true });
});
honoServer.get('/api/server-settings/onboarding-complete', async (ctx) => {
const { readServerSettings } = await import('officerdb');
const settings = await readServerSettings();