@zlooks.cn/event-server 1.0.4 → 1.1.0

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.
Files changed (53) hide show
  1. package/dist/admin-messages/operations/dead-deliveries/retry.msg.d.ts +53 -0
  2. package/dist/admin-messages/operations/dead-deliveries/retry.msg.d.ts.map +1 -0
  3. package/dist/admin-messages/operations/dead-deliveries/retry.msg.js +6 -0
  4. package/dist/admin-messages/operations/dead-deliveries/retry.msg.js.map +1 -0
  5. package/dist/admin-messages/operations/dead-deliveries/search.msg.d.ts +32 -0
  6. package/dist/admin-messages/operations/dead-deliveries/search.msg.d.ts.map +1 -0
  7. package/dist/admin-messages/operations/dead-deliveries/search.msg.js +6 -0
  8. package/dist/admin-messages/operations/dead-deliveries/search.msg.js.map +1 -0
  9. package/dist/admin-messages/operations/deliveries/read.msg.d.ts +32 -0
  10. package/dist/admin-messages/operations/deliveries/read.msg.d.ts.map +1 -0
  11. package/dist/admin-messages/operations/deliveries/read.msg.js +6 -0
  12. package/dist/admin-messages/operations/deliveries/read.msg.js.map +1 -0
  13. package/dist/admin-messages/operations/status.msg.d.ts +16 -0
  14. package/dist/admin-messages/operations/status.msg.d.ts.map +1 -0
  15. package/dist/admin-messages/operations/status.msg.js +6 -0
  16. package/dist/admin-messages/operations/status.msg.js.map +1 -0
  17. package/dist/event-center-store.d.ts +7 -2
  18. package/dist/event-center-store.d.ts.map +1 -1
  19. package/dist/event-center-store.js +150 -35
  20. package/dist/event-center-store.js.map +1 -1
  21. package/dist/mcp/provider.d.ts +4 -0
  22. package/dist/mcp/provider.d.ts.map +1 -0
  23. package/dist/mcp/provider.js +131 -0
  24. package/dist/mcp/provider.js.map +1 -0
  25. package/dist/models/read-delivery.model.d.ts +23 -0
  26. package/dist/models/read-delivery.model.d.ts.map +1 -0
  27. package/dist/models/read-delivery.model.js +14 -0
  28. package/dist/models/read-delivery.model.js.map +1 -0
  29. package/dist/models/read-operational-status.model.d.ts +12 -0
  30. package/dist/models/read-operational-status.model.d.ts.map +1 -0
  31. package/dist/models/read-operational-status.model.js +14 -0
  32. package/dist/models/read-operational-status.model.js.map +1 -0
  33. package/dist/models/retry-dead-delivery.model.d.ts +39 -0
  34. package/dist/models/retry-dead-delivery.model.d.ts.map +1 -0
  35. package/dist/models/retry-dead-delivery.model.js +14 -0
  36. package/dist/models/retry-dead-delivery.model.js.map +1 -0
  37. package/dist/models/search-dead-deliveries.model.d.ts +23 -0
  38. package/dist/models/search-dead-deliveries.model.d.ts.map +1 -0
  39. package/dist/models/search-dead-deliveries.model.js +14 -0
  40. package/dist/models/search-dead-deliveries.model.js.map +1 -0
  41. package/dist/services/application.service.d.ts +6 -2
  42. package/dist/services/application.service.d.ts.map +1 -1
  43. package/dist/services/application.service.js +11 -4
  44. package/dist/services/application.service.js.map +1 -1
  45. package/dist/services/config.service.js +2 -1
  46. package/dist/services/config.service.js.map +1 -1
  47. package/dist/services/event.boot.js +5 -1
  48. package/dist/services/event.boot.js.map +1 -1
  49. package/dist/services/mcp-provider.service.d.ts +3 -0
  50. package/dist/services/mcp-provider.service.d.ts.map +1 -0
  51. package/dist/services/mcp-provider.service.js +14 -0
  52. package/dist/services/mcp-provider.service.js.map +1 -0
  53. package/package.json +4 -3
@@ -0,0 +1,53 @@
1
+ declare const _default: import("@hile/micro").MicroContractMessage<{
2
+ readonly path: "/operations/dead-deliveries/retry";
3
+ readonly input: import("zod").ZodReadonly<import("zod").ZodObject<{
4
+ deliveryId: import("zod").ZodUUID;
5
+ }, import("zod/v4/core").$strict>>;
6
+ readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodReadonly<import("zod").ZodObject<{
7
+ outcome: import("zod").ZodLiteral<"retry-requested">;
8
+ delivery: import("zod").ZodReadonly<import("zod").ZodObject<{
9
+ deliveryId: import("zod").ZodUUID;
10
+ subscriptionId: import("zod").ZodString;
11
+ eventId: import("zod").ZodUUID;
12
+ eventType: import("zod").ZodString;
13
+ producer: import("zod").ZodString;
14
+ aggregateType: import("zod").ZodString;
15
+ aggregateId: import("zod").ZodString;
16
+ status: import("zod").ZodEnum<{
17
+ dead: "dead";
18
+ delivered: "delivered";
19
+ leased: "leased";
20
+ pending: "pending";
21
+ }>;
22
+ attempts: import("zod").ZodNumber;
23
+ firstFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
24
+ lastFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
25
+ createdAt: import("zod").ZodISODateTime;
26
+ }, import("zod/v4/core").$strict>>;
27
+ }, import("zod/v4/core").$strict>>, import("zod").ZodReadonly<import("zod").ZodObject<{
28
+ outcome: import("zod").ZodLiteral<"missing">;
29
+ }, import("zod/v4/core").$strict>>, import("zod").ZodReadonly<import("zod").ZodObject<{
30
+ outcome: import("zod").ZodLiteral<"not-dead">;
31
+ delivery: import("zod").ZodReadonly<import("zod").ZodObject<{
32
+ deliveryId: import("zod").ZodUUID;
33
+ subscriptionId: import("zod").ZodString;
34
+ eventId: import("zod").ZodUUID;
35
+ eventType: import("zod").ZodString;
36
+ producer: import("zod").ZodString;
37
+ aggregateType: import("zod").ZodString;
38
+ aggregateId: import("zod").ZodString;
39
+ status: import("zod").ZodEnum<{
40
+ dead: "dead";
41
+ delivered: "delivered";
42
+ leased: "leased";
43
+ pending: "pending";
44
+ }>;
45
+ attempts: import("zod").ZodNumber;
46
+ firstFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
47
+ lastFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
48
+ createdAt: import("zod").ZodISODateTime;
49
+ }, import("zod/v4/core").$strict>>;
50
+ }, import("zod/v4/core").$strict>>], "outcome">;
51
+ }>;
52
+ export default _default;
53
+ //# sourceMappingURL=retry.msg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.msg.d.ts","sourceRoot":"","sources":["../../../../src/admin-messages/operations/dead-deliveries/retry.msg.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { defineMicroMessage } from '@hile/micro';
2
+ import { loadModel } from '@hile/model';
3
+ import { eventAdminMicroContract } from '@zlooks.cn/event-client';
4
+ import retryDeadDeliveryModel from '../../../models/retry-dead-delivery.model.js';
5
+ export default defineMicroMessage(eventAdminMicroContract.operations.retryDeadDelivery, ({ data, invocation }) => loadModel(retryDeadDeliveryModel, data, invocation));
6
+ //# sourceMappingURL=retry.msg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.msg.js","sourceRoot":"","sources":["../../../../src/admin-messages/operations/dead-deliveries/retry.msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,sBAAsB,MAAM,8CAA8C,CAAC;AAElF,eAAe,kBAAkB,CAC/B,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,EACpD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,EAAE,UAAU,CAAC,CAC9E,CAAC"}
@@ -0,0 +1,32 @@
1
+ declare const _default: import("@hile/micro").MicroContractMessage<{
2
+ readonly path: "/operations/dead-deliveries/search";
3
+ readonly input: import("zod").ZodReadonly<import("zod").ZodObject<{
4
+ subscriptionId: import("zod").ZodOptional<import("zod").ZodString>;
5
+ cursor: import("zod").ZodOptional<import("zod").ZodUUID>;
6
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
7
+ }, import("zod/v4/core").$strict>>;
8
+ readonly output: import("zod").ZodReadonly<import("zod").ZodObject<{
9
+ items: import("zod").ZodReadonly<import("zod").ZodArray<import("zod").ZodReadonly<import("zod").ZodObject<{
10
+ deliveryId: import("zod").ZodUUID;
11
+ subscriptionId: import("zod").ZodString;
12
+ eventId: import("zod").ZodUUID;
13
+ eventType: import("zod").ZodString;
14
+ producer: import("zod").ZodString;
15
+ aggregateType: import("zod").ZodString;
16
+ aggregateId: import("zod").ZodString;
17
+ status: import("zod").ZodEnum<{
18
+ dead: "dead";
19
+ delivered: "delivered";
20
+ leased: "leased";
21
+ pending: "pending";
22
+ }>;
23
+ attempts: import("zod").ZodNumber;
24
+ firstFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
25
+ lastFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
26
+ createdAt: import("zod").ZodISODateTime;
27
+ }, import("zod/v4/core").$strict>>>>;
28
+ nextCursor: import("zod").ZodNullable<import("zod").ZodUUID>;
29
+ }, import("zod/v4/core").$strict>>;
30
+ }>;
31
+ export default _default;
32
+ //# sourceMappingURL=search.msg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.msg.d.ts","sourceRoot":"","sources":["../../../../src/admin-messages/operations/dead-deliveries/search.msg.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { defineMicroMessage } from '@hile/micro';
2
+ import { loadModel } from '@hile/model';
3
+ import { eventAdminMicroContract } from '@zlooks.cn/event-client';
4
+ import searchDeadDeliveriesModel from '../../../models/search-dead-deliveries.model.js';
5
+ export default defineMicroMessage(eventAdminMicroContract.operations.searchDeadDeliveries, ({ data, invocation }) => loadModel(searchDeadDeliveriesModel, data, invocation));
6
+ //# sourceMappingURL=search.msg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.msg.js","sourceRoot":"","sources":["../../../../src/admin-messages/operations/dead-deliveries/search.msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,yBAAyB,MAAM,iDAAiD,CAAC;AAExF,eAAe,kBAAkB,CAC/B,uBAAuB,CAAC,UAAU,CAAC,oBAAoB,EACvD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,EAAE,UAAU,CAAC,CACjF,CAAC"}
@@ -0,0 +1,32 @@
1
+ declare const _default: import("@hile/micro").MicroContractMessage<{
2
+ readonly path: "/operations/deliveries/read";
3
+ readonly input: import("zod").ZodReadonly<import("zod").ZodObject<{
4
+ deliveryId: import("zod").ZodUUID;
5
+ }, import("zod/v4/core").$strict>>;
6
+ readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodReadonly<import("zod").ZodObject<{
7
+ outcome: import("zod").ZodLiteral<"found">;
8
+ delivery: import("zod").ZodReadonly<import("zod").ZodObject<{
9
+ deliveryId: import("zod").ZodUUID;
10
+ subscriptionId: import("zod").ZodString;
11
+ eventId: import("zod").ZodUUID;
12
+ eventType: import("zod").ZodString;
13
+ producer: import("zod").ZodString;
14
+ aggregateType: import("zod").ZodString;
15
+ aggregateId: import("zod").ZodString;
16
+ status: import("zod").ZodEnum<{
17
+ dead: "dead";
18
+ delivered: "delivered";
19
+ leased: "leased";
20
+ pending: "pending";
21
+ }>;
22
+ attempts: import("zod").ZodNumber;
23
+ firstFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
24
+ lastFailureReason: import("zod").ZodNullable<import("zod").ZodString>;
25
+ createdAt: import("zod").ZodISODateTime;
26
+ }, import("zod/v4/core").$strict>>;
27
+ }, import("zod/v4/core").$strict>>, import("zod").ZodReadonly<import("zod").ZodObject<{
28
+ outcome: import("zod").ZodLiteral<"missing">;
29
+ }, import("zod/v4/core").$strict>>], "outcome">;
30
+ }>;
31
+ export default _default;
32
+ //# sourceMappingURL=read.msg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.msg.d.ts","sourceRoot":"","sources":["../../../../src/admin-messages/operations/deliveries/read.msg.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { defineMicroMessage } from '@hile/micro';
2
+ import { loadModel } from '@hile/model';
3
+ import { eventAdminMicroContract } from '@zlooks.cn/event-client';
4
+ import readDeliveryModel from '../../../models/read-delivery.model.js';
5
+ export default defineMicroMessage(eventAdminMicroContract.operations.readDelivery, ({ data, invocation }) => loadModel(readDeliveryModel, data, invocation));
6
+ //# sourceMappingURL=read.msg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.msg.js","sourceRoot":"","sources":["../../../../src/admin-messages/operations/deliveries/read.msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,iBAAiB,MAAM,wCAAwC,CAAC;AAEvE,eAAe,kBAAkB,CAC/B,uBAAuB,CAAC,UAAU,CAAC,YAAY,EAC/C,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,UAAU,CAAC,CACzE,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: import("@hile/micro").MicroContractMessage<{
2
+ readonly path: "/operations/status";
3
+ readonly input: import("zod").ZodReadonly<import("zod").ZodObject<{}, import("zod/v4/core").$strict>>;
4
+ readonly output: import("zod").ZodReadonly<import("zod").ZodObject<{
5
+ events: import("zod").ZodNumber;
6
+ subscriptions: import("zod").ZodNumber;
7
+ deliveries: import("zod").ZodReadonly<import("zod").ZodObject<{
8
+ pending: import("zod").ZodNumber;
9
+ leased: import("zod").ZodNumber;
10
+ delivered: import("zod").ZodNumber;
11
+ dead: import("zod").ZodNumber;
12
+ }, import("zod/v4/core").$strict>>;
13
+ }, import("zod/v4/core").$strict>>;
14
+ }>;
15
+ export default _default;
16
+ //# sourceMappingURL=status.msg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.msg.d.ts","sourceRoot":"","sources":["../../../src/admin-messages/operations/status.msg.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { defineMicroMessage } from '@hile/micro';
2
+ import { loadModel } from '@hile/model';
3
+ import { eventAdminMicroContract } from '@zlooks.cn/event-client';
4
+ import readOperationalStatusModel from '../../models/read-operational-status.model.js';
5
+ export default defineMicroMessage(eventAdminMicroContract.operations.readOperationalStatus, ({ data, invocation }) => loadModel(readOperationalStatusModel, data, invocation));
6
+ //# sourceMappingURL=status.msg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.msg.js","sourceRoot":"","sources":["../../../src/admin-messages/operations/status.msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,0BAA0B,MAAM,+CAA+C,CAAC;AAEvF,eAAe,kBAAkB,CAC/B,uBAAuB,CAAC,UAAU,CAAC,qBAAqB,EACxD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,0BAA0B,EAAE,IAAI,EAAE,UAAU,CAAC,CAClF,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AckRequest, ClaimRequest, FailRequest, RenewRequest } from '@zlooks.cn/event-client';
1
+ import type { AckRequest, ClaimRequest, DeadDeliveryPage, EventOperationalStatus, FailRequest, RenewRequest, ReadDeliveryResponse, RetryDeadDeliveryResponse, SearchDeadDeliveriesInput } from '@zlooks.cn/event-client';
2
2
  import { type DataSource } from 'typeorm';
3
3
  export declare class EventCenterStore {
4
4
  #private;
@@ -47,9 +47,14 @@ export declare class EventCenterStore {
47
47
  countEvents(): Promise<number>;
48
48
  countDeliveries(): Promise<number>;
49
49
  countDeadLetters(): Promise<number>;
50
+ operationalStatus(): Promise<EventOperationalStatus>;
51
+ searchDeadDeliveries(input: SearchDeadDeliveriesInput): Promise<DeadDeliveryPage>;
52
+ retryDeadDelivery(deliveryId: string): Promise<RetryDeadDeliveryResponse>;
53
+ readDelivery(deliveryId: string): Promise<ReadDeliveryResponse>;
50
54
  private retryDelay;
55
+ private deliveryProjectionQuery;
56
+ private readDeliveryProjection;
51
57
  private backfill;
52
- private insertDelivery;
53
58
  private deliveryRow;
54
59
  private serializable;
55
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-center-store.d.ts","sourceRoot":"","sources":["../src/event-center-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAkD,KAAK,UAAU,EAAsB,MAAM,SAAS,CAAC;AAQ9G,qBAAa,gBAAgB;;IAOzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAD7B,YACmB,UAAU,EAAE,UAAU,EACvC,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KACd,EAOP;IAEY,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CA8B3G;IAEY,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;OAkBxE;IAEY,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAa;;;;;;;;;;;;;;;;;;;;;UAkGvD;IAEY,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAatE;IAEY,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAa1E;IAEY,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCxE;IAEM,WAAW,oBAEjB;IACM,eAAe,oBAErB;IACM,gBAAgB,oBAEtB;IAED,OAAO,CAAC,UAAU;YAIJ,QAAQ;YAmCR,cAAc;IAc5B,OAAO,CAAC,WAAW;YAmBL,YAAY;CAW3B"}
1
+ {"version":3,"file":"event-center-store.d.ts","sourceRoot":"","sources":["../src/event-center-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAEZ,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiC,KAAK,UAAU,EAAsB,MAAM,SAAS,CAAC;AAQ7F,qBAAa,gBAAgB;;IAOzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAD7B,YACmB,UAAU,EAAE,UAAU,EACvC,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KACd,EAOP;IAEY,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAsC3G;IAEY,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;OAkBxE;IAEY,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAa;;;;;;;;;;;;;;;;;;;;;UAoFvD;IAEY,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAatE;IAEY,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAa1E;IAEY,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCxE;IAEM,WAAW,oBAEjB;IACM,eAAe,oBAErB;IACM,gBAAgB,oBAEtB;IAEY,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAwBhE;IAEY,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiC7F;IAEY,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAsBrF;IAEY,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAO3E;IAED,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,uBAAuB;YAkBjB,sBAAsB;YAQtB,QAAQ;IAmCtB,OAAO,CAAC,WAAW;YAmBL,YAAY;CAW3B"}
@@ -1,7 +1,7 @@
1
1
  import { createHash, randomUUID } from 'node:crypto';
2
2
  import { parseExecutionContext } from '@hile/context';
3
3
  import { parseDomainEvent } from '@zlooks.cn/event-bus';
4
- import { Equal, In, LessThan, LessThanOrEqual, MoreThan } from 'typeorm';
4
+ import { In, LessThanOrEqual, MoreThan } from 'typeorm';
5
5
  import { EventDeliveryEntity, EventRecordEntity, EventSubscriptionEntity, } from './persistence/entities.js';
6
6
  export class EventCenterStore {
7
7
  dataSource;
@@ -45,8 +45,15 @@ export class EventCenterStore {
45
45
  if (stored.fingerprint !== fingerprint)
46
46
  throw new Error(`Event ID ${event.eventId} was reused with different content`);
47
47
  const subscriptions = await manager.getRepository(EventSubscriptionEntity).findBy({ eventType: event.type });
48
- for (const { id } of subscriptions)
49
- await this.insertDelivery(manager, id, event);
48
+ if (subscriptions.length > 0) {
49
+ await manager
50
+ .getRepository(EventDeliveryEntity)
51
+ .createQueryBuilder()
52
+ .insert()
53
+ .values(subscriptions.map(({ id }) => this.deliveryRow(id, event)))
54
+ .orIgnore()
55
+ .execute();
56
+ }
50
57
  return { eventId: event.eventId, inserted: existing === null };
51
58
  });
52
59
  }
@@ -102,25 +109,6 @@ export class EventCenterStore {
102
109
  for (const candidate of candidates) {
103
110
  if (claimed.length >= input.limit)
104
111
  break;
105
- const predecessor = await repository.findOne({
106
- where: [
107
- {
108
- subscriptionId: input.subscriptionId,
109
- orderingKey: candidate.orderingKey,
110
- status: In(['pending', 'leased']),
111
- createdAt: LessThan(candidate.createdAt),
112
- },
113
- {
114
- subscriptionId: input.subscriptionId,
115
- orderingKey: candidate.orderingKey,
116
- status: In(['pending', 'leased']),
117
- createdAt: Equal(candidate.createdAt),
118
- id: LessThan(candidate.id),
119
- },
120
- ],
121
- });
122
- if (predecessor)
123
- continue;
124
112
  const leaseToken = randomUUID();
125
113
  const leaseUntil = new Date(now.getTime() + input.leaseMs);
126
114
  const where = candidate.status === 'pending'
@@ -153,9 +141,16 @@ export class EventCenterStore {
153
141
  leaseUntil,
154
142
  });
155
143
  }
156
- const eventRepository = this.dataSource.getRepository(EventRecordEntity);
157
- return Promise.all(claimed.map(async (delivery) => {
158
- const record = await eventRepository.findOneByOrFail({ id: delivery.eventId });
144
+ const records = claimed.length === 0
145
+ ? []
146
+ : await this.dataSource.getRepository(EventRecordEntity).findBy({
147
+ id: In(claimed.map(({ eventId }) => eventId)),
148
+ });
149
+ const recordsById = new Map(records.map((record) => [record.id, record]));
150
+ return claimed.map((delivery) => {
151
+ const record = recordsById.get(delivery.eventId);
152
+ if (!record)
153
+ throw new Error(`Event record ${delivery.eventId} is unavailable`);
159
154
  return Object.freeze({
160
155
  deliveryId: delivery.id,
161
156
  leaseToken: delivery.leaseToken,
@@ -163,7 +158,7 @@ export class EventCenterStore {
163
158
  event: parseDomainEvent(record.payload),
164
159
  context: parseExecutionContext(record.context),
165
160
  });
166
- }));
161
+ });
167
162
  }
168
163
  async ack(input, now = new Date()) {
169
164
  const result = await this.dataSource.getRepository(EventDeliveryEntity).update({
@@ -225,9 +220,122 @@ export class EventCenterStore {
225
220
  countDeadLetters() {
226
221
  return this.dataSource.getRepository(EventDeliveryEntity).countBy({ status: 'dead' });
227
222
  }
223
+ async operationalStatus() {
224
+ const [events, subscriptions, grouped] = await Promise.all([
225
+ this.countEvents(),
226
+ this.dataSource.getRepository(EventSubscriptionEntity).count(),
227
+ this.dataSource.getRepository(EventDeliveryEntity)
228
+ .createQueryBuilder('delivery')
229
+ .select('delivery.status', 'status')
230
+ .addSelect('COUNT(delivery.id)', 'count')
231
+ .groupBy('delivery.status')
232
+ .getRawMany(),
233
+ ]);
234
+ const deliveries = {
235
+ pending: 0,
236
+ leased: 0,
237
+ delivered: 0,
238
+ dead: 0,
239
+ };
240
+ for (const row of grouped) {
241
+ if (!Object.hasOwn(deliveries, row.status))
242
+ throw new Error('Unknown event delivery status');
243
+ const count = Number(row.count);
244
+ if (!Number.isSafeInteger(count) || count < 0)
245
+ throw new Error('Invalid event delivery count');
246
+ deliveries[row.status] = count;
247
+ }
248
+ return { events, subscriptions, deliveries };
249
+ }
250
+ async searchDeadDeliveries(input) {
251
+ const cursor = input.cursor
252
+ ? await this.dataSource.getRepository(EventDeliveryEntity).findOneBy({
253
+ id: input.cursor,
254
+ ...(input.subscriptionId ? { subscriptionId: input.subscriptionId } : {}),
255
+ })
256
+ : undefined;
257
+ if (input.cursor && !cursor)
258
+ throw new Error('Dead delivery cursor is invalid');
259
+ let query = this.deliveryProjectionQuery()
260
+ .where('delivery.status = :status', { status: 'dead' });
261
+ if (input.subscriptionId) {
262
+ query = query.andWhere('delivery.subscriptionId = :subscriptionId', {
263
+ subscriptionId: input.subscriptionId,
264
+ });
265
+ }
266
+ if (cursor) {
267
+ query = query.andWhere('(delivery.createdAt < :cursorCreatedAt OR '
268
+ + '(delivery.createdAt = :cursorCreatedAt AND delivery.id < :cursorId))', { cursorCreatedAt: cursor.createdAt, cursorId: cursor.id });
269
+ }
270
+ const rows = await query
271
+ .orderBy('delivery.createdAt', 'DESC')
272
+ .addOrderBy('delivery.id', 'DESC')
273
+ .limit(input.limit + 1)
274
+ .getRawMany();
275
+ const hasMore = rows.length > input.limit;
276
+ const bounded = hasMore ? rows.slice(0, input.limit) : rows;
277
+ return {
278
+ items: bounded.map(projectDeadDelivery),
279
+ nextCursor: hasMore ? (bounded.at(-1)?.deliveryId ?? null) : null,
280
+ };
281
+ }
282
+ async retryDeadDelivery(deliveryId) {
283
+ const repository = this.dataSource.getRepository(EventDeliveryEntity);
284
+ const current = await repository.findOneBy({ id: deliveryId });
285
+ if (!current)
286
+ return { outcome: 'missing' };
287
+ if (current.status !== 'dead') {
288
+ return { outcome: 'not-dead', delivery: await this.readDeliveryProjection(deliveryId) };
289
+ }
290
+ const result = await repository.update({ id: deliveryId, status: 'dead', attempts: current.attempts }, {
291
+ status: 'pending',
292
+ attempts: 0,
293
+ nextAttemptAt: this.#clock(),
294
+ leaseOwner: null,
295
+ leaseToken: null,
296
+ leaseUntil: null,
297
+ });
298
+ const delivery = await this.readDeliveryProjection(deliveryId);
299
+ return result.affected === 1
300
+ ? { outcome: 'retry-requested', delivery }
301
+ : { outcome: 'not-dead', delivery };
302
+ }
303
+ async readDelivery(deliveryId) {
304
+ const row = await this.deliveryProjectionQuery()
305
+ .where('delivery.id = :deliveryId', { deliveryId })
306
+ .getRawOne();
307
+ return row
308
+ ? { outcome: 'found', delivery: projectDeadDelivery(row) }
309
+ : { outcome: 'missing' };
310
+ }
228
311
  retryDelay(attempts) {
229
312
  return Math.min(60_000, this.#baseRetryMs * 2 ** Math.min(attempts - 1, 6));
230
313
  }
314
+ deliveryProjectionQuery() {
315
+ return this.dataSource.getRepository(EventDeliveryEntity)
316
+ .createQueryBuilder('delivery')
317
+ .innerJoin(EventRecordEntity.options.name, 'event', 'event.id = delivery.eventId')
318
+ .select('delivery.id', 'deliveryId')
319
+ .addSelect('delivery.subscriptionId', 'subscriptionId')
320
+ .addSelect('delivery.eventId', 'eventId')
321
+ .addSelect('delivery.status', 'status')
322
+ .addSelect('delivery.attempts', 'attempts')
323
+ .addSelect('delivery.firstFailureReason', 'firstFailureReason')
324
+ .addSelect('delivery.lastFailureReason', 'lastFailureReason')
325
+ .addSelect('delivery.createdAt', 'createdAt')
326
+ .addSelect('event.eventType', 'eventType')
327
+ .addSelect('event.producer', 'producer')
328
+ .addSelect('event.aggregateType', 'aggregateType')
329
+ .addSelect('event.aggregateId', 'aggregateId');
330
+ }
331
+ async readDeliveryProjection(deliveryId) {
332
+ const row = await this.deliveryProjectionQuery()
333
+ .where('delivery.id = :deliveryId', { deliveryId })
334
+ .getRawOne();
335
+ if (!row)
336
+ throw new Error(`Event delivery ${deliveryId} is unavailable`);
337
+ return projectDeadDelivery(row);
338
+ }
231
339
  async backfill(subscriptionId, eventType) {
232
340
  await this.serializable(async (manager) => {
233
341
  const subscriptions = manager.getRepository(EventSubscriptionEntity);
@@ -258,15 +366,6 @@ export class EventCenterStore {
258
366
  }
259
367
  });
260
368
  }
261
- async insertDelivery(manager, subscriptionId, event) {
262
- await manager
263
- .getRepository(EventDeliveryEntity)
264
- .createQueryBuilder()
265
- .insert()
266
- .values(this.deliveryRow(subscriptionId, event))
267
- .orIgnore()
268
- .execute();
269
- }
270
369
  deliveryRow(subscriptionId, event) {
271
370
  return {
272
371
  id: randomUUID(),
@@ -315,4 +414,20 @@ function stableStringify(value) {
315
414
  function isTransactionRetry(error) {
316
415
  return Boolean(error && typeof error === 'object' && 'code' in error && (error.code === '40001' || error.code === '23505'));
317
416
  }
417
+ function projectDeadDelivery(row) {
418
+ return {
419
+ deliveryId: row.deliveryId,
420
+ subscriptionId: row.subscriptionId,
421
+ eventId: row.eventId,
422
+ eventType: row.eventType,
423
+ producer: row.producer,
424
+ aggregateType: row.aggregateType,
425
+ aggregateId: row.aggregateId,
426
+ status: row.status,
427
+ attempts: row.attempts,
428
+ firstFailureReason: row.firstFailureReason,
429
+ lastFailureReason: row.lastFailureReason,
430
+ createdAt: row.createdAt.toISOString(),
431
+ };
432
+ }
318
433
  //# sourceMappingURL=event-center-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-center-store.js","sourceRoot":"","sources":["../src/event-center-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAuC,MAAM,SAAS,CAAC;AAC9G,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,OAAO,gBAAgB;IAOR,UAAU;IANpB,YAAY,CAAS;IACrB,YAAY,CAAS;IACrB,kBAAkB,CAAS;IAC3B,aAAa,CAAU;IACvB,MAAM,CAAa;IAC5B,YACmB,UAAsB,EACvC,OAAO,GAMH,EAAE;0BAPW,UAAU;QAS3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,IAAI,GAAG,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,KAAc,EAAE,YAAqB;QACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,QAAQ;gBACX,MAAM,UAAU,CAAC,IAAI,CAAC;oBACpB,EAAE,EAAE,KAAK,CAAC,OAAO;oBACjB,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;oBACnC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;oBAC/B,OAAO,EAAE,KAA2C;oBACpD,OAAO,EAAE,OAA6C;oBACtD,WAAW;oBACX,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;oBACtC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;iBACzB,CAAC,CAAC;YACL,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW;gBACpC,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;YACjF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7G,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,aAAa;gBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,cAAsB,EAAE,SAAiB;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACzC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACvE,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS;gBAC9C,MAAM,IAAI,KAAK,CAAC,gBAAgB,cAAc,wBAAwB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC;oBACvB,EAAE,EAAE,cAAc;oBAClB,SAAS;oBACT,gBAAgB,EAAE,KAAK;oBACvB,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;iBACzB,CAAC,CAAC;YACL,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YAC3E,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;gBAChC,MAAM,IAAI,KAAK,CAAC,gBAAgB,cAAc,wBAAwB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5F,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAAmB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;QACtD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU;aACvC,aAAa,CAAC,uBAAuB,CAAC;aACtC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,cAAc,oBAAoB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,gBAAgB;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAC9C;;;;;;;;;;;;KAYD,EACC,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAC5D,CAAC;QACF,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK;gBAAE,MAAM;YACzC,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;gBAC3C,KAAK,EAAE;oBACL;wBACE,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,WAAW,EAAE,SAAS,CAAC,WAAW;wBAClC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBACjC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;qBACzC;oBACD;wBACE,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,WAAW,EAAE,SAAS,CAAC,WAAW;wBAClC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBACjC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;wBACrC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;qBAC3B;iBACF;aACF,CAAC,CAAC;YACH,IAAI,WAAW;gBAAE,SAAS;YAC1B,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,KAAK,GACT,SAAS,CAAC,MAAM,KAAK,SAAS;gBAC5B,CAAC,CAAC;oBACE,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,MAAM,EAAE,SAAkB;oBAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC;iBACpC;gBACH,CAAC,CAAC;oBACE,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,MAAM,EAAE,QAAiB;oBACzB,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC;iBACjC,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC5C,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,CAAC;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU;gBACV,UAAU;aACX,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC;oBACX,GAAG,SAAS;oBACZ,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,CAAC;oBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,UAAU;oBACV,UAAU;iBACX,CAAC,CAAC;QACP,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAW;gBAChC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;gBACvC,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAiB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAC5E;YACE,EAAE,EAAE,KAAK,CAAC,UAAU;YACpB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;SAC1B,EACD,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAChG,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAAmB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAC5E;YACE,EAAE,EAAE,KAAK,CAAC,UAAU;YACpB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;SAC1B,EACD,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CACxD,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAkB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3G,IACE,CAAC,OAAO;YACR,OAAO,CAAC,MAAM,KAAK,QAAQ;YAC3B,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YACvC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YACvC,CAAC,OAAO,CAAC,UAAU;YACnB,OAAO,CAAC,UAAU,IAAI,GAAG;YAEzB,OAAO,KAAK,CAAC;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CACpC;YACE,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;SAC1B,EACD;YACE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzG,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,MAAM;YAC9D,iBAAiB,EAAE,KAAK,CAAC,MAAM;SAChC,CACF,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAClE,CAAC;IACM,eAAe;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IACpE,CAAC;IACM,gBAAgB;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,cAAsB,EAAE,SAAiB;QAC9D,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACxC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACjF,IAAI,YAAY,CAAC,gBAAgB;gBAAE,OAAO;YAC1C,MAAM,MAAM,GAAG,MAAM,OAAO;iBACzB,aAAa,CAAC,iBAAiB,CAAC;iBAChC,kBAAkB,CAAC,OAAO,CAAC;iBAC3B,QAAQ,CACP,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAChC,UAAU,EACV,2EAA2E,EAC3E,EAAE,cAAc,EAAE,CACnB;iBACA,KAAK,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,CAAC;iBACpD,QAAQ,CAAC,qBAAqB,CAAC;iBAC/B,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC;iBAClC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;iBAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;iBAC7B,OAAO,EAAE,CAAC;YACb,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,OAAO;qBACV,aAAa,CAAC,mBAAmB,CAAC;qBAClC,kBAAkB,EAAE;qBACpB,MAAM,EAAE;qBACR,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;qBAChG,QAAQ,EAAE;qBACV,OAAO,EAAE,CAAC;YACf,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5C,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,OAAsB,EACtB,cAAsB,EACtB,KAAmC;QAEnC,MAAM,OAAO;aACV,aAAa,CAAC,mBAAmB,CAAC;aAClC,kBAAkB,EAAE;aACpB,MAAM,EAAE;aACR,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;aAC/C,QAAQ,EAAE;aACV,OAAO,EAAE,CAAC;IACf,CAAC;IAEO,WAAW,CAAC,cAAsB,EAAE,KAAmC;QAC7E,OAAO;YACL,EAAE,EAAE,UAAU,EAAE;YAChB,cAAc;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE;YAC9E,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE;YAC5B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,kBAAkB,EAAE,IAAI;YACxB,iBAAiB,EAAE,IAAI;YACvB,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;SACtC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAI,IAA4C;QACxE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa;oBAC9B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC;oBACnD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AACD,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QACpC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;aACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,CACZ,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAC5G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"event-center-store.js","sourceRoot":"","sources":["../src/event-center-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type InvocationContext } from '@hile/context';
2
+ import { type EventAdminClient } from '@zlooks.cn/event-client';
3
+ export declare function createEventMcpProvider(client: EventAdminClient<InvocationContext>): import("@hile/mcp").McpProviderDefinition;
4
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/mcp/provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAgBL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAKjC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,6CAgGjF"}
@@ -0,0 +1,131 @@
1
+ import { defineMcpPrompt, defineMcpProvider, defineMcpResource, defineMcpTool, } from '@hile/mcp';
2
+ import { createInvocationContext } from '@hile/context';
3
+ import { deadDeliveryPageSchema, EVENT_DELIVERY_RESOURCE, EVENT_MCP_PROVIDER_ID, EVENT_READ_SCOPE, EVENT_RETRY_DEAD_TOOL, EVENT_REVIEW_DEAD_PROMPT, EVENT_SEARCH_DEAD_TOOL, EVENT_STATUS_RESOURCE, EVENT_WRITE_SCOPE, eventOperationalStatusSchema, readDeliveryResponseSchema, readDeliverySchema, retryDeadDeliveryResponseSchema, retryDeadDeliverySchema, searchDeadDeliveriesSchema, } from '@zlooks.cn/event-client';
4
+ const readAccess = { scopes: [EVENT_READ_SCOPE] };
5
+ const writeAccess = { scopes: [EVENT_WRITE_SCOPE] };
6
+ export function createEventMcpProvider(client) {
7
+ return defineMcpProvider({
8
+ id: EVENT_MCP_PROVIDER_ID,
9
+ displayName: '领域事件中心',
10
+ tools: {
11
+ [EVENT_SEARCH_DEAD_TOOL]: defineMcpTool({
12
+ name: EVENT_SEARCH_DEAD_TOOL,
13
+ title: '查询死信投递',
14
+ description: '按订阅查询持久化的 dead 投递;使用 nextCursor 继续读取,空结果不是错误。',
15
+ inputSchema: searchDeadDeliveriesSchema,
16
+ outputSchema: deadDeliveryPageSchema,
17
+ access: readAccess,
18
+ annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false },
19
+ execution: { timeoutMs: 10_000, retry: 'idempotent-failover' },
20
+ }, (input, context) => toolResult(context, EVENT_READ_SCOPE, () => (client.searchDeadDeliveries(input, microOptions(context))))),
21
+ [EVENT_RETRY_DEAD_TOOL]: defineMcpTool({
22
+ name: EVENT_RETRY_DEAD_TOOL,
23
+ title: '重新排队死信投递',
24
+ description: '把一条当前仍为 dead 的投递重新置为 pending。调用前必须审查失败原因、确认消费者副作用按 eventId 幂等,并取得用户确认;写操作不自动重试。',
25
+ inputSchema: retryDeadDeliverySchema,
26
+ outputSchema: retryDeadDeliveryResponseSchema,
27
+ access: writeAccess,
28
+ annotations: { readOnlyHint: false, idempotentHint: true, destructiveHint: true },
29
+ execution: { timeoutMs: 10_000, retry: 'never' },
30
+ }, (input, context) => toolResult(context, EVENT_WRITE_SCOPE, () => (client.retryDeadDelivery(input, microOptions(context))))),
31
+ },
32
+ resources: {
33
+ [EVENT_STATUS_RESOURCE]: defineMcpResource({
34
+ kind: 'static',
35
+ name: EVENT_STATUS_RESOURCE,
36
+ uri: 'hile://event/status',
37
+ title: '领域事件中心状态',
38
+ description: '读取事件、订阅及各投递状态的当前持久化计数。',
39
+ mimeType: 'application/json',
40
+ access: readAccess,
41
+ }, async (uri, context) => {
42
+ const result = await resourceRead(context, async () => eventOperationalStatusSchema.parse(await client.readOperationalStatus(microOptions(context))));
43
+ return {
44
+ contents: [{ uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(result) }],
45
+ };
46
+ }),
47
+ [EVENT_DELIVERY_RESOURCE]: defineMcpResource({
48
+ kind: 'template',
49
+ name: EVENT_DELIVERY_RESOURCE,
50
+ uriTemplate: 'hile://event/deliveries/{deliveryId}',
51
+ title: '领域事件投递记录',
52
+ description: '由应用按投递 UUID 读取当前持久化状态;可在死信重排前后精确回读,返回 found 或 missing。',
53
+ mimeType: 'application/json',
54
+ access: readAccess,
55
+ }, async (variables, context) => {
56
+ const input = readDeliverySchema.parse({ deliveryId: variables.deliveryId });
57
+ const result = await resourceRead(context, async () => readDeliveryResponseSchema.parse(await client.readDelivery(input, microOptions(context))));
58
+ return {
59
+ contents: [{
60
+ uri: `hile://event/deliveries/${input.deliveryId}`,
61
+ mimeType: 'application/json',
62
+ text: JSON.stringify(result),
63
+ }],
64
+ };
65
+ }),
66
+ },
67
+ prompts: {
68
+ [EVENT_REVIEW_DEAD_PROMPT]: defineMcpPrompt({
69
+ name: EVENT_REVIEW_DEAD_PROMPT,
70
+ title: '审查并重试死信',
71
+ description: '查询死信、审查幂等与重复副作用风险、取得确认、执行一次重试并回读验证。',
72
+ argsSchema: retryDeadDeliverySchema,
73
+ access: { scopes: [EVENT_READ_SCOPE, EVENT_WRITE_SCOPE] },
74
+ }, ({ deliveryId }, context) => {
75
+ context.signal.throwIfAborted();
76
+ return {
77
+ messages: [{
78
+ role: 'user',
79
+ content: {
80
+ type: 'text',
81
+ text: `请审查领域事件死信 ${deliveryId}:\n`
82
+ + `1. 读取 Resource hile://event/deliveries/${deliveryId},核对 eventId、subscriptionId、状态与失败原因。\n`
83
+ + '2. 如果记录不存在或当前状态不是 dead,停止,不得调用重试 Tool。\n'
84
+ + '3. 确认消费者以 eventId 实现最终副作用幂等;无法确认时停止。\n'
85
+ + '4. 向用户说明重复执行与乱序重放风险并取得明确确认;没有确认时停止。\n'
86
+ + `5. 仅调用一次 event.${EVENT_RETRY_DEAD_TOOL},不得自动重试不确定的写结果。\n`
87
+ + `6. 再次读取 Resource hile://event/deliveries/${deliveryId};记录可能已被消费者领取或完成,据实报告。`,
88
+ },
89
+ }],
90
+ };
91
+ }),
92
+ },
93
+ });
94
+ }
95
+ function microOptions(context) {
96
+ return createInvocationContext(context.executionContext, context.signal);
97
+ }
98
+ function assertScope(context, scope) {
99
+ context.signal.throwIfAborted();
100
+ const scopes = context.principal?.scopes ?? [];
101
+ if (!scopes.includes('*') && !scopes.includes(scope))
102
+ throw new Error('没有领域事件操作权限');
103
+ }
104
+ async function toolResult(context, scope, run) {
105
+ assertScope(context, scope);
106
+ try {
107
+ const result = await run();
108
+ context.signal.throwIfAborted();
109
+ return {
110
+ content: [{ type: 'text', text: JSON.stringify(result) }],
111
+ structuredContent: result,
112
+ };
113
+ }
114
+ catch {
115
+ context.signal.throwIfAborted();
116
+ return { isError: true, content: [{ type: 'text', text: '领域事件服务暂时不可用' }] };
117
+ }
118
+ }
119
+ async function resourceRead(context, run) {
120
+ assertScope(context, EVENT_READ_SCOPE);
121
+ try {
122
+ const result = await run();
123
+ context.signal.throwIfAborted();
124
+ return result;
125
+ }
126
+ catch {
127
+ context.signal.throwIfAborted();
128
+ throw new Error('领域事件服务暂时不可用');
129
+ }
130
+ }
131
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/mcp/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ declare const _default: import("@hile/model").ModelDefinition<{
2
+ readonly deliveryId: string;
3
+ }, Readonly<{
4
+ outcome: "found";
5
+ delivery: Readonly<{
6
+ deliveryId: string;
7
+ subscriptionId: string;
8
+ eventId: string;
9
+ eventType: string;
10
+ producer: string;
11
+ aggregateType: string;
12
+ aggregateId: string;
13
+ status: "dead" | "delivered" | "leased" | "pending";
14
+ attempts: number;
15
+ firstFailureReason: string | null;
16
+ lastFailureReason: string | null;
17
+ createdAt: string;
18
+ }>;
19
+ }> | Readonly<{
20
+ outcome: "missing";
21
+ }>>;
22
+ export default _default;
23
+ //# sourceMappingURL=read-delivery.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-delivery.model.d.ts","sourceRoot":"","sources":["../../src/models/read-delivery.model.ts"],"names":[],"mappings":";yBAYkC,MAAM"}
@@ -0,0 +1,14 @@
1
+ import { defineModel } from '@hile/model';
2
+ import { readDeliveryResponseSchema, readDeliverySchema, } from '@zlooks.cn/event-client';
3
+ import eventRuntimeService from '../services/event-runtime.service.js';
4
+ export default defineModel({
5
+ services: [eventRuntimeService],
6
+ async main([store], input, invocation) {
7
+ invocation.signal.throwIfAborted();
8
+ const query = readDeliverySchema.parse(input);
9
+ const result = await store.readDelivery(query.deliveryId);
10
+ invocation.signal.throwIfAborted();
11
+ return readDeliveryResponseSchema.parse(result);
12
+ },
13
+ });
14
+ //# sourceMappingURL=read-delivery.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-delivery.model.js","sourceRoot":"","sources":["../../src/models/read-delivery.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AAEvE,eAAe,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,KAAK,CAAC,IAAI,CACR,CAAC,KAAK,CAAC,EACP,KAAsC,EACtC,UAAU;QAEV,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1D,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ declare const _default: import("@hile/model").ModelDefinition<Record<string, never>, Readonly<{
2
+ events: number;
3
+ subscriptions: number;
4
+ deliveries: Readonly<{
5
+ pending: number;
6
+ leased: number;
7
+ delivered: number;
8
+ dead: number;
9
+ }>;
10
+ }>>;
11
+ export default _default;
12
+ //# sourceMappingURL=read-operational-status.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-operational-status.model.d.ts","sourceRoot":"","sources":["../../src/models/read-operational-status.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { defineModel } from '@hile/model';
2
+ import { emptyEventAdminRequestSchema, eventOperationalStatusSchema } from '@zlooks.cn/event-client';
3
+ import eventRuntimeService from '../services/event-runtime.service.js';
4
+ export default defineModel({
5
+ services: [eventRuntimeService],
6
+ async main([store], input, invocation) {
7
+ invocation.signal.throwIfAborted();
8
+ emptyEventAdminRequestSchema.parse(input);
9
+ const result = await store.operationalStatus();
10
+ invocation.signal.throwIfAborted();
11
+ return eventOperationalStatusSchema.parse(result);
12
+ },
13
+ });
14
+ //# sourceMappingURL=read-operational-status.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-operational-status.model.js","sourceRoot":"","sources":["../../src/models/read-operational-status.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AAEvE,eAAe,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAA4B,EAAE,UAAU;QAC1D,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/C,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,4BAA4B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ declare const _default: import("@hile/model").ModelDefinition<{
2
+ readonly deliveryId: string;
3
+ }, Readonly<{
4
+ outcome: "retry-requested";
5
+ delivery: Readonly<{
6
+ deliveryId: string;
7
+ subscriptionId: string;
8
+ eventId: string;
9
+ eventType: string;
10
+ producer: string;
11
+ aggregateType: string;
12
+ aggregateId: string;
13
+ status: "dead" | "delivered" | "leased" | "pending";
14
+ attempts: number;
15
+ firstFailureReason: string | null;
16
+ lastFailureReason: string | null;
17
+ createdAt: string;
18
+ }>;
19
+ }> | Readonly<{
20
+ outcome: "missing";
21
+ }> | Readonly<{
22
+ outcome: "not-dead";
23
+ delivery: Readonly<{
24
+ deliveryId: string;
25
+ subscriptionId: string;
26
+ eventId: string;
27
+ eventType: string;
28
+ producer: string;
29
+ aggregateType: string;
30
+ aggregateId: string;
31
+ status: "dead" | "delivered" | "leased" | "pending";
32
+ attempts: number;
33
+ firstFailureReason: string | null;
34
+ lastFailureReason: string | null;
35
+ createdAt: string;
36
+ }>;
37
+ }>>;
38
+ export default _default;
39
+ //# sourceMappingURL=retry-dead-delivery.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-dead-delivery.model.d.ts","sourceRoot":"","sources":["../../src/models/retry-dead-delivery.model.ts"],"names":[],"mappings":";yBAUoD,MAAM"}
@@ -0,0 +1,14 @@
1
+ import { defineModel } from '@hile/model';
2
+ import { retryDeadDeliveryResponseSchema, retryDeadDeliverySchema, } from '@zlooks.cn/event-client';
3
+ import eventRuntimeService from '../services/event-runtime.service.js';
4
+ export default defineModel({
5
+ services: [eventRuntimeService],
6
+ async main([store], input, invocation) {
7
+ invocation.signal.throwIfAborted();
8
+ const command = retryDeadDeliverySchema.parse(input);
9
+ const result = await store.retryDeadDelivery(command.deliveryId);
10
+ invocation.signal.throwIfAborted();
11
+ return retryDeadDeliveryResponseSchema.parse(result);
12
+ },
13
+ });
14
+ //# sourceMappingURL=retry-dead-delivery.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-dead-delivery.model.js","sourceRoot":"","sources":["../../src/models/retry-dead-delivery.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AAEvE,eAAe,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAsC,EAAE,UAAU;QACpE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,+BAA+B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ declare const _default: import("@hile/model").ModelDefinition<Readonly<{
2
+ subscriptionId?: string | undefined;
3
+ cursor?: string | undefined;
4
+ limit: number;
5
+ }>, Readonly<{
6
+ items: readonly Readonly<{
7
+ deliveryId: string;
8
+ subscriptionId: string;
9
+ eventId: string;
10
+ eventType: string;
11
+ producer: string;
12
+ aggregateType: string;
13
+ aggregateId: string;
14
+ status: "dead" | "delivered" | "leased" | "pending";
15
+ attempts: number;
16
+ firstFailureReason: string | null;
17
+ lastFailureReason: string | null;
18
+ createdAt: string;
19
+ }>[];
20
+ nextCursor: string | null;
21
+ }>>;
22
+ export default _default;
23
+ //# sourceMappingURL=search-dead-deliveries.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-dead-deliveries.model.d.ts","sourceRoot":"","sources":["../../src/models/search-dead-deliveries.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { defineModel } from '@hile/model';
2
+ import { deadDeliveryPageSchema, searchDeadDeliveriesSchema, } from '@zlooks.cn/event-client';
3
+ import eventRuntimeService from '../services/event-runtime.service.js';
4
+ export default defineModel({
5
+ services: [eventRuntimeService],
6
+ async main([store], input, invocation) {
7
+ invocation.signal.throwIfAborted();
8
+ const query = searchDeadDeliveriesSchema.parse(input);
9
+ const result = await store.searchDeadDeliveries(query);
10
+ invocation.signal.throwIfAborted();
11
+ return deadDeliveryPageSchema.parse(result);
12
+ },
13
+ });
14
+ //# sourceMappingURL=search-dead-deliveries.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-dead-deliveries.model.js","sourceRoot":"","sources":["../../src/models/search-dead-deliveries.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AAEvE,eAAe,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAgC,EAAE,UAAU;QAC9D,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvD,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC"}
@@ -1,4 +1,8 @@
1
- import { Application } from '@hile/micro';
2
- declare const _default: import("@hile/core").ServiceRegisterProps<Application>;
1
+ import { Application, type MicroBinding } from '@hile/micro';
2
+ import { eventAdminMicroContract } from '@zlooks.cn/event-client';
3
+ declare const _default: import("@hile/core").ServiceRegisterProps<Readonly<{
4
+ application: Application;
5
+ adminBinding: MicroBinding<typeof eventAdminMicroContract>;
6
+ }>>;
3
7
  export default _default;
4
8
  //# sourceMappingURL=application.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.service.d.ts","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"application.service.d.ts","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAqB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAA2B,MAAM,yBAAyB,CAAC;;iBAK5E,WAAW;kBACV,YAAY,CAAC,OAAO,uBAAuB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { fileURLToPath } from 'node:url';
2
2
  import { defineService } from '@hile/core';
3
- import { Application } from '@hile/micro';
4
- import { EVENT_SERVICE_NAMESPACE } from '@zlooks.cn/event-client';
3
+ import { Application, loadMicroContract } from '@hile/micro';
4
+ import { eventAdminMicroContract, EVENT_SERVICE_NAMESPACE } from '@zlooks.cn/event-client';
5
5
  import { parseAdvertiseHost, parseRegistryBootstrap } from '@zlooks.cn/registry-config';
6
6
  import { detect } from 'detect-port';
7
7
  export default defineService('zlooks.event.application', async (shutdown) => {
@@ -16,7 +16,14 @@ export default defineService('zlooks.event.application', async (shutdown) => {
16
16
  ...(advertiseHost ? { advertiseHost } : {}),
17
17
  });
18
18
  await application.load(fileURLToPath(new URL('../messages', import.meta.url)));
19
- shutdown(await application.listen(await detect()));
20
- return application;
19
+ const adminBinding = await loadMicroContract(application, eventAdminMicroContract, fileURLToPath(new URL('../admin-messages', import.meta.url)));
20
+ try {
21
+ shutdown(await application.listen(await detect()));
22
+ return { application, adminBinding };
23
+ }
24
+ catch (error) {
25
+ await adminBinding.close();
26
+ throw error;
27
+ }
21
28
  });
22
29
  //# sourceMappingURL=application.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.service.js","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,eAAe,aAAa,CAAC,0BAA0B,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC1E,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACxC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;KACzC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,SAAS,EAAE,uBAAuB;QAClC,QAAQ;QACR,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,QAAQ,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"application.service.js","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,eAAe,aAAa,CAA0B,0BAA0B,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACnG,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACxC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;KACzC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,SAAS,EAAE,uBAAuB;QAClC,QAAQ;QACR,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAC1C,WAAW,EACX,uBAAuB,EACvB,aAAa,CAAC,IAAI,GAAG,CAAC,mBAAmB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAC7D,CAAC;IACF,IAAI,CAAC;QACH,QAAQ,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -4,7 +4,8 @@ import { registryConfigTopic, subscribeRegistryConfig } from '@zlooks.cn/registr
4
4
  import { parseEventServerConfig } from '../config/schema.js';
5
5
  import applicationService from './application.service.js';
6
6
  export default defineService('zlooks.event.config', async (shutdown) => {
7
- const subscriber = await subscribeRegistryConfig(await loadService(applicationService), {
7
+ const { application } = await loadService(applicationService);
8
+ const subscriber = await subscribeRegistryConfig(application, {
8
9
  sources: { postgres: { topic: registryConfigTopic('postgres'), parse: parsePostgresConfig } },
9
10
  compose: parseEventServerConfig,
10
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,eAAe,aAAa,CAAC,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrE,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,MAAM,WAAW,CAAC,kBAAkB,CAAC,EAAE;QACtF,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;QAC7F,OAAO,EAAE,sBAAsB;KAChC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,eAAe,aAAa,CAAC,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE;QAC5D,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;QAC7F,OAAO,EAAE,sBAAsB;KAChC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -1,8 +1,12 @@
1
1
  import { defineService, loadService } from '@hile/core';
2
2
  import applicationService from './application.service.js';
3
3
  import databaseService from './database.service.js';
4
+ import mcpProviderService from './mcp-provider.service.js';
4
5
  export default defineService('zlooks.event.boot', async () => {
5
6
  await loadService(databaseService);
6
- return loadService(applicationService);
7
+ const runtime = await loadService(applicationService);
8
+ runtime.adminBinding.activate();
9
+ await loadService(mcpProviderService);
10
+ return runtime.application;
7
11
  });
8
12
  //# sourceMappingURL=event.boot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.boot.js","sourceRoot":"","sources":["../../src/services/event.boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAEpD,eAAe,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC;IACnC,OAAO,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"event.boot.js","sourceRoot":"","sources":["../../src/services/event.boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,kBAAkB,MAAM,2BAA2B,CAAC;AAE3D,eAAe,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACtD,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IAChC,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@hile/core").ServiceRegisterProps<import("@hile/mcp/micro").McpProviderAttachment>;
2
+ export default _default;
3
+ //# sourceMappingURL=mcp-provider.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-provider.service.d.ts","sourceRoot":"","sources":["../../src/services/mcp-provider.service.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { defineService, loadService } from '@hile/core';
2
+ import { attachMcpProvider } from '@hile/mcp/micro';
3
+ import { createEventAdminClient } from '@zlooks.cn/event-client';
4
+ import { createEventMcpProvider } from '../mcp/provider.js';
5
+ import applicationService from './application.service.js';
6
+ import eventRuntimeService from './event-runtime.service.js';
7
+ export default defineService('zlooks.event.mcp-provider', async (shutdown) => {
8
+ await loadService(eventRuntimeService);
9
+ const { application, adminBinding } = await loadService(applicationService);
10
+ const attachment = await attachMcpProvider(application, createEventMcpProvider(createEventAdminClient(adminBinding.local)), { invocationSecurity: { mode: 'trusted-internal' } });
11
+ shutdown(() => attachment.close());
12
+ return attachment;
13
+ });
14
+ //# sourceMappingURL=mcp-provider.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-provider.service.js","sourceRoot":"","sources":["../../src/services/mcp-provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAE7D,eAAe,aAAa,CAAC,2BAA2B,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC3E,MAAM,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,MAAM,iBAAiB,CACxC,WAAW,EACX,sBAAsB,CAAC,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAClE,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CACrD,CAAC;IACF,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zlooks.cn/event-server",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -33,13 +33,14 @@
33
33
  "dependencies": {
34
34
  "@hile/context": "4.0.3",
35
35
  "@hile/core": "4.0.2",
36
+ "@hile/mcp": "1.0.7",
36
37
  "@hile/message-loader": "4.0.9",
37
38
  "@hile/micro": "4.0.9",
38
39
  "@hile/model": "4.0.5",
39
40
  "@hile/typeorm": "4.0.3",
40
41
  "@zlooks.cn/database-command": "1.0.5",
41
42
  "@zlooks.cn/event-bus": "1.0.3",
42
- "@zlooks.cn/event-client": "1.0.3",
43
+ "@zlooks.cn/event-client": "1.1.0",
43
44
  "@zlooks.cn/infrastructure": "1.0.0",
44
45
  "@zlooks.cn/registry-config": "1.0.1",
45
46
  "@zlooks.cn/service-command": "1.0.3",
@@ -55,5 +56,5 @@
55
56
  "typescript": "7.0.2",
56
57
  "vitest": "4.1.11"
57
58
  },
58
- "gitHead": "0a2a065c8ad82ed20a5966cb588a229594f77d09"
59
+ "gitHead": "0bc8e75106dc91dc532581e4d6ca2a93bcecac04"
59
60
  }