mirror of
https://github.com/qwibitai/nanoclaw.git
synced 2026-06-12 18:11:51 +08:00
style: apply prettier to merged files
This commit is contained in:
@@ -15,8 +15,12 @@ import { registerChannelAdapter } from './channel-registry.js';
|
||||
registerChannelAdapter('linear', {
|
||||
factory: () => {
|
||||
const env = readEnvFile([
|
||||
'LINEAR_API_KEY', 'LINEAR_CLIENT_ID', 'LINEAR_CLIENT_SECRET',
|
||||
'LINEAR_WEBHOOK_SECRET', 'LINEAR_BOT_USERNAME', 'LINEAR_TEAM_KEY',
|
||||
'LINEAR_API_KEY',
|
||||
'LINEAR_CLIENT_ID',
|
||||
'LINEAR_CLIENT_SECRET',
|
||||
'LINEAR_WEBHOOK_SECRET',
|
||||
'LINEAR_BOT_USERNAME',
|
||||
'LINEAR_TEAM_KEY',
|
||||
]);
|
||||
if (!env.LINEAR_API_KEY && !env.LINEAR_CLIENT_ID) return null;
|
||||
|
||||
|
||||
+11
-5
@@ -176,10 +176,12 @@ registerChannelAdapter('wechat', {
|
||||
connected = false;
|
||||
});
|
||||
|
||||
client.start({
|
||||
loadSyncBuf,
|
||||
saveSyncBuf,
|
||||
}).catch((err) => log.error('WeChat: monitor loop crashed', { err }));
|
||||
client
|
||||
.start({
|
||||
loadSyncBuf,
|
||||
saveSyncBuf,
|
||||
})
|
||||
.catch((err) => log.error('WeChat: monitor loop crashed', { err }));
|
||||
|
||||
connected = true;
|
||||
log.info('WeChat adapter ready', { accountId });
|
||||
@@ -195,7 +197,11 @@ registerChannelAdapter('wechat', {
|
||||
return connected;
|
||||
},
|
||||
|
||||
async deliver(platformId: string, _threadId: string | null, message: OutboundMessage): Promise<string | undefined> {
|
||||
async deliver(
|
||||
platformId: string,
|
||||
_threadId: string | null,
|
||||
message: OutboundMessage,
|
||||
): Promise<string | undefined> {
|
||||
if (!client) return undefined;
|
||||
const to = platformId.replace(/^wechat:/, '');
|
||||
const text = messageText(message);
|
||||
|
||||
@@ -75,7 +75,9 @@ export const migration010: Migration = {
|
||||
`);
|
||||
|
||||
// Backfill existing rows in JS (parsing JSON per-row is painful in pure SQL).
|
||||
const rows = db.prepare('SELECT id, trigger_rules, response_scope FROM messaging_group_agents').all() as LegacyRow[];
|
||||
const rows = db
|
||||
.prepare('SELECT id, trigger_rules, response_scope FROM messaging_group_agents')
|
||||
.all() as LegacyRow[];
|
||||
const update = db.prepare(
|
||||
`UPDATE messaging_group_agents
|
||||
SET engage_mode = ?,
|
||||
|
||||
@@ -96,7 +96,9 @@ async function handleRegisteredApproval(
|
||||
log.info('Approval handled', { approvalId: approval.approval_id, action: approval.action, userId });
|
||||
} catch (err) {
|
||||
log.error('Approval handler threw', { approvalId: approval.approval_id, action: approval.action, err });
|
||||
notify(`Your ${approval.action} was approved, but applying it failed: ${err instanceof Error ? err.message : String(err)}.`);
|
||||
notify(
|
||||
`Your ${approval.action} was approved, but applying it failed: ${err instanceof Error ? err.message : String(err)}.`,
|
||||
);
|
||||
}
|
||||
|
||||
deletePendingApproval(approval.approval_id);
|
||||
|
||||
@@ -22,4 +22,3 @@ import './scheduling/index.js';
|
||||
import './permissions/index.js';
|
||||
import './agent-to-agent/index.js';
|
||||
import './self-mod/index.js';
|
||||
|
||||
|
||||
@@ -46,7 +46,11 @@ async function handleInteractiveResponse(payload: ResponsePayload): Promise<bool
|
||||
});
|
||||
|
||||
deletePendingQuestion(payload.questionId);
|
||||
log.info('Question response routed', { questionId: payload.questionId, selectedOption: payload.value, sessionId: session.id });
|
||||
log.info('Question response routed', {
|
||||
questionId: payload.questionId,
|
||||
selectedOption: payload.value,
|
||||
sessionId: session.id,
|
||||
});
|
||||
|
||||
await wakeContainer(session);
|
||||
return true;
|
||||
|
||||
@@ -197,9 +197,9 @@ describe('unknown-channel registration flow', () => {
|
||||
await new Promise((r) => setTimeout(r, 10));
|
||||
|
||||
const { getDb } = await import('../../db/connection.js');
|
||||
const pending = getDb()
|
||||
.prepare('SELECT messaging_group_id FROM pending_channel_approvals')
|
||||
.get() as { messaging_group_id: string };
|
||||
const pending = getDb().prepare('SELECT messaging_group_id FROM pending_channel_approvals').get() as {
|
||||
messaging_group_id: string;
|
||||
};
|
||||
expect(pending).toBeDefined();
|
||||
|
||||
// Owner clicks approve.
|
||||
@@ -240,9 +240,8 @@ describe('unknown-channel registration flow', () => {
|
||||
expect(member).toBeDefined();
|
||||
|
||||
// Pending row cleared and container woken via replay.
|
||||
const stillPending = (
|
||||
getDb().prepare('SELECT COUNT(*) AS c FROM pending_channel_approvals').get() as { c: number }
|
||||
).c;
|
||||
const stillPending = (getDb().prepare('SELECT COUNT(*) AS c FROM pending_channel_approvals').get() as { c: number })
|
||||
.c;
|
||||
expect(stillPending).toBe(0);
|
||||
expect(wakeContainer).toHaveBeenCalled();
|
||||
});
|
||||
@@ -255,9 +254,9 @@ describe('unknown-channel registration flow', () => {
|
||||
await new Promise((r) => setTimeout(r, 10));
|
||||
|
||||
const { getDb } = await import('../../db/connection.js');
|
||||
const pending = getDb()
|
||||
.prepare('SELECT messaging_group_id FROM pending_channel_approvals')
|
||||
.get() as { messaging_group_id: string };
|
||||
const pending = getDb().prepare('SELECT messaging_group_id FROM pending_channel_approvals').get() as {
|
||||
messaging_group_id: string;
|
||||
};
|
||||
|
||||
for (const handler of getResponseHandlers()) {
|
||||
const claimed = await handler({
|
||||
@@ -285,9 +284,9 @@ describe('unknown-channel registration flow', () => {
|
||||
await routeInbound(groupMention('chat-deny'));
|
||||
await new Promise((r) => setTimeout(r, 10));
|
||||
const { getDb } = await import('../../db/connection.js');
|
||||
const pending = getDb()
|
||||
.prepare('SELECT messaging_group_id FROM pending_channel_approvals')
|
||||
.get() as { messaging_group_id: string };
|
||||
const pending = getDb().prepare('SELECT messaging_group_id FROM pending_channel_approvals').get() as {
|
||||
messaging_group_id: string;
|
||||
};
|
||||
|
||||
for (const handler of getResponseHandlers()) {
|
||||
const claimed = await handler({
|
||||
@@ -317,9 +316,8 @@ describe('unknown-channel registration flow', () => {
|
||||
await routeInbound(groupMention('chat-deny', '@bot please'));
|
||||
await new Promise((r) => setTimeout(r, 10));
|
||||
expect(deliverMock).not.toHaveBeenCalled();
|
||||
const stillPending = (
|
||||
getDb().prepare('SELECT COUNT(*) AS c FROM pending_channel_approvals').get() as { c: number }
|
||||
).c;
|
||||
const stillPending = (getDb().prepare('SELECT COUNT(*) AS c FROM pending_channel_approvals').get() as { c: number })
|
||||
.c;
|
||||
expect(stillPending).toBe(0);
|
||||
});
|
||||
|
||||
@@ -330,9 +328,9 @@ describe('unknown-channel registration flow', () => {
|
||||
await routeInbound(groupMention('chat-unauth'));
|
||||
await new Promise((r) => setTimeout(r, 10));
|
||||
const { getDb } = await import('../../db/connection.js');
|
||||
const pending = getDb()
|
||||
.prepare('SELECT messaging_group_id FROM pending_channel_approvals')
|
||||
.get() as { messaging_group_id: string };
|
||||
const pending = getDb().prepare('SELECT messaging_group_id FROM pending_channel_approvals').get() as {
|
||||
messaging_group_id: string;
|
||||
};
|
||||
|
||||
for (const handler of getResponseHandlers()) {
|
||||
const claimed = await handler({
|
||||
@@ -353,9 +351,8 @@ describe('unknown-channel registration flow', () => {
|
||||
.get(pending.messaging_group_id) as { c: number }
|
||||
).c;
|
||||
expect(mgaCount).toBe(0);
|
||||
const stillPending = (
|
||||
getDb().prepare('SELECT COUNT(*) AS c FROM pending_channel_approvals').get() as { c: number }
|
||||
).c;
|
||||
const stillPending = (getDb().prepare('SELECT COUNT(*) AS c FROM pending_channel_approvals').get() as { c: number })
|
||||
.c;
|
||||
expect(stillPending).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -37,19 +37,14 @@ export function createPendingSenderApproval(row: PendingSenderApproval): void {
|
||||
}
|
||||
|
||||
export function getPendingSenderApproval(id: string): PendingSenderApproval | undefined {
|
||||
return getDb()
|
||||
.prepare('SELECT * FROM pending_sender_approvals WHERE id = ?')
|
||||
.get(id) as PendingSenderApproval | undefined;
|
||||
return getDb().prepare('SELECT * FROM pending_sender_approvals WHERE id = ?').get(id) as
|
||||
| PendingSenderApproval
|
||||
| undefined;
|
||||
}
|
||||
|
||||
export function hasInFlightSenderApproval(
|
||||
messagingGroupId: string,
|
||||
senderIdentity: string,
|
||||
): boolean {
|
||||
export function hasInFlightSenderApproval(messagingGroupId: string, senderIdentity: string): boolean {
|
||||
const row = getDb()
|
||||
.prepare(
|
||||
'SELECT 1 AS x FROM pending_sender_approvals WHERE messaging_group_id = ? AND sender_identity = ?',
|
||||
)
|
||||
.prepare('SELECT 1 AS x FROM pending_sender_approvals WHERE messaging_group_id = ? AND sender_identity = ?')
|
||||
.get(messagingGroupId, senderIdentity) as { x: number } | undefined;
|
||||
return row !== undefined;
|
||||
}
|
||||
|
||||
@@ -59,9 +59,7 @@ describe('handleRecurrence', () => {
|
||||
await handleRecurrence(db, fakeSession());
|
||||
|
||||
const rows = db
|
||||
.prepare(
|
||||
`SELECT id, status, process_after, recurrence, series_id FROM messages_in ORDER BY seq`,
|
||||
)
|
||||
.prepare(`SELECT id, status, process_after, recurrence, series_id FROM messages_in ORDER BY seq`)
|
||||
.all() as Array<{
|
||||
id: string;
|
||||
status: string;
|
||||
|
||||
@@ -24,7 +24,10 @@ export const applyInstallPackages: ApprovalHandler = async ({ session, payload,
|
||||
if (payload.npm) cfg.packages.npm.push(...(payload.npm as string[]));
|
||||
});
|
||||
|
||||
const pkgs = [...((payload.apt as string[] | undefined) || []), ...((payload.npm as string[] | undefined) || [])].join(', ');
|
||||
const pkgs = [
|
||||
...((payload.apt as string[] | undefined) || []),
|
||||
...((payload.npm as string[] | undefined) || []),
|
||||
].join(', ');
|
||||
log.info('Package install approved', { agentGroupId: session.agent_group_id, userId });
|
||||
try {
|
||||
await buildAgentGroupImage(session.agent_group_id);
|
||||
|
||||
Reference in New Issue
Block a user