From 91749930d4a193b22adc122fd7eb5d9b33f84b77 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 6 Apr 2026 15:09:27 +0100 Subject: [PATCH] fix: restore check-time path inference --- extensions/tsconfig.package-boundary.base.json | 5 +++++ src/cli/command-path-matches.ts | 14 +++++++------- src/cli/program/routed-command-definitions.ts | 9 +++++---- .../extension-package-project-boundaries.test.ts | 7 ++++++- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/extensions/tsconfig.package-boundary.base.json b/extensions/tsconfig.package-boundary.base.json index 012a1b1b4c3..cb57a99d484 100644 --- a/extensions/tsconfig.package-boundary.base.json +++ b/extensions/tsconfig.package-boundary.base.json @@ -3,6 +3,11 @@ "compilerOptions": { "ignoreDeprecations": "6.0", "paths": { + "openclaw/extension-api": ["../src/extensionAPI.ts"], + "openclaw/plugin-sdk": ["../src/plugin-sdk/index.ts"], + "openclaw/plugin-sdk/*": ["../src/plugin-sdk/*.ts"], + "openclaw/plugin-sdk/account-id": ["../src/plugin-sdk/account-id.ts"], + "@openclaw/*": ["../extensions/*"], "@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"] } } diff --git a/src/cli/command-path-matches.ts b/src/cli/command-path-matches.ts index 45d333ef6ec..a97a9258c2e 100644 --- a/src/cli/command-path-matches.ts +++ b/src/cli/command-path-matches.ts @@ -1,13 +1,13 @@ -export type CommandPathMatchRule = - | readonly string[] - | { - pattern: readonly string[]; - exact?: boolean; - }; +export type StructuredCommandPathMatchRule = { + pattern: readonly string[]; + exact?: boolean; +}; + +export type CommandPathMatchRule = readonly string[] | StructuredCommandPathMatchRule; function isStructuredCommandPathMatchRule( rule: CommandPathMatchRule, -): rule is Extract { +): rule is StructuredCommandPathMatchRule { return !Array.isArray(rule); } diff --git a/src/cli/program/routed-command-definitions.ts b/src/cli/program/routed-command-definitions.ts index 61666179e98..d0b34866d61 100644 --- a/src/cli/program/routed-command-definitions.ts +++ b/src/cli/program/routed-command-definitions.ts @@ -16,10 +16,11 @@ export type RoutedCommandDefinition = { runParsedArgs: (args: TArgs) => Promise; }; -function defineRoutedCommand( - definition: RoutedCommandDefinition, -): RoutedCommandDefinition { - return definition; +function defineRoutedCommand unknown>(definition: { + parseArgs: TParse; + runParsedArgs: (args: Exclude, null>) => Promise; +}): RoutedCommandDefinition, null>> { + return definition as RoutedCommandDefinition, null>>; } export const routedCommandDefinitions = { diff --git a/src/plugins/contracts/extension-package-project-boundaries.test.ts b/src/plugins/contracts/extension-package-project-boundaries.test.ts index 70145c40e64..68f9631287e 100644 --- a/src/plugins/contracts/extension-package-project-boundaries.test.ts +++ b/src/plugins/contracts/extension-package-project-boundaries.test.ts @@ -32,7 +32,12 @@ describe("opt-in extension package boundaries", () => { const tsconfig = readJsonFile("extensions/tsconfig.package-boundary.base.json"); expect(tsconfig.extends).toBe("../tsconfig.json"); expect(tsconfig.compilerOptions?.paths).toEqual({ - "@openclaw/plugin-sdk/*": ["packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"], + "openclaw/extension-api": ["../src/extensionAPI.ts"], + "openclaw/plugin-sdk": ["../src/plugin-sdk/index.ts"], + "openclaw/plugin-sdk/*": ["../src/plugin-sdk/*.ts"], + "openclaw/plugin-sdk/account-id": ["../src/plugin-sdk/account-id.ts"], + "@openclaw/*": ["../extensions/*"], + "@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"], }); });