@adhdev/daemon-core 0.9.82-rc.21 → 0.9.82-rc.211

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 (269) hide show
  1. package/dist/boot/daemon-lifecycle.d.ts +1 -0
  2. package/dist/boot/process-hardening.d.ts +50 -0
  3. package/dist/chat/source-machine.d.ts +166 -0
  4. package/dist/chat/source-resolver.d.ts +104 -0
  5. package/dist/chat/subscription-updates.d.ts +1 -0
  6. package/dist/cli-adapter-types.d.ts +23 -2
  7. package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
  8. package/dist/cli-adapters/cli-state-engine.d.ts +178 -0
  9. package/dist/cli-adapters/provider-cli-adapter.d.ts +106 -63
  10. package/dist/cli-adapters/provider-cli-parse.d.ts +4 -0
  11. package/dist/cli-adapters/provider-cli-shared.d.ts +29 -0
  12. package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
  13. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +3 -3
  14. package/dist/cli-adapters/terminal-backends/types.d.ts +1 -2
  15. package/dist/cli-adapters/terminal-screen.d.ts +2 -11
  16. package/dist/commands/cli-manager.d.ts +2 -1
  17. package/dist/commands/handler.d.ts +110 -0
  18. package/dist/commands/mesh-coordinator.d.ts +85 -1
  19. package/dist/commands/router.d.ts +32 -1
  20. package/dist/config/chat-history.d.ts +9 -0
  21. package/dist/config/config.d.ts +5 -0
  22. package/dist/config/mesh-config.d.ts +72 -1
  23. package/dist/git/git-commands.d.ts +9 -1
  24. package/dist/git/git-diff.d.ts +6 -0
  25. package/dist/git/git-types.d.ts +2 -0
  26. package/dist/index.d.ts +46 -11
  27. package/dist/index.js +35173 -15756
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +34880 -15556
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/installer.d.ts +1 -4
  32. package/dist/ipc/local-ipc-server.d.ts +91 -0
  33. package/dist/launch.d.ts +1 -1
  34. package/dist/logging/async-batch-writer.d.ts +10 -0
  35. package/dist/mesh/contracts.d.ts +164 -0
  36. package/dist/mesh/coordinator-prompt.d.ts +36 -0
  37. package/dist/mesh/coordinator-registry.d.ts +59 -0
  38. package/dist/mesh/mesh-active-work.d.ts +90 -0
  39. package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
  40. package/dist/mesh/mesh-events-coordinator.d.ts +151 -0
  41. package/dist/mesh/mesh-events-pending.d.ts +33 -0
  42. package/dist/mesh/mesh-events-stale.d.ts +40 -0
  43. package/dist/mesh/mesh-events-utils.d.ts +14 -0
  44. package/dist/mesh/mesh-events.d.ts +5 -40
  45. package/dist/mesh/mesh-fast-forward.d.ts +41 -0
  46. package/dist/mesh/mesh-host-ownership.d.ts +9 -0
  47. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -3
  48. package/dist/mesh/mesh-ledger.d.ts +77 -1
  49. package/dist/mesh/mesh-missions.d.ts +58 -0
  50. package/dist/mesh/mesh-refine-status.d.ts +26 -0
  51. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  52. package/dist/mesh/mesh-runtime-store.d.ts +324 -0
  53. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  54. package/dist/mesh/mesh-work-queue.d.ts +137 -6
  55. package/dist/mesh/preview-freshness.d.ts +18 -0
  56. package/dist/mesh/refine-config.d.ts +215 -0
  57. package/dist/mesh/worktree-bootstrap-config.d.ts +135 -0
  58. package/dist/providers/acp-provider-instance.d.ts +2 -0
  59. package/dist/providers/approval-utils.d.ts +13 -0
  60. package/dist/providers/cli-provider-instance.d.ts +39 -3
  61. package/dist/providers/contracts.d.ts +130 -6
  62. package/dist/providers/external-sources.d.ts +71 -0
  63. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
  64. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  65. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  66. package/dist/providers/native-history/dispatcher.d.ts +27 -0
  67. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  68. package/dist/providers/native-history/index.d.ts +13 -0
  69. package/dist/providers/provider-instance-manager.d.ts +12 -0
  70. package/dist/providers/provider-instance.d.ts +13 -1
  71. package/dist/providers/provider-loader.d.ts +26 -4
  72. package/dist/providers/provider-trust.d.ts +31 -0
  73. package/dist/providers/read-chat-contract.d.ts +29 -0
  74. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  75. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +85 -0
  76. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  77. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  78. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  79. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  80. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  81. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  82. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  83. package/dist/providers/sdk/v1/index.d.ts +30 -0
  84. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  85. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  86. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  87. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  88. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  89. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  90. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  91. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  92. package/dist/providers/spec/adapter.d.ts +52 -0
  93. package/dist/providers/spec/cli-adapter.d.ts +101 -0
  94. package/dist/providers/spec/driver.d.ts +225 -0
  95. package/dist/providers/spec/evaluator.d.ts +54 -0
  96. package/dist/providers/spec/loader.d.ts +15 -0
  97. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  98. package/dist/providers/spec/route.d.ts +4 -0
  99. package/dist/providers/spec/schema.gen.d.ts +2025 -0
  100. package/dist/providers/spec/types.d.ts +302 -0
  101. package/dist/providers/transcript-v2.d.ts +176 -0
  102. package/dist/providers/types/interactive-prompt.d.ts +48 -0
  103. package/dist/repo-mesh-types.d.ts +109 -1
  104. package/dist/sessions/registry.d.ts +3 -0
  105. package/dist/shared-types-extra.d.ts +2 -4
  106. package/dist/shared-types.d.ts +42 -1
  107. package/dist/status/normalize.d.ts +1 -1
  108. package/dist/status/normalize.js +1 -0
  109. package/dist/status/normalize.js.map +1 -1
  110. package/dist/status/normalize.mjs +1 -0
  111. package/dist/status/normalize.mjs.map +1 -1
  112. package/dist/status/reporter.d.ts +2 -0
  113. package/dist/status/snapshot.d.ts +1 -0
  114. package/dist/types.d.ts +5 -0
  115. package/package.json +6 -3
  116. package/src/agent-stream/poller.ts +2 -3
  117. package/src/boot/daemon-lifecycle.ts +22 -10
  118. package/src/boot/process-hardening.ts +89 -0
  119. package/src/chat/source-machine.ts +534 -0
  120. package/src/chat/source-resolver.ts +0 -0
  121. package/src/chat/subscription-updates.ts +20 -1
  122. package/src/cli-adapter-types.d.ts +1 -0
  123. package/src/cli-adapter-types.ts +22 -2
  124. package/src/cli-adapters/cli-script-runner.ts +421 -0
  125. package/src/cli-adapters/cli-state-engine.ts +1138 -0
  126. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  127. package/src/cli-adapters/provider-cli-adapter.ts +673 -1139
  128. package/src/cli-adapters/provider-cli-parse.d.ts +1 -0
  129. package/src/cli-adapters/provider-cli-parse.ts +13 -0
  130. package/src/cli-adapters/provider-cli-runtime.ts +3 -1
  131. package/src/cli-adapters/provider-cli-shared.d.ts +2 -0
  132. package/src/cli-adapters/provider-cli-shared.ts +59 -11
  133. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  134. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +35 -29
  135. package/src/cli-adapters/terminal-backends/types.ts +1 -3
  136. package/src/cli-adapters/terminal-screen.ts +11 -81
  137. package/src/commands/chat-commands.ts +1787 -60
  138. package/src/commands/cli-manager.ts +283 -14
  139. package/src/commands/handler.ts +809 -2
  140. package/src/commands/mesh-coordinator.ts +332 -122
  141. package/src/commands/router.ts +4198 -557
  142. package/src/config/chat-history.ts +95 -24
  143. package/src/config/config.ts +12 -0
  144. package/src/config/mesh-config.ts +280 -2
  145. package/src/config/recent-activity.ts +8 -2
  146. package/src/daemon/dev-auto-implement.ts +3 -2
  147. package/src/daemon/dev-cli-debug.ts +10 -1
  148. package/src/detection/ide-detector.ts +26 -16
  149. package/src/git/git-commands.ts +42 -12
  150. package/src/git/git-diff.ts +53 -0
  151. package/src/git/git-status.ts +35 -6
  152. package/src/git/git-types.ts +2 -0
  153. package/src/git/git-worktree.ts +8 -1
  154. package/src/index.ts +126 -10
  155. package/src/installer.d.ts +1 -1
  156. package/src/installer.ts +8 -6
  157. package/src/ipc/local-ipc-server.ts +278 -0
  158. package/src/launch.d.ts +1 -1
  159. package/src/launch.ts +37 -28
  160. package/src/logging/async-batch-writer.ts +55 -0
  161. package/src/logging/logger.ts +2 -1
  162. package/src/mesh/contracts.ts +329 -0
  163. package/src/mesh/coordinator-prompt.ts +218 -31
  164. package/src/mesh/coordinator-registry.ts +121 -0
  165. package/src/mesh/mesh-active-work.ts +437 -0
  166. package/src/mesh/mesh-delivery-policy.ts +315 -0
  167. package/src/mesh/mesh-events-coordinator.ts +1404 -0
  168. package/src/mesh/mesh-events-pending.ts +371 -0
  169. package/src/mesh/mesh-events-stale.ts +283 -0
  170. package/src/mesh/mesh-events-utils.ts +161 -0
  171. package/src/mesh/mesh-events.ts +24 -908
  172. package/src/mesh/mesh-fast-forward.ts +438 -0
  173. package/src/mesh/mesh-host-ownership.ts +73 -0
  174. package/src/mesh/mesh-ledger-reconciliation.ts +12 -5
  175. package/src/mesh/mesh-ledger.ts +587 -102
  176. package/src/mesh/mesh-missions.ts +151 -0
  177. package/src/mesh/mesh-refine-status.ts +144 -0
  178. package/src/mesh/mesh-review-inbox.ts +307 -0
  179. package/src/mesh/mesh-runtime-store.ts +1305 -0
  180. package/src/mesh/mesh-task-stats.ts +154 -0
  181. package/src/mesh/mesh-work-queue.ts +490 -166
  182. package/src/mesh/preview-freshness.ts +118 -0
  183. package/src/mesh/refine-config.ts +403 -0
  184. package/src/mesh/worktree-bootstrap-config.ts +326 -0
  185. package/src/providers/acp-provider-instance.ts +15 -1
  186. package/src/providers/approval-utils.d.ts +4 -0
  187. package/src/providers/approval-utils.ts +47 -5
  188. package/src/providers/chat-message-normalization.ts +4 -11
  189. package/src/providers/cli-provider-instance.ts +833 -64
  190. package/src/providers/contracts.d.ts +55 -0
  191. package/src/providers/contracts.ts +141 -6
  192. package/src/providers/external-sources.ts +218 -0
  193. package/src/providers/ide-provider-instance.ts +19 -5
  194. package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
  195. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  196. package/src/providers/native-history/codex-cli-transcript.ts +419 -0
  197. package/src/providers/native-history/dispatcher.ts +340 -0
  198. package/src/providers/native-history/hermes-cli-transcript.ts +230 -0
  199. package/src/providers/native-history/index.ts +30 -0
  200. package/src/providers/provider-instance-manager.ts +30 -0
  201. package/src/providers/provider-instance.ts +10 -1
  202. package/src/providers/provider-loader.ts +582 -50
  203. package/src/providers/provider-schema.ts +87 -14
  204. package/src/providers/provider-trust.ts +114 -0
  205. package/src/providers/read-chat-contract.ts +76 -16
  206. package/src/providers/sdk/README.md +49 -0
  207. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  208. package/src/providers/sdk/v1/builders/cli/detect-status.ts +262 -0
  209. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  210. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  211. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  212. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  213. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  214. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  215. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  216. package/src/providers/sdk/v1/index.ts +152 -0
  217. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  218. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  219. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  220. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +504 -0
  221. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  222. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  223. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  224. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  225. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  226. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  227. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  228. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  229. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  230. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  231. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  232. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  233. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  234. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  235. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  236. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  237. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  238. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  239. package/src/providers/sdk/v1/validators/index.ts +19 -0
  240. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  241. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  242. package/src/providers/spec/adapter.ts +138 -0
  243. package/src/providers/spec/cli-adapter.ts +626 -0
  244. package/src/providers/spec/driver.ts +922 -0
  245. package/src/providers/spec/evaluator.ts +597 -0
  246. package/src/providers/spec/loader.ts +324 -0
  247. package/src/providers/spec/native-history-executor.ts +939 -0
  248. package/src/providers/spec/route.ts +51 -0
  249. package/src/providers/spec/schema.gen.ts +691 -0
  250. package/src/providers/spec/schema.json +341 -0
  251. package/src/providers/spec/types.ts +356 -0
  252. package/src/providers/transcript-v2.ts +567 -0
  253. package/src/providers/types/interactive-prompt.ts +425 -0
  254. package/src/providers/version-archive.ts +38 -20
  255. package/src/repo-mesh-types.ts +119 -1
  256. package/src/sessions/registry.ts +3 -0
  257. package/src/shared-types-extra.ts +2 -4
  258. package/src/shared-types.ts +45 -1
  259. package/src/status/builders.ts +24 -6
  260. package/src/status/normalize.ts +2 -0
  261. package/src/status/reporter.ts +15 -0
  262. package/src/status/snapshot.ts +84 -25
  263. package/src/system/host-memory.ts +29 -12
  264. package/src/types.ts +5 -0
  265. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  266. package/dist/mesh/mesh-sync.d.ts +0 -53
  267. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  268. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  269. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Type mirror of adhdev:cli/spec@1 (v1) and adhdev:cli/spec@3 (v3).
3
+ * Keep in sync with schema.gen.ts.
4
+ *
5
+ * v1 uses layout.sections[] and debounce{}.
6
+ * v3 uses sections{} (object) and timing{}, with composable conditions.
7
+ *
8
+ * The loader auto-migrates v1 → v3. Callers receive a CliSpec (v3) after
9
+ * loadSpec; the v1 raw shape is only used during migration.
10
+ */
11
+ 'use strict';
12
+
13
+ // ─────────────────────────────────────────────────────────────────────────────
14
+ // Shared / unchanged types
15
+ // ─────────────────────────────────────────────────────────────────────────────
16
+
17
+ export type Size = number | string;
18
+
19
+ export interface SectionPattern {
20
+ section?: string;
21
+ pattern: string;
22
+ flags?: string;
23
+ }
24
+
25
+ export type ControlAction =
26
+ | { type: 'send_keys'; keys: string }
27
+ | {
28
+ type: 'open_picker';
29
+ trigger_keys: string;
30
+ wait_for: SectionRegex;
31
+ extract_choices: SectionPattern;
32
+ submit_key: string;
33
+ }
34
+ | {
35
+ type: 'attach_image';
36
+ method: 'tempfile_then_keys';
37
+ keys_template: string;
38
+ };
39
+
40
+ export interface Control {
41
+ id: string;
42
+ label: string;
43
+ visible_when_state?: string[];
44
+ action: ControlAction;
45
+ }
46
+
47
+ export interface NotificationRule {
48
+ id: string;
49
+ when_state: string;
50
+ title: string;
51
+ body?: string;
52
+ }
53
+
54
+ export interface DelegateTrigger {
55
+ id: string;
56
+ when_state: string;
57
+ after_duration_ms?: number;
58
+ task_template: string;
59
+ }
60
+
61
+ /**
62
+ * Native history config — three modes, picked by which fields are present:
63
+ *
64
+ * 1. `reader`: built-in reader id (claude-cli / codex-cli / antigravity-cli / hermes-cli).
65
+ *
66
+ * 2. `source`: declarative source descriptor.
67
+ *
68
+ * 3. `override_path`: relative path to a provider-supplied reader module.
69
+ */
70
+ export interface NativeHistoryConfig {
71
+ reader?: 'claude-cli' | 'codex-cli' | 'antigravity-cli' | 'hermes-cli';
72
+ source?: NativeHistorySource;
73
+ override_path?: string;
74
+ }
75
+
76
+ export type NativeHistorySource =
77
+ | NativeHistoryJsonlSource
78
+ | NativeHistorySqliteSource;
79
+
80
+ export interface NativeHistoryJsonlSource {
81
+ kind: 'jsonl';
82
+ path: string;
83
+ file_pattern?: string;
84
+ recent_window_ms?: number;
85
+ session_id_from?: 'filename_uuid' | 'first_record';
86
+ session_id_path?: string;
87
+ message_filter?: { where: string };
88
+ message_map: NativeHistoryMessageMap;
89
+ }
90
+
91
+ export interface NativeHistorySqliteSource {
92
+ kind: 'sqlite';
93
+ path: string;
94
+ session_query: string;
95
+ message_query: string;
96
+ message_map: NativeHistoryMessageMap;
97
+ }
98
+
99
+ export interface NativeHistoryMessageMap {
100
+ role: string;
101
+ content: string;
102
+ content_strip?: string[];
103
+ content_unwrap?: string[];
104
+ timestamp_ms?: string;
105
+ kind?: string;
106
+ }
107
+
108
+ // ─────────────────────────────────────────────────────────────────────────────
109
+ // v1 types (legacy — used internally during migration)
110
+ // ─────────────────────────────────────────────────────────────────────────────
111
+
112
+ export interface Section {
113
+ id: string;
114
+ from_top?: Size;
115
+ from_bottom?: Size;
116
+ until?: { section: string };
117
+ anchor_regex?: string;
118
+ anchor_flags?: string;
119
+ anchor_last?: boolean;
120
+ anchor_context?: {
121
+ prev?: string;
122
+ prev_flags?: string;
123
+ next?: string;
124
+ next_flags?: string;
125
+ };
126
+ lines?: number;
127
+ until_regex?: string;
128
+ until_regex_flags?: string;
129
+ }
130
+
131
+ /** v1 condition — flat SectionRegex object. Also used in control_bar.wait_for. */
132
+ export interface SectionRegex {
133
+ section?: string;
134
+ regex?: string;
135
+ flags?: string;
136
+ cursor_row_min?: number;
137
+ cursor_row_max?: number;
138
+ cursor_col_min?: number;
139
+ cursor_col_max?: number;
140
+ /** v1 delta detection (cursor_above_lines + changed). */
141
+ cursor_above_lines?: number;
142
+ /** Required when cursor_above_lines is set. */
143
+ changed?: true;
144
+ }
145
+
146
+ export interface ModalButtonsRule {
147
+ section?: string;
148
+ pattern?: string;
149
+ flags?: string;
150
+ patterns?: Array<{ pattern: string; flags?: string }>;
151
+ key_for_index: string;
152
+ min_count?: number;
153
+ continuation_lines?: boolean;
154
+ }
155
+
156
+ // ─────────────────────────────────────────────────────────────────────────────
157
+ // v3 types (current)
158
+ // ─────────────────────────────────────────────────────────────────────────────
159
+
160
+ /**
161
+ * v3 section definition — keyed by id in `sections{}` object.
162
+ * `until` is EITHER a section-id string (no `^` prefix) OR a regex string (starts with `^`).
163
+ */
164
+ export interface SectionDef {
165
+ // positional
166
+ from_top?: Size;
167
+ from_bottom?: Size;
168
+ until?: string; // section id OR regex (starts with ^)
169
+ // anchor-based
170
+ anchor?: string; // regex (replaces anchor_regex)
171
+ anchor_flags?: string;
172
+ anchor_last?: boolean;
173
+ anchor_context?: {
174
+ prev?: string;
175
+ next?: string;
176
+ prev_flags?: string;
177
+ next_flags?: string;
178
+ };
179
+ lines?: number;
180
+ until_regex?: string; // kept for anchor-based extension
181
+ until_regex_flags?: string;
182
+ }
183
+
184
+ /** v3 regex condition against a section (or full screen). */
185
+ export interface RegexCondition {
186
+ section?: string;
187
+ matches: string; // regex string
188
+ flags?: string;
189
+ cursor_row_min?: number;
190
+ cursor_row_max?: number;
191
+ cursor_col_min?: number;
192
+ cursor_col_max?: number;
193
+ }
194
+
195
+ /** v3 delta condition: N lines above cursor changed vs prevLines. */
196
+ export interface ChangedCondition {
197
+ cursor_above: number;
198
+ changed: true;
199
+ }
200
+
201
+ /** v3 AND composite. */
202
+ export interface AllCondition {
203
+ all: Condition[];
204
+ }
205
+
206
+ /** v3 OR composite. */
207
+ export interface AnyCondition {
208
+ any: Condition[];
209
+ }
210
+
211
+ export type Condition = RegexCondition | ChangedCondition | AllCondition | AnyCondition;
212
+
213
+ /** v3 extract_title config. */
214
+ export interface ExtractTitle {
215
+ section?: string;
216
+ regex?: string;
217
+ flags?: string;
218
+ first_line?: true;
219
+ }
220
+
221
+ /** v3 extract_buttons config. */
222
+ export interface ExtractButtons {
223
+ section?: string;
224
+ pattern: string;
225
+ flags?: string;
226
+ key_for_index: string;
227
+ min_count?: number;
228
+ continuation_lines?: boolean;
229
+ }
230
+
231
+ /** v3 state. */
232
+ export interface SpecStateV3 {
233
+ id: string;
234
+ label: string;
235
+ when: AllCondition | AnyCondition;
236
+ extract?: {
237
+ title?: ExtractTitle;
238
+ buttons?: ExtractButtons;
239
+ };
240
+ }
241
+
242
+ // ─────────────────────────────────────────────────────────────────────────────
243
+ // CliSpec — v3 (the canonical runtime type after loading)
244
+ // ─────────────────────────────────────────────────────────────────────────────
245
+
246
+ export interface CliSpec {
247
+ $schema: 'adhdev:cli/spec@3';
248
+ id: string;
249
+ name: string;
250
+ binary: string;
251
+ spawn_args?: string[];
252
+ env?: Record<string, string>;
253
+ cli_version_range?: string;
254
+ send_message: {
255
+ submit_key: string;
256
+ delay_ms_before_submit?: number;
257
+ delay_ms_per_char?: number;
258
+ };
259
+ sections: Record<string, SectionDef>;
260
+ states: SpecStateV3[];
261
+ default_state: string;
262
+ control_bar?: Control[];
263
+ notifications?: NotificationRule[];
264
+ delegate?: DelegateTrigger[];
265
+ native_history?: NativeHistoryConfig;
266
+ requiresFinalAssistantBeforeIdle?: boolean;
267
+ /**
268
+ * Per-spec timing knobs. Replaces v1 `debounce`.
269
+ * Also accessible via the legacy `debounce` alias in the driver for
270
+ * backward compat with older callers.
271
+ */
272
+ timing?: {
273
+ busy_hold_ms?: number;
274
+ idle_hold_ms?: number;
275
+ startup_grace_ms?: number;
276
+ completion_marker?: {
277
+ section?: string;
278
+ matches: string;
279
+ flags?: string;
280
+ hold_ms: number;
281
+ force_after_ms?: number;
282
+ };
283
+ };
284
+ /**
285
+ * Legacy alias: v1 callers (tests, tooling) may read `debounce`.
286
+ * The loader populates both `timing` and `debounce` pointing at the
287
+ * same object so callers that use either field see consistent values.
288
+ * @deprecated Use `timing` instead.
289
+ */
290
+ debounce?: {
291
+ busy_hold_ms?: number;
292
+ idle_hold_ms?: number;
293
+ startup_grace_ms?: number;
294
+ /**
295
+ * Legacy field name for completion_marker. Populated by the loader
296
+ * from `timing.completion_marker` for backward compat.
297
+ */
298
+ completion_idle_after?: {
299
+ section?: string;
300
+ regex: string;
301
+ flags?: string;
302
+ hold_ms: number;
303
+ force_after_ms?: number;
304
+ };
305
+ };
306
+ }
307
+
308
+ // ─────────────────────────────────────────────────────────────────────────────
309
+ // v1 CliSpec raw shape (for migration only — not exported as the primary type)
310
+ // ─────────────────────────────────────────────────────────────────────────────
311
+
312
+ /** Raw v1 spec shape as loaded from JSON. Used only in migrateV1toV3. */
313
+ export interface RawCliSpecV1 {
314
+ $schema: 'adhdev:cli/spec@1';
315
+ id: string;
316
+ name: string;
317
+ binary: string;
318
+ spawn_args?: string[];
319
+ env?: Record<string, string>;
320
+ cli_version_range?: string;
321
+ send_message: {
322
+ submit_key: string;
323
+ delay_ms_before_submit?: number;
324
+ delay_ms_per_char?: number;
325
+ };
326
+ layout: { sections: Section[] };
327
+ states: Array<{
328
+ id: string;
329
+ label: string;
330
+ when: SectionRegex;
331
+ extract_title?: SectionRegex;
332
+ modal_buttons?: ModalButtonsRule;
333
+ }>;
334
+ default_state: string;
335
+ control_bar?: Control[];
336
+ notifications?: NotificationRule[];
337
+ delegate?: DelegateTrigger[];
338
+ native_history?: NativeHistoryConfig;
339
+ requiresFinalAssistantBeforeIdle?: boolean;
340
+ debounce?: {
341
+ busy_hold_ms?: number;
342
+ idle_hold_ms?: number;
343
+ startup_grace_ms?: number;
344
+ completion_idle_after?: {
345
+ section?: string;
346
+ regex: string;
347
+ flags?: string;
348
+ hold_ms: number;
349
+ force_after_ms?: number;
350
+ };
351
+ };
352
+ }
353
+
354
+ // Keep SpecState as alias for backward compat with cli-adapter.ts and other code
355
+ // that imports SpecState from types.ts. In v3 we use SpecStateV3.
356
+ export type SpecState = SpecStateV3;