@adhdev/daemon-core 0.9.82-rc.143 → 0.9.82-rc.145
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/process-hardening.d.ts +50 -0
- package/dist/cli-adapters/cli-script-runner.d.ts +73 -1
- package/dist/cli-adapters/provider-cli-adapter.d.ts +17 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +6 -0
- package/dist/commands/handler.d.ts +66 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2943 -435
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2957 -456
- package/dist/index.mjs.map +1 -1
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/providers/contracts.d.ts +31 -5
- 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/index.d.ts +11 -0
- package/dist/providers/provider-loader.d.ts +19 -1
- 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 +64 -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 +169 -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/package.json +4 -2
- package/src/boot/daemon-lifecycle.ts +14 -10
- package/src/boot/process-hardening.ts +89 -0
- package/src/cli-adapters/cli-script-runner.ts +289 -13
- package/src/cli-adapters/cli-state-engine.ts +8 -5
- package/src/cli-adapters/provider-cli-adapter.ts +36 -2
- package/src/cli-adapters/provider-cli-shared.ts +6 -0
- package/src/commands/chat-commands.ts +35 -14
- package/src/commands/cli-manager.ts +39 -0
- package/src/commands/handler.ts +539 -1
- package/src/commands/router.ts +2 -1
- package/src/index.ts +27 -0
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/providers/cli-provider-instance.ts +18 -3
- package/src/providers/contracts.ts +33 -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 +419 -0
- package/src/providers/native-history/index.ts +23 -0
- package/src/providers/provider-loader.ts +263 -17
- package/src/providers/provider-schema.ts +21 -15
- 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 +245 -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 +444 -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 +119 -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 +210 -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
|
@@ -904,7 +904,7 @@ function supportsCliNativeTranscript(providerType: string, provider?: ProviderMo
|
|
|
904
904
|
// provider.json. We trust that declaration regardless of the legacy
|
|
905
905
|
// allow-list. A2 will additionally require canonicalHistory.contractVersion
|
|
906
906
|
// to be a supported value (transcript-v2.ts).
|
|
907
|
-
if (provider?.category === 'cli' && isNativeSourceCanonicalHistory(provider?.
|
|
907
|
+
if (provider?.category === 'cli' && isNativeSourceCanonicalHistory(provider?.nativeHistory)) {
|
|
908
908
|
return true;
|
|
909
909
|
}
|
|
910
910
|
// Last-resort fallback for early call sites where the provider module is
|
|
@@ -1429,7 +1429,7 @@ function summarizeProviderForDebug(provider: ProviderModule | undefined): Record
|
|
|
1429
1429
|
name: provider.name,
|
|
1430
1430
|
category: provider.category,
|
|
1431
1431
|
version: (provider as any).version,
|
|
1432
|
-
canonicalHistory: provider.
|
|
1432
|
+
canonicalHistory: provider.nativeHistory,
|
|
1433
1433
|
historyBehavior: provider.historyBehavior,
|
|
1434
1434
|
webviewMatchText: provider.webviewMatchText,
|
|
1435
1435
|
scriptNames: scripts,
|
|
@@ -1677,6 +1677,9 @@ export async function handleGetChatDebugBundle(h: CommandHelpers, args: any): Pr
|
|
|
1677
1677
|
ready: typeof adapter.isReady === 'function' ? adapter.isReady() : undefined,
|
|
1678
1678
|
processing: typeof adapter.isProcessing === 'function' ? adapter.isProcessing() : undefined,
|
|
1679
1679
|
debugSnapshot: adapterDebugSnapshot,
|
|
1680
|
+
scriptInvocationTrace: typeof (adapter as any).getScriptInvocationTrace === 'function'
|
|
1681
|
+
? (adapter as any).getScriptInvocationTrace()
|
|
1682
|
+
: undefined,
|
|
1680
1683
|
} : null,
|
|
1681
1684
|
readChat,
|
|
1682
1685
|
frontend: args?.frontendSnapshot && typeof args.frontendSnapshot === 'object' ? args.frontendSnapshot : null,
|
|
@@ -1806,9 +1809,9 @@ export async function handleChatHistory(h: CommandHelpers, args: any): Promise<C
|
|
|
1806
1809
|
|| (typeof args?.historySessionId === 'string' && args.historySessionId.trim())
|
|
1807
1810
|
|| (typeof args?.providerSessionId === 'string' && args.providerSessionId.trim())
|
|
1808
1811
|
);
|
|
1809
|
-
const result = supportsCliNativeTranscript(agentStr, provider) && isNativeSourceCanonicalHistory(provider?.
|
|
1812
|
+
const result = supportsCliNativeTranscript(agentStr, provider) && isNativeSourceCanonicalHistory(provider?.nativeHistory)
|
|
1810
1813
|
? readCliProviderNativeHistory(agentStr, {
|
|
1811
|
-
canonicalHistory: provider?.
|
|
1814
|
+
canonicalHistory: provider?.nativeHistory,
|
|
1812
1815
|
historySessionId,
|
|
1813
1816
|
workspace,
|
|
1814
1817
|
offset: offset || 0,
|
|
@@ -1818,7 +1821,7 @@ export async function handleChatHistory(h: CommandHelpers, args: any): Promise<C
|
|
|
1818
1821
|
scripts: provider?.scripts as any,
|
|
1819
1822
|
})
|
|
1820
1823
|
: readProviderChatHistory(agentStr, {
|
|
1821
|
-
canonicalHistory: provider?.
|
|
1824
|
+
canonicalHistory: provider?.nativeHistory,
|
|
1822
1825
|
historySessionId,
|
|
1823
1826
|
workspace,
|
|
1824
1827
|
offset: offset || 0,
|
|
@@ -1827,7 +1830,7 @@ export async function handleChatHistory(h: CommandHelpers, args: any): Promise<C
|
|
|
1827
1830
|
historyBehavior: provider?.historyBehavior,
|
|
1828
1831
|
scripts: provider?.scripts as any,
|
|
1829
1832
|
});
|
|
1830
|
-
if (supportsCliNativeTranscript(agentStr, provider) && isNativeSourceCanonicalHistory(provider?.
|
|
1833
|
+
if (supportsCliNativeTranscript(agentStr, provider) && isNativeSourceCanonicalHistory(provider?.nativeHistory)) {
|
|
1831
1834
|
const lookup = (result as any).lookup === 'workspace' ? 'workspace' : 'session';
|
|
1832
1835
|
const messages = Array.isArray((result as any).messages)
|
|
1833
1836
|
? normalizeNativeHistoryMessages(agentStr, (result as any).messages as ChatMessage[], (result as any)?.providerSessionId)
|
|
@@ -1858,7 +1861,25 @@ export async function handleChatHistory(h: CommandHelpers, args: any): Promise<C
|
|
|
1858
1861
|
}
|
|
1859
1862
|
|
|
1860
1863
|
export async function handleReadChat(h: CommandHelpers, args: any): Promise<CommandResult> {
|
|
1861
|
-
|
|
1864
|
+
// Resolve provider in order: explicit agentType/providerType > registered session.
|
|
1865
|
+
// Without this fallback, callers that only have a sessionId (e.g. a chat tail
|
|
1866
|
+
// controller that just got handed a session ID over WS) get an empty result
|
|
1867
|
+
// because getProvider(undefined) returns undefined and the rest of the pipeline
|
|
1868
|
+
// bails. This makes the UI look like the session "disappeared".
|
|
1869
|
+
let providerHint: string | undefined = args?.agentType || args?.providerType;
|
|
1870
|
+
if (!providerHint) {
|
|
1871
|
+
const targetSessionId = typeof args?.targetSessionId === 'string' ? args.targetSessionId.trim() : '';
|
|
1872
|
+
if (targetSessionId) {
|
|
1873
|
+
const session = (h.ctx as any)?.sessionRegistry?.get?.(targetSessionId);
|
|
1874
|
+
if (session && typeof session.providerType === 'string') {
|
|
1875
|
+
providerHint = session.providerType;
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1878
|
+
if (!providerHint && h.currentSession?.providerType) {
|
|
1879
|
+
providerHint = h.currentSession.providerType;
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
const provider = h.getProvider(providerHint);
|
|
1862
1883
|
const transport = getTargetTransport(h, provider);
|
|
1863
1884
|
const historySessionId = getHistorySessionId(h, args);
|
|
1864
1885
|
|
|
@@ -1948,7 +1969,7 @@ export async function handleReadChat(h: CommandHelpers, args: any): Promise<Comm
|
|
|
1948
1969
|
// ───────────────────────────────────────────────────────────
|
|
1949
1970
|
|
|
1950
1971
|
const supportsNative = supportsCliNativeTranscript(providerType, provider)
|
|
1951
|
-
&& isNativeSourceCanonicalHistory(provider?.
|
|
1972
|
+
&& isNativeSourceCanonicalHistory(provider?.nativeHistory);
|
|
1952
1973
|
const agentStr = provider?.type || args?.agentType || getCurrentProviderType(h, adapter.cliType);
|
|
1953
1974
|
const workspace = sessionWorkspace;
|
|
1954
1975
|
const nativeHistoryLimit = Math.max(
|
|
@@ -1974,7 +1995,7 @@ export async function handleReadChat(h: CommandHelpers, args: any): Promise<Comm
|
|
|
1974
1995
|
if (supportsNative) {
|
|
1975
1996
|
try {
|
|
1976
1997
|
nativeHistory = readCliProviderNativeHistory(agentStr, {
|
|
1977
|
-
canonicalHistory: provider?.
|
|
1998
|
+
canonicalHistory: provider?.nativeHistory,
|
|
1978
1999
|
historySessionId: nativeHistorySessionId,
|
|
1979
2000
|
workspace,
|
|
1980
2001
|
offset: 0,
|
|
@@ -2068,7 +2089,7 @@ export async function handleReadChat(h: CommandHelpers, args: any): Promise<Comm
|
|
|
2068
2089
|
&& (!historyProviderSessionId || historyProviderSessionId === nativeHistorySessionId || historyProviderSessionId === historySessionId);
|
|
2069
2090
|
const liveWorkspaceNativeHistory = mayProbeLiveCodexWorkspaceNative
|
|
2070
2091
|
? readLiveCodexWorkspaceNativeHistory(agentStr, {
|
|
2071
|
-
canonicalHistory: provider?.
|
|
2092
|
+
canonicalHistory: provider?.nativeHistory,
|
|
2072
2093
|
workspace,
|
|
2073
2094
|
offset: 0,
|
|
2074
2095
|
limit: nativeHistoryLimit,
|
|
@@ -2179,7 +2200,7 @@ export async function handleReadChat(h: CommandHelpers, args: any): Promise<Comm
|
|
|
2179
2200
|
selectedMessageSource: (messageSource as any).selected,
|
|
2180
2201
|
messageSource,
|
|
2181
2202
|
shouldPreferAdapterMessages: supportsCliNativeTranscript(providerType, provider)
|
|
2182
|
-
&& isNativeSourceCanonicalHistory(provider?.
|
|
2203
|
+
&& isNativeSourceCanonicalHistory(provider?.nativeHistory)
|
|
2183
2204
|
&& (messageSource as any).selected !== 'native-history'
|
|
2184
2205
|
&& typeof (messageSource as any).fallbackReason === 'string'
|
|
2185
2206
|
&& (messageSource as any).fallbackReason.startsWith('native_history_')
|
|
@@ -2208,10 +2229,10 @@ export async function handleReadChat(h: CommandHelpers, args: any): Promise<Comm
|
|
|
2208
2229
|
: undefined;
|
|
2209
2230
|
const intendedWorkspace = typeof args?.workspace === 'string' ? args.workspace : undefined;
|
|
2210
2231
|
const supportsNative = supportsCliNativeTranscript(agentStr, provider)
|
|
2211
|
-
&& isNativeSourceCanonicalHistory(provider?.
|
|
2232
|
+
&& isNativeSourceCanonicalHistory(provider?.nativeHistory);
|
|
2212
2233
|
const history = supportsNative
|
|
2213
2234
|
? readCliProviderNativeHistory(agentStr, {
|
|
2214
|
-
canonicalHistory: provider?.
|
|
2235
|
+
canonicalHistory: provider?.nativeHistory,
|
|
2215
2236
|
historySessionId,
|
|
2216
2237
|
workspace,
|
|
2217
2238
|
offset: 0,
|
|
@@ -2221,7 +2242,7 @@ export async function handleReadChat(h: CommandHelpers, args: any): Promise<Comm
|
|
|
2221
2242
|
scripts: provider?.scripts as any,
|
|
2222
2243
|
})
|
|
2223
2244
|
: readProviderChatHistory(agentStr, {
|
|
2224
|
-
canonicalHistory: provider?.
|
|
2245
|
+
canonicalHistory: provider?.nativeHistory,
|
|
2225
2246
|
historySessionId,
|
|
2226
2247
|
workspace,
|
|
2227
2248
|
offset: 0,
|
|
@@ -1154,6 +1154,45 @@ export class DaemonCliManager {
|
|
|
1154
1154
|
this.deps.onStatusChange();
|
|
1155
1155
|
return { success: true, id: found.key, mode };
|
|
1156
1156
|
}
|
|
1157
|
+
case 'record_provider_pty': {
|
|
1158
|
+
const cliType = args?.type || args?.cliType;
|
|
1159
|
+
if (!cliType) {
|
|
1160
|
+
return { success: false, error: '`type` (provider type) is required', code: 'MISSING_TYPE' };
|
|
1161
|
+
}
|
|
1162
|
+
const targetSessionId = typeof args?.targetSessionId === 'string' ? args.targetSessionId : '';
|
|
1163
|
+
const dir = args?.dir || '';
|
|
1164
|
+
const found = (targetSessionId ? this.findAdapterBySessionId(targetSessionId) : null)
|
|
1165
|
+
|| this.findAdapter(cliType, { instanceKey: targetSessionId, dir });
|
|
1166
|
+
if (!found) {
|
|
1167
|
+
return {
|
|
1168
|
+
success: false,
|
|
1169
|
+
error: `No running ${cliType} session. Launch one first (adhdev launch ${cliType}) or pass --target-session-id.`,
|
|
1170
|
+
code: 'NO_RUNNING_SESSION',
|
|
1171
|
+
};
|
|
1172
|
+
}
|
|
1173
|
+
const instance = this.deps.getInstanceManager()?.getInstance(found.key);
|
|
1174
|
+
if (!(instance instanceof CliProviderInstance)) {
|
|
1175
|
+
return { success: false, error: 'CLI instance not available', code: 'CLI_INSTANCE_NOT_FOUND' };
|
|
1176
|
+
}
|
|
1177
|
+
const adapter = instance.getAdapter();
|
|
1178
|
+
if (!adapter || typeof (adapter as any).getAccumulatedRawBuffer !== 'function') {
|
|
1179
|
+
return { success: false, error: 'Adapter does not expose PTY buffer', code: 'ADAPTER_NOT_RECORDABLE' };
|
|
1180
|
+
}
|
|
1181
|
+
const buffer = (adapter as any).getAccumulatedRawBuffer() as { text: string; droppedChars: number };
|
|
1182
|
+
const maxBytes = Number(args?.maxBytes) > 0 ? Number(args.maxBytes) : 262144;
|
|
1183
|
+
const truncated = buffer.text.length > maxBytes;
|
|
1184
|
+
const ptyBytes = truncated ? buffer.text.slice(-maxBytes) : buffer.text;
|
|
1185
|
+
return {
|
|
1186
|
+
success: true,
|
|
1187
|
+
cliType,
|
|
1188
|
+
sessionId: found.key,
|
|
1189
|
+
ptyBytes,
|
|
1190
|
+
bytes: ptyBytes.length,
|
|
1191
|
+
truncated,
|
|
1192
|
+
droppedChars: buffer.droppedChars,
|
|
1193
|
+
capturedAt: Date.now(),
|
|
1194
|
+
};
|
|
1195
|
+
}
|
|
1157
1196
|
case 'restart_session': {
|
|
1158
1197
|
const cliType = args?.cliType || args?.agentType || args?.ideType;
|
|
1159
1198
|
const cfg = loadConfig();
|