@adhdev/daemon-core 0.9.82-rc.26 → 0.9.82-rc.260
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.
- package/dist/boot/daemon-lifecycle.d.ts +4 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +23 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +198 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +106 -63
- package/dist/cli-adapters/provider-cli-parse.d.ts +4 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +38 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +3 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +1 -2
- package/dist/cli-adapters/terminal-screen.d.ts +2 -11
- package/dist/commands/cli-manager.d.ts +2 -1
- package/dist/commands/handler.d.ts +110 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router.d.ts +44 -1
- package/dist/config/chat-history.d.ts +9 -0
- package/dist/config/config.d.ts +5 -0
- package/dist/config/mesh-config.d.ts +72 -1
- package/dist/git/git-commands.d.ts +9 -1
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-types.d.ts +2 -0
- package/dist/index.d.ts +47 -11
- package/dist/index.js +31689 -11929
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30983 -11319
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/mesh/contracts.d.ts +164 -0
- package/dist/mesh/coordinator-prompt.d.ts +36 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +90 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +152 -0
- package/dist/mesh/mesh-events-pending.d.ts +40 -0
- package/dist/mesh/mesh-events-stale.d.ts +40 -0
- package/dist/mesh/mesh-events-utils.d.ts +16 -0
- package/dist/mesh/mesh-events.d.ts +5 -49
- package/dist/mesh/mesh-fast-forward.d.ts +41 -0
- package/dist/mesh/mesh-host-ownership.d.ts +9 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -3
- package/dist/mesh/mesh-ledger.d.ts +77 -1
- package/dist/mesh/mesh-missions.d.ts +58 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +327 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-work-queue.d.ts +160 -5
- package/dist/mesh/preview-freshness.d.ts +18 -0
- package/dist/mesh/refine-config.d.ts +215 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +135 -0
- package/dist/providers/acp-provider-instance.d.ts +2 -0
- package/dist/providers/approval-utils.d.ts +13 -0
- package/dist/providers/cli-provider-instance.d.ts +37 -3
- package/dist/providers/contracts.d.ts +130 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/dispatcher.d.ts +27 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +13 -0
- package/dist/providers/provider-instance.d.ts +13 -1
- package/dist/providers/provider-loader.d.ts +26 -4
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +85 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +52 -0
- package/dist/providers/spec/cli-adapter.d.ts +102 -0
- package/dist/providers/spec/evaluator.d.ts +23 -0
- package/dist/providers/spec/fsm-driver.d.ts +232 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +72 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +91 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +129 -0
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +48 -0
- package/dist/repo-mesh-types.d.ts +126 -1
- package/dist/sessions/registry.d.ts +6 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +42 -1
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +1 -0
- package/dist/types.d.ts +5 -0
- package/package.json +6 -3
- package/src/agent-stream/poller.ts +2 -3
- package/src/boot/daemon-lifecycle.ts +30 -10
- package/src/boot/process-hardening.ts +89 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +1 -0
- package/src/cli-adapter-types.ts +22 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1215 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +674 -1139
- package/src/cli-adapters/provider-cli-parse.d.ts +1 -0
- package/src/cli-adapters/provider-cli-parse.ts +13 -0
- package/src/cli-adapters/provider-cli-runtime.ts +3 -1
- package/src/cli-adapters/provider-cli-shared.d.ts +2 -0
- package/src/cli-adapters/provider-cli-shared.ts +68 -11
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +35 -29
- package/src/cli-adapters/terminal-backends/types.ts +1 -3
- package/src/cli-adapters/terminal-screen.ts +11 -81
- package/src/commands/chat-commands.ts +1806 -60
- package/src/commands/cli-manager.ts +286 -14
- package/src/commands/handler.ts +809 -2
- package/src/commands/mesh-coordinator.ts +332 -122
- package/src/commands/router.ts +4890 -489
- package/src/config/chat-history.ts +95 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +303 -3
- package/src/config/recent-activity.ts +8 -2
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/detection/ide-detector.ts +26 -16
- package/src/git/git-commands.ts +42 -12
- package/src/git/git-diff.ts +53 -0
- package/src/git/git-status.ts +35 -6
- package/src/git/git-types.ts +2 -0
- package/src/git/git-worktree.ts +8 -1
- package/src/index.ts +127 -10
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/logger.ts +2 -1
- package/src/mesh/contracts.ts +329 -0
- package/src/mesh/coordinator-prompt.ts +219 -31
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +437 -0
- package/src/mesh/mesh-delivery-policy.ts +315 -0
- package/src/mesh/mesh-events-coordinator.ts +1625 -0
- package/src/mesh/mesh-events-pending.ts +439 -0
- package/src/mesh/mesh-events-stale.ts +283 -0
- package/src/mesh/mesh-events-utils.ts +195 -0
- package/src/mesh/mesh-events.ts +26 -1035
- package/src/mesh/mesh-fast-forward.ts +438 -0
- package/src/mesh/mesh-host-ownership.ts +73 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -5
- package/src/mesh/mesh-ledger.ts +588 -102
- package/src/mesh/mesh-missions.ts +151 -0
- package/src/mesh/mesh-refine-batch.ts +197 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-review-inbox.ts +307 -0
- package/src/mesh/mesh-routing.ts +272 -0
- package/src/mesh/mesh-runtime-store.ts +1342 -0
- package/src/mesh/mesh-task-stats.ts +154 -0
- package/src/mesh/mesh-work-queue.ts +573 -145
- package/src/mesh/preview-freshness.ts +118 -0
- package/src/mesh/refine-config.ts +403 -0
- package/src/mesh/worktree-bootstrap-config.ts +326 -0
- package/src/providers/acp-provider-instance.ts +15 -1
- package/src/providers/approval-utils.d.ts +4 -0
- package/src/providers/approval-utils.ts +47 -5
- package/src/providers/chat-message-normalization.ts +4 -11
- package/src/providers/cli-provider-instance.ts +806 -72
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +141 -6
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +19 -5
- package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/dispatcher.ts +340 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +230 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +30 -0
- package/src/providers/provider-instance.ts +10 -1
- package/src/providers/provider-loader.ts +584 -50
- package/src/providers/provider-schema.ts +87 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +262 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +504 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +138 -0
- package/src/providers/spec/cli-adapter.ts +650 -0
- package/src/providers/spec/evaluator.ts +321 -0
- package/src/providers/spec/fsm-driver.ts +754 -0
- package/src/providers/spec/fsm-evaluator.ts +255 -0
- package/src/providers/spec/fsm-loader.ts +102 -0
- package/src/providers/spec/fsm-types.ts +184 -0
- package/src/providers/spec/native-history-executor.ts +943 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +173 -0
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +425 -0
- package/src/providers/version-archive.ts +38 -20
- package/src/repo-mesh-types.ts +138 -1
- package/src/sessions/registry.ts +6 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.ts +45 -1
- package/src/status/builders.ts +26 -6
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +15 -0
- package/src/status/snapshot.ts +84 -25
- package/src/system/host-memory.ts +29 -12
- package/src/types.ts +5 -0
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
export type Size = number | string;
|
|
2
|
+
export interface SectionPattern {
|
|
3
|
+
section?: string;
|
|
4
|
+
pattern: string;
|
|
5
|
+
flags?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Inline wait_for shape used by open_picker control actions. */
|
|
8
|
+
export interface WaitForCondition {
|
|
9
|
+
section?: string;
|
|
10
|
+
regex?: string;
|
|
11
|
+
flags?: string;
|
|
12
|
+
}
|
|
13
|
+
export type ControlAction = {
|
|
14
|
+
type: 'send_keys';
|
|
15
|
+
keys: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'open_picker';
|
|
18
|
+
trigger_keys: string;
|
|
19
|
+
wait_for: WaitForCondition;
|
|
20
|
+
extract_choices: SectionPattern;
|
|
21
|
+
submit_key: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'attach_image';
|
|
24
|
+
method: 'tempfile_then_keys';
|
|
25
|
+
keys_template: string;
|
|
26
|
+
};
|
|
27
|
+
export interface Control {
|
|
28
|
+
id: string;
|
|
29
|
+
label: string;
|
|
30
|
+
visible_when_state?: string[];
|
|
31
|
+
action: ControlAction;
|
|
32
|
+
}
|
|
33
|
+
export interface NotificationRule {
|
|
34
|
+
id: string;
|
|
35
|
+
when_state: string;
|
|
36
|
+
title: string;
|
|
37
|
+
body?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface DelegateTrigger {
|
|
40
|
+
id: string;
|
|
41
|
+
when_state: string;
|
|
42
|
+
after_duration_ms?: number;
|
|
43
|
+
task_template: string;
|
|
44
|
+
}
|
|
45
|
+
export interface NativeHistoryConfig {
|
|
46
|
+
reader?: 'claude-cli' | 'codex-cli' | 'antigravity-cli' | 'hermes-cli';
|
|
47
|
+
source?: NativeHistorySource;
|
|
48
|
+
override_path?: string;
|
|
49
|
+
}
|
|
50
|
+
export type NativeHistorySource = NativeHistoryJsonlSource | NativeHistorySqliteSource;
|
|
51
|
+
export interface NativeHistoryJsonlSource {
|
|
52
|
+
kind: 'jsonl';
|
|
53
|
+
path: string;
|
|
54
|
+
file_pattern?: string;
|
|
55
|
+
recent_window_ms?: number;
|
|
56
|
+
session_id_from?: 'filename_uuid' | 'first_record';
|
|
57
|
+
session_id_path?: string;
|
|
58
|
+
message_filter?: {
|
|
59
|
+
where: string;
|
|
60
|
+
};
|
|
61
|
+
message_map: NativeHistoryMessageMap;
|
|
62
|
+
}
|
|
63
|
+
export interface NativeHistorySqliteSource {
|
|
64
|
+
kind: 'sqlite';
|
|
65
|
+
path: string;
|
|
66
|
+
session_query: string;
|
|
67
|
+
message_query: string;
|
|
68
|
+
message_map: NativeHistoryMessageMap;
|
|
69
|
+
}
|
|
70
|
+
export interface NativeHistoryMessageMap {
|
|
71
|
+
role: string;
|
|
72
|
+
content: string;
|
|
73
|
+
content_strip?: string[];
|
|
74
|
+
content_unwrap?: string[];
|
|
75
|
+
timestamp_ms?: string;
|
|
76
|
+
kind?: string;
|
|
77
|
+
}
|
|
78
|
+
export interface SectionDef {
|
|
79
|
+
from_top?: Size;
|
|
80
|
+
from_bottom?: Size;
|
|
81
|
+
until?: string;
|
|
82
|
+
anchor?: string;
|
|
83
|
+
anchor_flags?: string;
|
|
84
|
+
anchor_last?: boolean;
|
|
85
|
+
anchor_context?: {
|
|
86
|
+
prev?: string;
|
|
87
|
+
next?: string;
|
|
88
|
+
prev_flags?: string;
|
|
89
|
+
next_flags?: string;
|
|
90
|
+
};
|
|
91
|
+
lines?: number;
|
|
92
|
+
until_regex?: string;
|
|
93
|
+
until_regex_flags?: string;
|
|
94
|
+
}
|
|
95
|
+
export interface RegexCondition {
|
|
96
|
+
section?: string;
|
|
97
|
+
matches: string;
|
|
98
|
+
flags?: string;
|
|
99
|
+
cursor_row_min?: number;
|
|
100
|
+
cursor_row_max?: number;
|
|
101
|
+
cursor_col_min?: number;
|
|
102
|
+
cursor_col_max?: number;
|
|
103
|
+
}
|
|
104
|
+
export interface ChangedCondition {
|
|
105
|
+
cursor_above: number;
|
|
106
|
+
changed: boolean;
|
|
107
|
+
stable_ms?: number;
|
|
108
|
+
}
|
|
109
|
+
export interface AllCondition {
|
|
110
|
+
all: Condition[];
|
|
111
|
+
}
|
|
112
|
+
export interface AnyCondition {
|
|
113
|
+
any: Condition[];
|
|
114
|
+
}
|
|
115
|
+
export type Condition = RegexCondition | ChangedCondition | AllCondition | AnyCondition;
|
|
116
|
+
export interface ExtractTitle {
|
|
117
|
+
section?: string;
|
|
118
|
+
regex?: string;
|
|
119
|
+
flags?: string;
|
|
120
|
+
first_line?: true;
|
|
121
|
+
}
|
|
122
|
+
export interface ExtractButtons {
|
|
123
|
+
section?: string;
|
|
124
|
+
pattern: string;
|
|
125
|
+
flags?: string;
|
|
126
|
+
key_for_index: string;
|
|
127
|
+
min_count?: number;
|
|
128
|
+
continuation_lines?: boolean;
|
|
129
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Transcript Contract v2
|
|
3
|
+
*
|
|
4
|
+
* First-class message identity, monotonic sequence, strict enums. Designed to
|
|
5
|
+
* replace the v1 contract (contracts.ts ReadChatResult + types.ts ChatMessage)
|
|
6
|
+
* during the A2 big-bang. This module defines the contract; it does not yet
|
|
7
|
+
* change runtime behaviour. v1 keeps working until A2 flips the switch.
|
|
8
|
+
*
|
|
9
|
+
* Invariants v2 enforces (and v1 does not):
|
|
10
|
+
* 1. Every ChatMessageV2 has providerUnitKey, bubbleId, sequence — none optional.
|
|
11
|
+
* 2. sequence is a monotonic integer per (sessionId, source) tuple. Producers
|
|
12
|
+
* never reuse it; consumers MAY assume strict ordering.
|
|
13
|
+
* 3. providerUnitKey is stable across re-reads: the same logical message
|
|
14
|
+
* always yields the same key even if its index shifts or content is
|
|
15
|
+
* edited mid-stream. Producers derive it from provider-owned identifiers
|
|
16
|
+
* (turn id, native message id), not from content hashes or array index.
|
|
17
|
+
* 4. timestamp is producer-asserted wall-clock; orderingTimestamp is monotonic
|
|
18
|
+
* and used for snapshot diffs. 1ms fallback increments are forbidden — if
|
|
19
|
+
* a producer cannot supply a stable monotonic value, the daemon assigns
|
|
20
|
+
* sequence at ingest and orderingTimestamp = ingestedAt.
|
|
21
|
+
* 5. visibility / source / role / kind are strict unions. No `(string & {})`
|
|
22
|
+
* escape hatches.
|
|
23
|
+
* 6. Coverage is exactly one of full/tail/current-turn. Mixing it with
|
|
24
|
+
* partialReason or unavailableReason is a contract violation.
|
|
25
|
+
* 7. workspace / sessionId are explicit on every ReadChatResultV2; the daemon
|
|
26
|
+
* no longer infers them from message bodies.
|
|
27
|
+
*/
|
|
28
|
+
import type { MessagePart, ToolCallInfo } from './contracts.js';
|
|
29
|
+
export declare const CHAT_CONTRACT_VERSION_V1: "1.0";
|
|
30
|
+
export declare const CHAT_CONTRACT_VERSION_V2: "2.0";
|
|
31
|
+
export type ChatContractVersion = typeof CHAT_CONTRACT_VERSION_V1 | typeof CHAT_CONTRACT_VERSION_V2;
|
|
32
|
+
export declare const SUPPORTED_CHAT_CONTRACT_VERSIONS: readonly ChatContractVersion[];
|
|
33
|
+
export declare const CHAT_ROLES_V2: readonly ["user", "assistant", "system"];
|
|
34
|
+
export type ChatRoleV2 = typeof CHAT_ROLES_V2[number];
|
|
35
|
+
export declare const CHAT_MESSAGE_KINDS_V2: readonly ["standard", "thought", "tool", "terminal", "system"];
|
|
36
|
+
export type ChatMessageKindV2 = typeof CHAT_MESSAGE_KINDS_V2[number];
|
|
37
|
+
export declare const CHAT_VISIBILITIES_V2: readonly ["user", "debug", "internal", "hidden"];
|
|
38
|
+
export type ChatVisibilityV2 = typeof CHAT_VISIBILITIES_V2[number];
|
|
39
|
+
export declare const CHAT_AUDIENCES_V2: readonly ["chat", "debug", "trace", "internal"];
|
|
40
|
+
export type ChatAudienceV2 = typeof CHAT_AUDIENCES_V2[number];
|
|
41
|
+
export declare const CHAT_SOURCES_V2: readonly ["assistant_text", "tool_call", "terminal_command", "runtime_activity", "runtime_status", "provider_chrome", "control"];
|
|
42
|
+
export type ChatSourceV2 = typeof CHAT_SOURCES_V2[number];
|
|
43
|
+
export declare const CHAT_BUBBLE_STATES_V2: readonly ["draft", "streaming", "final", "removed"];
|
|
44
|
+
export type ChatBubbleStateV2 = typeof CHAT_BUBBLE_STATES_V2[number];
|
|
45
|
+
/**
|
|
46
|
+
* Stable identity of a single chat message. All fields are required in v2.
|
|
47
|
+
*
|
|
48
|
+
* - providerUnitKey: provider-owned canonical id. Must be derivable from
|
|
49
|
+
* provider primitives (native message id, turn id, bubble id), NOT from
|
|
50
|
+
* array index or content hash. Stable across re-reads of the same logical
|
|
51
|
+
* message even if neighbours change.
|
|
52
|
+
* - bubbleId: dashboard-owned bubble identity. May equal providerUnitKey when
|
|
53
|
+
* the provider already exposes a bubble-grained id; otherwise daemon
|
|
54
|
+
* derives it deterministically from providerUnitKey (e.g. `bubble:${key}`).
|
|
55
|
+
* - sequence: monotonic integer per (sessionId, source). Strictly increasing
|
|
56
|
+
* over the lifetime of the session. Used for snapshot diffs and dedup.
|
|
57
|
+
* - turnKey: stable identifier for the conversation turn this message belongs
|
|
58
|
+
* to. Required so consumers can group messages without re-deriving turns.
|
|
59
|
+
*/
|
|
60
|
+
export interface MessageIdentityV2 {
|
|
61
|
+
providerUnitKey: string;
|
|
62
|
+
bubbleId: string;
|
|
63
|
+
sequence: number;
|
|
64
|
+
turnKey: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Producer-asserted wall-clock time (ms since epoch). Forward jumps are
|
|
68
|
+
* permitted; consumers MUST NOT rely on this for ordering.
|
|
69
|
+
*/
|
|
70
|
+
export type ChatTimestampMs = number;
|
|
71
|
+
/**
|
|
72
|
+
* Monotonic ordering value (ms since epoch, but assigned by the daemon at
|
|
73
|
+
* ingest to guarantee monotonicity even if the producer's wall clock skews).
|
|
74
|
+
* Used by snapshot diffs in place of timestamp.
|
|
75
|
+
*/
|
|
76
|
+
export type ChatOrderingTimestampMs = number;
|
|
77
|
+
export interface ChatMessageV2 extends MessageIdentityV2 {
|
|
78
|
+
role: ChatRoleV2;
|
|
79
|
+
kind: ChatMessageKindV2;
|
|
80
|
+
content: string | MessagePart[];
|
|
81
|
+
bubbleState: ChatBubbleStateV2;
|
|
82
|
+
timestamp: ChatTimestampMs;
|
|
83
|
+
orderingTimestamp: ChatOrderingTimestampMs;
|
|
84
|
+
visibility: ChatVisibilityV2;
|
|
85
|
+
audience: ChatAudienceV2;
|
|
86
|
+
source: ChatSourceV2;
|
|
87
|
+
/** Sender display name (for shared sessions). Empty string when unused. */
|
|
88
|
+
senderName: string;
|
|
89
|
+
/** Tool calls associated with this message. Empty array when none. */
|
|
90
|
+
toolCalls: ToolCallInfo[];
|
|
91
|
+
/** Producer-defined metadata. Daemon never inspects this except for passthrough. */
|
|
92
|
+
meta: Readonly<Record<string, unknown>>;
|
|
93
|
+
}
|
|
94
|
+
export interface WorkspaceContextV2 {
|
|
95
|
+
/** Absolute realpath of the workspace the session is reading from. */
|
|
96
|
+
workspacePath: string;
|
|
97
|
+
/** Workspace the session was intended to operate on (may differ during cross-workspace ops). */
|
|
98
|
+
intendedWorkspacePath: string;
|
|
99
|
+
}
|
|
100
|
+
export interface SessionContextV2 {
|
|
101
|
+
/** Provider-owned session id (e.g. claude.jsonl uuid, codex session_meta.id). */
|
|
102
|
+
providerSessionId: string;
|
|
103
|
+
/** Optional daemon-side history alias used to disambiguate within a workspace. */
|
|
104
|
+
historySessionId?: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* v1 allowed `coverage='full'` to coexist with `partialReason`/`unavailableReason`,
|
|
108
|
+
* which is a contract lie. v2 makes the three states mutually exclusive.
|
|
109
|
+
*/
|
|
110
|
+
export type CoverageHintV2 = {
|
|
111
|
+
kind: 'full';
|
|
112
|
+
} | {
|
|
113
|
+
kind: 'tail';
|
|
114
|
+
tailMessageCount: number;
|
|
115
|
+
} | {
|
|
116
|
+
kind: 'current-turn';
|
|
117
|
+
turnKey: string;
|
|
118
|
+
} | {
|
|
119
|
+
kind: 'partial';
|
|
120
|
+
partialReason: string;
|
|
121
|
+
} | {
|
|
122
|
+
kind: 'unavailable';
|
|
123
|
+
unavailableReason: string;
|
|
124
|
+
};
|
|
125
|
+
export type CanonicalHistoryModeV2 = 'native-source' | 'disabled' | 'materialized-mirror';
|
|
126
|
+
export interface CanonicalHistoryDeclarationV2 {
|
|
127
|
+
contractVersion: ChatContractVersion;
|
|
128
|
+
format: string;
|
|
129
|
+
mode: CanonicalHistoryModeV2;
|
|
130
|
+
watchPath?: string;
|
|
131
|
+
scripts: {
|
|
132
|
+
readSession: string;
|
|
133
|
+
listSessions: string;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
export type ReadChatStatusV2 = 'idle' | 'generating' | 'waiting_approval' | 'error' | 'panel_hidden' | 'streaming';
|
|
137
|
+
export type ReadChatTurnStatusV2 = 'open' | 'waiting_approval' | 'complete' | 'error';
|
|
138
|
+
export interface ReadChatResultV2 {
|
|
139
|
+
contractVersion: typeof CHAT_CONTRACT_VERSION_V2;
|
|
140
|
+
workspace: WorkspaceContextV2;
|
|
141
|
+
session: SessionContextV2;
|
|
142
|
+
coverage: CoverageHintV2;
|
|
143
|
+
status: ReadChatStatusV2;
|
|
144
|
+
messages: ChatMessageV2[];
|
|
145
|
+
currentTurnId: string;
|
|
146
|
+
turnStatus: ReadChatTurnStatusV2;
|
|
147
|
+
transcriptAuthority: 'provider' | 'daemon';
|
|
148
|
+
}
|
|
149
|
+
export declare class ChatContractViolationError extends Error {
|
|
150
|
+
readonly violationPath: string;
|
|
151
|
+
readonly contractVersion: ChatContractVersion;
|
|
152
|
+
constructor(contractVersion: ChatContractVersion, violationPath: string, detail: string);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Validate a v2 read_chat payload. Throws ChatContractViolationError on the
|
|
156
|
+
* first violation. v2 invariants beyond per-field checks:
|
|
157
|
+
* - messages[*].sequence strictly increasing
|
|
158
|
+
* - messages[*].orderingTimestamp monotonic non-decreasing
|
|
159
|
+
* - coverage union is well-formed
|
|
160
|
+
*/
|
|
161
|
+
export declare function assertReadChatResultV2Payload(raw: unknown): ReadChatResultV2;
|
|
162
|
+
export declare function isSupportedChatContractVersion(value: unknown): value is ChatContractVersion;
|
|
163
|
+
/**
|
|
164
|
+
* Read a provider's declared chat contract version from its parsed
|
|
165
|
+
* provider.json `canonicalHistory.contractVersion` field.
|
|
166
|
+
*
|
|
167
|
+
* - Absent or unrecognized → treated as v1 (legacy behaviour preserved during
|
|
168
|
+
* the A1 transition). A2 will tighten this to reject unsupported versions
|
|
169
|
+
* at provider load time.
|
|
170
|
+
* - Present and supported → returned as-is.
|
|
171
|
+
*
|
|
172
|
+
* The returned version drives which validator (assertReadChatResultV2Payload
|
|
173
|
+
* vs the legacy validateReadChatResultPayload) processes the provider's
|
|
174
|
+
* read_chat output.
|
|
175
|
+
*/
|
|
176
|
+
export declare function readDeclaredChatContractVersion(canonicalHistory: unknown): ChatContractVersion;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface InteractivePrompt {
|
|
2
|
+
promptId: string;
|
|
3
|
+
origin: 'cli' | 'mcp' | 'agent';
|
|
4
|
+
providerType: string;
|
|
5
|
+
createdAt: number;
|
|
6
|
+
questions: InteractiveQuestion[];
|
|
7
|
+
}
|
|
8
|
+
export interface InteractiveQuestion {
|
|
9
|
+
questionId: string;
|
|
10
|
+
question: string;
|
|
11
|
+
header?: string;
|
|
12
|
+
multiSelect: boolean;
|
|
13
|
+
options: InteractiveOption[];
|
|
14
|
+
allowFreeform?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface InteractiveOption {
|
|
17
|
+
label: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
preview?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface InteractivePromptResponse {
|
|
22
|
+
promptId: string;
|
|
23
|
+
answers: Record<string, InteractiveAnswer>;
|
|
24
|
+
}
|
|
25
|
+
export interface InteractiveAnswer {
|
|
26
|
+
selectedLabels: string[];
|
|
27
|
+
freeformText?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function normalizeInteractivePrompt(raw: unknown): InteractivePrompt | null;
|
|
30
|
+
export declare function normalizeInteractivePromptResponse(raw: unknown): InteractivePromptResponse;
|
|
31
|
+
export declare function buildClaudeInteractiveToolResult(response: InteractivePromptResponse): string;
|
|
32
|
+
export interface ClaudeInteractiveTuiPage {
|
|
33
|
+
screenText: string;
|
|
34
|
+
header?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function detectClaudeAskUserQuestionPromptFromTuiPages(pages: ClaudeInteractiveTuiPage[], options: {
|
|
37
|
+
promptId: string;
|
|
38
|
+
providerType?: string;
|
|
39
|
+
createdAt?: number;
|
|
40
|
+
}): InteractivePrompt | null;
|
|
41
|
+
export declare function buildClaudeInteractiveTuiAnswerSteps(prompt: InteractivePrompt, response: InteractivePromptResponse): string[];
|
|
42
|
+
export declare function interactivePromptFromClaudeAskUserQuestion(input: unknown, options: {
|
|
43
|
+
promptId: string;
|
|
44
|
+
providerType: string;
|
|
45
|
+
createdAt?: number;
|
|
46
|
+
origin?: InteractivePrompt['origin'];
|
|
47
|
+
}): InteractivePrompt | null;
|
|
48
|
+
export declare function detectClaudeAskUserQuestionPromptFromJson(value: unknown, providerType?: string): InteractivePrompt | null;
|
|
@@ -19,10 +19,37 @@ export interface RepoMesh {
|
|
|
19
19
|
defaultBranch?: string;
|
|
20
20
|
policy: RepoMeshPolicy;
|
|
21
21
|
coordinator: RepoMeshCoordinatorConfig;
|
|
22
|
+
meshHost?: RepoMeshHostMetadata;
|
|
22
23
|
projectContext: ProjectContextSnapshot;
|
|
23
24
|
nodes: RepoMeshNode[];
|
|
24
25
|
status: 'active' | 'archived' | 'deleted';
|
|
25
26
|
}
|
|
27
|
+
export type RepoMeshDaemonRole = 'host' | 'member';
|
|
28
|
+
export interface RepoMeshHostPairingMetadata {
|
|
29
|
+
status: 'not_configured' | 'pairing' | 'paired' | 'rejected' | 'revoked';
|
|
30
|
+
tokenId?: string;
|
|
31
|
+
joinedAt?: string;
|
|
32
|
+
lastPairedAt?: string;
|
|
33
|
+
lastRejectedAt?: string;
|
|
34
|
+
expiresAt?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface RepoMeshHostMetadata {
|
|
37
|
+
/** Local daemon role for this mesh. Missing metadata defaults to host for standalone compatibility. */
|
|
38
|
+
role: RepoMeshDaemonRole;
|
|
39
|
+
/** Daemon that owns mesh truth/status/git/queue/session/ledger/coordinator ownership. */
|
|
40
|
+
hostDaemonId?: string;
|
|
41
|
+
/** Mesh node that represents the host daemon, when known. */
|
|
42
|
+
hostNodeId?: string;
|
|
43
|
+
/** Future standalone manual pairing endpoint entered by member daemons. */
|
|
44
|
+
hostAddress?: string;
|
|
45
|
+
/** Redacted pairing state only; raw join tokens must not be persisted here. */
|
|
46
|
+
pairing?: RepoMeshHostPairingMetadata;
|
|
47
|
+
}
|
|
48
|
+
export interface RepoMeshHostStatus extends RepoMeshHostMetadata {
|
|
49
|
+
canOwnCoordinator: boolean;
|
|
50
|
+
canOwnQueue: boolean;
|
|
51
|
+
defaulted: boolean;
|
|
52
|
+
}
|
|
26
53
|
export interface RepoMeshNode {
|
|
27
54
|
id: string;
|
|
28
55
|
daemonId: string;
|
|
@@ -37,15 +64,31 @@ export interface RepoMeshNode {
|
|
|
37
64
|
effectiveCapabilities: RepoMeshNodeCapabilities;
|
|
38
65
|
policy: RepoMeshNodePolicy;
|
|
39
66
|
health: RepoMeshNodeHealth;
|
|
67
|
+
role?: RepoMeshDaemonRole;
|
|
40
68
|
status: 'enabled' | 'disabled' | 'removed';
|
|
41
69
|
}
|
|
42
70
|
export type RepoMeshNodeHealth = 'online' | 'offline' | 'degraded' | 'dirty' | 'wrong_branch' | 'unknown';
|
|
43
71
|
export type RepoMeshSessionCleanupMode = 'preserve' | 'stop' | 'delete_stopped' | 'stop_and_delete';
|
|
44
72
|
export type RepoMeshSpawnedSessionVisibility = 'visible' | 'hidden';
|
|
73
|
+
export interface RepoMeshAutoFastForwardPolicy {
|
|
74
|
+
/** Defaults to true. Set false to disable daemon-initiated idle fast-forwards. */
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
/** Maximum behind count eligible for automatic fast-forward. Missing means no limit. */
|
|
77
|
+
maxBehind?: number;
|
|
78
|
+
/** Defaults to true. Require submodule status to be clean before automatic fast-forward. */
|
|
79
|
+
requireCleanSubmodules?: boolean;
|
|
80
|
+
}
|
|
45
81
|
export interface RepoMeshPolicy {
|
|
46
82
|
requirePreTaskCheckpoint: boolean;
|
|
47
83
|
requirePostTaskCheckpoint: boolean;
|
|
48
84
|
requireApprovalForPush: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Narrow Refinery opt-in: when validation and patch-equivalence have passed,
|
|
87
|
+
* allow Refinery to publish submodule gitlink commits to each submodule's
|
|
88
|
+
* configured remote main branch with a non-force push, then verify reachability.
|
|
89
|
+
* Defaults to false; root branch pushes/merges are not affected.
|
|
90
|
+
*/
|
|
91
|
+
allowAutoPublishSubmoduleMainCommits?: boolean;
|
|
49
92
|
requireApprovalForDestructiveGit: boolean;
|
|
50
93
|
dirtyWorkspaceBehavior: 'block' | 'warn' | 'checkpoint_then_continue';
|
|
51
94
|
maxParallelTasks: number;
|
|
@@ -62,6 +105,11 @@ export interface RepoMeshPolicy {
|
|
|
62
105
|
* runtimes are never stopped/deleted unless the mesh owner opts in.
|
|
63
106
|
*/
|
|
64
107
|
sessionCleanupOnNodeRemove?: RepoMeshSessionCleanupMode;
|
|
108
|
+
/**
|
|
109
|
+
* Daemon-initiated fast-forward for idle clean nodes that are only behind
|
|
110
|
+
* their tracked upstream. Defaults to enabled.
|
|
111
|
+
*/
|
|
112
|
+
autoFastForward?: RepoMeshAutoFastForwardPolicy;
|
|
65
113
|
/**
|
|
66
114
|
* Maximum number of automatic retry recommendations for a failed task on the
|
|
67
115
|
* same node before the daemon advises the coordinator to escalate or reassign.
|
|
@@ -167,7 +215,28 @@ export interface RepoMeshCoordinatorConfig {
|
|
|
167
215
|
providerType?: string;
|
|
168
216
|
/** Preferred node to run coordinator on (null = auto) */
|
|
169
217
|
preferredNodeId?: string;
|
|
170
|
-
/**
|
|
218
|
+
/**
|
|
219
|
+
* Full mesh-level override for the coordinator system prompt. When set,
|
|
220
|
+
* replaces the daemon's rendered default and any user-file override
|
|
221
|
+
* (~/.adhdev/coordinator-prompts/<cli>.md). The per-launch
|
|
222
|
+
* extraSystemPrompt still composes on top — it always lands last as
|
|
223
|
+
* Additional Context. Supports the same {{placeholders}} the daemon's
|
|
224
|
+
* default template uses ({{meshName}}, {{repo}}, {{nodes}}, …).
|
|
225
|
+
*/
|
|
226
|
+
systemPromptOverride?: string;
|
|
227
|
+
/**
|
|
228
|
+
* Mesh-level append. Composes after whichever base prompt won
|
|
229
|
+
* (override → user-file override → daemon default). Use this when you
|
|
230
|
+
* want extra rules for THIS mesh but otherwise the standard prompt is
|
|
231
|
+
* fine. Stacks with the user-file append (`<cli>.append.md`) — both
|
|
232
|
+
* apply if both are set.
|
|
233
|
+
*/
|
|
234
|
+
systemPromptAppend?: string;
|
|
235
|
+
/**
|
|
236
|
+
* @deprecated Use systemPromptAppend. Kept as a fallback alias so
|
|
237
|
+
* existing meshes.json files keep working without a migration step;
|
|
238
|
+
* the daemon prefers systemPromptAppend when both are present.
|
|
239
|
+
*/
|
|
171
240
|
systemPromptSuffix?: string;
|
|
172
241
|
}
|
|
173
242
|
/**
|
|
@@ -185,6 +254,7 @@ export interface LocalMeshEntry {
|
|
|
185
254
|
defaultBranch?: string;
|
|
186
255
|
policy: RepoMeshPolicy;
|
|
187
256
|
coordinator: RepoMeshCoordinatorConfig;
|
|
257
|
+
meshHost?: RepoMeshHostMetadata;
|
|
188
258
|
nodes: LocalMeshNodeEntry[];
|
|
189
259
|
createdAt: string;
|
|
190
260
|
updatedAt: string;
|
|
@@ -196,16 +266,42 @@ export interface LocalMeshNodeEntry {
|
|
|
196
266
|
daemonId?: string;
|
|
197
267
|
/** Machine registry ID that owns this workspace, when known. */
|
|
198
268
|
machineId?: string;
|
|
269
|
+
/** Operator-defined capability tags used by mesh queue matching. */
|
|
270
|
+
capabilities?: string[];
|
|
199
271
|
userOverrides: Partial<RepoMeshNodeCapabilities>;
|
|
200
272
|
policy: RepoMeshNodePolicy;
|
|
273
|
+
/**
|
|
274
|
+
* Per-node instruction surfaced in the coordinator prompt so the LLM
|
|
275
|
+
* knows what each node is for (e.g. "this is the staging mirror — run
|
|
276
|
+
* only smoke tests here", or "use opus on this node, sonnet elsewhere").
|
|
277
|
+
* Empty/missing: omitted silently from the rendered prompt, no rule
|
|
278
|
+
* line about it gets added. The coordinator forwards/honors it when
|
|
279
|
+
* delegating; we don't enforce it at the daemon level.
|
|
280
|
+
*/
|
|
281
|
+
systemPrompt?: string;
|
|
201
282
|
/** For single-machine mesh: same daemon, different worktree */
|
|
202
283
|
isLocalWorktree?: boolean;
|
|
203
284
|
/** Branch this worktree tracks (set when created via clone_mesh_node) */
|
|
204
285
|
worktreeBranch?: string;
|
|
205
286
|
/** Node ID this worktree was cloned from */
|
|
206
287
|
clonedFromNodeId?: string;
|
|
288
|
+
/** Repo-local preparation result for ADHDev-created worktree nodes. */
|
|
289
|
+
worktreeBootstrap?: {
|
|
290
|
+
status: 'ready' | 'running' | 'failed' | 'not_configured' | 'disabled' | 'stale';
|
|
291
|
+
required?: boolean;
|
|
292
|
+
configSource?: string;
|
|
293
|
+
configSourceType?: string;
|
|
294
|
+
startedAt?: string;
|
|
295
|
+
completedAt?: string;
|
|
296
|
+
lastCommand?: string;
|
|
297
|
+
exitCode?: number | null;
|
|
298
|
+
error?: string;
|
|
299
|
+
commandsRun?: Array<Record<string, unknown>>;
|
|
300
|
+
staleInputs?: string[];
|
|
301
|
+
};
|
|
207
302
|
/** Optional associated/external repos configured as node metadata. */
|
|
208
303
|
relatedRepos?: RepoMeshRelatedRepo[];
|
|
304
|
+
role?: RepoMeshDaemonRole;
|
|
209
305
|
}
|
|
210
306
|
export interface RepoMeshStatus {
|
|
211
307
|
meshId: string;
|
|
@@ -213,6 +309,7 @@ export interface RepoMeshStatus {
|
|
|
213
309
|
repoIdentity: string;
|
|
214
310
|
defaultBranch?: string;
|
|
215
311
|
refreshedAt: string;
|
|
312
|
+
meshHost?: RepoMeshHostStatus;
|
|
216
313
|
nodes: RepoMeshNodeStatus[];
|
|
217
314
|
queue?: RepoMeshQueueStatus;
|
|
218
315
|
ledger?: RepoMeshLedgerStatus;
|
|
@@ -221,11 +318,17 @@ export interface RepoMeshSessionStatus {
|
|
|
221
318
|
sessionId: string;
|
|
222
319
|
providerType?: string;
|
|
223
320
|
state?: string;
|
|
321
|
+
chatStatus?: string;
|
|
224
322
|
lifecycle?: 'starting' | 'running' | 'stopping' | 'stopped' | 'failed' | 'interrupted';
|
|
225
323
|
surfaceKind?: 'live_runtime' | 'recovery_snapshot' | 'inactive_record';
|
|
226
324
|
recoveryState?: string | null;
|
|
227
325
|
workspace?: string | null;
|
|
228
326
|
title?: string | null;
|
|
327
|
+
role?: string | null;
|
|
328
|
+
isSelfCoordinator?: boolean;
|
|
329
|
+
statusNote?: string | null;
|
|
330
|
+
createdAt?: string | null;
|
|
331
|
+
startedAt?: string | null;
|
|
229
332
|
lastActivityAt?: string | null;
|
|
230
333
|
isCached?: boolean;
|
|
231
334
|
}
|
|
@@ -249,16 +352,33 @@ export interface RepoMeshNodeStatus {
|
|
|
249
352
|
repoRoot?: string;
|
|
250
353
|
daemonId?: string;
|
|
251
354
|
machineId?: string;
|
|
355
|
+
role?: RepoMeshDaemonRole;
|
|
252
356
|
machineStatus?: string;
|
|
253
357
|
isLocalWorktree?: boolean;
|
|
254
358
|
worktreeBranch?: string;
|
|
359
|
+
/** Mirrored from LocalMeshNodeEntry.systemPrompt for coordinator-prompt rendering. */
|
|
360
|
+
systemPrompt?: string;
|
|
255
361
|
health: RepoMeshNodeHealth;
|
|
256
362
|
git?: GitRepoStatus;
|
|
363
|
+
/**
|
|
364
|
+
* True when the selected coordinator has evidence that a peer git probe is still
|
|
365
|
+
* in flight or just timed out during initial mesh handshake, so callers should
|
|
366
|
+
* treat missing git data as pending instead of authoritative absence.
|
|
367
|
+
*/
|
|
368
|
+
gitProbePending?: boolean;
|
|
257
369
|
providers: string[];
|
|
258
370
|
activeSessions: string[];
|
|
259
371
|
activeSessionDetails?: RepoMeshSessionStatus[];
|
|
260
372
|
providerPriority?: string[];
|
|
261
373
|
launchReady?: boolean;
|
|
374
|
+
/** True when the node is clean, ahead=0, behind>0, and safe for fast-forward consideration. */
|
|
375
|
+
autoFastForwardEligible?: boolean;
|
|
376
|
+
/** Coordinator-facing suggestion for obvious clean catch-up work. */
|
|
377
|
+
suggestedAction?: 'auto_fast_forward';
|
|
378
|
+
worktreeBootstrap?: LocalMeshNodeEntry['worktreeBootstrap'];
|
|
379
|
+
launchBlockedReason?: string;
|
|
380
|
+
launchBlockedMessage?: string;
|
|
381
|
+
recoveryHint?: string;
|
|
262
382
|
lastSeenAt?: string;
|
|
263
383
|
updatedAt?: string;
|
|
264
384
|
connection?: RepoMeshPeerConnectionStatus;
|
|
@@ -346,3 +466,8 @@ export interface RepoMeshLedgerStatus {
|
|
|
346
466
|
entries: RepoMeshLedgerEntryStatus[];
|
|
347
467
|
summary: RepoMeshLedgerSummaryStatus;
|
|
348
468
|
}
|
|
469
|
+
export interface MeshAsyncJobLifecycle {
|
|
470
|
+
startedAt?: string;
|
|
471
|
+
completedAt?: string;
|
|
472
|
+
error?: string;
|
|
473
|
+
}
|
|
@@ -7,6 +7,12 @@ export interface SessionRuntimeTarget {
|
|
|
7
7
|
cdpManagerKey?: string;
|
|
8
8
|
adapterKey?: string;
|
|
9
9
|
instanceKey?: string;
|
|
10
|
+
/** Working directory for CLI/ACP sessions. Used by read_chat to resolve
|
|
11
|
+
* native history when there is no live adapter (e.g. subscription path). */
|
|
12
|
+
workspace?: string;
|
|
13
|
+
/** Wall clock at register time. native-history readers use it as a
|
|
14
|
+
* cutoff so a fresh session can't show records from a prior one. */
|
|
15
|
+
spawnedAtMs?: number;
|
|
10
16
|
}
|
|
11
17
|
export declare class SessionRegistry {
|
|
12
18
|
private readonly bySessionId;
|
|
@@ -18,12 +18,10 @@ export interface RuntimeAttachedClient {
|
|
|
18
18
|
readOnly: boolean;
|
|
19
19
|
}
|
|
20
20
|
/** Session status union (used by SessionEntry.status, legacy recent-launch metadata, etc.) */
|
|
21
|
-
export type SessionStatus = 'idle' | 'generating' | 'waiting_approval' | 'error' | 'stopped' | 'starting' | 'panel_hidden' | 'not_monitored' | 'disconnected';
|
|
21
|
+
export type SessionStatus = 'idle' | 'generating' | 'waiting_approval' | 'waiting_choice' | 'error' | 'stopped' | 'starting' | 'panel_hidden' | 'not_monitored' | 'disconnected';
|
|
22
22
|
/** Inbox bucket categories for recent sessions */
|
|
23
23
|
export type RecentSessionBucket = 'needs_attention' | 'working' | 'task_complete' | 'idle';
|
|
24
24
|
/** Terminal backend status */
|
|
25
25
|
export interface TerminalBackendStatus {
|
|
26
|
-
backend: '
|
|
27
|
-
preference: 'auto' | 'xterm' | 'ghostty-vt';
|
|
28
|
-
ghosttyAvailable: boolean;
|
|
26
|
+
backend: 'ghostty-vt';
|
|
29
27
|
}
|