Skip to content

Commit 6638567

Browse files
committed
refactor: reduce unnecessary dynamic imports
1 parent 3f2e73b commit 6638567

22 files changed

Lines changed: 114 additions & 65 deletions

File tree

extensions/browser/src/cli/browser-cli-actions-input/shared.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import fs from "node:fs/promises";
12
import type { Command } from "commander";
23
import { callBrowserRequest, type BrowserParentOpts } from "../browser-cli-shared.js";
34
import {
@@ -63,7 +64,6 @@ export function requireRef(ref: string | undefined) {
6364
}
6465

6566
async function readFile(path: string): Promise<string> {
66-
const fs = await import("node:fs/promises");
6767
return await fs.readFile(path, "utf8");
6868
}
6969

extensions/browser/src/cli/browser-cli-inspect.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import fs from "node:fs/promises";
12
import type { Command } from "commander";
23
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
34
import { callBrowserRequest, type BrowserParentOpts } from "./browser-cli-shared.js";
@@ -101,7 +102,6 @@ export function registerBrowserInspectCommands(
101102
);
102103

103104
if (opts.out) {
104-
const fs = await import("node:fs/promises");
105105
if (result.format === "ai") {
106106
await fs.writeFile(opts.out, result.snapshot, "utf8");
107107
} else {

extensions/feishu/src/channel.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import { collectFeishuSecurityAuditFindings } from "./security-audit.js";
6767
import { resolveFeishuSessionConversation } from "./session-conversation.js";
6868
import { resolveFeishuOutboundSessionRoute } from "./session-route.js";
6969
import { feishuSetupAdapter } from "./setup-core.js";
70-
import { feishuSetupWizard } from "./setup-surface.js";
70+
import { feishuSetupWizard, runFeishuLogin } from "./setup-surface.js";
7171
import { looksLikeFeishuId, normalizeFeishuTarget } from "./targets.js";
7272
import type { FeishuConfig, FeishuProbeResult, ResolvedFeishuAccount } from "./types.js";
7373

@@ -1096,7 +1096,6 @@ export const feishuPlugin: ChannelPlugin<ResolvedFeishuAccount, FeishuProbeResul
10961096
const { createClackPrompter } = await import("openclaw/plugin-sdk/setup-runtime");
10971097
const { writeConfigFile } = await import("openclaw/plugin-sdk/config-runtime");
10981098
const prompter = createClackPrompter();
1099-
const { runFeishuLogin } = await import("./setup-surface.js");
11001099
const nextCfg = await runFeishuLogin({ cfg, prompter });
11011100
if (nextCfg !== cfg) {
11021101
await writeConfigFile(nextCfg);

extensions/googlechat/src/monitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
downloadGoogleChatMedia,
1515
deleteGoogleChatMessage,
1616
sendGoogleChatMessage,
17+
uploadGoogleChatAttachment,
1718
updateGoogleChatMessage,
1819
} from "./api.js";
1920
import { type GoogleChatAudienceType } from "./auth.js";
@@ -451,7 +452,6 @@ async function uploadAttachmentForReply(params: {
451452
filename: string;
452453
}) {
453454
const { account, spaceId, buffer, contentType, filename } = params;
454-
const { uploadGoogleChatAttachment } = await import("./api.js");
455455
return await uploadGoogleChatAttachment({
456456
account,
457457
space: spaceId,

extensions/lobster/src/lobster-runner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { stat } from "node:fs/promises";
12
import path from "node:path";
23
import { Readable, Writable } from "node:stream";
34
import {
@@ -177,7 +178,6 @@ function throwOnErrorEnvelope(envelope: LobsterEnvelope): Extract<LobsterEnvelop
177178
}
178179

179180
async function resolveWorkflowFile(candidate: string, cwd: string) {
180-
const { stat } = await import("node:fs/promises");
181181
const resolved = path.isAbsolute(candidate) ? candidate : path.resolve(cwd, candidate);
182182
const fileStat = await stat(resolved);
183183
if (!fileStat.isFile()) {

extensions/mattermost/src/mattermost/slash-state.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*/
1111

1212
import type { IncomingMessage, ServerResponse } from "node:http";
13+
import { Readable } from "node:stream";
1314
import type { MattermostConfig } from "../types.js";
1415
import type { ResolvedMattermostAccount } from "./accounts.js";
1516
import type { OpenClawPluginApi } from "./runtime-api.js";
@@ -284,7 +285,6 @@ export function registerSlashCommandRoute(api: OpenClawPluginApi) {
284285
const matchedHandler = match.handler!;
285286

286287
// Replay: create a synthetic readable that re-emits the buffered body
287-
const { Readable } = await import("node:stream");
288288
const syntheticReq = new Readable({
289289
read() {
290290
this.push(Buffer.from(bodyStr, "utf8"));

extensions/msteams/src/feedback-reflection-store.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import fs from "node:fs/promises";
2+
import path from "node:path";
3+
14
/** Default cooldown between reflections per session (5 minutes). */
25
export const DEFAULT_COOLDOWN_MS = 300_000;
36

@@ -26,8 +29,6 @@ function resolveLegacyLearningsFilePath(storePath: string, sessionKey: string):
2629
async function readLearningsFile(
2730
filePath: string,
2831
): Promise<{ exists: boolean; learnings: string[] }> {
29-
const fs = await import("node:fs/promises");
30-
3132
try {
3233
const content = await fs.readFile(filePath, "utf-8");
3334
const parsed = JSON.parse(content);
@@ -77,9 +78,6 @@ export async function storeSessionLearning(params: {
7778
sessionKey: string;
7879
learning: string;
7980
}): Promise<void> {
80-
const fs = await import("node:fs/promises");
81-
const path = await import("node:path");
82-
8381
const learningsFile = resolveLearningsFilePath(params.storePath, params.sessionKey);
8482
const legacyLearningsFile = resolveLegacyLearningsFilePath(params.storePath, params.sessionKey);
8583
const { exists, learnings: existingLearnings } = await readLearningsFile(learningsFile);

extensions/msteams/src/graph.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { GRAPH_ROOT } from "./attachments/shared.js";
44
const GRAPH_BETA = "https://graph.microsoft.com/beta";
55
import { createMSTeamsTokenProvider, loadMSTeamsSdkWithAuth } from "./sdk.js";
66
import { readAccessToken } from "./token-response.js";
7-
import { resolveMSTeamsCredentials } from "./token.js";
7+
import { resolveDelegatedAccessToken, resolveMSTeamsCredentials } from "./token.js";
88
import { buildUserAgent } from "./user-agent.js";
99

1010
export type GraphUser = {
@@ -199,8 +199,6 @@ export async function resolveGraphToken(
199199

200200
// Try delegated token if requested and configured
201201
if (options?.preferDelegated && msteamsCfg?.delegatedAuth?.enabled && creds.type === "secret") {
202-
// Dynamic import to avoid circular dependency (token.ts imports from graph.ts indirectly)
203-
const { resolveDelegatedAccessToken } = await import("./token.js");
204202
const delegated = await resolveDelegatedAccessToken({
205203
tenantId: creds.tenantId,
206204
clientId: creds.appId,

extensions/msteams/src/monitor-handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import fs from "node:fs/promises";
2+
import path from "node:path";
13
import { resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
24
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";
35
import { formatUnknownError } from "./errors.js";
@@ -388,10 +390,8 @@ async function handleFeedbackInvoke(
388390
const storePath = core.channel.session.resolveStorePath(deps.cfg.session?.store, {
389391
agentId: route.agentId,
390392
});
391-
const fs = await import("node:fs/promises");
392-
const pathMod = await import("node:path");
393393
const safeKey = route.sessionKey.replace(/[^a-zA-Z0-9_-]/g, "_");
394-
const transcriptFile = pathMod.join(storePath, `${safeKey}.jsonl`);
394+
const transcriptFile = path.join(storePath, `${safeKey}.jsonl`);
395395
await fs.appendFile(transcriptFile, JSON.stringify(feedbackEvent) + "\n", "utf-8").catch(() => {
396396
// Best effort — transcript dir may not exist yet
397397
});

extensions/msteams/src/probe.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
import { formatUnknownError } from "./errors.js";
77
import { createMSTeamsTokenProvider, loadMSTeamsSdkWithAuth } from "./sdk.js";
88
import { readAccessToken } from "./token-response.js";
9-
import { resolveMSTeamsCredentials } from "./token.js";
9+
import { loadDelegatedTokens, resolveMSTeamsCredentials } from "./token.js";
1010

1111
export type ProbeMSTeamsResult = BaseProbeResult<string> & {
1212
appId?: string;
@@ -100,7 +100,6 @@ export async function probeMSTeams(cfg?: MSTeamsConfig): Promise<ProbeMSTeamsRes
100100
let delegatedAuth: ProbeMSTeamsResult["delegatedAuth"];
101101
if (cfg?.delegatedAuth?.enabled) {
102102
try {
103-
const { loadDelegatedTokens } = await import("./token.js");
104103
const tokens = loadDelegatedTokens();
105104
if (tokens) {
106105
const isExpired = tokens.expiresAt <= Date.now();

0 commit comments

Comments
 (0)