@nextclaw/service 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/services/gateway/managers/gateway-extension.manager.d.ts +6 -0
- package/dist/shared/services/gateway/managers/gateway-extension.manager.d.ts.map +1 -1
- package/dist/shared/services/gateway/managers/gateway-extension.manager.js +1 -0
- package/dist/shared/services/gateway/managers/gateway-extension.manager.js.map +1 -1
- package/package.json +25 -25
|
@@ -7,6 +7,12 @@ declare class GatewayExtensionManager {
|
|
|
7
7
|
constructor(gateway: NextclawGatewayRuntime);
|
|
8
8
|
getChannelBindings: () => ExtensionChannelBinding[];
|
|
9
9
|
getUiMetadata: () => ExtensionUiMetadata[];
|
|
10
|
+
authenticateEventStreamCredential: (input: {
|
|
11
|
+
extensionId: string | null;
|
|
12
|
+
token: string | null;
|
|
13
|
+
}) => {
|
|
14
|
+
extensionId: string;
|
|
15
|
+
} | null;
|
|
10
16
|
load: () => Promise<void>;
|
|
11
17
|
reloadForConfigChange: (params: {
|
|
12
18
|
config: Config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-extension.manager.d.ts","names":[],"sources":["../../../../../src/shared/services/gateway/managers/gateway-extension.manager.ts"],"mappings":";;;;cAIa,uBAAA;EAAA,iBACkB,OAAA;cAAA,OAAA,EAAS,sBAAA;EAEtC,kBAAA,QAAyB,uBAAA;EAEzB,aAAA,QAAoB,mBAAA;EAEpB,IAAA,QAAiB,OAAA;EAiCjB,qBAAA,GAA+B,MAAA;IAC7B,MAAA,EAAQ,MAAA;IACR,YAAA;EAAA,MACE,OAAA;IAAU,eAAA;EAAA;EAUd,qBAAA,GAA+B,YAAA,eAAyB,OAAA;EAWxD,oBAAA;EAAA,QAWQ,cAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"gateway-extension.manager.d.ts","names":[],"sources":["../../../../../src/shared/services/gateway/managers/gateway-extension.manager.ts"],"mappings":";;;;cAIa,uBAAA;EAAA,iBACkB,OAAA;cAAA,OAAA,EAAS,sBAAA;EAEtC,kBAAA,QAAyB,uBAAA;EAEzB,aAAA,QAAoB,mBAAA;EAEpB,iCAAA,GAAqC,KAAA;IACnC,WAAA;IACA,KAAA;EAAA;IACI,WAAA;EAAA;EAGN,IAAA,QAAiB,OAAA;EAiCjB,qBAAA,GAA+B,MAAA;IAC7B,MAAA,EAAQ,MAAA;IACR,YAAA;EAAA,MACE,OAAA;IAAU,eAAA;EAAA;EAUd,qBAAA,GAA+B,YAAA,eAAyB,OAAA;EAWxD,oBAAA;EAAA,QAWQ,cAAA;AAAA"}
|
|
@@ -6,6 +6,7 @@ var GatewayExtensionManager = class {
|
|
|
6
6
|
}
|
|
7
7
|
getChannelBindings = () => this.gateway.kernel.extensions.getChannelBindings();
|
|
8
8
|
getUiMetadata = () => this.gateway.kernel.extensions.getUiMetadata();
|
|
9
|
+
authenticateEventStreamCredential = (input) => this.gateway.kernel.extensions.authenticateEventStreamCredential(input);
|
|
9
10
|
load = async () => {
|
|
10
11
|
const config = this.gateway.configManager.loadConfig();
|
|
11
12
|
this.gateway.bootstrapStatus.markChannelsPending();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-extension.manager.js","names":[],"sources":["../../../../../src/shared/services/gateway/managers/gateway-extension.manager.ts"],"sourcesContent":["import type { Config, ExtensionChannelBinding, ExtensionUiMetadata } from \"@nextclaw/core\";\nimport { eventKeys } from \"@nextclaw/shared\";\nimport type { NextclawGatewayRuntime } from \"@nextclaw-service/shared/services/gateway/nextclaw-gateway-runtime.service.js\";\n\nexport class GatewayExtensionManager {\n constructor(private readonly gateway: NextclawGatewayRuntime) {}\n\n getChannelBindings = (): ExtensionChannelBinding[] => this.gateway.kernel.extensions.getChannelBindings();\n\n getUiMetadata = (): ExtensionUiMetadata[] => this.gateway.kernel.extensions.getUiMetadata();\n\n load = async (): Promise<void> => {\n const config = this.gateway.configManager.loadConfig();\n this.gateway.bootstrapStatus.markChannelsPending();\n\n try {\n const result = await this.gateway.kernel.extensions.load({\n config,\n onLoadStart: ({ totalExtensionCount }) => {\n this.gateway.bootstrapStatus.markExtensionLoadingRunning({ totalExtensionCount });\n },\n onExtensionProcessed: ({ loadedExtensionCount, totalExtensionCount }) => {\n this.gateway.bootstrapStatus.markExtensionLoadingProgress({\n loadedExtensionCount,\n totalExtensionCount,\n });\n },\n });\n this.logDiagnostics(result.diagnostics);\n\n if (result.shouldRestartChannels) {\n await this.gateway.configManager.rebuildChannels(config, { start: false });\n }\n this.publishConfigChanges();\n this.gateway.bootstrapStatus.markExtensionLoadingReady({\n loadedExtensionCount: result.loadedExtensionCount,\n totalExtensionCount: result.totalExtensionCount,\n });\n } catch (error) {\n this.gateway.bootstrapStatus.markExtensionLoadingError(error instanceof Error ? error.message : String(error));\n throw error;\n }\n };\n\n reloadForConfigChange = async (params: {\n config: Config;\n changedPaths: string[];\n }): Promise<{ restartChannels: boolean }> => {\n const result = await this.gateway.kernel.extensions.reloadForConfigChange({\n config: params.config,\n changedPaths: params.changedPaths,\n });\n this.logDiagnostics(result.diagnostics);\n this.publishConfigChanges();\n return { restartChannels: result.shouldRestartChannels };\n };\n\n reloadForDevHotReload = async (changedPaths: string[]): Promise<void> => {\n const config = this.gateway.configManager.loadConfig();\n const result = await this.reloadForConfigChange({\n config,\n changedPaths,\n });\n if (result.restartChannels) {\n await this.gateway.configManager.rebuildChannels(config, { start: true });\n }\n };\n\n publishConfigChanges = (): void => {\n this.gateway.appEventBus.emit(eventKeys.configUpdated, { path: \"channels\" }, {\n emittedAt: new Date().toISOString(),\n source: \"backend\",\n });\n this.gateway.appEventBus.emit(eventKeys.configUpdated, { path: \"extensions\" }, {\n emittedAt: new Date().toISOString(),\n source: \"backend\",\n });\n };\n\n private logDiagnostics = (\n diagnostics: Array<{ level: \"warn\" | \"error\"; message: string; extensionId?: string; source?: string }>,\n ): void => {\n for (const diagnostic of diagnostics) {\n const prefix = diagnostic.extensionId ? `${diagnostic.extensionId}: ` : \"\";\n const message = `${prefix}${diagnostic.message}`;\n if (diagnostic.level === \"error\") {\n console.error(`[extensions] ${message}`);\n continue;\n }\n console.warn(`[extensions] ${message}`);\n }\n };\n}\n"],"mappings":";;AAIA,IAAa,0BAAb,MAAqC;CACnC,YAAY,SAAkD;AAAjC,OAAA,UAAA;;CAE7B,2BAAsD,KAAK,QAAQ,OAAO,WAAW,oBAAoB;CAEzG,sBAA6C,KAAK,QAAQ,OAAO,WAAW,eAAe;CAE3F,OAAO,YAA2B;EAChC,MAAM,SAAS,KAAK,QAAQ,cAAc,YAAY;AACtD,OAAK,QAAQ,gBAAgB,qBAAqB;AAElD,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,WAAW,KAAK;IACvD;IACA,cAAc,EAAE,0BAA0B;AACxC,UAAK,QAAQ,gBAAgB,4BAA4B,EAAE,qBAAqB,CAAC;;IAEnF,uBAAuB,EAAE,sBAAsB,0BAA0B;AACvE,UAAK,QAAQ,gBAAgB,6BAA6B;MACxD;MACA;MACD,CAAC;;IAEL,CAAC;AACF,QAAK,eAAe,OAAO,YAAY;AAEvC,OAAI,OAAO,sBACT,OAAM,KAAK,QAAQ,cAAc,gBAAgB,QAAQ,EAAE,OAAO,OAAO,CAAC;AAE5E,QAAK,sBAAsB;AAC3B,QAAK,QAAQ,gBAAgB,0BAA0B;IACrD,sBAAsB,OAAO;IAC7B,qBAAqB,OAAO;IAC7B,CAAC;WACK,OAAO;AACd,QAAK,QAAQ,gBAAgB,0BAA0B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;AAC9G,SAAM;;;CAIV,wBAAwB,OAAO,WAGc;EAC3C,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,WAAW,sBAAsB;GACxE,QAAQ,OAAO;GACf,cAAc,OAAO;GACtB,CAAC;AACF,OAAK,eAAe,OAAO,YAAY;AACvC,OAAK,sBAAsB;AAC3B,SAAO,EAAE,iBAAiB,OAAO,uBAAuB;;CAG1D,wBAAwB,OAAO,iBAA0C;EACvE,MAAM,SAAS,KAAK,QAAQ,cAAc,YAAY;AAKtD,OAJe,MAAM,KAAK,sBAAsB;GAC9C;GACA;GACD,CAAC,EACS,gBACT,OAAM,KAAK,QAAQ,cAAc,gBAAgB,QAAQ,EAAE,OAAO,MAAM,CAAC;;CAI7E,6BAAmC;AACjC,OAAK,QAAQ,YAAY,KAAK,UAAU,eAAe,EAAE,MAAM,YAAY,EAAE;GAC3E,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,QAAQ;GACT,CAAC;AACF,OAAK,QAAQ,YAAY,KAAK,UAAU,eAAe,EAAE,MAAM,cAAc,EAAE;GAC7E,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,QAAQ;GACT,CAAC;;CAGJ,kBACE,gBACS;AACT,OAAK,MAAM,cAAc,aAAa;GAEpC,MAAM,UAAU,GADD,WAAW,cAAc,GAAG,WAAW,YAAY,MAAM,KAC5C,WAAW;AACvC,OAAI,WAAW,UAAU,SAAS;AAChC,YAAQ,MAAM,gBAAgB,UAAU;AACxC;;AAEF,WAAQ,KAAK,gBAAgB,UAAU"}
|
|
1
|
+
{"version":3,"file":"gateway-extension.manager.js","names":[],"sources":["../../../../../src/shared/services/gateway/managers/gateway-extension.manager.ts"],"sourcesContent":["import type { Config, ExtensionChannelBinding, ExtensionUiMetadata } from \"@nextclaw/core\";\nimport { eventKeys } from \"@nextclaw/shared\";\nimport type { NextclawGatewayRuntime } from \"@nextclaw-service/shared/services/gateway/nextclaw-gateway-runtime.service.js\";\n\nexport class GatewayExtensionManager {\n constructor(private readonly gateway: NextclawGatewayRuntime) {}\n\n getChannelBindings = (): ExtensionChannelBinding[] => this.gateway.kernel.extensions.getChannelBindings();\n\n getUiMetadata = (): ExtensionUiMetadata[] => this.gateway.kernel.extensions.getUiMetadata();\n\n authenticateEventStreamCredential = (input: {\n extensionId: string | null;\n token: string | null;\n }): { extensionId: string } | null =>\n this.gateway.kernel.extensions.authenticateEventStreamCredential(input);\n\n load = async (): Promise<void> => {\n const config = this.gateway.configManager.loadConfig();\n this.gateway.bootstrapStatus.markChannelsPending();\n\n try {\n const result = await this.gateway.kernel.extensions.load({\n config,\n onLoadStart: ({ totalExtensionCount }) => {\n this.gateway.bootstrapStatus.markExtensionLoadingRunning({ totalExtensionCount });\n },\n onExtensionProcessed: ({ loadedExtensionCount, totalExtensionCount }) => {\n this.gateway.bootstrapStatus.markExtensionLoadingProgress({\n loadedExtensionCount,\n totalExtensionCount,\n });\n },\n });\n this.logDiagnostics(result.diagnostics);\n\n if (result.shouldRestartChannels) {\n await this.gateway.configManager.rebuildChannels(config, { start: false });\n }\n this.publishConfigChanges();\n this.gateway.bootstrapStatus.markExtensionLoadingReady({\n loadedExtensionCount: result.loadedExtensionCount,\n totalExtensionCount: result.totalExtensionCount,\n });\n } catch (error) {\n this.gateway.bootstrapStatus.markExtensionLoadingError(error instanceof Error ? error.message : String(error));\n throw error;\n }\n };\n\n reloadForConfigChange = async (params: {\n config: Config;\n changedPaths: string[];\n }): Promise<{ restartChannels: boolean }> => {\n const result = await this.gateway.kernel.extensions.reloadForConfigChange({\n config: params.config,\n changedPaths: params.changedPaths,\n });\n this.logDiagnostics(result.diagnostics);\n this.publishConfigChanges();\n return { restartChannels: result.shouldRestartChannels };\n };\n\n reloadForDevHotReload = async (changedPaths: string[]): Promise<void> => {\n const config = this.gateway.configManager.loadConfig();\n const result = await this.reloadForConfigChange({\n config,\n changedPaths,\n });\n if (result.restartChannels) {\n await this.gateway.configManager.rebuildChannels(config, { start: true });\n }\n };\n\n publishConfigChanges = (): void => {\n this.gateway.appEventBus.emit(eventKeys.configUpdated, { path: \"channels\" }, {\n emittedAt: new Date().toISOString(),\n source: \"backend\",\n });\n this.gateway.appEventBus.emit(eventKeys.configUpdated, { path: \"extensions\" }, {\n emittedAt: new Date().toISOString(),\n source: \"backend\",\n });\n };\n\n private logDiagnostics = (\n diagnostics: Array<{ level: \"warn\" | \"error\"; message: string; extensionId?: string; source?: string }>,\n ): void => {\n for (const diagnostic of diagnostics) {\n const prefix = diagnostic.extensionId ? `${diagnostic.extensionId}: ` : \"\";\n const message = `${prefix}${diagnostic.message}`;\n if (diagnostic.level === \"error\") {\n console.error(`[extensions] ${message}`);\n continue;\n }\n console.warn(`[extensions] ${message}`);\n }\n };\n}\n"],"mappings":";;AAIA,IAAa,0BAAb,MAAqC;CACnC,YAAY,SAAkD;AAAjC,OAAA,UAAA;;CAE7B,2BAAsD,KAAK,QAAQ,OAAO,WAAW,oBAAoB;CAEzG,sBAA6C,KAAK,QAAQ,OAAO,WAAW,eAAe;CAE3F,qCAAqC,UAInC,KAAK,QAAQ,OAAO,WAAW,kCAAkC,MAAM;CAEzE,OAAO,YAA2B;EAChC,MAAM,SAAS,KAAK,QAAQ,cAAc,YAAY;AACtD,OAAK,QAAQ,gBAAgB,qBAAqB;AAElD,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,WAAW,KAAK;IACvD;IACA,cAAc,EAAE,0BAA0B;AACxC,UAAK,QAAQ,gBAAgB,4BAA4B,EAAE,qBAAqB,CAAC;;IAEnF,uBAAuB,EAAE,sBAAsB,0BAA0B;AACvE,UAAK,QAAQ,gBAAgB,6BAA6B;MACxD;MACA;MACD,CAAC;;IAEL,CAAC;AACF,QAAK,eAAe,OAAO,YAAY;AAEvC,OAAI,OAAO,sBACT,OAAM,KAAK,QAAQ,cAAc,gBAAgB,QAAQ,EAAE,OAAO,OAAO,CAAC;AAE5E,QAAK,sBAAsB;AAC3B,QAAK,QAAQ,gBAAgB,0BAA0B;IACrD,sBAAsB,OAAO;IAC7B,qBAAqB,OAAO;IAC7B,CAAC;WACK,OAAO;AACd,QAAK,QAAQ,gBAAgB,0BAA0B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;AAC9G,SAAM;;;CAIV,wBAAwB,OAAO,WAGc;EAC3C,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,WAAW,sBAAsB;GACxE,QAAQ,OAAO;GACf,cAAc,OAAO;GACtB,CAAC;AACF,OAAK,eAAe,OAAO,YAAY;AACvC,OAAK,sBAAsB;AAC3B,SAAO,EAAE,iBAAiB,OAAO,uBAAuB;;CAG1D,wBAAwB,OAAO,iBAA0C;EACvE,MAAM,SAAS,KAAK,QAAQ,cAAc,YAAY;AAKtD,OAJe,MAAM,KAAK,sBAAsB;GAC9C;GACA;GACD,CAAC,EACS,gBACT,OAAM,KAAK,QAAQ,cAAc,gBAAgB,QAAQ,EAAE,OAAO,MAAM,CAAC;;CAI7E,6BAAmC;AACjC,OAAK,QAAQ,YAAY,KAAK,UAAU,eAAe,EAAE,MAAM,YAAY,EAAE;GAC3E,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,QAAQ;GACT,CAAC;AACF,OAAK,QAAQ,YAAY,KAAK,UAAU,eAAe,EAAE,MAAM,cAAc,EAAE;GAC7E,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,QAAQ;GACT,CAAC;;CAGJ,kBACE,gBACS;AACT,OAAK,MAAM,cAAc,aAAa;GAEpC,MAAM,UAAU,GADD,WAAW,cAAc,GAAG,WAAW,YAAY,MAAM,KAC5C,WAAW;AACvC,OAAI,WAAW,UAAU,SAAS;AAChC,YAAQ,MAAM,gBAAgB,UAAU;AACxC;;AAEF,WAAQ,KAAK,gBAAgB,UAAU"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextclaw/service",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "NextClaw long-running service host and runtime lifecycle.",
|
|
6
6
|
"type": "module",
|
|
@@ -42,30 +42,30 @@
|
|
|
42
42
|
"chokidar": "^3.6.0",
|
|
43
43
|
"commander": "^12.1.0",
|
|
44
44
|
"jszip": "^3.10.1",
|
|
45
|
-
"@nextclaw/channel-extension-
|
|
46
|
-
"@nextclaw/channel-extension-
|
|
47
|
-
"@nextclaw/channel-extension-
|
|
48
|
-
"@nextclaw/channel-extension-
|
|
49
|
-
"@nextclaw/channel-extension-
|
|
50
|
-
"@nextclaw/channel-extension-
|
|
51
|
-
"@nextclaw/channel-extension-
|
|
52
|
-
"@nextclaw/channel-extension-
|
|
53
|
-
"@nextclaw/
|
|
54
|
-
"@nextclaw/
|
|
55
|
-
"@nextclaw/
|
|
56
|
-
"@nextclaw/
|
|
57
|
-
"@nextclaw/
|
|
58
|
-
"@nextclaw/
|
|
59
|
-
"@nextclaw/
|
|
60
|
-
"@nextclaw/ncp-mcp": "0.1.
|
|
61
|
-
"@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.2.
|
|
62
|
-
"@nextclaw/ncp-toolkit": "0.5.
|
|
63
|
-
"@nextclaw/remote": "0.2.
|
|
64
|
-
"@nextclaw/
|
|
65
|
-
"@nextclaw/runtime": "0.
|
|
66
|
-
"@nextclaw/
|
|
67
|
-
"@nextclaw/
|
|
68
|
-
"@nextclaw/
|
|
45
|
+
"@nextclaw/channel-extension-feishu": "0.1.14",
|
|
46
|
+
"@nextclaw/channel-extension-dingtalk": "0.1.6",
|
|
47
|
+
"@nextclaw/channel-extension-email": "0.1.6",
|
|
48
|
+
"@nextclaw/channel-extension-qq": "0.1.11",
|
|
49
|
+
"@nextclaw/channel-extension-discord": "0.1.6",
|
|
50
|
+
"@nextclaw/channel-extension-slack": "0.1.6",
|
|
51
|
+
"@nextclaw/channel-extension-telegram": "0.1.6",
|
|
52
|
+
"@nextclaw/channel-extension-weixin": "0.1.17",
|
|
53
|
+
"@nextclaw/core": "0.13.2",
|
|
54
|
+
"@nextclaw/mcp": "0.2.2",
|
|
55
|
+
"@nextclaw/kernel": "0.2.2",
|
|
56
|
+
"@nextclaw/channel-extension-wecom": "0.1.6",
|
|
57
|
+
"@nextclaw/channel-extension-whatsapp": "0.1.6",
|
|
58
|
+
"@nextclaw/ncp": "0.5.22",
|
|
59
|
+
"@nextclaw/ncp-agent-runtime": "0.3.33",
|
|
60
|
+
"@nextclaw/ncp-mcp": "0.1.97",
|
|
61
|
+
"@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.2.2",
|
|
62
|
+
"@nextclaw/ncp-toolkit": "0.5.27",
|
|
63
|
+
"@nextclaw/remote": "0.2.2",
|
|
64
|
+
"@nextclaw/server": "0.13.2",
|
|
65
|
+
"@nextclaw/nextclaw-ncp-runtime-http-client": "0.2.2",
|
|
66
|
+
"@nextclaw/runtime": "0.3.2",
|
|
67
|
+
"@nextclaw/nextclaw-hermes-acp-bridge": "0.2.2",
|
|
68
|
+
"@nextclaw/shared": "0.2.2"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@types/node": "^20.17.6",
|