@adhdev/daemon-core 0.9.82-rc.16 → 0.9.82-rc.161

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 (209) hide show
  1. package/dist/boot/process-hardening.d.ts +50 -0
  2. package/dist/chat/source-machine.d.ts +166 -0
  3. package/dist/chat/source-resolver.d.ts +104 -0
  4. package/dist/chat/subscription-updates.d.ts +1 -0
  5. package/dist/cli-adapter-types.d.ts +19 -2
  6. package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
  7. package/dist/cli-adapters/cli-state-engine.d.ts +178 -0
  8. package/dist/cli-adapters/provider-cli-adapter.d.ts +104 -63
  9. package/dist/cli-adapters/provider-cli-parse.d.ts +4 -0
  10. package/dist/cli-adapters/provider-cli-shared.d.ts +27 -0
  11. package/dist/commands/handler.d.ts +66 -0
  12. package/dist/commands/mesh-coordinator.d.ts +72 -1
  13. package/dist/commands/router.d.ts +22 -0
  14. package/dist/config/chat-history.d.ts +7 -0
  15. package/dist/config/config.d.ts +5 -0
  16. package/dist/config/mesh-config.d.ts +71 -1
  17. package/dist/git/git-commands.d.ts +5 -1
  18. package/dist/index.d.ts +31 -6
  19. package/dist/index.js +17210 -3575
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +17127 -3551
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/installer.d.ts +1 -4
  24. package/dist/ipc/local-ipc-server.d.ts +91 -0
  25. package/dist/launch.d.ts +1 -1
  26. package/dist/logging/async-batch-writer.d.ts +10 -0
  27. package/dist/mesh/beads-db.d.ts +72 -0
  28. package/dist/mesh/contracts.d.ts +164 -0
  29. package/dist/mesh/coordinator-prompt.d.ts +30 -0
  30. package/dist/mesh/coordinator-registry.d.ts +59 -0
  31. package/dist/mesh/mesh-active-work.d.ts +90 -0
  32. package/dist/mesh/mesh-events.d.ts +77 -5
  33. package/dist/mesh/mesh-fast-forward.d.ts +39 -0
  34. package/dist/mesh/mesh-host-ownership.d.ts +9 -0
  35. package/dist/mesh/mesh-ledger.d.ts +58 -1
  36. package/dist/mesh/mesh-refine-status.d.ts +26 -0
  37. package/dist/mesh/mesh-work-queue.d.ts +44 -5
  38. package/dist/mesh/preview-freshness.d.ts +18 -0
  39. package/dist/mesh/refine-config.d.ts +193 -0
  40. package/dist/mesh/worktree-bootstrap-config.d.ts +113 -0
  41. package/dist/providers/approval-utils.d.ts +9 -0
  42. package/dist/providers/cli-provider-instance.d.ts +7 -2
  43. package/dist/providers/contracts.d.ts +98 -5
  44. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
  45. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  46. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  47. package/dist/providers/native-history/dispatcher.d.ts +24 -0
  48. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  49. package/dist/providers/native-history/index.d.ts +13 -0
  50. package/dist/providers/provider-loader.d.ts +19 -1
  51. package/dist/providers/read-chat-contract.d.ts +29 -0
  52. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  53. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +85 -0
  54. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  55. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +64 -0
  56. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  57. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  58. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  59. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  60. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  61. package/dist/providers/sdk/v1/index.d.ts +30 -0
  62. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  63. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  64. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  65. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  66. package/dist/providers/sdk/v1/types/common/index.d.ts +169 -0
  67. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  68. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  69. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  70. package/dist/providers/spec/adapter.d.ts +56 -0
  71. package/dist/providers/spec/cli-adapter.d.ts +76 -0
  72. package/dist/providers/spec/driver.d.ts +148 -0
  73. package/dist/providers/spec/evaluator.d.ts +47 -0
  74. package/dist/providers/spec/loader.d.ts +14 -0
  75. package/dist/providers/spec/native-history-executor.d.ts +39 -0
  76. package/dist/providers/spec/route.d.ts +4 -0
  77. package/dist/providers/spec/schema.gen.d.ts +507 -0
  78. package/dist/providers/spec/types.d.ts +211 -0
  79. package/dist/providers/transcript-v2.d.ts +176 -0
  80. package/dist/repo-mesh-types.d.ts +100 -1
  81. package/dist/sessions/registry.d.ts +3 -0
  82. package/dist/shared-types.d.ts +12 -0
  83. package/dist/status/reporter.d.ts +2 -0
  84. package/dist/status/snapshot.d.ts +1 -0
  85. package/dist/types.d.ts +5 -0
  86. package/package.json +7 -2
  87. package/src/boot/daemon-lifecycle.ts +17 -10
  88. package/src/boot/process-hardening.ts +89 -0
  89. package/src/chat/source-machine.ts +534 -0
  90. package/src/chat/source-resolver.ts +0 -0
  91. package/src/chat/subscription-updates.ts +14 -1
  92. package/src/cli-adapter-types.d.ts +1 -0
  93. package/src/cli-adapter-types.ts +18 -2
  94. package/src/cli-adapters/cli-script-runner.ts +421 -0
  95. package/src/cli-adapters/cli-state-engine.ts +1086 -0
  96. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  97. package/src/cli-adapters/provider-cli-adapter.ts +664 -1137
  98. package/src/cli-adapters/provider-cli-parse.d.ts +1 -0
  99. package/src/cli-adapters/provider-cli-parse.ts +13 -0
  100. package/src/cli-adapters/provider-cli-runtime.ts +3 -1
  101. package/src/cli-adapters/provider-cli-shared.d.ts +2 -0
  102. package/src/cli-adapters/provider-cli-shared.ts +57 -11
  103. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +17 -1
  104. package/src/cli-adapters/terminal-backends/xterm-backend.ts +8 -1
  105. package/src/commands/chat-commands.ts +1597 -60
  106. package/src/commands/cli-manager.ts +195 -3
  107. package/src/commands/handler.ts +547 -2
  108. package/src/commands/mesh-coordinator.ts +231 -127
  109. package/src/commands/router.ts +3547 -502
  110. package/src/config/chat-history.ts +87 -24
  111. package/src/config/config.ts +12 -0
  112. package/src/config/mesh-config.ts +264 -2
  113. package/src/config/recent-activity.ts +8 -2
  114. package/src/daemon/dev-cli-debug.ts +10 -1
  115. package/src/detection/ide-detector.ts +26 -16
  116. package/src/git/git-commands.ts +17 -5
  117. package/src/git/git-worktree.ts +8 -1
  118. package/src/index.ts +91 -5
  119. package/src/installer.d.ts +1 -1
  120. package/src/installer.ts +8 -6
  121. package/src/ipc/local-ipc-server.ts +278 -0
  122. package/src/launch.d.ts +1 -1
  123. package/src/launch.ts +37 -28
  124. package/src/logging/async-batch-writer.ts +55 -0
  125. package/src/logging/logger.ts +2 -1
  126. package/src/mesh/beads-db.ts +479 -0
  127. package/src/mesh/contracts.ts +329 -0
  128. package/src/mesh/coordinator-prompt.ts +204 -30
  129. package/src/mesh/coordinator-registry.ts +121 -0
  130. package/src/mesh/mesh-active-work.ts +437 -0
  131. package/src/mesh/mesh-events.ts +820 -61
  132. package/src/mesh/mesh-fast-forward.ts +430 -0
  133. package/src/mesh/mesh-host-ownership.ts +73 -0
  134. package/src/mesh/mesh-ledger.ts +457 -104
  135. package/src/mesh/mesh-refine-status.ts +144 -0
  136. package/src/mesh/mesh-work-queue.ts +216 -158
  137. package/src/mesh/preview-freshness.ts +118 -0
  138. package/src/mesh/refine-config.ts +366 -0
  139. package/src/mesh/worktree-bootstrap-config.ts +247 -0
  140. package/src/providers/approval-utils.ts +39 -5
  141. package/src/providers/chat-message-normalization.ts +4 -11
  142. package/src/providers/cli-provider-instance.ts +388 -47
  143. package/src/providers/contracts.ts +105 -5
  144. package/src/providers/ide-provider-instance.ts +17 -3
  145. package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
  146. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  147. package/src/providers/native-history/codex-cli-transcript.ts +419 -0
  148. package/src/providers/native-history/dispatcher.ts +227 -0
  149. package/src/providers/native-history/hermes-cli-transcript.ts +230 -0
  150. package/src/providers/native-history/index.ts +30 -0
  151. package/src/providers/provider-loader.ts +420 -31
  152. package/src/providers/provider-schema.ts +31 -13
  153. package/src/providers/read-chat-contract.ts +76 -16
  154. package/src/providers/sdk/README.md +49 -0
  155. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  156. package/src/providers/sdk/v1/builders/cli/detect-status.ts +262 -0
  157. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  158. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +245 -0
  159. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  160. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  161. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  162. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  163. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  164. package/src/providers/sdk/v1/index.ts +152 -0
  165. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  166. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  167. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  168. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +457 -0
  169. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  170. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  171. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  172. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  173. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  174. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  175. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  176. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  177. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +119 -0
  178. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  179. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  180. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  181. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  182. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  183. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  184. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  185. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  186. package/src/providers/sdk/v1/types/common/index.ts +210 -0
  187. package/src/providers/sdk/v1/validators/index.ts +19 -0
  188. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  189. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  190. package/src/providers/spec/adapter.ts +153 -0
  191. package/src/providers/spec/cli-adapter.ts +318 -0
  192. package/src/providers/spec/driver.ts +498 -0
  193. package/src/providers/spec/evaluator.ts +268 -0
  194. package/src/providers/spec/loader.ts +130 -0
  195. package/src/providers/spec/native-history-executor.ts +612 -0
  196. package/src/providers/spec/route.ts +51 -0
  197. package/src/providers/spec/schema.gen.ts +507 -0
  198. package/src/providers/spec/schema.json +210 -0
  199. package/src/providers/spec/types.ts +230 -0
  200. package/src/providers/transcript-v2.ts +567 -0
  201. package/src/providers/version-archive.ts +38 -20
  202. package/src/repo-mesh-types.ts +110 -1
  203. package/src/sessions/registry.ts +3 -0
  204. package/src/shared-types.ts +9 -0
  205. package/src/status/builders.ts +23 -6
  206. package/src/status/reporter.ts +15 -0
  207. package/src/status/snapshot.ts +35 -11
  208. package/src/system/host-memory.ts +29 -12
  209. package/src/types.ts +5 -0
@@ -15,6 +15,14 @@ import type { ChatMessageKind } from './chat-message-normalization.js';
15
15
  export type ReadChatTurnStatus = 'open' | 'waiting_approval' | 'complete' | 'error';
16
16
 
17
17
  export interface ReadChatResult {
18
+ /**
19
+ * Declared chat contract version. Absent or `'1.0'` → legacy v1 payload
20
+ * (current shape). `'2.0'` → v2 payload conforming to transcript-v2.ts
21
+ * (ReadChatResultV2). Validators in read-chat-contract.ts route on this
22
+ * field. A1 only adds the field; A2 will make v2 the daemon-internal
23
+ * canonical form and reject unrecognised versions at provider load time.
24
+ */
25
+ contractVersion?: import('./transcript-v2.js').ChatContractVersion;
18
26
  messages: ChatMessage[];
19
27
  status: AgentStatus;
20
28
  activeModal?: ModalInfo | null;
@@ -385,8 +393,61 @@ export interface ProviderMeshCoordinatorConfig {
385
393
  /** Copyable setup template. Supports {{meshId}}, {{adhdevMcpCommand}}, {{workspace}}, {{serverName}}. */
386
394
  template?: string;
387
395
  };
396
+ /**
397
+ * How the coordinator system prompt reaches the launched CLI. Replaces the
398
+ * old hard-coded `if (cliType === 'claude-cli') push --append-system-prompt`
399
+ * branches in router.ts: a new CLI now ships its injection rule in its
400
+ * provider.v1.json, no daemon code change needed. Users can override the
401
+ * rendered prompt or the injection mechanism per-provider; if omitted, no
402
+ * system prompt is injected (safe default — won't crash spawn with a flag
403
+ * the CLI doesn't recognize).
404
+ */
405
+ systemPromptInjection?: MeshCoordinatorSystemPromptInjection;
388
406
  }
389
407
 
408
+ /**
409
+ * Declarative description of how a CLI accepts a session-scoped system prompt.
410
+ *
411
+ * Modes:
412
+ * - cli_arg → push `flag` + prompt onto spawn args (Claude)
413
+ * - config_override → push `flag` + a templated key=value config override (Codex)
414
+ * - context_file → write prompt into a workspace markdown the CLI
415
+ * auto-loads as project context (Gemini, Antigravity)
416
+ * - env_var → expose prompt to the spawned process as $name (Hermes)
417
+ *
418
+ * The prompt text is templated with `{prompt}` (raw) or `{prompt_json}`
419
+ * (JSON-encoded for embedding inside config-override strings).
420
+ */
421
+ export type MeshCoordinatorSystemPromptInjection =
422
+ | {
423
+ mode: 'cli_arg';
424
+ /** Spawn-args flag, e.g. '--append-system-prompt'. The prompt becomes the next argv. */
425
+ flag: string;
426
+ }
427
+ | {
428
+ mode: 'config_override';
429
+ /** Spawn-args flag, e.g. '-c'. Followed by `template` with placeholders rendered. */
430
+ flag: string;
431
+ /** Template using {prompt} or {prompt_json}, e.g. 'developer_instructions={prompt_json}'. */
432
+ template: string;
433
+ }
434
+ | {
435
+ mode: 'context_file';
436
+ /** Workspace-relative file path the CLI auto-loads, e.g. 'AGENTS.md' or 'GEMINI.md'. */
437
+ path: string;
438
+ /**
439
+ * Optional wrapper around the prompt. Use `{prompt}` placeholder. Existing
440
+ * wrapper-delimited blocks are replaced rather than duplicated, so re-launching
441
+ * a coordinator doesn't pile up copies. If omitted, the prompt is appended raw.
442
+ */
443
+ wrapper?: string;
444
+ }
445
+ | {
446
+ mode: 'env_var';
447
+ /** Env-var name, e.g. 'HERMES_EPHEMERAL_SYSTEM_PROMPT'. */
448
+ name: string;
449
+ };
450
+
390
451
  export interface ProviderCompatibilityEntry {
391
452
  ideVersion: string;
392
453
  scriptDir: string;
@@ -472,6 +533,14 @@ export interface ProviderModule {
472
533
  extensionIdPattern_flags?: string;
473
534
  compatibility?: ProviderCompatibilityEntry[];
474
535
  defaultScriptDir?: string;
536
+ /**
537
+ * v1 declarative tui block (spinner/settledPrompt/modal/dispatchOrder/etc).
538
+ * When present, the daemon's CliScriptRunner builds canonical
539
+ * (input → verdict) functions from this and injects them into provider
540
+ * scripts as `sdk.declarativeDetectStatus` and `sdk.declarativeParseApproval`.
541
+ * v0 / verified-tier providers can omit this entirely.
542
+ */
543
+ tui?: Record<string, unknown>;
475
544
  /**
476
545
  * Scripts that can run at the IDE main-page level (not just inside the extension webview session frame).
477
546
  * Default: ['listModes', 'setMode', 'listModels', 'setModel'].
@@ -525,8 +594,16 @@ export interface ProviderModule {
525
594
  /** History behavior config — controls message filtering and collapse during replay */
526
595
  historyBehavior?: ProviderHistoryBehavior;
527
596
  /**
528
- * Canonical history sync config — for providers that maintain native history files.
529
- * When set, daemon syncs from native format into ADHDev JSONL store on each tick.
597
+ * Native history config — for providers that maintain native history files.
598
+ * When set, daemon reads/lists provider-native transcripts directly. This is
599
+ * the canonical v1 field name; the legacy `canonicalHistory` field name is
600
+ * still accepted by the loader and aliased onto this field at load time.
601
+ */
602
+ nativeHistory?: NativeHistoryConfig;
603
+ /**
604
+ * @deprecated Legacy v0 alias for {@link ProviderModule.nativeHistory}.
605
+ * Loader populates this from `nativeHistory` so existing internal readers
606
+ * keep working during the transition. Remove after one release.
530
607
  */
531
608
  canonicalHistory?: ProviderCanonicalHistoryConfig;
532
609
  /**
@@ -672,7 +749,7 @@ export interface ProviderHistoryBehavior {
672
749
  * daemon-core. They let each provider own native transcript file discovery and
673
750
  * parsing while daemon-core only validates/pages the normalized result.
674
751
  */
675
- export interface ProviderCanonicalHistoryScriptsConfig {
752
+ export interface NativeHistoryScriptsConfig {
676
753
  /** Reads one native session. Default: 'readNativeHistory'. */
677
754
  readSession?: string;
678
755
  /** Lists native sessions with summary metadata. Default: 'listNativeHistory'. */
@@ -680,13 +757,19 @@ export interface ProviderCanonicalHistoryScriptsConfig {
680
757
  }
681
758
 
682
759
  /**
683
- * Canonical history sync config for providers that maintain their own native history files.
760
+ * @deprecated Use {@link NativeHistoryScriptsConfig}. Retained as an alias for
761
+ * one release so external consumers that referenced the old name keep compiling.
762
+ */
763
+ export type ProviderCanonicalHistoryScriptsConfig = NativeHistoryScriptsConfig;
764
+
765
+ /**
766
+ * Native history config — for providers that maintain their own native history files.
684
767
  *
685
768
  * Preferred mode is provider-owned scripts via `scripts`. `format` is now an
686
769
  * opaque provider label retained for diagnostics/backward compatibility; daemon
687
770
  * live paths must not branch on provider-specific format values.
688
771
  */
689
- export interface ProviderCanonicalHistoryConfig {
772
+ export interface NativeHistoryConfig {
690
773
  /** Opaque provider-owned history format label. */
691
774
  format?: string;
692
775
  /** Optional native history glob/template for diagnostics only. */
@@ -702,8 +785,25 @@ export interface ProviderCanonicalHistoryConfig {
702
785
  * Omitted mode defaults to 'native-source'.
703
786
  */
704
787
  mode?: 'native-source' | 'materialized-mirror' | 'disabled';
788
+ /**
789
+ * Chat transcript contract version this provider's read_chat output
790
+ * conforms to. See transcript-v2.ts for the v2 invariants. Absent or `'1.0'`
791
+ * → legacy v1 payload (current behaviour). `'2.0'` → strict v2 payload
792
+ * (stable providerUnitKey/bubbleId/sequence, strict enums, honest coverage).
793
+ *
794
+ * A1 only surfaces this field; validators in read-chat-contract.ts route
795
+ * on it. A2 makes v2 the daemon-internal canonical form and rejects
796
+ * unrecognised values at provider load time.
797
+ */
798
+ contractVersion?: import('./transcript-v2.js').ChatContractVersion;
705
799
  }
706
800
 
801
+ /**
802
+ * @deprecated Use {@link NativeHistoryConfig}. Retained as an alias for one
803
+ * release so external consumers that referenced the old name keep compiling.
804
+ */
805
+ export type ProviderCanonicalHistoryConfig = NativeHistoryConfig;
806
+
707
807
  /**
708
808
  * Auto-implement spawn config — controls how the provider is spawned for autonomous AI-driven
709
809
  * provider script implementation (dev-auto-implement.ts).
@@ -43,6 +43,20 @@ type ReadChatPayload = {
43
43
  [key: string]: unknown;
44
44
  };
45
45
 
46
+ async function withTimeout<T>(promise: Promise<T>, timeoutMs: number, label: string): Promise<T> {
47
+ let timer: ReturnType<typeof setTimeout> | null = null;
48
+ try {
49
+ return await Promise.race([
50
+ promise,
51
+ new Promise<never>((_, reject) => {
52
+ timer = setTimeout(() => reject(new Error(`${label} timed out after ${timeoutMs}ms`)), timeoutMs);
53
+ }),
54
+ ]);
55
+ } finally {
56
+ if (timer) clearTimeout(timer);
57
+ }
58
+ }
59
+
46
60
  export class IdeProviderInstance implements ProviderInstance {
47
61
  readonly type: string;
48
62
  readonly category = 'ide' as const;
@@ -320,7 +334,7 @@ export class IdeProviderInstance implements ProviderInstance {
320
334
  if (webviewScript) {
321
335
  const matchText = this.provider.webviewMatchText;
322
336
  const matchFn = matchText ? (body: string) => body.includes(matchText) : undefined;
323
- const webviewRaw = await cdp.evaluateInWebviewFrame(webviewScript, matchFn);
337
+ const webviewRaw = await withTimeout(cdp.evaluateInWebviewFrame(webviewScript, matchFn), 30000, 'evaluateInWebviewFrame');
324
338
  if (webviewRaw) {
325
339
  raw = typeof webviewRaw === 'string' ? (() => { try { return JSON.parse(webviewRaw); } catch { return null; } })() : webviewRaw;
326
340
  }
@@ -331,7 +345,7 @@ export class IdeProviderInstance implements ProviderInstance {
331
345
  if (!raw) {
332
346
  const readChatScript = this.getReadChatScript();
333
347
  if (!readChatScript) return;
334
- raw = await cdp.evaluate(readChatScript, 30000);
348
+ raw = await withTimeout(cdp.evaluate(readChatScript, 30000), 30000, 'evaluate.readChatScript');
335
349
  if (typeof raw === 'string') {
336
350
  try { raw = JSON.parse(raw); } catch { return; }
337
351
  }
@@ -706,7 +720,7 @@ export class IdeProviderInstance implements ProviderInstance {
706
720
  );
707
721
 
708
722
  LOG.info('IdeInstance', `[IdeInstance:${this.type}] autoApprove: executing resolveAction for "${targetButton}"`);
709
- let rawResult = await cdp.evaluate(script, 10000);
723
+ let rawResult = await withTimeout(cdp.evaluate(script, 10000), 10000, 'evaluate.autoApprove');
710
724
  if (typeof rawResult === 'string') {
711
725
  try { rawResult = JSON.parse(rawResult); } catch { }
712
726
  }