devchain-cli 0.24.0 → 0.24.1

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 (158) hide show
  1. package/README.md +1 -4
  2. package/dist/build-info.json +2 -2
  3. package/dist/cli.js +26 -1
  4. package/dist/server/common/test/fake-docker-engine.server.d.ts +8 -1
  5. package/dist/server/common/test/fake-docker-engine.server.js +65 -11
  6. package/dist/server/common/test/fake-docker-engine.server.js.map +1 -1
  7. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.d.ts +1 -0
  8. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js +9 -3
  9. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -1
  10. package/dist/server/modules/cloud-tunnel/services/mobile-transcript-projection.d.ts +6 -0
  11. package/dist/server/modules/cloud-tunnel/services/mobile-transcript-projection.js +88 -0
  12. package/dist/server/modules/cloud-tunnel/services/mobile-transcript-projection.js.map +1 -0
  13. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js +7 -1
  14. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js.map +1 -1
  15. package/dist/server/modules/core/controllers/docker-archive.d.ts +9 -2
  16. package/dist/server/modules/core/controllers/docker-archive.js +22 -6
  17. package/dist/server/modules/core/controllers/docker-archive.js.map +1 -1
  18. package/dist/server/modules/core/controllers/docker-engine.client.js +51 -2
  19. package/dist/server/modules/core/controllers/docker-engine.client.js.map +1 -1
  20. package/dist/server/modules/file-sync/file-sync.service.d.ts +2 -1
  21. package/dist/server/modules/file-sync/file-sync.service.js +8 -4
  22. package/dist/server/modules/file-sync/file-sync.service.js.map +1 -1
  23. package/dist/server/modules/file-sync/syncthing-rest.client.d.ts +1 -1
  24. package/dist/server/modules/file-sync/syncthing-rest.client.js +9 -4
  25. package/dist/server/modules/file-sync/syncthing-rest.client.js.map +1 -1
  26. package/dist/server/modules/file-sync/testing/fake-file-sync.service.d.ts +1 -1
  27. package/dist/server/modules/file-sync/testing/fake-file-sync.service.js +2 -1
  28. package/dist/server/modules/file-sync/testing/fake-file-sync.service.js.map +1 -1
  29. package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +86 -0
  30. package/dist/server/modules/hooks/dtos/hook-event.dto.js +15 -1
  31. package/dist/server/modules/hooks/dtos/hook-event.dto.js.map +1 -1
  32. package/dist/server/modules/hooks/services/hooks-config.service.js +29 -0
  33. package/dist/server/modules/hooks/services/hooks-config.service.js.map +1 -1
  34. package/dist/server/modules/hooks/services/hooks.service.d.ts +5 -1
  35. package/dist/server/modules/hooks/services/hooks.service.js +27 -5
  36. package/dist/server/modules/hooks/services/hooks.service.js.map +1 -1
  37. package/dist/server/modules/hooks/services/pending-ask-user-question.service.d.ts +2 -2
  38. package/dist/server/modules/hooks/services/pending-ask-user-question.service.js +9 -12
  39. package/dist/server/modules/hooks/services/pending-ask-user-question.service.js.map +1 -1
  40. package/dist/server/modules/metrics/services/metrics.service.js +1 -1
  41. package/dist/server/modules/metrics/services/metrics.service.js.map +1 -1
  42. package/dist/server/modules/providers/adapters/claude.adapter.d.ts +3 -1
  43. package/dist/server/modules/providers/adapters/claude.adapter.js +4 -1
  44. package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
  45. package/dist/server/modules/remotes/docker/docker-copy-back.d.ts +1 -0
  46. package/dist/server/modules/remotes/docker/docker-copy-back.js +31 -16
  47. package/dist/server/modules/remotes/docker/docker-copy-back.js.map +1 -1
  48. package/dist/server/modules/remotes/docker/docker-handoff.js +83 -19
  49. package/dist/server/modules/remotes/docker/docker-handoff.js.map +1 -1
  50. package/dist/server/modules/remotes/docker/docker-handoff.store.d.ts +2 -0
  51. package/dist/server/modules/remotes/docker/docker-handoff.store.js.map +1 -1
  52. package/dist/server/modules/remotes/docker/docker-plan-source.service.d.ts +6 -1
  53. package/dist/server/modules/remotes/docker/docker-plan-source.service.js +13 -4
  54. package/dist/server/modules/remotes/docker/docker-plan-source.service.js.map +1 -1
  55. package/dist/server/modules/remotes/docker/docker-plan.controller.js +1 -1
  56. package/dist/server/modules/remotes/docker/docker-plan.controller.js.map +1 -1
  57. package/dist/server/modules/remotes/docker/docker-plan.dto.d.ts +1 -0
  58. package/dist/server/modules/remotes/docker/docker-plan.dto.js.map +1 -1
  59. package/dist/server/modules/remotes/docker/docker-plan.service.d.ts +4 -1
  60. package/dist/server/modules/remotes/docker/docker-plan.service.js +29 -10
  61. package/dist/server/modules/remotes/docker/docker-plan.service.js.map +1 -1
  62. package/dist/server/modules/remotes/host/host-docker.controller.d.ts +6 -1
  63. package/dist/server/modules/remotes/host/host-docker.controller.js +6 -3
  64. package/dist/server/modules/remotes/host/host-docker.controller.js.map +1 -1
  65. package/dist/server/modules/remotes/host/host-docker.dto.d.ts +34 -3
  66. package/dist/server/modules/remotes/host/host-docker.dto.js +20 -3
  67. package/dist/server/modules/remotes/host/host-docker.dto.js.map +1 -1
  68. package/dist/server/modules/remotes/host/host-docker.service.d.ts +2 -2
  69. package/dist/server/modules/remotes/host/host-docker.service.js +39 -11
  70. package/dist/server/modules/remotes/host/host-docker.service.js.map +1 -1
  71. package/dist/server/modules/remotes/operations/attach.operation.js +1 -0
  72. package/dist/server/modules/remotes/operations/attach.operation.js.map +1 -1
  73. package/dist/server/modules/remotes/operations/docker-import-inventory.store.d.ts +6 -0
  74. package/dist/server/modules/remotes/operations/docker-import-inventory.store.js +6 -0
  75. package/dist/server/modules/remotes/operations/docker-import-inventory.store.js.map +1 -1
  76. package/dist/server/modules/remotes/operations/file-sync-handoff.d.ts +2 -0
  77. package/dist/server/modules/remotes/operations/file-sync-handoff.js +41 -27
  78. package/dist/server/modules/remotes/operations/file-sync-handoff.js.map +1 -1
  79. package/dist/server/modules/remotes/operations/remote-host.client.d.ts +2 -2
  80. package/dist/server/modules/remotes/operations/remote-host.client.js +21 -17
  81. package/dist/server/modules/remotes/operations/remote-host.client.js.map +1 -1
  82. package/dist/server/modules/remotes/operations/remote-operation.runner.js +7 -0
  83. package/dist/server/modules/remotes/operations/remote-operation.runner.js.map +1 -1
  84. package/dist/server/modules/remotes/operations/remote-operation.types.js +4 -2
  85. package/dist/server/modules/remotes/operations/remote-operation.types.js.map +1 -1
  86. package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.d.ts +5 -0
  87. package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.js +9 -0
  88. package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.js.map +1 -1
  89. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +1 -0
  90. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.js +1 -0
  91. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.js.map +1 -1
  92. package/dist/server/modules/session-reader/builders/semantic-step-extractor.js +1 -1
  93. package/dist/server/modules/session-reader/builders/semantic-step-extractor.js.map +1 -1
  94. package/dist/server/modules/session-reader/controllers/session-reader.controller.js +1 -1
  95. package/dist/server/modules/session-reader/controllers/session-reader.controller.js.map +1 -1
  96. package/dist/server/modules/session-reader/data/pricing.json +40 -11
  97. package/dist/server/modules/session-reader/dtos/unified-message.types.d.ts +1 -0
  98. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.d.ts +3 -0
  99. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js +10 -1
  100. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js.map +1 -1
  101. package/dist/server/modules/session-reader/parsers/claude-turn-evidence.d.ts +11 -0
  102. package/dist/server/modules/session-reader/parsers/claude-turn-evidence.js +50 -0
  103. package/dist/server/modules/session-reader/parsers/claude-turn-evidence.js.map +1 -0
  104. package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js +8 -2
  105. package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js.map +1 -1
  106. package/dist/server/modules/session-reader/services/bounded-anchor-proof.d.ts +7 -0
  107. package/dist/server/modules/session-reader/services/bounded-anchor-proof.js +31 -2
  108. package/dist/server/modules/session-reader/services/bounded-anchor-proof.js.map +1 -1
  109. package/dist/server/modules/session-reader/services/session-cache.service.d.ts +8 -2
  110. package/dist/server/modules/session-reader/services/session-cache.service.js +80 -21
  111. package/dist/server/modules/session-reader/services/session-cache.service.js.map +1 -1
  112. package/dist/server/modules/session-reader/services/session-reader.service.d.ts +4 -0
  113. package/dist/server/modules/session-reader/services/session-reader.service.js +40 -8
  114. package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
  115. package/dist/server/modules/session-reader/services/transcript-cursor.d.ts +16 -4
  116. package/dist/server/modules/session-reader/services/transcript-cursor.js +65 -6
  117. package/dist/server/modules/session-reader/services/transcript-cursor.js.map +1 -1
  118. package/dist/server/modules/session-reader/services/transcript-serialization.js +2 -1
  119. package/dist/server/modules/session-reader/services/transcript-serialization.js.map +1 -1
  120. package/dist/server/modules/session-reader/services/transcript-turn-state.d.ts +4 -0
  121. package/dist/server/modules/session-reader/services/transcript-turn-state.js +20 -0
  122. package/dist/server/modules/session-reader/services/transcript-turn-state.js.map +1 -0
  123. package/dist/server/modules/session-reader/services/transcript-watcher.service.d.ts +4 -1
  124. package/dist/server/modules/session-reader/services/transcript-watcher.service.js +43 -18
  125. package/dist/server/modules/session-reader/services/transcript-watcher.service.js.map +1 -1
  126. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +36 -17
  127. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +26 -9
  128. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
  129. package/dist/server/modules/sessions/services/session-runtime/ensure-mcp-readiness.d.ts +19 -0
  130. package/dist/server/modules/sessions/services/session-runtime/ensure-mcp-readiness.js +26 -0
  131. package/dist/server/modules/sessions/services/session-runtime/ensure-mcp-readiness.js.map +1 -0
  132. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +10 -18
  133. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
  134. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.d.ts +5 -1
  135. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +20 -2
  136. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
  137. package/dist/server/modules/teams/storage/teams.store.d.ts +1 -0
  138. package/dist/server/modules/teams/storage/teams.store.js +19 -3
  139. package/dist/server/modules/teams/storage/teams.store.js.map +1 -1
  140. package/dist/server/modules/terminal/services/session-turn-signals.d.ts +18 -0
  141. package/dist/server/modules/terminal/services/session-turn-signals.js +6 -0
  142. package/dist/server/modules/terminal/services/session-turn-signals.js.map +1 -0
  143. package/dist/server/modules/terminal/services/terminal-activity.service.d.ts +32 -4
  144. package/dist/server/modules/terminal/services/terminal-activity.service.js +323 -38
  145. package/dist/server/modules/terminal/services/terminal-activity.service.js.map +1 -1
  146. package/dist/server/modules/terminal/terminal.module.js +2 -0
  147. package/dist/server/modules/terminal/terminal.module.js.map +1 -1
  148. package/dist/server/templates/teams-dev.json +4 -4
  149. package/dist/server/tsconfig.tsbuildinfo +1 -1
  150. package/dist/server/ui/assets/{ExternalRichEditor--kNXs-Eb.js → ExternalRichEditor-DtNvrV0F.js} +1 -1
  151. package/dist/server/ui/assets/{ReviewDetailPage-DMgP5fKn.js → ReviewDetailPage-DJzEoM0x.js} +1 -1
  152. package/dist/server/ui/assets/{ReviewsPage-CkyFUJr6.js → ReviewsPage-z2O8MNEw.js} +1 -1
  153. package/dist/server/ui/assets/{index-CqRufKpA.js → index-CC4P3V8L.js} +222 -222
  154. package/dist/server/ui/assets/{index-CVUaAlP4.css → index-LsJe1ZTS.css} +1 -1
  155. package/dist/server/ui/assets/{useReviewSubscription-CU70CzwG.js → useReviewSubscription-B7AdJBO2.js} +1 -1
  156. package/dist/server/ui/index.html +2 -2
  157. package/dist/templates/teams-dev.json +4 -4
  158. package/package.json +8 -1
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SESSION_TRANSCRIPT_TURN_SIGNAL = exports.SESSION_TURN_HOOK_SIGNAL = void 0;
4
+ exports.SESSION_TURN_HOOK_SIGNAL = 'session.turn.hook';
5
+ exports.SESSION_TRANSCRIPT_TURN_SIGNAL = 'session.turn.transcript';
6
+ //# sourceMappingURL=session-turn-signals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-turn-signals.js","sourceRoot":"","sources":["../../../../src/modules/terminal/services/session-turn-signals.ts"],"names":[],"mappings":";;;AAOa,QAAA,wBAAwB,GAAG,mBAAmB,CAAC;AAW/C,QAAA,8BAA8B,GAAG,yBAAyB,CAAC"}
@@ -1,29 +1,57 @@
1
- import { OnModuleDestroy } from '@nestjs/common';
1
+ import { OnApplicationBootstrap, OnModuleDestroy } from '@nestjs/common';
2
2
  import { EventEmitter2 } from '@nestjs/event-emitter';
3
3
  import { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
4
4
  import { SettingsService } from '../../settings/services/settings.service';
5
+ import { PendingAskUserQuestionService } from '../../hooks/services/pending-ask-user-question.service';
5
6
  import { TerminalSessionRegistry } from './terminal-session/terminal-session-registry';
6
- export declare class TerminalActivityService implements OnModuleDestroy {
7
+ import { type SessionTranscriptTurnSignal, type SessionTurnHookSignal } from './session-turn-signals';
8
+ export declare const TURN_FALLBACK_IDLE_MS: number;
9
+ export declare const POST_STOP_OUTPUT_GRACE_MS = 2000;
10
+ export declare class TerminalActivityService implements OnApplicationBootstrap, OnModuleDestroy {
7
11
  private readonly eventEmitter;
8
12
  private readonly settingsService;
9
13
  private readonly registry;
14
+ private readonly pendingQuestions?;
10
15
  private sqlite;
11
16
  private readonly idleTimers;
12
17
  private readonly lastSignalAt;
18
+ private readonly fallbackTimers;
19
+ private readonly heartbeatTimers;
20
+ private readonly turns;
13
21
  private readonly suppressUntil;
14
22
  private readonly frameListeners;
15
23
  private idleAfterMs;
16
- constructor(db: BetterSQLite3Database, eventEmitter: EventEmitter2, settingsService: SettingsService, registry: TerminalSessionRegistry);
24
+ constructor(db: BetterSQLite3Database, eventEmitter: EventEmitter2, settingsService: SettingsService, registry: TerminalSessionRegistry, pendingQuestions?: PendingAskUserQuestionService | undefined);
17
25
  get idleTimeoutMs(): number;
26
+ onApplicationBootstrap(): void;
18
27
  handleRemoteProjectSynced(): void;
28
+ handleTurnHook(signal: SessionTurnHookSignal): void;
29
+ handleTranscriptTurn(signal: SessionTranscriptTurnSignal): void;
19
30
  private refreshIdleTimeout;
20
31
  watchSession(sessionId: string, suppressUntil?: number): void;
21
32
  updateSuppression(sessionId: string, suppressUntil: number): void;
22
33
  clearSession(sessionId: string): void;
23
34
  onModuleDestroy(): void;
24
35
  getBufferSize(_sessionId: string): number;
25
- private isSessionRunning;
36
+ private readSession;
37
+ private turnRecord;
26
38
  private signal;
39
+ private promptSubmitted;
40
+ private turnStopped;
41
+ private transcriptTurn;
42
+ private openClaudeTurn;
43
+ private closeClaudeTurn;
44
+ private holdByOutput;
45
+ private holdByTurn;
46
+ private touchTurn;
47
+ private endTurn;
48
+ private markBusy;
27
49
  private scheduleIdle;
50
+ private armFallback;
51
+ private armHeartbeat;
52
+ private stampLastActivity;
53
+ private clearTimer;
54
+ private clearTurnTimers;
55
+ private clearTimers;
28
56
  private transitionToIdle;
29
57
  }
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.TerminalActivityService = void 0;
15
+ exports.TerminalActivityService = exports.POST_STOP_OUTPUT_GRACE_MS = exports.TURN_FALLBACK_IDLE_MS = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const event_emitter_1 = require("@nestjs/event-emitter");
18
18
  const logger_1 = require("../../../common/logging/logger");
@@ -21,23 +21,45 @@ const better_sqlite3_1 = require("drizzle-orm/better-sqlite3");
21
21
  const sqlite_raw_1 = require("../../storage/db/sqlite-raw");
22
22
  const settings_service_1 = require("../../settings/services/settings.service");
23
23
  const settings_constants_1 = require("../../settings/services/settings.constants");
24
+ const pending_ask_user_question_service_1 = require("../../hooks/services/pending-ask-user-question.service");
24
25
  const terminal_session_registry_1 = require("./terminal-session/terminal-session-registry");
25
26
  const terminal_activity_1 = require("../utils/terminal-activity");
27
+ const session_turn_signals_1 = require("./session-turn-signals");
26
28
  const logger = (0, logger_1.createLogger)('TerminalActivityService');
29
+ exports.TURN_FALLBACK_IDLE_MS = 10 * 60 * 1000;
30
+ exports.POST_STOP_OUTPUT_GRACE_MS = 2000;
31
+ const TRANSCRIPT_TURN_POLICIES = new Set(['claude', 'codex']);
32
+ function policyFor(providerName) {
33
+ switch (providerName?.toLowerCase()) {
34
+ case 'claude':
35
+ return 'claude';
36
+ case 'codex':
37
+ return 'codex';
38
+ case 'copilot':
39
+ return 'copilot';
40
+ default:
41
+ return 'output';
42
+ }
43
+ }
27
44
  let TerminalActivityService = class TerminalActivityService {
28
45
  eventEmitter;
29
46
  settingsService;
30
47
  registry;
48
+ pendingQuestions;
31
49
  sqlite;
32
50
  idleTimers = new Map();
33
51
  lastSignalAt = new Map();
52
+ fallbackTimers = new Map();
53
+ heartbeatTimers = new Map();
54
+ turns = new Map();
34
55
  suppressUntil = new Map();
35
56
  frameListeners = new Map();
36
57
  idleAfterMs = settings_constants_1.DEFAULT_ACTIVITY_IDLE_TIMEOUT_MS;
37
- constructor(db, eventEmitter, settingsService, registry) {
58
+ constructor(db, eventEmitter, settingsService, registry, pendingQuestions) {
38
59
  this.eventEmitter = eventEmitter;
39
60
  this.settingsService = settingsService;
40
61
  this.registry = registry;
62
+ this.pendingQuestions = pendingQuestions;
41
63
  this.sqlite = (0, sqlite_raw_1.getRawSqliteClient)(db);
42
64
  this.refreshIdleTimeout();
43
65
  logger.info('TerminalActivityService initialized');
@@ -45,9 +67,49 @@ let TerminalActivityService = class TerminalActivityService {
45
67
  get idleTimeoutMs() {
46
68
  return this.idleAfterMs;
47
69
  }
70
+ onApplicationBootstrap() {
71
+ const rows = this.sqlite
72
+ .prepare(`SELECT id, provider_name_at_launch FROM sessions
73
+ WHERE status = 'running' AND activity_state = 'busy'`)
74
+ .all();
75
+ for (const row of rows) {
76
+ const policy = policyFor(row.provider_name_at_launch);
77
+ const turn = this.turnRecord(row.id);
78
+ if (turn.hold !== null)
79
+ continue;
80
+ if (TRANSCRIPT_TURN_POLICIES.has(policy)) {
81
+ turn.hold = 'turn';
82
+ this.armFallback(row.id);
83
+ }
84
+ else {
85
+ turn.hold = 'output';
86
+ this.lastSignalAt.set(row.id, Date.now());
87
+ this.scheduleIdle(row.id);
88
+ }
89
+ }
90
+ }
48
91
  handleRemoteProjectSynced() {
49
92
  this.refreshIdleTimeout();
50
93
  }
94
+ handleTurnHook(signal) {
95
+ try {
96
+ if (signal.kind === 'prompt-submitted')
97
+ this.promptSubmitted(signal);
98
+ else
99
+ this.turnStopped(signal);
100
+ }
101
+ catch (error) {
102
+ logger.warn({ error, sessionId: signal.sessionId }, 'Failed to apply turn hook');
103
+ }
104
+ }
105
+ handleTranscriptTurn(signal) {
106
+ try {
107
+ this.transcriptTurn(signal);
108
+ }
109
+ catch (error) {
110
+ logger.warn({ error, sessionId: signal.sessionId }, 'Failed to apply transcript turn');
111
+ }
112
+ }
51
113
  refreshIdleTimeout() {
52
114
  const configured = Number(this.settingsService.getSetting('activity.idleTimeoutMs'));
53
115
  const resolved = Number.isFinite(configured) && configured > 0 ? configured : settings_constants_1.DEFAULT_ACTIVITY_IDLE_TIMEOUT_MS;
@@ -57,6 +119,8 @@ let TerminalActivityService = class TerminalActivityService {
57
119
  this.idleAfterMs = resolved;
58
120
  for (const sessionId of this.idleTimers.keys())
59
121
  this.scheduleIdle(sessionId);
122
+ for (const sessionId of [...this.heartbeatTimers.keys()])
123
+ this.armHeartbeat(sessionId);
60
124
  }
61
125
  watchSession(sessionId, suppressUntil = 0) {
62
126
  const session = this.registry.get(sessionId);
@@ -94,12 +158,9 @@ let TerminalActivityService = class TerminalActivityService {
94
158
  this.suppressUntil.set(sessionId, suppressUntil);
95
159
  }
96
160
  clearSession(sessionId) {
97
- const timer = this.idleTimers.get(sessionId);
98
- if (timer) {
99
- clearTimeout(timer);
100
- this.idleTimers.delete(sessionId);
101
- }
161
+ this.clearTimers(sessionId);
102
162
  this.lastSignalAt.delete(sessionId);
163
+ this.turns.delete(sessionId);
103
164
  const listener = this.frameListeners.get(sessionId);
104
165
  if (listener) {
105
166
  const session = this.registry.get(sessionId);
@@ -111,41 +172,190 @@ let TerminalActivityService = class TerminalActivityService {
111
172
  this.suppressUntil.delete(sessionId);
112
173
  }
113
174
  onModuleDestroy() {
114
- for (const timer of this.idleTimers.values())
115
- clearTimeout(timer);
116
- this.idleTimers.clear();
175
+ for (const timers of [this.idleTimers, this.fallbackTimers, this.heartbeatTimers]) {
176
+ for (const timer of timers.values())
177
+ clearTimeout(timer);
178
+ timers.clear();
179
+ }
117
180
  }
118
181
  getBufferSize(_sessionId) {
119
182
  return 0;
120
183
  }
121
- isSessionRunning(sessionId) {
122
- const row = this.sqlite.prepare(`SELECT status FROM sessions WHERE id = ?`).get(sessionId);
123
- return row?.status === 'running';
184
+ readSession(sessionId) {
185
+ return this.sqlite
186
+ .prepare(`SELECT status, activity_state, provider_name_at_launch FROM sessions WHERE id = ?`)
187
+ .get(sessionId);
188
+ }
189
+ turnRecord(sessionId) {
190
+ let turn = this.turns.get(sessionId);
191
+ if (!turn) {
192
+ turn = {
193
+ openedAtMs: Number.NEGATIVE_INFINITY,
194
+ closedAtMs: Number.NEGATIVE_INFINITY,
195
+ hasTurnEvidence: false,
196
+ transcriptOpen: null,
197
+ hold: null,
198
+ outputIgnoredUntil: 0,
199
+ };
200
+ this.turns.set(sessionId, turn);
201
+ }
202
+ return turn;
124
203
  }
125
204
  signal(sessionId) {
126
- if (!this.isSessionRunning(sessionId))
205
+ const row = this.readSession(sessionId);
206
+ if (row?.status !== 'running')
207
+ return;
208
+ const turn = this.turnRecord(sessionId);
209
+ const busy = row.activity_state === 'busy';
210
+ const now = Date.now();
211
+ switch (policyFor(row.provider_name_at_launch)) {
212
+ case 'claude':
213
+ if (turn.hasTurnEvidence) {
214
+ this.touchTurn(sessionId, turn, busy);
215
+ return;
216
+ }
217
+ break;
218
+ case 'codex':
219
+ if (turn.transcriptOpen === true) {
220
+ this.holdByTurn(sessionId, busy);
221
+ return;
222
+ }
223
+ break;
224
+ case 'copilot':
225
+ if (now < turn.outputIgnoredUntil)
226
+ return;
227
+ break;
228
+ case 'output':
229
+ break;
230
+ }
231
+ this.holdByOutput(sessionId, busy);
232
+ }
233
+ promptSubmitted(signal) {
234
+ const row = this.readSession(signal.sessionId);
235
+ if (row?.status !== 'running')
236
+ return;
237
+ const turn = this.turnRecord(signal.sessionId);
238
+ if (!this.openClaudeTurn(turn, signal.firedAtMs))
239
+ return;
240
+ this.holdByTurn(signal.sessionId, row.activity_state === 'busy');
241
+ }
242
+ turnStopped(signal) {
243
+ const row = this.readSession(signal.sessionId);
244
+ if (row?.status !== 'running')
245
+ return;
246
+ const turn = this.turnRecord(signal.sessionId);
247
+ const policy = policyFor(row.provider_name_at_launch);
248
+ if (policy === 'claude') {
249
+ if (!this.closeClaudeTurn(turn, signal.firedAtMs))
250
+ return;
251
+ }
252
+ else if (policy === 'copilot') {
253
+ turn.outputIgnoredUntil = Date.now() + exports.POST_STOP_OUTPUT_GRACE_MS;
254
+ }
255
+ this.endTurn(signal.sessionId, row.activity_state === 'busy');
256
+ }
257
+ transcriptTurn(signal) {
258
+ const row = this.readSession(signal.sessionId);
259
+ if (row?.status !== 'running')
260
+ return;
261
+ const policy = policyFor(row.provider_name_at_launch);
262
+ if (!TRANSCRIPT_TURN_POLICIES.has(policy))
263
+ return;
264
+ const turn = this.turnRecord(signal.sessionId);
265
+ const busy = row.activity_state === 'busy';
266
+ const state = signal.turn;
267
+ if (!state) {
268
+ if (signal.grew)
269
+ this.touchTurn(signal.sessionId, turn, busy);
270
+ return;
271
+ }
272
+ turn.transcriptOpen = state.open;
273
+ if (policy === 'codex') {
274
+ if (state.open)
275
+ this.holdByTurn(signal.sessionId, busy, signal.grew);
276
+ else
277
+ this.endTurn(signal.sessionId, busy);
278
+ return;
279
+ }
280
+ const atMs = state.atMs ?? Date.now();
281
+ if (state.open) {
282
+ if (this.openClaudeTurn(turn, atMs))
283
+ this.holdByTurn(signal.sessionId, busy, signal.grew);
127
284
  return;
128
- const now = new Date().toISOString();
129
- this.sqlite
130
- .prepare(`UPDATE sessions SET last_activity_at = ?, updated_at = ? WHERE id = ?`)
131
- .run(now, now, sessionId);
132
- const row = this.sqlite
133
- .prepare(`SELECT activity_state FROM sessions WHERE id = ?`)
134
- .get(sessionId);
135
- if (!row || row.activity_state !== 'busy') {
136
- this.sqlite
137
- .prepare(`UPDATE sessions SET activity_state = 'busy', busy_since = ?, updated_at = ? WHERE id = ?`)
138
- .run(now, now, sessionId);
139
- this.eventEmitter.emit('session.activity.changed', {
140
- sessionId,
141
- state: 'busy',
142
- lastActivityAt: now,
143
- busySince: now,
144
- });
145
285
  }
286
+ if (!this.closeClaudeTurn(turn, atMs)) {
287
+ if (signal.grew)
288
+ this.touchTurn(signal.sessionId, turn, busy);
289
+ return;
290
+ }
291
+ this.endTurn(signal.sessionId, busy);
292
+ }
293
+ openClaudeTurn(turn, atMs) {
294
+ turn.hasTurnEvidence = true;
295
+ if (atMs <= turn.closedAtMs)
296
+ return false;
297
+ turn.openedAtMs = Math.max(turn.openedAtMs, atMs);
298
+ return true;
299
+ }
300
+ closeClaudeTurn(turn, atMs) {
301
+ turn.hasTurnEvidence = true;
302
+ if (atMs < turn.openedAtMs)
303
+ return false;
304
+ turn.closedAtMs = Math.max(turn.closedAtMs, atMs);
305
+ return true;
306
+ }
307
+ holdByOutput(sessionId, busy) {
308
+ const turn = this.turnRecord(sessionId);
309
+ this.clearTurnTimers(sessionId);
310
+ turn.hold = 'output';
311
+ this.markBusy(sessionId, busy);
146
312
  this.lastSignalAt.set(sessionId, Date.now());
147
313
  this.scheduleIdle(sessionId);
148
314
  }
315
+ holdByTurn(sessionId, busy, alive = true) {
316
+ const turn = this.turnRecord(sessionId);
317
+ const wasHeld = busy && turn.hold === 'turn';
318
+ this.clearTimer(this.idleTimers, sessionId);
319
+ this.lastSignalAt.delete(sessionId);
320
+ turn.hold = 'turn';
321
+ if (!wasHeld)
322
+ this.markBusy(sessionId, busy);
323
+ if (!wasHeld || alive || !this.fallbackTimers.has(sessionId))
324
+ this.armFallback(sessionId);
325
+ if (!this.heartbeatTimers.has(sessionId))
326
+ this.armHeartbeat(sessionId);
327
+ }
328
+ touchTurn(sessionId, turn, busy) {
329
+ if (busy && turn.hold === 'turn')
330
+ this.armFallback(sessionId);
331
+ }
332
+ endTurn(sessionId, busy) {
333
+ const turn = this.turnRecord(sessionId);
334
+ const heldByTurn = turn.hold === 'turn';
335
+ this.clearTimers(sessionId);
336
+ this.lastSignalAt.delete(sessionId);
337
+ turn.hold = null;
338
+ this.pendingQuestions?.clearBySession(sessionId);
339
+ if (busy)
340
+ this.transitionToIdle(sessionId, heldByTurn);
341
+ }
342
+ markBusy(sessionId, busy) {
343
+ if (busy) {
344
+ this.stampLastActivity(sessionId);
345
+ return;
346
+ }
347
+ const now = new Date().toISOString();
348
+ this.sqlite
349
+ .prepare(`UPDATE sessions SET activity_state = 'busy', busy_since = ?, last_activity_at = ?,
350
+ updated_at = ? WHERE id = ?`)
351
+ .run(now, now, now, sessionId);
352
+ this.eventEmitter.emit('session.activity.changed', {
353
+ sessionId,
354
+ state: 'busy',
355
+ lastActivityAt: now,
356
+ busySince: now,
357
+ });
358
+ }
149
359
  scheduleIdle(sessionId) {
150
360
  const prior = this.idleTimers.get(sessionId);
151
361
  if (prior)
@@ -153,16 +363,77 @@ let TerminalActivityService = class TerminalActivityService {
153
363
  const elapsed = Date.now() - (this.lastSignalAt.get(sessionId) ?? Date.now());
154
364
  this.idleTimers.set(sessionId, setTimeout(() => {
155
365
  this.idleTimers.delete(sessionId);
156
- this.transitionToIdle(sessionId);
366
+ const turn = this.turns.get(sessionId);
367
+ if (turn)
368
+ turn.hold = null;
369
+ this.transitionToIdle(sessionId, false);
157
370
  }, Math.max(0, this.idleAfterMs - elapsed)));
158
371
  }
159
- transitionToIdle(sessionId) {
160
- if (!this.isSessionRunning(sessionId))
161
- return;
372
+ armFallback(sessionId) {
373
+ this.clearTimer(this.fallbackTimers, sessionId);
374
+ const timer = setTimeout(() => {
375
+ this.fallbackTimers.delete(sessionId);
376
+ if (this.pendingQuestions?.hasPendingQuestion(sessionId)) {
377
+ this.armFallback(sessionId);
378
+ return;
379
+ }
380
+ logger.info({ sessionId }, 'No turn end evidence — idle after the turn fallback');
381
+ const row = this.readSession(sessionId);
382
+ this.endTurn(sessionId, row?.activity_state === 'busy');
383
+ }, exports.TURN_FALLBACK_IDLE_MS);
384
+ timer.unref?.();
385
+ this.fallbackTimers.set(sessionId, timer);
386
+ }
387
+ armHeartbeat(sessionId) {
388
+ this.clearTimer(this.heartbeatTimers, sessionId);
389
+ const intervalMs = Math.max(1000, Math.floor(this.idleAfterMs / 3));
390
+ const timer = setInterval(() => {
391
+ const row = this.readSession(sessionId);
392
+ if (row?.status !== 'running' || row.activity_state !== 'busy') {
393
+ this.clearTimer(this.heartbeatTimers, sessionId);
394
+ return;
395
+ }
396
+ this.stampLastActivity(sessionId);
397
+ }, intervalMs);
398
+ timer.unref?.();
399
+ this.heartbeatTimers.set(sessionId, timer);
400
+ }
401
+ stampLastActivity(sessionId) {
162
402
  const now = new Date().toISOString();
163
403
  this.sqlite
164
- .prepare(`UPDATE sessions SET activity_state = 'idle', updated_at = ? WHERE id = ?`)
165
- .run(now, sessionId);
404
+ .prepare(`UPDATE sessions SET last_activity_at = ?, updated_at = ? WHERE id = ?`)
405
+ .run(now, now, sessionId);
406
+ }
407
+ clearTimer(timers, sessionId) {
408
+ const timer = timers.get(sessionId);
409
+ if (timer)
410
+ clearTimeout(timer);
411
+ timers.delete(sessionId);
412
+ }
413
+ clearTurnTimers(sessionId) {
414
+ this.clearTimer(this.fallbackTimers, sessionId);
415
+ this.clearTimer(this.heartbeatTimers, sessionId);
416
+ }
417
+ clearTimers(sessionId) {
418
+ this.clearTimer(this.idleTimers, sessionId);
419
+ this.clearTurnTimers(sessionId);
420
+ }
421
+ transitionToIdle(sessionId, stampActivity) {
422
+ const row = this.readSession(sessionId);
423
+ if (row?.status !== 'running')
424
+ return;
425
+ const now = new Date().toISOString();
426
+ if (stampActivity) {
427
+ this.sqlite
428
+ .prepare(`UPDATE sessions SET activity_state = 'idle', last_activity_at = ?, updated_at = ?
429
+ WHERE id = ?`)
430
+ .run(now, now, sessionId);
431
+ }
432
+ else {
433
+ this.sqlite
434
+ .prepare(`UPDATE sessions SET activity_state = 'idle', updated_at = ? WHERE id = ?`)
435
+ .run(now, sessionId);
436
+ }
166
437
  this.eventEmitter.emit('session.activity.changed', {
167
438
  sessionId,
168
439
  state: 'idle',
@@ -178,13 +449,27 @@ __decorate([
178
449
  __metadata("design:paramtypes", []),
179
450
  __metadata("design:returntype", void 0)
180
451
  ], TerminalActivityService.prototype, "handleRemoteProjectSynced", null);
452
+ __decorate([
453
+ (0, event_emitter_1.OnEvent)(session_turn_signals_1.SESSION_TURN_HOOK_SIGNAL),
454
+ __metadata("design:type", Function),
455
+ __metadata("design:paramtypes", [Object]),
456
+ __metadata("design:returntype", void 0)
457
+ ], TerminalActivityService.prototype, "handleTurnHook", null);
458
+ __decorate([
459
+ (0, event_emitter_1.OnEvent)(session_turn_signals_1.SESSION_TRANSCRIPT_TURN_SIGNAL),
460
+ __metadata("design:type", Function),
461
+ __metadata("design:paramtypes", [Object]),
462
+ __metadata("design:returntype", void 0)
463
+ ], TerminalActivityService.prototype, "handleTranscriptTurn", null);
181
464
  exports.TerminalActivityService = TerminalActivityService = __decorate([
182
465
  (0, common_1.Injectable)(),
183
466
  __param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
184
467
  __param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => terminal_session_registry_1.TerminalSessionRegistry))),
468
+ __param(4, (0, common_1.Optional)()),
185
469
  __metadata("design:paramtypes", [better_sqlite3_1.BetterSQLite3Database,
186
470
  event_emitter_1.EventEmitter2,
187
471
  settings_service_1.SettingsService,
188
- terminal_session_registry_1.TerminalSessionRegistry])
472
+ terminal_session_registry_1.TerminalSessionRegistry,
473
+ pending_ask_user_question_service_1.PendingAskUserQuestionService])
189
474
  ], TerminalActivityService);
190
475
  //# sourceMappingURL=terminal-activity.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-activity.service.js","sourceRoot":"","sources":["../../../../src/modules/terminal/services/terminal-activity.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-activity.service.js","sourceRoot":"","sources":["../../../../src/modules/terminal/services/terminal-activity.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,yDAA+D;AAC/D,2DAA8D;AAC9D,8DAA6D;AAC7D,+DAAmE;AACnE,4DAAiE;AACjE,+EAA2E;AAC3E,mFAA8F;AAC9F,8GAAuG;AACvG,4FAAuF;AAEvF,kEAA6E;AAC7E,iEAKgC;AAEhC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,yBAAyB,CAAC,CAAC;AAM1C,QAAA,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvC,QAAA,yBAAyB,GAAG,IAAI,CAAC;AAkC9C,MAAM,wBAAwB,GAAgC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3F,SAAS,SAAS,CAAC,YAAuC;IACxD,QAAQ,YAAY,EAAE,WAAW,EAAE,EAAE,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAGM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAaf;IACA;IAEA;IACY;IAhBvB,MAAM,CAAwC;IACrC,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC/C,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IACpD,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,cAAc,GAAG,IAAI,GAAG,EAAuC,CAAC;IACzE,WAAW,GAAW,qDAAgC,CAAC;IAE/D,YACyB,EAAyB,EAC/B,YAA2B,EAC3B,eAAgC,EAEhC,QAAiC,EACrB,gBAAgD;QAJ5D,iBAAY,GAAZ,YAAY,CAAe;QAC3B,oBAAe,GAAf,eAAe,CAAiB;QAEhC,aAAQ,GAAR,QAAQ,CAAyB;QACrB,qBAAgB,GAAhB,gBAAgB,CAAgC;QAE7E,IAAI,CAAC,MAAM,GAAG,IAAA,+BAAkB,EAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAGD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAOD,sBAAsB;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;aACrB,OAAO,CACN;+DACuD,CACxD;aACA,GAAG,EAAmE,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE,SAAS;YACjC,IAAI,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IASD,yBAAyB;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAGD,cAAc,CAAC,MAA6B;QAC1C,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;gBAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;gBAChE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAGD,oBAAoB,CAAC,MAAmC;QACtD,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,iCAAiC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACrF,MAAM,QAAQ,GACZ,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,qDAAgC,CAAC;QAChG,IAAI,QAAQ,KAAK,IAAI,CAAC,WAAW;YAAE,OAAO;QAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAE5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE7E,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;IAQD,YAAY,CAAC,SAAiB,EAAE,aAAa,GAAG,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,6CAA6C,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAGD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,mBAAmB,GAAG,IAAA,mDAA+B,GAAE,CAAC;QAE9D,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA6B,CAAC;YACpD,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC9C,IAAI,CAAC;gBACH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO;gBAC/C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAAE,OAAO;gBAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAGD,iBAAiB,CAAC,SAAiB,EAAE,aAAqB;QACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAGD,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,eAAe;QACb,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAClF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,WAAW,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,MAAM;aACf,OAAO,CAAC,mFAAmF,CAAC;aAC5F,GAAG,CAAC,SAAS,CAA2B,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,SAAiB;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG;gBACL,UAAU,EAAE,MAAM,CAAC,iBAAiB;gBACpC,UAAU,EAAE,MAAM,CAAC,iBAAiB;gBACpC,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,IAAI,EAAE,IAAI;gBACV,kBAAkB,EAAE,CAAC;aACtB,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGO,MAAM,CAAC,SAAiB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,QAAQ,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC/C,KAAK,QAAQ;gBAGX,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACjC,OAAO;gBACT,CAAC;gBACD,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB;oBAAE,OAAO;gBAC1C,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM;QACV,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAGO,eAAe,CAAC,MAA6B;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACnE,CAAC;IAEO,WAAW,CAAC,MAA6B;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO;QAC5D,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iCAAyB,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IAChE,CAAC;IAEO,cAAc,CAAC,MAAmC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACtD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;QAEjC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,IAAI;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;gBAChE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAGO,cAAc,CAAC,IAAgB,EAAE,IAAY;QACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAGO,eAAe,CAAC,IAAgB,EAAE,IAAY;QACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAGO,YAAY,CAAC,SAAiB,EAAE,IAAa;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAMO,UAAU,CAAC,SAAiB,EAAE,IAAa,EAAE,KAAK,GAAG,IAAI;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAGO,SAAS,CAAC,SAAiB,EAAE,IAAgB,EAAE,IAAa;QAClE,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAEO,OAAO,CAAC,SAAiB,EAAE,IAAa;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAGjB,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,IAAI;YAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAEO,QAAQ,CAAC,SAAiB,EAAE,IAAa;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM;aACR,OAAO,CACN;4CACoC,CACrC;aACA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACjD,SAAS;YACT,KAAK,EAAE,MAAM;YACb,cAAc,EAAE,GAAG;YACnB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,SAAiB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,EACT,UAAU,CACR,GAAG,EAAE;YACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,CACxC,CACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,SAAiB;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEtC,IAAI,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,qDAAqD,CAAC,CAAC;YAClF,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC;QAC1D,CAAC,EAAE,6BAAqB,CAAC,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAOO,YAAY,CAAC,SAAiB;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;gBAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAGO,iBAAiB,CAAC,SAAiB;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM;aACR,OAAO,CAAC,uEAAuE,CAAC;aAChF,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAEO,UAAU,CAAC,MAAmC,EAAE,SAAiB;QACvE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAEO,eAAe,CAAC,SAAiB;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,WAAW,CAAC,SAAiB;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEO,gBAAgB,CAAC,SAAiB,EAAE,aAAsB;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QAEtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM;iBACR,OAAO,CACN;yBACe,CAChB;iBACA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM;iBACR,OAAO,CAAC,0EAA0E,CAAC;iBACnF,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACjD,SAAS;YACT,KAAK,EAAE,MAAM;YACb,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAndY,0DAAuB;AA+DlC;IADC,IAAA,uBAAO,EAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;;;wEAGjD;AAGD;IADC,IAAA,uBAAO,EAAC,+CAAwB,CAAC;;;;6DAQjC;AAGD;IADC,IAAA,uBAAO,EAAC,qDAA8B,CAAC;;;;mEAOvC;kCApFU,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAaR,WAAA,IAAA,eAAM,EAAC,2BAAa,CAAC,CAAA;IAGrB,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mDAAuB,CAAC,CAAC,CAAA;IAEjD,WAAA,IAAA,iBAAQ,GAAE,CAAA;qCALgB,sCAAqB;QACjB,6BAAa;QACV,kCAAe;QAEtB,mDAAuB;QACF,iEAA6B;GAjBpE,uBAAuB,CAmdnC"}
@@ -27,6 +27,7 @@ const terminal_send_scheduler_service_1 = require("./services/terminal-send-sche
27
27
  const human_prompt_state_service_1 = require("./services/human-prompt-state.service");
28
28
  const standalone_terminal_service_1 = require("./services/standalone-terminal.service");
29
29
  const process_executor_module_1 = require("./services/process-executor/process-executor.module");
30
+ const hooks_module_1 = require("../hooks/hooks.module");
30
31
  let TerminalModule = class TerminalModule {
31
32
  };
32
33
  exports.TerminalModule = TerminalModule;
@@ -40,6 +41,7 @@ exports.TerminalModule = TerminalModule = __decorate([
40
41
  session_terminal_runtime_module_1.SessionTerminalRuntimeModule,
41
42
  realtime_broadcast_module_1.RealtimeBroadcastModule,
42
43
  metrics_module_1.MetricsModule,
44
+ hooks_module_1.HooksModule,
43
45
  ],
44
46
  providers: [
45
47
  terminal_stream_service_1.TerminalStreamService,
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.module.js","sourceRoot":"","sources":["../../../src/modules/terminal/terminal.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,gFAA2E;AAC3E,wDAAoD;AACpD,kEAA8D;AAC9D,qEAAgE;AAChE,iEAA6D;AAC7D,iHAA2G;AAC3G,4EAAuE;AACvE,qGAAgG;AAChG,4EAAwE;AACxE,0GAA6F;AAC7F,oFAA+E;AAC/E,qFAAgF;AAChF,yEAAoE;AACpE,8DAA0D;AAC1D,4FAAsF;AACtF,gGAA0F;AAC1F,sFAAgF;AAChF,wFAAmF;AACnF,iGAA4F;AA6CrF,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IA3C1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iDAAsB;YACtB,+CAAqB;YACrB,qCAAgB;YAChB,gCAAc;YACd,8DAA4B;YAC5B,mDAAuB;YACvB,8BAAa;SACd;QACD,SAAS,EAAE;YACT,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,0DAA0B;YAC1B,8DAA4B;YAC5B;gBACE,OAAO,EAAE,mDAAuB;gBAChC,UAAU,EAAE,CAAC,eAAgC,EAAE,gBAAyC,EAAE,EAAE,CAC1F,IAAI,mDAAuB,CAAC,GAAG,EAAE;oBAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,CAAC,EAAE,gBAAgB,CAAC;gBACtB,MAAM,EAAE,CAAC,kCAAe,EAAE,oDAAuB,CAAC;aACnD;YACD,iEAA0B;YAC1B,mDAAuB;YACvB,uDAAyB;SAC1B;QACD,OAAO,EAAE;YACP,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,8DAA4B;YAC5B,iDAAsB;YACtB,mDAAuB;YACvB,mDAAuB;YACvB,uDAAyB;SAC1B;KACF,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"terminal.module.js","sourceRoot":"","sources":["../../../src/modules/terminal/terminal.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,gFAA2E;AAC3E,wDAAoD;AACpD,kEAA8D;AAC9D,qEAAgE;AAChE,iEAA6D;AAC7D,iHAA2G;AAC3G,4EAAuE;AACvE,qGAAgG;AAChG,4EAAwE;AACxE,0GAA6F;AAC7F,oFAA+E;AAC/E,qFAAgF;AAChF,yEAAoE;AACpE,8DAA0D;AAC1D,4FAAsF;AACtF,gGAA0F;AAC1F,sFAAgF;AAChF,wFAAmF;AACnF,iGAA4F;AAC5F,wDAAoD;AA8C7C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IA5C1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iDAAsB;YACtB,+CAAqB;YACrB,qCAAgB;YAChB,gCAAc;YACd,8DAA4B;YAC5B,mDAAuB;YACvB,8BAAa;YACb,0BAAW;SACZ;QACD,SAAS,EAAE;YACT,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,0DAA0B;YAC1B,8DAA4B;YAC5B;gBACE,OAAO,EAAE,mDAAuB;gBAChC,UAAU,EAAE,CAAC,eAAgC,EAAE,gBAAyC,EAAE,EAAE,CAC1F,IAAI,mDAAuB,CAAC,GAAG,EAAE;oBAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,CAAC,EAAE,gBAAgB,CAAC;gBACtB,MAAM,EAAE,CAAC,kCAAe,EAAE,oDAAuB,CAAC;aACnD;YACD,iEAA0B;YAC1B,mDAAuB;YACvB,uDAAyB;SAC1B;QACD,OAAO,EAAE;YACP,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,8DAA4B;YAC5B,iDAAsB;YACtB,mDAAuB;YACvB,mDAAuB;YACvB,uDAAyB;SAC1B;KACF,CAAC;GACW,cAAc,CAAG"}
@@ -3,7 +3,7 @@
3
3
  "slug": "teams-dev",
4
4
  "name": "DevChain Development Flow",
5
5
  "description": "A multi-agent development workflow that automates software delivery through three phases:\n\n1. Planning — A Brainstormer agent collaborates with a technical validator to refine user requirements into an approved master plan, then breaks it down into epics and tasks.\n2. Execution — A Coder agent implements tasks while an Epic Manager reviews and controls the flow—approving, revising, or flagging issues until all work is complete.\n3. Code Review — A Code Reviewer audits the completed work against architectural standards, generating findings that feed back into new remediation tasks if needed.\n\nSupported agents: claude, codex, glm, agy",
6
- "version": "1.1.56",
6
+ "version": "1.1.57",
7
7
  "category": "development",
8
8
  "tags": [
9
9
  "development",
@@ -15,10 +15,10 @@
15
15
  "authorName": "Devchain",
16
16
  "changelog": "",
17
17
  "minDevchainVersion": "0.12.0",
18
- "publishedAt": "2026-09-30T18:38:14.799Z"
18
+ "publishedAt": "2026-10-02T22:44:05.546Z"
19
19
  },
20
20
  "version": 1,
21
- "exportedAt": "2026-09-30T18:38:14.799Z",
21
+ "exportedAt": "2026-10-02T22:44:05.546Z",
22
22
  "prompts": [
23
23
  {
24
24
  "id": "325b23a5-09d1-4f13-b0f5-4ff2713dbe24",
@@ -815,7 +815,7 @@
815
815
  "id": "bb30f7a4-4536-4005-a886-229e0be55fe9",
816
816
  "name": "Limit reached",
817
817
  "description": null,
818
- "enabled": true,
818
+ "enabled": false,
819
819
  "scope": "provider",
820
820
  "scopeFilterName": "claude",
821
821
  "pollIntervalMs": 60000,