@octo-cyber/ai 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/ai.module.d.ts +2 -1
  2. package/dist/ai.module.d.ts.map +1 -1
  3. package/dist/ai.module.js +22 -3
  4. package/dist/ai.module.js.map +1 -1
  5. package/dist/cli/cli-executor.service.js +1 -1
  6. package/dist/cli/cli-executor.service.js.map +1 -1
  7. package/dist/cli/cli-registry.service.js +1 -1
  8. package/dist/cli/cli-registry.service.js.map +1 -1
  9. package/dist/cli/controllers/ai-cli.controller.d.ts +1 -1
  10. package/dist/cli/controllers/ai-cli.controller.d.ts.map +1 -1
  11. package/dist/cli/controllers/ai-cli.controller.js +1 -1
  12. package/dist/cli/controllers/ai-cli.controller.js.map +1 -1
  13. package/dist/cli/workspace.service.js +1 -1
  14. package/dist/cli/workspace.service.js.map +1 -1
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +8 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/skill/controllers/skill.controller.d.ts +33 -0
  20. package/dist/skill/controllers/skill.controller.d.ts.map +1 -0
  21. package/dist/skill/controllers/skill.controller.js +264 -0
  22. package/dist/skill/controllers/skill.controller.js.map +1 -0
  23. package/dist/skill/entities/octo-skill.entity.d.ts +22 -0
  24. package/dist/skill/entities/octo-skill.entity.d.ts.map +1 -0
  25. package/dist/skill/entities/octo-skill.entity.js +91 -0
  26. package/dist/skill/entities/octo-skill.entity.js.map +1 -0
  27. package/dist/skill/index.d.ts +7 -0
  28. package/dist/skill/index.d.ts.map +1 -0
  29. package/dist/skill/index.js +17 -0
  30. package/dist/skill/index.js.map +1 -0
  31. package/dist/skill/services/skill-generator.service.d.ts +47 -0
  32. package/dist/skill/services/skill-generator.service.d.ts.map +1 -0
  33. package/dist/skill/services/skill-generator.service.js +232 -0
  34. package/dist/skill/services/skill-generator.service.js.map +1 -0
  35. package/dist/skill/services/skill-installer.service.d.ts +38 -0
  36. package/dist/skill/services/skill-installer.service.d.ts.map +1 -0
  37. package/dist/skill/services/skill-installer.service.js +150 -0
  38. package/dist/skill/services/skill-installer.service.js.map +1 -0
  39. package/dist/skill/services/skill-registry.service.d.ts +60 -0
  40. package/dist/skill/services/skill-registry.service.d.ts.map +1 -0
  41. package/dist/skill/services/skill-registry.service.js +147 -0
  42. package/dist/skill/services/skill-registry.service.js.map +1 -0
  43. package/dist/skill/types.d.ts +45 -0
  44. package/dist/skill/types.d.ts.map +1 -0
  45. package/dist/skill/types.js +6 -0
  46. package/dist/skill/types.js.map +1 -0
  47. package/package.json +4 -4
  48. package/web/components/SkillCard.tsx +139 -0
  49. package/web/components/SkillEditorDialog.tsx +77 -0
  50. package/web/components/SkillInstallDialog.tsx +134 -0
  51. package/web/index.ts +2 -0
  52. package/web/manifest.ts +1 -0
  53. package/web/messages/en-US.json +53 -0
  54. package/web/messages/zh-CN.json +53 -0
  55. package/web/pages/SkillsPage.tsx +206 -0
  56. package/web/services/skill-service.ts +89 -0
  57. package/dist/controllers/agent.controller.d.ts +0 -13
  58. package/dist/controllers/agent.controller.d.ts.map +0 -1
  59. package/dist/controllers/agent.controller.js +0 -117
  60. package/dist/controllers/agent.controller.js.map +0 -1
  61. package/dist/controllers/capability.controller.d.ts +0 -16
  62. package/dist/controllers/capability.controller.d.ts.map +0 -1
  63. package/dist/controllers/capability.controller.js +0 -108
  64. package/dist/controllers/capability.controller.js.map +0 -1
  65. package/dist/controllers/client.controller.d.ts +0 -10
  66. package/dist/controllers/client.controller.d.ts.map +0 -1
  67. package/dist/controllers/client.controller.js +0 -79
  68. package/dist/controllers/client.controller.js.map +0 -1
  69. package/dist/controllers/execution.controller.d.ts +0 -11
  70. package/dist/controllers/execution.controller.d.ts.map +0 -1
  71. package/dist/controllers/execution.controller.js +0 -50
  72. package/dist/controllers/execution.controller.js.map +0 -1
  73. package/dist/controllers/index.d.ts +0 -5
  74. package/dist/controllers/index.d.ts.map +0 -1
  75. package/dist/controllers/index.js +0 -12
  76. package/dist/controllers/index.js.map +0 -1
  77. package/dist/entities/agent-binding.entity.d.ts +0 -17
  78. package/dist/entities/agent-binding.entity.d.ts.map +0 -1
  79. package/dist/entities/agent-binding.entity.js +0 -64
  80. package/dist/entities/agent-binding.entity.js.map +0 -1
  81. package/dist/entities/agent-definition.entity.d.ts +0 -17
  82. package/dist/entities/agent-definition.entity.d.ts.map +0 -1
  83. package/dist/entities/agent-definition.entity.js +0 -70
  84. package/dist/entities/agent-definition.entity.js.map +0 -1
  85. package/dist/entities/agent-execution.entity.d.ts +0 -23
  86. package/dist/entities/agent-execution.entity.d.ts.map +0 -1
  87. package/dist/entities/agent-execution.entity.js +0 -93
  88. package/dist/entities/agent-execution.entity.js.map +0 -1
  89. package/dist/entities/agent-instance.entity.d.ts +0 -19
  90. package/dist/entities/agent-instance.entity.d.ts.map +0 -1
  91. package/dist/entities/agent-instance.entity.js +0 -76
  92. package/dist/entities/agent-instance.entity.js.map +0 -1
  93. package/dist/entities/capability-definition.entity.d.ts +0 -20
  94. package/dist/entities/capability-definition.entity.d.ts.map +0 -1
  95. package/dist/entities/capability-definition.entity.js +0 -77
  96. package/dist/entities/capability-definition.entity.js.map +0 -1
  97. package/dist/entities/client-registration.entity.d.ts +0 -19
  98. package/dist/entities/client-registration.entity.d.ts.map +0 -1
  99. package/dist/entities/client-registration.entity.js +0 -79
  100. package/dist/entities/client-registration.entity.js.map +0 -1
  101. package/dist/entities/index.d.ts +0 -7
  102. package/dist/entities/index.d.ts.map +0 -1
  103. package/dist/entities/index.js +0 -16
  104. package/dist/entities/index.js.map +0 -1
  105. package/dist/services/agent.service.d.ts +0 -23
  106. package/dist/services/agent.service.d.ts.map +0 -1
  107. package/dist/services/agent.service.js +0 -76
  108. package/dist/services/agent.service.js.map +0 -1
  109. package/dist/services/capability-router.service.d.ts +0 -45
  110. package/dist/services/capability-router.service.d.ts.map +0 -1
  111. package/dist/services/capability-router.service.js +0 -120
  112. package/dist/services/capability-router.service.js.map +0 -1
  113. package/dist/services/client-registration.service.d.ts +0 -27
  114. package/dist/services/client-registration.service.d.ts.map +0 -1
  115. package/dist/services/client-registration.service.js +0 -83
  116. package/dist/services/client-registration.service.js.map +0 -1
  117. package/dist/services/index.d.ts +0 -5
  118. package/dist/services/index.d.ts.map +0 -1
  119. package/dist/services/index.js +0 -12
  120. package/dist/services/index.js.map +0 -1
  121. package/dist/services/sync-bridge.service.d.ts +0 -41
  122. package/dist/services/sync-bridge.service.d.ts.map +0 -1
  123. package/dist/services/sync-bridge.service.js +0 -118
  124. package/dist/services/sync-bridge.service.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"capability-router.service.js","sourceRoot":"","sources":["../../src/services/capability-router.service.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { Repository } from '@octo/core';
2
- import { ClientRegistration } from '../entities/client-registration.entity.js';
3
- export declare class ClientRegistrationService {
4
- private clientRepo;
5
- private logger;
6
- private heartbeatTimeoutMs;
7
- setRepository(repo: Repository<ClientRegistration>): void;
8
- register(data: {
9
- clientId: string;
10
- clientName?: string;
11
- platform?: string;
12
- enabledCapabilities?: string[];
13
- userId?: number;
14
- metadata?: string;
15
- }): Promise<ClientRegistration>;
16
- heartbeat(clientId: string): Promise<boolean>;
17
- unregister(clientId: string): Promise<void>;
18
- findOnlineClients(): Promise<ClientRegistration[]>;
19
- findByClientId(clientId: string): Promise<ClientRegistration | null>;
20
- findAll(): Promise<ClientRegistration[]>;
21
- /**
22
- * Mark clients as offline if heartbeat is stale.
23
- * Should be called periodically.
24
- */
25
- checkStaleClients(): Promise<number>;
26
- }
27
- //# sourceMappingURL=client-registration.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-registration.service.d.ts","sourceRoot":"","sources":["../../src/services/client-registration.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAG/E,qBACa,yBAAyB;IACpC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,MAAM,CAA4D;IAC1E,OAAO,CAAC,kBAAkB,CAAU;IAEpC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAInD,QAAQ,CAAC,IAAI,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyBzB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIlD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAIpE,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAI9C;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;CAe3C"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ClientRegistrationService = void 0;
10
- const core_1 = require("@octo/core");
11
- const client_registration_entity_js_1 = require("../entities/client-registration.entity.js");
12
- let ClientRegistrationService = class ClientRegistrationService {
13
- clientRepo;
14
- logger = core_1.Container.get(core_1.LoggerService).child('ClientRegistration');
15
- heartbeatTimeoutMs = 60_000;
16
- setRepository(repo) {
17
- this.clientRepo = repo;
18
- }
19
- async register(data) {
20
- let client = await this.clientRepo.findOne({ where: { clientId: data.clientId } });
21
- if (client) {
22
- // Update existing registration
23
- client.clientName = data.clientName ?? client.clientName;
24
- client.platform = data.platform ?? client.platform;
25
- client.enabledCapabilities = data.enabledCapabilities ?? client.enabledCapabilities;
26
- client.userId = data.userId ?? client.userId;
27
- client.metadata = data.metadata ?? client.metadata;
28
- client.status = 'ONLINE';
29
- client.lastHeartbeat = new Date();
30
- }
31
- else {
32
- client = this.clientRepo.create({
33
- ...data,
34
- status: 'ONLINE',
35
- lastHeartbeat: new Date(),
36
- });
37
- }
38
- const saved = await this.clientRepo.save(client);
39
- this.logger.info(`Client registered: ${data.clientId}`);
40
- return saved;
41
- }
42
- async heartbeat(clientId) {
43
- const result = await this.clientRepo.update({ clientId }, { lastHeartbeat: new Date(), status: 'ONLINE' });
44
- return (result.affected ?? 0) > 0;
45
- }
46
- async unregister(clientId) {
47
- await this.clientRepo.update({ clientId }, { status: 'OFFLINE' });
48
- this.logger.info(`Client unregistered: ${clientId}`);
49
- }
50
- async findOnlineClients() {
51
- return this.clientRepo.find({ where: { status: 'ONLINE' } });
52
- }
53
- async findByClientId(clientId) {
54
- return this.clientRepo.findOne({ where: { clientId } });
55
- }
56
- async findAll() {
57
- return this.clientRepo.find({ order: { createdAt: 'DESC' } });
58
- }
59
- /**
60
- * Mark clients as offline if heartbeat is stale.
61
- * Should be called periodically.
62
- */
63
- async checkStaleClients() {
64
- const threshold = new Date(Date.now() - this.heartbeatTimeoutMs);
65
- const result = await this.clientRepo
66
- .createQueryBuilder()
67
- .update(client_registration_entity_js_1.ClientRegistration)
68
- .set({ status: 'OFFLINE' })
69
- .where('status = :status', { status: 'ONLINE' })
70
- .andWhere('lastHeartbeat < :threshold', { threshold })
71
- .execute();
72
- const affected = result.affected ?? 0;
73
- if (affected > 0) {
74
- this.logger.warn(`Marked ${affected} stale clients as OFFLINE`);
75
- }
76
- return affected;
77
- }
78
- };
79
- exports.ClientRegistrationService = ClientRegistrationService;
80
- exports.ClientRegistrationService = ClientRegistrationService = __decorate([
81
- (0, core_1.Service)()
82
- ], ClientRegistrationService);
83
- //# sourceMappingURL=client-registration.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-registration.service.js","sourceRoot":"","sources":["../../src/services/client-registration.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { AgentService } from './agent.service.js';
2
- export { CapabilityRouterService, type CapabilityExecutionRequest, type CapabilityExecutionTarget, } from './capability-router.service.js';
3
- export { SyncBridgeService } from './sync-bridge.service.js';
4
- export { ClientRegistrationService } from './client-registration.service.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClientRegistrationService = exports.SyncBridgeService = exports.CapabilityRouterService = exports.AgentService = void 0;
4
- var agent_service_js_1 = require("./agent.service.js");
5
- Object.defineProperty(exports, "AgentService", { enumerable: true, get: function () { return agent_service_js_1.AgentService; } });
6
- var capability_router_service_js_1 = require("./capability-router.service.js");
7
- Object.defineProperty(exports, "CapabilityRouterService", { enumerable: true, get: function () { return capability_router_service_js_1.CapabilityRouterService; } });
8
- var sync_bridge_service_js_1 = require("./sync-bridge.service.js");
9
- Object.defineProperty(exports, "SyncBridgeService", { enumerable: true, get: function () { return sync_bridge_service_js_1.SyncBridgeService; } });
10
- var client_registration_service_js_1 = require("./client-registration.service.js");
11
- Object.defineProperty(exports, "ClientRegistrationService", { enumerable: true, get: function () { return client_registration_service_js_1.ClientRegistrationService; } });
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AACrB,+EAIwC;AAHtC,uIAAA,uBAAuB,OAAA;AAIzB,mEAA6D;AAApD,2HAAA,iBAAiB,OAAA;AAC1B,mFAA6E;AAApE,2IAAA,yBAAyB,OAAA"}
@@ -1,41 +0,0 @@
1
- import { AgentExecution } from '../entities/agent-execution.entity.js';
2
- import type { Repository } from '@octo/core';
3
- /**
4
- * Sync Bridge — enables synchronous-style request/response
5
- * communication with asynchronous agent executions.
6
- *
7
- * Pattern: caller sends execution request → waits for completion
8
- * → agent picks up task → completes → bridge resolves the promise.
9
- */
10
- export declare class SyncBridgeService {
11
- private pendingRequests;
12
- private executionRepo;
13
- private logger;
14
- private defaultTimeoutMs;
15
- setRepository(executionRepo: Repository<AgentExecution>): void;
16
- /**
17
- * Create an execution and wait for its completion.
18
- * Returns when the agent completes the execution or timeout.
19
- */
20
- executeAndWait(input: Record<string, unknown>, options?: {
21
- instanceId?: number;
22
- capabilityId?: number;
23
- taskInstanceId?: number;
24
- timeoutMs?: number;
25
- }): Promise<Record<string, unknown>>;
26
- /**
27
- * Complete an execution — resolves the waiting promise.
28
- * Called by the agent when execution is done.
29
- */
30
- complete(executionId: number, output: Record<string, unknown>): Promise<void>;
31
- /**
32
- * Fail an execution — rejects the waiting promise.
33
- */
34
- fail(executionId: number, error: string): Promise<void>;
35
- /** Get count of pending bridge requests. */
36
- get pendingCount(): number;
37
- /** Clean up all pending requests on shutdown. */
38
- destroy(): void;
39
- private calculateDuration;
40
- }
41
- //# sourceMappingURL=sync-bridge.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-bridge.service.d.ts","sourceRoot":"","sources":["../../src/services/sync-bridge.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C;;;;;;GAMG;AACH,qBACa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAoD;IAClE,OAAO,CAAC,gBAAgB,CAAU;IAElC,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAI9D;;;OAGG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA+BnC;;;OAGG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnF;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7D,4CAA4C;IAC5C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,iDAAiD;IACjD,OAAO,IAAI,IAAI;YAQD,iBAAiB;CAKhC"}
@@ -1,118 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SyncBridgeService = void 0;
10
- const core_1 = require("@octo/core");
11
- /**
12
- * Sync Bridge — enables synchronous-style request/response
13
- * communication with asynchronous agent executions.
14
- *
15
- * Pattern: caller sends execution request → waits for completion
16
- * → agent picks up task → completes → bridge resolves the promise.
17
- */
18
- let SyncBridgeService = class SyncBridgeService {
19
- pendingRequests = new Map();
20
- executionRepo;
21
- logger = core_1.Container.get(core_1.LoggerService).child('SyncBridge');
22
- defaultTimeoutMs = 60_000;
23
- setRepository(executionRepo) {
24
- this.executionRepo = executionRepo;
25
- }
26
- /**
27
- * Create an execution and wait for its completion.
28
- * Returns when the agent completes the execution or timeout.
29
- */
30
- async executeAndWait(input, options) {
31
- const execution = this.executionRepo.create({
32
- status: 'PENDING',
33
- input,
34
- instanceId: options?.instanceId ?? null,
35
- capabilityId: options?.capabilityId ?? null,
36
- taskInstanceId: options?.taskInstanceId ?? null,
37
- });
38
- const saved = await this.executionRepo.save(execution);
39
- const bridgeKey = `exec:${saved.id}`;
40
- const timeoutMs = options?.timeoutMs ?? this.defaultTimeoutMs;
41
- return new Promise((resolve, reject) => {
42
- const timer = setTimeout(() => {
43
- this.pendingRequests.delete(bridgeKey);
44
- this.executionRepo.update(saved.id, { status: 'TIMEOUT' }).catch(() => { });
45
- reject(core_1.AppError.conflict(`SyncBridge timeout after ${timeoutMs}ms for execution ${saved.id}`));
46
- }, timeoutMs);
47
- this.pendingRequests.set(bridgeKey, {
48
- resolve,
49
- reject,
50
- timer,
51
- executionId: saved.id,
52
- });
53
- this.logger.debug(`SyncBridge waiting for execution ${saved.id} (timeout: ${timeoutMs}ms)`);
54
- });
55
- }
56
- /**
57
- * Complete an execution — resolves the waiting promise.
58
- * Called by the agent when execution is done.
59
- */
60
- async complete(executionId, output) {
61
- const bridgeKey = `exec:${executionId}`;
62
- const pending = this.pendingRequests.get(bridgeKey);
63
- await this.executionRepo.update(executionId, {
64
- status: 'COMPLETED',
65
- output: output,
66
- completedAt: new Date(),
67
- durationMs: await this.calculateDuration(executionId),
68
- });
69
- if (pending) {
70
- clearTimeout(pending.timer);
71
- this.pendingRequests.delete(bridgeKey);
72
- pending.resolve(output);
73
- this.logger.debug(`SyncBridge resolved execution ${executionId}`);
74
- }
75
- }
76
- /**
77
- * Fail an execution — rejects the waiting promise.
78
- */
79
- async fail(executionId, error) {
80
- const bridgeKey = `exec:${executionId}`;
81
- const pending = this.pendingRequests.get(bridgeKey);
82
- await this.executionRepo.update(executionId, {
83
- status: 'FAILED',
84
- error,
85
- completedAt: new Date(),
86
- durationMs: await this.calculateDuration(executionId),
87
- });
88
- if (pending) {
89
- clearTimeout(pending.timer);
90
- this.pendingRequests.delete(bridgeKey);
91
- pending.reject(new Error(error));
92
- this.logger.debug(`SyncBridge rejected execution ${executionId}: ${error}`);
93
- }
94
- }
95
- /** Get count of pending bridge requests. */
96
- get pendingCount() {
97
- return this.pendingRequests.size;
98
- }
99
- /** Clean up all pending requests on shutdown. */
100
- destroy() {
101
- for (const [key, pending] of this.pendingRequests) {
102
- clearTimeout(pending.timer);
103
- pending.reject(new Error('SyncBridge shutting down'));
104
- this.pendingRequests.delete(key);
105
- }
106
- }
107
- async calculateDuration(executionId) {
108
- const execution = await this.executionRepo.findOne({ where: { id: executionId } });
109
- if (!execution)
110
- return 0;
111
- return Date.now() - execution.createdAt.getTime();
112
- }
113
- };
114
- exports.SyncBridgeService = SyncBridgeService;
115
- exports.SyncBridgeService = SyncBridgeService = __decorate([
116
- (0, core_1.Service)()
117
- ], SyncBridgeService);
118
- //# sourceMappingURL=sync-bridge.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-bridge.service.js","sourceRoot":"","sources":["../../src/services/sync-bridge.service.ts"],"names":[],"mappings":"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"}