@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.
@@ -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.0",
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-dingtalk": "0.1.4",
46
- "@nextclaw/channel-extension-feishu": "0.1.12",
47
- "@nextclaw/channel-extension-qq": "0.1.9",
48
- "@nextclaw/channel-extension-email": "0.1.4",
49
- "@nextclaw/channel-extension-slack": "0.1.4",
50
- "@nextclaw/channel-extension-telegram": "0.1.4",
51
- "@nextclaw/channel-extension-weixin": "0.1.15",
52
- "@nextclaw/channel-extension-wecom": "0.1.4",
53
- "@nextclaw/channel-extension-discord": "0.1.4",
54
- "@nextclaw/channel-extension-whatsapp": "0.1.4",
55
- "@nextclaw/mcp": "0.2.0",
56
- "@nextclaw/ncp": "0.5.20",
57
- "@nextclaw/ncp-agent-runtime": "0.3.31",
58
- "@nextclaw/nextclaw-ncp-runtime-http-client": "0.2.0",
59
- "@nextclaw/nextclaw-hermes-acp-bridge": "0.2.0",
60
- "@nextclaw/ncp-mcp": "0.1.95",
61
- "@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.2.0",
62
- "@nextclaw/ncp-toolkit": "0.5.25",
63
- "@nextclaw/remote": "0.2.0",
64
- "@nextclaw/shared": "0.2.0",
65
- "@nextclaw/runtime": "0.3.0",
66
- "@nextclaw/core": "0.13.0",
67
- "@nextclaw/server": "0.13.0",
68
- "@nextclaw/kernel": "0.2.0"
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",