manifest 5.9.6 → 5.9.7

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.
@@ -6,8 +6,10 @@ export declare class ProxyController {
6
6
  private readonly proxyService;
7
7
  private readonly providerClient;
8
8
  private readonly logger;
9
+ private readonly seenUsers;
9
10
  constructor(proxyService: ProxyService, providerClient: ProviderClient);
10
11
  chatCompletions(req: Request & {
11
12
  ingestionContext: IngestionContext;
12
13
  }, res: ExpressResponse): Promise<void>;
14
+ private trackFirstProxyRequest;
13
15
  }
@@ -21,10 +21,12 @@ const otlp_auth_guard_1 = require("../../otlp/guards/otlp-auth.guard");
21
21
  const proxy_service_1 = require("./proxy.service");
22
22
  const provider_client_1 = require("./provider-client");
23
23
  const stream_writer_1 = require("./stream-writer");
24
+ const product_telemetry_1 = require("../../common/utils/product-telemetry");
24
25
  let ProxyController = ProxyController_1 = class ProxyController {
25
26
  proxyService;
26
27
  providerClient;
27
28
  logger = new common_1.Logger(ProxyController_1.name);
29
+ seenUsers = new Set();
28
30
  constructor(proxyService, providerClient) {
29
31
  this.proxyService = proxyService;
30
32
  this.providerClient = providerClient;
@@ -37,6 +39,7 @@ let ProxyController = ProxyController_1 = class ProxyController {
37
39
  let headersSent = false;
38
40
  try {
39
41
  const { forward, meta } = await this.proxyService.proxyRequest(userId, body, sessionKey);
42
+ this.trackFirstProxyRequest(userId, meta);
40
43
  const metaHeaders = {
41
44
  'X-Manifest-Tier': meta.tier,
42
45
  'X-Manifest-Model': meta.model,
@@ -95,6 +98,16 @@ let ProxyController = ProxyController_1 = class ProxyController {
95
98
  });
96
99
  }
97
100
  }
101
+ trackFirstProxyRequest(userId, meta) {
102
+ if (this.seenUsers.has(userId))
103
+ return;
104
+ this.seenUsers.add(userId);
105
+ (0, product_telemetry_1.trackCloudEvent)('routing_first_proxy_request', userId, {
106
+ provider: meta.provider,
107
+ model: meta.model,
108
+ tier: meta.tier,
109
+ });
110
+ }
98
111
  };
99
112
  exports.ProxyController = ProxyController;
100
113
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.controller.js","sourceRoot":"","sources":["../../../src/routing/proxy/proxy.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.controller.js","sourceRoot":"","sources":["../../../src/routing/proxy/proxy.controller.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ const current_user_decorator_1 = require("../auth/current-user.decorator");
18
18
  const routing_service_1 = require("./routing.service");
19
19
  const model_pricing_cache_service_1 = require("../model-prices/model-pricing-cache.service");
20
20
  const provider_aliases_1 = require("./provider-aliases");
21
+ const product_telemetry_1 = require("../common/utils/product-telemetry");
21
22
  const routing_dto_1 = require("./dto/routing.dto");
22
23
  let RoutingController = class RoutingController {
23
24
  routingService;
@@ -38,7 +39,12 @@ let RoutingController = class RoutingController {
38
39
  }));
39
40
  }
40
41
  async upsertProvider(user, body) {
41
- const result = await this.routingService.upsertProvider(user.id, body.provider, body.apiKey);
42
+ const { provider: result, isNew } = await this.routingService.upsertProvider(user.id, body.provider, body.apiKey);
43
+ if (isNew) {
44
+ (0, product_telemetry_1.trackCloudEvent)('routing_provider_connected', user.id, {
45
+ provider: body.provider,
46
+ });
47
+ }
42
48
  return {
43
49
  id: result.id,
44
50
  provider: result.provider,
@@ -1 +1 @@
1
- {"version":3,"file":"routing.controller.js","sourceRoot":"","sources":["../../src/routing/routing.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing.controller.js","sourceRoot":"","sources":["../../src/routing/routing.controller.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,10 @@ export declare class RoutingService {
11
11
  private readonly logger;
12
12
  constructor(providerRepo: Repository<UserProvider>, tierRepo: Repository<TierAssignment>, autoAssign: TierAutoAssignService, pricingCache: ModelPricingCacheService);
13
13
  getProviders(userId: string): Promise<UserProvider[]>;
14
- upsertProvider(userId: string, provider: string, apiKey?: string): Promise<UserProvider>;
14
+ upsertProvider(userId: string, provider: string, apiKey?: string): Promise<{
15
+ provider: UserProvider;
16
+ isNew: boolean;
17
+ }>;
15
18
  removeProvider(userId: string, provider: string): Promise<{
16
19
  notifications: string[];
17
20
  }>;
@@ -61,7 +61,7 @@ let RoutingService = RoutingService_1 = class RoutingService {
61
61
  existing.updated_at = new Date().toISOString();
62
62
  await this.providerRepo.save(existing);
63
63
  await this.autoAssign.recalculate(userId);
64
- return existing;
64
+ return { provider: existing, isNew: false };
65
65
  }
66
66
  const record = Object.assign(new user_provider_entity_1.UserProvider(), {
67
67
  id: (0, crypto_1.randomUUID)(),
@@ -74,7 +74,7 @@ let RoutingService = RoutingService_1 = class RoutingService {
74
74
  });
75
75
  await this.providerRepo.insert(record);
76
76
  await this.autoAssign.recalculate(userId);
77
- return record;
77
+ return { provider: record, isNew: true };
78
78
  }
79
79
  async removeProvider(userId, provider) {
80
80
  const existing = await this.providerRepo.findOne({
@@ -1 +1 @@
1
- {"version":3,"file":"routing.service.js","sourceRoot":"","sources":["../../src/routing/routing.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAuE;AACvE,6CAAmD;AACnD,qCAAsD;AACtD,2EAAgE;AAChE,+EAAoE;AACpE,6FAAuF;AACvF,yEAAmE;AACnE,mCAAoC;AACpC,6DAAoF;AACpF,yDAAyD;AACzD,0CAAuC;AAEvC,MAAM,WAAW,GAA2B;IAC1C,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CACvB,CAAC;AAGK,IAAM,cAAc,sBAApB,MAAM,cAAc;IAKN;IAEA;IACA;IACA;IARF,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAE1D,YAEmB,YAAsC,EAEtC,QAAoC,EACpC,UAAiC,EACjC,YAAsC;QAJtC,iBAAY,GAAZ,YAAY,CAA0B;QAEtC,aAAQ,GAAR,QAAQ,CAA4B;QACpC,eAAU,GAAV,UAAU,CAAuB;QACjC,iBAAY,GAAZ,YAAY,CAA0B;IACtD,CAAC;IAIJ,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,QAAgB,EAChB,MAAe;QAEf,MAAM,eAAe,GAAG,MAAM;YAC5B,CAAC,CAAC,IAAA,qBAAO,EAAC,MAAM,EAAE,IAAA,iCAAmB,GAAE,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;SACrC,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,QAAQ,CAAC,iBAAiB,GAAG,eAAe,CAAC;YAC/C,CAAC;YACD,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1B,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,mCAAY,EAAE,EAAE;YAC7D,EAAE,EAAE,IAAA,mBAAU,GAAE;YAChB,OAAO,EAAE,MAAM;YACf,QAAQ;YACR,iBAAiB,EAAE,eAAe;YAClC,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,QAAgB;QAEhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;QAGjE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAA,aAAG,EAAC,IAAA,gBAAM,GAAE,CAAC,EAAE;SAC1D,CAAC,CAAC;QAEH,MAAM,WAAW,GAA0C,EAAE,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,cAAe,CAAC,CAAC;YACnE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzE,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAe,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAGD,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAG1C,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;aACjC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,EAAE,mBAAmB,IAAI,IAAI,CAAC;YACtD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAC5C,MAAM,MAAM,GAAG,QAAQ;gBACrB,CAAC,CAAC,GAAG,SAAS,+BAA+B,QAAQ,IAAI;gBACzD,CAAC,CAAC,GAAG,SAAS,6BAA6B,CAAC;YAC9C,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,4BAA4B,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAc;QACzC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAC3D,CAAC;QACF,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxB,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAC/D,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAID,KAAK,CAAC,mCAAmC,CACvC,aAAuB;QAEvB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,KAAK,EAAE,EAAE,cAAc,EAAE,IAAA,YAAE,EAAC,aAAa,CAAC,EAAE;SAC7C,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qBAAqB,IAAI,CAAC,cAAc,aAAa,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,IAAI,kBAAkB,CACtG,CAAC;YACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,eAAe,QAAQ,CAAC,MAAM,kBAAkB,OAAO,CAAC,IAAI,2BAA2B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnH,CAAC;IACJ,CAAC;IAID,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEtE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAEtB,MAAM,OAAO,GAAqB,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,aAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,uCAAc,EAAE,EAAE;oBACjD,EAAE,EAAE,IAAA,mBAAU,GAAE;oBAChB,OAAO,EAAE,MAAM;oBACf,IAAI;oBACJ,cAAc,EAAE,IAAI;oBACpB,mBAAmB,EAAE,IAAI;iBAC1B,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAGD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC7C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;aAC5C,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CACf,MAAc,EACd,IAAY,EACZ,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;SACjC,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;YAChC,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC,IAAI,uCAAc,EAAE,EAAE;YACjE,EAAE,EAAE,IAAA,mBAAU,GAAE;YAChB,OAAO,EAAE,MAAM;YACf,IAAI;YACJ,cAAc,EAAE,KAAK;YACrB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,IAAY;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;SACjC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxB,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAC/D,CAAC;IACJ,CAAC;IAID,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,QAAgB;QAEhB,MAAM,KAAK,GAAG,IAAA,sCAAmB,EAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC3C,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;SAC5C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAE3C,IAAI,CAAC;YACH,OAAO,IAAA,qBAAO,EAAC,KAAK,CAAC,iBAAiB,EAAE,IAAA,iCAAmB,GAAE,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAID,YAAY,CAAC,YAA2B,EAAE,MAAM,GAAG,CAAC;QAClD,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAA,qBAAO,EAAC,YAAY,EAAE,IAAA,iCAAmB,GAAE,CAAC,CAAC;YAC/D,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAID,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,UAA0B;QAE1B,IAAI,UAAU,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACxE,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC/C,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM;wBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;wBACxC,SAAS,EAAE,IAAI;qBAChB;iBACF,CAAC,CAAC;gBACH,IAAI,QAAQ;oBAAE,OAAO,UAAU,CAAC,cAAc,CAAC;YACjD,CAAC;QAEH,CAAC;QACD,OAAO,UAAU,CAAC,mBAAmB,CAAC;IACxC,CAAC;CACF,CAAA;AAjSY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,0BAAgB,EAAC,mCAAY,CAAC,CAAA;IAE9B,WAAA,IAAA,0BAAgB,EAAC,uCAAc,CAAC,CAAA;qCADF,oBAAU;QAEd,oBAAU;QACR,gDAAqB;QACnB,sDAAwB;GAT9C,cAAc,CAiS1B"}
1
+ {"version":3,"file":"routing.service.js","sourceRoot":"","sources":["../../src/routing/routing.service.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,13 +16,13 @@ To resolve the conflict:`,(0,ti.getConflictResolutionRecipe)(u,r))),c=a):ng.diag
16
16
  openclaw config set plugins.entries.manifest.config.endpoint https://app.manifest.build/otlp`:`Invalid apiKey format. Keys must start with '${Ie}'. Fix it via:
17
17
  openclaw config set manifest.apiKey ${Ie}YOUR_KEY`:`Missing apiKey. Set it via:
18
18
  openclaw config set manifest.apiKey ${Ie}YOUR_KEY
19
- or export MANIFEST_API_KEY=${Ie}YOUR_KEY`}var ra=Oe(EM()),na=Oe(fi()),YI=Oe(UI()),FI=Oe(kI()),KI=Oe(vo());m();var Qr=null,Zr=null,Cc=null,xc=null;function oa(o,r){let i=new KI.Resource({"service.name":o.serviceName,"service.version":"5.9.6","manifest.plugin":"true"}),c={Authorization:`Bearer ${o.apiKey}`},a=new YI.OTLPTraceExporter({url:`${o.endpoint}/v1/traces`,headers:c});Qr=new ra.BasicTracerProvider({resource:i,spanProcessors:[new ra.BatchSpanProcessor(a,{scheduledDelayMillis:5e3,maxQueueSize:2048,maxExportBatchSize:512})]}),Qr.register(),r.debug(`[manifest] Trace exporter -> ${o.endpoint}/v1/traces`);let u=new FI.OTLPMetricExporter({url:`${o.endpoint}/v1/metrics`,headers:c});return Zr=new na.MeterProvider({resource:i,readers:[new na.PeriodicExportingMetricReader({exporter:u,exportIntervalMillis:o.metricsIntervalMs})]}),gt.setGlobalMeterProvider(Zr),r.debug(`[manifest] Metrics exporter -> ${o.endpoint}/v1/metrics (interval=${o.metricsIntervalMs}ms)`),Cc=Ye.getTracer("manifest-plugin","5.9.6"),xc=gt.getMeter("manifest-plugin","5.9.6"),{tracer:Cc,meter:xc}}async function ia(o){o.info("[manifest] Shutting down telemetry..."),Qr&&(await Qr.shutdown(),Qr=null),Zr&&(await Zr.shutdown(),Zr=null),Cc=null,xc=null,o.info("[manifest] Telemetry shut down")}m();var U5=5,qI=30*60*1e3,D5=3e3,V5=5*60*1e3,w5=new Set(["system","developer"]),B5=10,en=new Map,jI=!1;function G5(){if(jI)return;jI=!0;let o=setInterval(()=>{let r=Date.now();for(let[i,c]of en)r-c.lastUpdated>qI&&en.delete(i)},V5);typeof o=="object"&&"unref"in o&&o.unref()}async function WI(o,r,i,c){G5();let u=`${o.endpoint.replace(/\/otlp(\/v1)?\/?$/,"")}/api/v1/routing/resolve`;try{if(!r||!Array.isArray(r)||r.length===0)return c.debug("[manifest] Routing resolve: no messages, skipping"),null;let t=r.filter(y=>y&&typeof y=="object"&&"role"in y&&!w5.has(y.role)).slice(-B5).map(y=>({role:y.role,content:y.content}));if(t.length===0)return c.debug("[manifest] Routing resolve: no scorable messages, skipping"),null;let e=en.get(i),n=e&&Date.now()-e.lastUpdated<qI?e.tiers:void 0,s={messages:t};n&&(s.recentTiers=n);let l=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o.apiKey}`},body:JSON.stringify(s),signal:AbortSignal.timeout(D5)});if(!l.ok)return c.debug(`[manifest] Routing resolve returned ${l.status}`),null;let E=await l.json();if(!E.model)return c.debug(`[manifest] Routing resolve: no model for tier=${E.tier}`),null;let A=en.get(i);return A?(A.tiers=[E.tier,...A.tiers].slice(0,U5),A.lastUpdated=Date.now()):en.set(i,{tiers:[E.tier],lastUpdated:Date.now()}),c.debug(`[manifest] Routing resolved: tier=${E.tier} model=${E.model} provider=${E.provider}`),{tier:E.tier,model:E.model,provider:E.provider??"unknown"}}catch(t){let e=t instanceof Error?t.message:String(t);return c.debug(`[manifest] Routing resolve failed (${e})`),null}}function aa(o,r,i){if(typeof o.registerProvider!="function"){i.debug("[manifest] registerProvider not available, skipping provider registration");return}let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");try{o.registerProvider({id:"manifest",name:"Manifest Router",api:"openai-completions",baseUrl:c,apiKey:r.apiKey,models:["auto"]}),i.info("[manifest] Registered as OpenAI-compatible provider (proxy mode)")}catch(a){let u=a instanceof Error?a.message:String(a);i.debug(`[manifest] registerProvider failed (${u})`)}}var Er=new Map,zI,JI,XI,$I,H5,QI,ZI,eC,tC;function ua(o){zI=o.createCounter(me.LLM_REQUESTS,{description:"Total LLM inference requests"}),JI=o.createCounter(me.LLM_TOKENS_INPUT,{description:"Total input tokens sent to LLM"}),XI=o.createCounter(me.LLM_TOKENS_OUTPUT,{description:"Total output tokens from LLM"}),$I=o.createCounter(me.LLM_TOKENS_CACHE_READ,{description:"Total cache-read tokens"}),H5=o.createHistogram(me.LLM_DURATION,{description:"LLM request duration in ms",unit:"ms"}),QI=o.createCounter(me.TOOL_CALLS,{description:"Total tool invocations"}),ZI=o.createCounter(me.TOOL_ERRORS,{description:"Total tool errors"}),eC=o.createHistogram(me.TOOL_DURATION,{description:"Tool execution duration in ms",unit:"ms"}),tC=o.createCounter(me.MESSAGES_RECEIVED,{description:"Total messages received from users"})}function sa(o,r,i,c){o.on("message_received",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.channel||"unknown",e=r.startSpan(on.REQUEST,{kind:He.SERVER,attributes:{[D.SESSION_KEY]:u,[D.CHANNEL]:t}});Er.set(u,{root:e}),tC.add(1,{[D.CHANNEL]:t}),c.debug(`[manifest] Root span started for session=${u}`)}),o.on("before_agent_start",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.agent||"main",e=Er.get(u),n=e?.root?Ye.setSpan(ke.active(),e.root):ke.active(),s=r.startSpan(on.AGENT_TURN,{kind:He.INTERNAL,attributes:{[D.AGENT_NAME]:t,[D.SESSION_KEY]:u}},n);e?e.turn=s:Er.set(u,{root:s,turn:s}),c.debug(`[manifest] Agent turn started: agent=${t}, session=${u}`)}),o.on("tool_result_persist",a=>{let u=a.toolName||a.tool||"unknown",t=a.durationMs||0,e=a.error==null,n=a.sessionKey||"unknown",s=Er.get(n),l=s?.turn?Ye.setSpan(ke.active(),s.turn):ke.active(),E=r.startSpan(`${on.TOOL_PREFIX}${u}`,{kind:He.INTERNAL,attributes:{[D.TOOL_NAME]:u,[D.TOOL_SUCCESS]:String(e),[D.SESSION_KEY]:n}},l);e||(E.setStatus({code:Mt.ERROR,message:a.error?.message||"Tool execution failed"}),ZI.add(1,{[D.TOOL_NAME]:u})),E.end(),QI.add(1,{[D.TOOL_NAME]:u}),eC.record(t,{[D.TOOL_NAME]:u})}),o.on("agent_end",async a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.messages||[],e=[...t].reverse().find(we=>we.role==="assistant"&&we.usage),n=e?.model||a.model||"unknown",s=e?.provider||a.provider||"unknown",l=e?.usage||a.usage||{},E=l.input||l.inputTokens||0,A=l.output||l.outputTokens||0,y=l.cacheRead||l.cacheReadTokens||0,ue=l.cacheWrite||l.cacheWriteTokens||0,tt=n,Ve=s,Tr=null;if(tt==="auto"&&i.mode==="local"){let we=await WI(i,t,u,c);we&&(tt=we.model,Ve=we.provider,Tr=we.tier)}let Ee=Er.get(u);Ee?.turn&&(Ee.turn.setAttributes({[D.MODEL]:tt,[D.PROVIDER]:Ve,[D.INPUT_TOKENS]:E,[D.OUTPUT_TOKENS]:A,[D.CACHE_READ_TOKENS]:y,[D.CACHE_WRITE_TOKENS]:ue}),Tr&&Ee.turn.setAttribute(D.ROUTING_TIER,Tr),Ee.turn.end()),Ee?.root&&Ee.root!==Ee.turn&&Ee.root.end(),Er.delete(u);let ht={[D.MODEL]:tt,[D.PROVIDER]:Ve};zI.add(1,ht),JI.add(E,ht),XI.add(A,ht),y>0&&$I.add(y,ht),c.debug(`[manifest] agent_end tokens: in=${E}, out=${A}, cache=${y}`),c.debug(`[manifest] Trace completed for session=${u}`)}),c.debug("[manifest] All hooks registered")}async function ca(o){let r=o.endpoint.replace(/\/otlp(\/v1)?\/?$/,""),i={endpointReachable:!1,authValid:!1,agentName:null,error:null};try{let c=await fetch(`${r}/api/v1/health`,{signal:AbortSignal.timeout(5e3)});if(!c.ok)return i.error=`Health endpoint returned ${c.status}`,i;i.endpointReachable=!0}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Cannot reach endpoint: ${a}`,i}try{let c=await fetch(`${r}/api/v1/agent/usage?range=24h`,{headers:{Authorization:`Bearer ${o.apiKey}`},signal:AbortSignal.timeout(5e3)});if(c.status===401||c.status===403)return i.error="API key rejected \u2014 check your mnfst_ key is correct",i;if(!c.ok)return i.error=`Usage endpoint returned ${c.status}`,i;i.authValid=!0;let a=await c.json();a&&typeof a.agentName=="string"&&(i.agentName=a.agentName)}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Auth check failed: ${a}`,i}return i}var rC={today:"24h",week:"7d",month:"30d"};async function nC(o,r,i,c){let a=`${o}${r}`;try{let u=await fetch(a,{headers:{Authorization:`Bearer ${i}`}});return u.ok?{result:await u.json()}:{error:`API returned ${u.status}`}}catch(u){let t=u instanceof Error?u.message:String(u);return c.error(`[manifest] API call failed: ${t}`),{error:t}}}function la(o,r,i){let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");o.registerTool({name:"manifest_usage",description:"Get token consumption for this agent: total, input, output, cache-read tokens, and action count. Use when the user asks about token usage or consumption.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"today",description:"Time period"}}},handler:async a=>{let u=rC[a.period||"today"]||"24h";return nC(c,`/api/v1/agent/usage?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_costs",description:"Get cost breakdown for this agent in USD, grouped by model. Use when the user asks about costs, spending, or money burned.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"week",description:"Time period"}}},handler:async a=>{let u=rC[a.period||"week"]||"7d";return nC(c,`/api/v1/agent/costs?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_health",description:"Check whether Manifest observability is connected and working. Use when the user asks if monitoring is set up or wants a connectivity test.",parameters:{type:"object",properties:{}},handler:async()=>{let a=await ca(r);return a.error?{error:a.error}:{result:{endpointReachable:a.endpointReachable,authValid:a.authValid,agentName:a.agentName,status:"ok"}}}}),i.debug("[manifest] Registered agent tools: manifest_usage, manifest_costs, manifest_health")}var U=require("fs"),ve=require("path"),bc=require("os"),iC=require("crypto");var pa=(0,ve.join)((0,bc.homedir)(),".openclaw","manifest"),tn=(0,ve.join)(pa,"config.json"),aC=(0,ve.join)((0,bc.homedir)(),".openclaw"),oC=(0,ve.join)(aC,"openclaw.json"),k5=3e3;function Y5(){(0,U.existsSync)(pa)||(0,U.mkdirSync)(pa,{recursive:!0,mode:448})}function F5(){if(Y5(),(0,U.existsSync)(tn))try{let i=JSON.parse((0,U.readFileSync)(tn,"utf-8"));if(i.apiKey&&i.apiKey.startsWith(Ie))return i.apiKey}catch{}let o=`${Ie}local_${(0,iC.randomBytes)(24).toString("hex")}`,r={};if((0,U.existsSync)(tn))try{r=JSON.parse((0,U.readFileSync)(tn,"utf-8"))}catch{}return(0,U.writeFileSync)(tn,JSON.stringify({...r,apiKey:o},null,2),{mode:384}),o}function uC(o){if(!(0,U.existsSync)(o))return{};try{return JSON.parse((0,U.readFileSync)(o,"utf-8"))}catch{return{}}}function sC(o,r){let i=(0,ve.dirname)(o);(0,U.existsSync)(i)||(0,U.mkdirSync)(i,{recursive:!0,mode:448});let c=`${o}.tmp.${process.pid}`;(0,U.writeFileSync)(c,JSON.stringify(r,null,2),{mode:384}),(0,U.renameSync)(c,o)}function K5(o,r,i,c,a){let t={baseUrl:`http://${r}:${i}/v1`,api:"openai-completions",apiKey:c,models:[{id:"auto",name:"auto"}]};try{let e=uC(oC);e.models||(e.models={}),e.models.providers||(e.models.providers={}),e.models.providers.manifest=t,e.agents||(e.agents={}),e.agents.defaults||(e.agents.defaults={}),e.agents.defaults.models||(e.agents.defaults.models={});let n=e.agents.defaults.models;Array.isArray(n)?n.includes("manifest/auto")||n.push("manifest/auto"):typeof n=="object"&&("manifest/auto"in n||(n["manifest/auto"]={})),sC(oC,e),a.debug("[manifest] Wrote provider config to openclaw.json")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not write openclaw.json: ${n}`)}try{if(o.config){o.config.models||(o.config.models={}),o.config.models.providers||(o.config.models.providers={}),o.config.models.providers.manifest=t,o.config.agents||(o.config.agents={}),o.config.agents.defaults||(o.config.agents.defaults={}),o.config.agents.defaults.models||(o.config.agents.defaults.models={});let e=o.config.agents.defaults.models;Array.isArray(e)?e.includes("manifest/auto")||e.push("manifest/auto"):typeof e=="object"&&("manifest/auto"in e||(e["manifest/auto"]={}))}a.debug("[manifest] Injected provider into runtime config")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not inject runtime config: ${n}`)}}function j5(o,r){let i=(0,ve.join)(aC,"agents");if(!(0,U.existsSync)(i)){r.debug("[manifest] No agents directory found, skipping auth profile injection");return}let c={type:"api_key",provider:"manifest",key:o},a=0;try{let u=(0,U.readdirSync)(i,{withFileTypes:!0}).filter(t=>t.isDirectory());for(let t of u){let e=(0,ve.join)(i,t.name,"agent","auth-profiles.json"),n=(0,ve.dirname)(e);if(!(0,U.existsSync)(n))continue;let s=uC(e);s.version||(s.version=1),s.profiles||(s.profiles={});let l=s.profiles["manifest:default"];l&&l.key===o||(s.profiles["manifest:default"]=c,sC(e,s),a++)}}catch(u){let t=u instanceof Error?u.message:String(u);r.debug(`[manifest] Auth profile injection error: ${t}`)}a>0&&r.debug(`[manifest] Injected auth profile into ${a} agent(s)`)}async function q5(o,r){try{return(await fetch(`http://${o}:${r}/api/v1/health`,{signal:AbortSignal.timeout(k5)})).ok}catch{return!1}}function cC(o,r,i){let c=r.port,a=r.host,u=F5(),t=(0,ve.join)(pa,"manifest.db");i.debug("[manifest] Local mode \u2014 starting embedded server..."),K5(o,a,c,u,i),j5(u,i);let e;try{e=require("./server")}catch(A){let y=A instanceof Error?A.message:String(A);i.error(`[manifest] Failed to load embedded server.
19
+ or export MANIFEST_API_KEY=${Ie}YOUR_KEY`}var ra=Oe(EM()),na=Oe(fi()),YI=Oe(UI()),FI=Oe(kI()),KI=Oe(vo());m();var Qr=null,Zr=null,Cc=null,xc=null;function oa(o,r){let i=new KI.Resource({"service.name":o.serviceName,"service.version":"5.9.7","manifest.plugin":"true"}),c={Authorization:`Bearer ${o.apiKey}`},a=new YI.OTLPTraceExporter({url:`${o.endpoint}/v1/traces`,headers:c});Qr=new ra.BasicTracerProvider({resource:i,spanProcessors:[new ra.BatchSpanProcessor(a,{scheduledDelayMillis:5e3,maxQueueSize:2048,maxExportBatchSize:512})]}),Qr.register(),r.debug(`[manifest] Trace exporter -> ${o.endpoint}/v1/traces`);let u=new FI.OTLPMetricExporter({url:`${o.endpoint}/v1/metrics`,headers:c});return Zr=new na.MeterProvider({resource:i,readers:[new na.PeriodicExportingMetricReader({exporter:u,exportIntervalMillis:o.metricsIntervalMs})]}),gt.setGlobalMeterProvider(Zr),r.debug(`[manifest] Metrics exporter -> ${o.endpoint}/v1/metrics (interval=${o.metricsIntervalMs}ms)`),Cc=Ye.getTracer("manifest-plugin","5.9.7"),xc=gt.getMeter("manifest-plugin","5.9.7"),{tracer:Cc,meter:xc}}async function ia(o){o.info("[manifest] Shutting down telemetry..."),Qr&&(await Qr.shutdown(),Qr=null),Zr&&(await Zr.shutdown(),Zr=null),Cc=null,xc=null,o.info("[manifest] Telemetry shut down")}m();var U5=5,qI=30*60*1e3,D5=3e3,V5=5*60*1e3,w5=new Set(["system","developer"]),B5=10,en=new Map,jI=!1;function G5(){if(jI)return;jI=!0;let o=setInterval(()=>{let r=Date.now();for(let[i,c]of en)r-c.lastUpdated>qI&&en.delete(i)},V5);typeof o=="object"&&"unref"in o&&o.unref()}async function WI(o,r,i,c){G5();let u=`${o.endpoint.replace(/\/otlp(\/v1)?\/?$/,"")}/api/v1/routing/resolve`;try{if(!r||!Array.isArray(r)||r.length===0)return c.debug("[manifest] Routing resolve: no messages, skipping"),null;let t=r.filter(y=>y&&typeof y=="object"&&"role"in y&&!w5.has(y.role)).slice(-B5).map(y=>({role:y.role,content:y.content}));if(t.length===0)return c.debug("[manifest] Routing resolve: no scorable messages, skipping"),null;let e=en.get(i),n=e&&Date.now()-e.lastUpdated<qI?e.tiers:void 0,s={messages:t};n&&(s.recentTiers=n);let l=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o.apiKey}`},body:JSON.stringify(s),signal:AbortSignal.timeout(D5)});if(!l.ok)return c.debug(`[manifest] Routing resolve returned ${l.status}`),null;let E=await l.json();if(!E.model)return c.debug(`[manifest] Routing resolve: no model for tier=${E.tier}`),null;let A=en.get(i);return A?(A.tiers=[E.tier,...A.tiers].slice(0,U5),A.lastUpdated=Date.now()):en.set(i,{tiers:[E.tier],lastUpdated:Date.now()}),c.debug(`[manifest] Routing resolved: tier=${E.tier} model=${E.model} provider=${E.provider}`),{tier:E.tier,model:E.model,provider:E.provider??"unknown"}}catch(t){let e=t instanceof Error?t.message:String(t);return c.debug(`[manifest] Routing resolve failed (${e})`),null}}function aa(o,r,i){if(typeof o.registerProvider!="function"){i.debug("[manifest] registerProvider not available, skipping provider registration");return}let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");try{o.registerProvider({id:"manifest",name:"Manifest Router",api:"openai-completions",baseUrl:c,apiKey:r.apiKey,models:["auto"]}),i.info("[manifest] Registered as OpenAI-compatible provider (proxy mode)")}catch(a){let u=a instanceof Error?a.message:String(a);i.debug(`[manifest] registerProvider failed (${u})`)}}var Er=new Map,zI,JI,XI,$I,H5,QI,ZI,eC,tC;function ua(o){zI=o.createCounter(me.LLM_REQUESTS,{description:"Total LLM inference requests"}),JI=o.createCounter(me.LLM_TOKENS_INPUT,{description:"Total input tokens sent to LLM"}),XI=o.createCounter(me.LLM_TOKENS_OUTPUT,{description:"Total output tokens from LLM"}),$I=o.createCounter(me.LLM_TOKENS_CACHE_READ,{description:"Total cache-read tokens"}),H5=o.createHistogram(me.LLM_DURATION,{description:"LLM request duration in ms",unit:"ms"}),QI=o.createCounter(me.TOOL_CALLS,{description:"Total tool invocations"}),ZI=o.createCounter(me.TOOL_ERRORS,{description:"Total tool errors"}),eC=o.createHistogram(me.TOOL_DURATION,{description:"Tool execution duration in ms",unit:"ms"}),tC=o.createCounter(me.MESSAGES_RECEIVED,{description:"Total messages received from users"})}function sa(o,r,i,c){o.on("message_received",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.channel||"unknown",e=r.startSpan(on.REQUEST,{kind:He.SERVER,attributes:{[D.SESSION_KEY]:u,[D.CHANNEL]:t}});Er.set(u,{root:e}),tC.add(1,{[D.CHANNEL]:t}),c.debug(`[manifest] Root span started for session=${u}`)}),o.on("before_agent_start",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.agent||"main",e=Er.get(u),n=e?.root?Ye.setSpan(ke.active(),e.root):ke.active(),s=r.startSpan(on.AGENT_TURN,{kind:He.INTERNAL,attributes:{[D.AGENT_NAME]:t,[D.SESSION_KEY]:u}},n);e?e.turn=s:Er.set(u,{root:s,turn:s}),c.debug(`[manifest] Agent turn started: agent=${t}, session=${u}`)}),o.on("tool_result_persist",a=>{let u=a.toolName||a.tool||"unknown",t=a.durationMs||0,e=a.error==null,n=a.sessionKey||"unknown",s=Er.get(n),l=s?.turn?Ye.setSpan(ke.active(),s.turn):ke.active(),E=r.startSpan(`${on.TOOL_PREFIX}${u}`,{kind:He.INTERNAL,attributes:{[D.TOOL_NAME]:u,[D.TOOL_SUCCESS]:String(e),[D.SESSION_KEY]:n}},l);e||(E.setStatus({code:Mt.ERROR,message:a.error?.message||"Tool execution failed"}),ZI.add(1,{[D.TOOL_NAME]:u})),E.end(),QI.add(1,{[D.TOOL_NAME]:u}),eC.record(t,{[D.TOOL_NAME]:u})}),o.on("agent_end",async a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.messages||[],e=[...t].reverse().find(we=>we.role==="assistant"&&we.usage),n=e?.model||a.model||"unknown",s=e?.provider||a.provider||"unknown",l=e?.usage||a.usage||{},E=l.input||l.inputTokens||0,A=l.output||l.outputTokens||0,y=l.cacheRead||l.cacheReadTokens||0,ue=l.cacheWrite||l.cacheWriteTokens||0,tt=n,Ve=s,Tr=null;if(tt==="auto"&&i.mode==="local"){let we=await WI(i,t,u,c);we&&(tt=we.model,Ve=we.provider,Tr=we.tier)}let Ee=Er.get(u);Ee?.turn&&(Ee.turn.setAttributes({[D.MODEL]:tt,[D.PROVIDER]:Ve,[D.INPUT_TOKENS]:E,[D.OUTPUT_TOKENS]:A,[D.CACHE_READ_TOKENS]:y,[D.CACHE_WRITE_TOKENS]:ue}),Tr&&Ee.turn.setAttribute(D.ROUTING_TIER,Tr),Ee.turn.end()),Ee?.root&&Ee.root!==Ee.turn&&Ee.root.end(),Er.delete(u);let ht={[D.MODEL]:tt,[D.PROVIDER]:Ve};zI.add(1,ht),JI.add(E,ht),XI.add(A,ht),y>0&&$I.add(y,ht),c.debug(`[manifest] agent_end tokens: in=${E}, out=${A}, cache=${y}`),c.debug(`[manifest] Trace completed for session=${u}`)}),c.debug("[manifest] All hooks registered")}async function ca(o){let r=o.endpoint.replace(/\/otlp(\/v1)?\/?$/,""),i={endpointReachable:!1,authValid:!1,agentName:null,error:null};try{let c=await fetch(`${r}/api/v1/health`,{signal:AbortSignal.timeout(5e3)});if(!c.ok)return i.error=`Health endpoint returned ${c.status}`,i;i.endpointReachable=!0}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Cannot reach endpoint: ${a}`,i}try{let c=await fetch(`${r}/api/v1/agent/usage?range=24h`,{headers:{Authorization:`Bearer ${o.apiKey}`},signal:AbortSignal.timeout(5e3)});if(c.status===401||c.status===403)return i.error="API key rejected \u2014 check your mnfst_ key is correct",i;if(!c.ok)return i.error=`Usage endpoint returned ${c.status}`,i;i.authValid=!0;let a=await c.json();a&&typeof a.agentName=="string"&&(i.agentName=a.agentName)}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Auth check failed: ${a}`,i}return i}var rC={today:"24h",week:"7d",month:"30d"};async function nC(o,r,i,c){let a=`${o}${r}`;try{let u=await fetch(a,{headers:{Authorization:`Bearer ${i}`}});return u.ok?{result:await u.json()}:{error:`API returned ${u.status}`}}catch(u){let t=u instanceof Error?u.message:String(u);return c.error(`[manifest] API call failed: ${t}`),{error:t}}}function la(o,r,i){let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");o.registerTool({name:"manifest_usage",description:"Get token consumption for this agent: total, input, output, cache-read tokens, and action count. Use when the user asks about token usage or consumption.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"today",description:"Time period"}}},handler:async a=>{let u=rC[a.period||"today"]||"24h";return nC(c,`/api/v1/agent/usage?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_costs",description:"Get cost breakdown for this agent in USD, grouped by model. Use when the user asks about costs, spending, or money burned.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"week",description:"Time period"}}},handler:async a=>{let u=rC[a.period||"week"]||"7d";return nC(c,`/api/v1/agent/costs?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_health",description:"Check whether Manifest observability is connected and working. Use when the user asks if monitoring is set up or wants a connectivity test.",parameters:{type:"object",properties:{}},handler:async()=>{let a=await ca(r);return a.error?{error:a.error}:{result:{endpointReachable:a.endpointReachable,authValid:a.authValid,agentName:a.agentName,status:"ok"}}}}),i.debug("[manifest] Registered agent tools: manifest_usage, manifest_costs, manifest_health")}var U=require("fs"),ve=require("path"),bc=require("os"),iC=require("crypto");var pa=(0,ve.join)((0,bc.homedir)(),".openclaw","manifest"),tn=(0,ve.join)(pa,"config.json"),aC=(0,ve.join)((0,bc.homedir)(),".openclaw"),oC=(0,ve.join)(aC,"openclaw.json"),k5=3e3;function Y5(){(0,U.existsSync)(pa)||(0,U.mkdirSync)(pa,{recursive:!0,mode:448})}function F5(){if(Y5(),(0,U.existsSync)(tn))try{let i=JSON.parse((0,U.readFileSync)(tn,"utf-8"));if(i.apiKey&&i.apiKey.startsWith(Ie))return i.apiKey}catch{}let o=`${Ie}local_${(0,iC.randomBytes)(24).toString("hex")}`,r={};if((0,U.existsSync)(tn))try{r=JSON.parse((0,U.readFileSync)(tn,"utf-8"))}catch{}return(0,U.writeFileSync)(tn,JSON.stringify({...r,apiKey:o},null,2),{mode:384}),o}function uC(o){if(!(0,U.existsSync)(o))return{};try{return JSON.parse((0,U.readFileSync)(o,"utf-8"))}catch{return{}}}function sC(o,r){let i=(0,ve.dirname)(o);(0,U.existsSync)(i)||(0,U.mkdirSync)(i,{recursive:!0,mode:448});let c=`${o}.tmp.${process.pid}`;(0,U.writeFileSync)(c,JSON.stringify(r,null,2),{mode:384}),(0,U.renameSync)(c,o)}function K5(o,r,i,c,a){let t={baseUrl:`http://${r}:${i}/v1`,api:"openai-completions",apiKey:c,models:[{id:"auto",name:"auto"}]};try{let e=uC(oC);e.models||(e.models={}),e.models.providers||(e.models.providers={}),e.models.providers.manifest=t,e.agents||(e.agents={}),e.agents.defaults||(e.agents.defaults={}),e.agents.defaults.models||(e.agents.defaults.models={});let n=e.agents.defaults.models;Array.isArray(n)?n.includes("manifest/auto")||n.push("manifest/auto"):typeof n=="object"&&("manifest/auto"in n||(n["manifest/auto"]={})),sC(oC,e),a.debug("[manifest] Wrote provider config to openclaw.json")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not write openclaw.json: ${n}`)}try{if(o.config){o.config.models||(o.config.models={}),o.config.models.providers||(o.config.models.providers={}),o.config.models.providers.manifest=t,o.config.agents||(o.config.agents={}),o.config.agents.defaults||(o.config.agents.defaults={}),o.config.agents.defaults.models||(o.config.agents.defaults.models={});let e=o.config.agents.defaults.models;Array.isArray(e)?e.includes("manifest/auto")||e.push("manifest/auto"):typeof e=="object"&&("manifest/auto"in e||(e["manifest/auto"]={}))}a.debug("[manifest] Injected provider into runtime config")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not inject runtime config: ${n}`)}}function j5(o,r){let i=(0,ve.join)(aC,"agents");if(!(0,U.existsSync)(i)){r.debug("[manifest] No agents directory found, skipping auth profile injection");return}let c={type:"api_key",provider:"manifest",key:o},a=0;try{let u=(0,U.readdirSync)(i,{withFileTypes:!0}).filter(t=>t.isDirectory());for(let t of u){let e=(0,ve.join)(i,t.name,"agent","auth-profiles.json"),n=(0,ve.dirname)(e);if(!(0,U.existsSync)(n))continue;let s=uC(e);s.version||(s.version=1),s.profiles||(s.profiles={});let l=s.profiles["manifest:default"];l&&l.key===o||(s.profiles["manifest:default"]=c,sC(e,s),a++)}}catch(u){let t=u instanceof Error?u.message:String(u);r.debug(`[manifest] Auth profile injection error: ${t}`)}a>0&&r.debug(`[manifest] Injected auth profile into ${a} agent(s)`)}async function q5(o,r){try{return(await fetch(`http://${o}:${r}/api/v1/health`,{signal:AbortSignal.timeout(k5)})).ok}catch{return!1}}function cC(o,r,i){let c=r.port,a=r.host,u=F5(),t=(0,ve.join)(pa,"manifest.db");i.debug("[manifest] Local mode \u2014 starting embedded server..."),K5(o,a,c,u,i),j5(u,i);let e;try{e=require("./server")}catch(A){let y=A instanceof Error?A.message:String(A);i.error(`[manifest] Failed to load embedded server.
20
20
  Error: ${y}
21
21
  This is a packaging error \u2014 please reinstall the manifest plugin.`);return}let n=`http://${a}:${c}/otlp`,s={...r,apiKey:u,endpoint:n,captureContent:!0,metricsIntervalMs:Vc.METRICS_INTERVAL_MS},{tracer:l,meter:E}=oa(s,i);ua(E),sa(o,l,s,i),aa(o,s,i),typeof o.registerTool=="function"&&la(o,s,i),i.info(`[manifest] \u{1F99A} View your Manifest Dashboard -> http://${a}:${c}`),o.registerService({id:"manifest-local",start:async()=>{try{await e.start({port:c,host:a,dbPath:t,quiet:!0}),i.info(`[manifest] Local server running on http://${a}:${c}`),i.info(`[manifest] Dashboard: http://${a}:${c}`),i.info(`[manifest] DB: ${t}`)}catch(A){let y=A instanceof Error?A.message:String(A);y.includes("EADDRINUSE")||y.includes("address already in use")?await q5(a,c)?i.info(`[manifest] Reusing existing server at http://${a}:${c}`):i.error(`[manifest] Port ${c} is already in use by another process.
22
22
  Change it with: openclaw config set plugins.entries.manifest.config.port ${c+1}
23
23
  Then restart the gateway.`):i.error(`[manifest] Failed to start local server: ${y}
24
24
  Try reinstalling: openclaw plugins install manifest
25
- Then restart: openclaw gateway restart`)}},stop:async()=>{await ia(i)}})}var pC=require("crypto"),De=require("os");function lC(){return{optedOut:__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="1"||__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="true",packageVersion:"5.9.6"}}var W5="https://eu.i.posthog.com",z5="phc_g5pLOu5bBRjhVJBwAsx0eCzJFWq0cri2TyVLQLxf045";function J5(){let o=`${(0,De.hostname)()}-${(0,De.platform)()}-${(0,De.arch)()}`;return(0,pC.createHash)("sha256").update(o).digest("hex").slice(0,16)}function Uc(o,r){let i=lC();if(i.optedOut)return;let c={api_key:z5,event:o,properties:{distinct_id:J5(),os:(0,De.platform)(),os_version:(0,De.release)(),node_version:process.versions.node,package_version:i.packageVersion,...r},timestamp:new Date().toISOString()};fetch(`${W5}/capture`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)}).catch(()=>{})}module.exports={id:"manifest",name:"Manifest \u2014 Agent Observability",register(o){let r=o.logger||{info:(...e)=>console.log(...e),debug:()=>{},error:(...e)=>console.error(...e),warn:(...e)=>console.warn(...e)},i=wc(o.pluginConfig);if(Uc("plugin_registered"),Uc("plugin_mode_selected",{mode:i.mode}),i.mode==="local"){cC(o,i,r);return}let c=Bc(i);if(c){i.apiKey?r.error(`[manifest] Configuration error:
25
+ Then restart: openclaw gateway restart`)}},stop:async()=>{await ia(i)}})}var pC=require("crypto"),De=require("os");function lC(){return{optedOut:__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="1"||__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="true",packageVersion:"5.9.7"}}var W5="https://eu.i.posthog.com",z5="phc_g5pLOu5bBRjhVJBwAsx0eCzJFWq0cri2TyVLQLxf045";function J5(){let o=`${(0,De.hostname)()}-${(0,De.platform)()}-${(0,De.arch)()}`;return(0,pC.createHash)("sha256").update(o).digest("hex").slice(0,16)}function Uc(o,r){let i=lC();if(i.optedOut)return;let c={api_key:z5,event:o,properties:{distinct_id:J5(),os:(0,De.platform)(),os_version:(0,De.release)(),node_version:process.versions.node,package_version:i.packageVersion,...r},timestamp:new Date().toISOString()};fetch(`${W5}/capture`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)}).catch(()=>{})}module.exports={id:"manifest",name:"Manifest \u2014 Agent Observability",register(o){let r=o.logger||{info:(...e)=>console.log(...e),debug:()=>{},error:(...e)=>console.error(...e),warn:(...e)=>console.warn(...e)},i=wc(o.pluginConfig);if(Uc("plugin_registered"),Uc("plugin_mode_selected",{mode:i.mode}),i.mode==="local"){cC(o,i,r);return}let c=Bc(i);if(c){i.apiKey?r.error(`[manifest] Configuration error:
26
26
  ${c}`):r.info(`[manifest] Cloud mode requires an API key:
27
27
  openclaw config set plugins.entries.manifest.config.apiKey mnfst_YOUR_KEY
28
28
  openclaw gateway restart
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "manifest",
3
- "version": "5.9.6",
3
+ "version": "5.9.7",
4
4
  "description": "Observability plugin for OpenClaw — traces, metrics, and cost tracking for your AI agent",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",