@ai-workbench/remote-agent 0.8.21 → 0.8.23

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 (95) hide show
  1. package/README.md +27 -156
  2. package/dist/acp.d.ts +20 -15
  3. package/dist/acp.js +197 -224
  4. package/dist/agents.d.ts +0 -1
  5. package/dist/agents.js +2 -2
  6. package/dist/broker-runtime.d.ts +3 -5
  7. package/dist/broker-runtime.js +45 -342
  8. package/dist/broker.d.ts +6 -31
  9. package/dist/broker.js +42 -113
  10. package/dist/catalog-ssh.d.ts +2 -31
  11. package/dist/catalog-ssh.js +9 -39
  12. package/dist/claude-local.d.ts +1 -1
  13. package/dist/claude-local.js +40 -105
  14. package/dist/client.js +34 -127
  15. package/dist/close-diagnostics.d.ts +6 -20
  16. package/dist/close-diagnostics.js +13 -57
  17. package/dist/connect-contract.d.ts +4 -8
  18. package/dist/conversation-details.d.ts +0 -29
  19. package/dist/conversation-details.js +8 -99
  20. package/dist/employee-endpoint.d.ts +1 -3
  21. package/dist/employee-endpoint.js +8 -39
  22. package/dist/employee-exec.d.ts +4 -3
  23. package/dist/employee-exec.js +25 -13
  24. package/dist/employee-info.d.ts +5 -1
  25. package/dist/employee-info.js +16 -5
  26. package/dist/employee-location.js +3 -4
  27. package/dist/employee-mcp.js +44 -69
  28. package/dist/employee-native.d.ts +1 -3
  29. package/dist/employee-native.js +6 -27
  30. package/dist/employee-presentation.d.ts +0 -5
  31. package/dist/employee-presentation.js +0 -15
  32. package/dist/employee-provider.d.ts +3 -11
  33. package/dist/employee-provider.js +69 -205
  34. package/dist/employee-reasons.js +1 -5
  35. package/dist/employee-shell.d.ts +2 -1
  36. package/dist/employee-shell.js +10 -13
  37. package/dist/employee-ssh.d.ts +1 -3
  38. package/dist/employee-ssh.js +13 -16
  39. package/dist/employee-tools.d.ts +5 -5
  40. package/dist/failure-evidence.d.ts +2 -10
  41. package/dist/failure-evidence.js +12 -61
  42. package/dist/host-workspace.d.ts +4 -2
  43. package/dist/host-workspace.js +1 -1
  44. package/dist/index.d.ts +13 -43
  45. package/dist/index.js +190 -489
  46. package/dist/input.js +2 -3
  47. package/dist/local-user-turn.js +5 -6
  48. package/dist/mapping.d.ts +0 -3
  49. package/dist/mapping.js +0 -34
  50. package/dist/model-catalog.d.ts +2 -41
  51. package/dist/model-catalog.js +24 -282
  52. package/dist/model-configuration.d.ts +0 -3
  53. package/dist/model-configuration.js +8 -47
  54. package/dist/model-presentation.d.ts +1 -0
  55. package/dist/model-presentation.js +2 -2
  56. package/dist/permissions.d.ts +15 -0
  57. package/dist/permissions.js +30 -0
  58. package/dist/preflight-diagnostic.js +11 -22
  59. package/dist/preflight-payload.d.ts +1 -1
  60. package/dist/preflight-payload.js +2 -2
  61. package/dist/presentation.js +21 -41
  62. package/dist/provider.d.ts +12 -34
  63. package/dist/provider.js +17 -92
  64. package/dist/readiness.js +1 -7
  65. package/dist/remote-details.d.ts +41 -17
  66. package/dist/remote-details.js +84 -381
  67. package/dist/workspace-source.d.ts +1 -25
  68. package/dist/workspace-source.js +1 -138
  69. package/package.json +11 -12
  70. package/dist/catalog-diagnostics.d.ts +0 -16
  71. package/dist/catalog-diagnostics.js +0 -108
  72. package/dist/host-layout.d.ts +0 -8
  73. package/dist/host-layout.js +0 -9
  74. package/dist/job.d.ts +0 -17
  75. package/dist/job.js +0 -57
  76. package/dist/model-defaults.d.ts +0 -29
  77. package/dist/model-defaults.js +0 -62
  78. package/dist/oneshot.d.ts +0 -13
  79. package/dist/oneshot.js +0 -78
  80. package/dist/protocol-boundary.d.ts +0 -13
  81. package/dist/protocol-boundary.js +0 -49
  82. package/dist/provider-locale.d.ts +0 -19
  83. package/dist/provider-locale.js +0 -73
  84. package/dist/recovery-checkpoint.d.ts +0 -6
  85. package/dist/recovery-checkpoint.js +0 -71
  86. package/dist/recovery.d.ts +0 -51
  87. package/dist/recovery.js +0 -61
  88. package/dist/sdk-ssh-wrapper.d.ts +0 -2
  89. package/dist/sdk-ssh-wrapper.js +0 -34
  90. package/dist/stage-timing.d.ts +0 -31
  91. package/dist/stage-timing.js +0 -61
  92. package/dist/workspace-notice.d.ts +0 -47
  93. package/dist/workspace-notice.js +0 -273
  94. package/dist/workspace-source-confirmation.d.ts +0 -4
  95. package/dist/workspace-source-confirmation.js +0 -12
@@ -23,7 +23,7 @@ export declare function createEmployeeTools(options: Options): {
23
23
  type: "text";
24
24
  text: string;
25
25
  annotations?: {
26
- audience?: ("assistant" | "user")[] | undefined;
26
+ audience?: ("user" | "assistant")[] | undefined;
27
27
  priority?: number | undefined;
28
28
  lastModified?: string | undefined;
29
29
  } | undefined;
@@ -35,7 +35,7 @@ export declare function createEmployeeTools(options: Options): {
35
35
  data: string;
36
36
  mimeType: string;
37
37
  annotations?: {
38
- audience?: ("assistant" | "user")[] | undefined;
38
+ audience?: ("user" | "assistant")[] | undefined;
39
39
  priority?: number | undefined;
40
40
  lastModified?: string | undefined;
41
41
  } | undefined;
@@ -47,7 +47,7 @@ export declare function createEmployeeTools(options: Options): {
47
47
  data: string;
48
48
  mimeType: string;
49
49
  annotations?: {
50
- audience?: ("assistant" | "user")[] | undefined;
50
+ audience?: ("user" | "assistant")[] | undefined;
51
51
  priority?: number | undefined;
52
52
  lastModified?: string | undefined;
53
53
  } | undefined;
@@ -62,7 +62,7 @@ export declare function createEmployeeTools(options: Options): {
62
62
  mimeType?: string | undefined;
63
63
  size?: number | undefined;
64
64
  annotations?: {
65
- audience?: ("assistant" | "user")[] | undefined;
65
+ audience?: ("user" | "assistant")[] | undefined;
66
66
  priority?: number | undefined;
67
67
  lastModified?: string | undefined;
68
68
  } | undefined;
@@ -94,7 +94,7 @@ export declare function createEmployeeTools(options: Options): {
94
94
  } | undefined;
95
95
  };
96
96
  annotations?: {
97
- audience?: ("assistant" | "user")[] | undefined;
97
+ audience?: ("user" | "assistant")[] | undefined;
98
98
  priority?: number | undefined;
99
99
  lastModified?: string | undefined;
100
100
  } | undefined;
@@ -1,16 +1,8 @@
1
- import { NeedError } from './remote.ts';
2
1
  /** Only typed codes, never exception messages, causes, stderr or RPC data. */
3
2
  export declare function closeCode(error: unknown, fallback?: string): string;
4
3
  /** Retain trusted typed codes through wrappers; never traverse error text or invoke getters. */
5
4
  export declare function closeErrorCodes(error: unknown, fallback?: string): string[];
6
- export declare function closeFailure(code: string, message: string, requires: string, codes: readonly string[]): NeedError;
7
- /** Saving succeeded: retain the original trusted error type, code and presentation. */
8
- export declare function withFirstFailureEvidence<T>(primary: T, firstReason: unknown, primaryCode: string): T;
9
- /** A negotiated close reason is independent evidence, never a replacement error or new gate. */
10
- export declare function withRemoteFailureEvidence<T>(primary: T, remoteReason: unknown, primaryCode: string): T;
11
- /** A known turn failure is final even while its original resource is still closing. */
12
- export declare function withPendingCleanupEvidence<T>(primary: T, firstReason: unknown, primaryCode: string): T;
13
- /** Preserve causal roles without copying arbitrary exception text into employee output. */
14
- export declare function withFailureEvidence(primary: unknown, secondary: readonly unknown[], kind: 'diagnostic' | 'cleanup', firstReason?: unknown, primaryCode?: string): NeedError;
5
+ export declare function withFirstFailureEvidence<T>(primary: T, first: unknown, original: string): T;
6
+ export declare function withRemoteFailureEvidence<T>(primary: T, reason: unknown, original: string): T;
15
7
  export declare function primaryFailureCode(error: unknown, fallback: string): string;
16
8
  export declare function failureEvidenceSummary(error: unknown): string;
@@ -29,74 +29,25 @@ export function closeErrorCodes(error, fallback = 'CLOSE_REASON_UNKNOWN') {
29
29
  }
30
30
  return codes.size ? [...codes] : [fallback];
31
31
  }
32
- export function closeFailure(code, message, requires, codes) {
33
- return Object.assign(new NeedError(code, message, requires), { cause: new AggregateError([...new Set(codes)].map(value => new NeedError(value, '关闭收尾代码 ' + value, '按安全代码核对')), 'CLOSE_AND_DIAGNOSTIC_FAILURES') });
34
- }
35
32
  const evidence = new WeakMap();
36
- const safeCode = (code) => typeof code === 'string' && /^[A-Z][A-Z0-9_]*$/.test(code);
37
- function retainedEvidence(error) {
38
- const queue = [error], seen = new Set();
39
- while (queue.length) {
40
- const current = queue.shift();
41
- if (current && typeof current === 'object') {
42
- const known = evidence.get(current);
43
- if (known)
44
- return known;
45
- }
46
- if (!(current instanceof NeedError || current instanceof AggregateError) || seen.has(current))
47
- continue;
48
- seen.add(current);
49
- const cause = Object.getOwnPropertyDescriptor(current, 'cause');
50
- if (cause && 'value' in cause)
51
- queue.push(cause.value);
52
- const children = Object.getOwnPropertyDescriptor(current, 'errors');
53
- if (children && 'value' in children && Array.isArray(children.value))
54
- queue.push(...children.value);
55
- }
56
- return undefined;
57
- }
58
- /** Saving succeeded: retain the original trusted error type, code and presentation. */
59
- export function withFirstFailureEvidence(primary, firstReason, primaryCode) {
60
- if (primary && typeof primary === 'object' && safeCode(firstReason) && safeCode(primaryCode)) {
61
- const previous = retainedEvidence(primary);
62
- evidence.set(primary, Object.freeze({ ...previous, first: previous?.first ?? firstReason, original: previous?.original ?? Object.freeze([primaryCode]), diagnostic: previous?.diagnostic ?? Object.freeze([]), cleanup: previous?.cleanup ?? Object.freeze([]) }));
33
+ const safe = (value) => typeof value === 'string' && /^[A-Z][A-Z0-9_]*$/.test(value);
34
+ export function withFirstFailureEvidence(primary, first, original) {
35
+ if (primary && typeof primary === 'object') {
36
+ const old = evidence.get(primary);
37
+ evidence.set(primary, { ...old, ...(safe(first) && !old?.first ? { first } : {}), original: old?.original ?? original });
63
38
  }
64
39
  return primary;
65
40
  }
66
- /** A negotiated close reason is independent evidence, never a replacement error or new gate. */
67
- export function withRemoteFailureEvidence(primary, remoteReason, primaryCode) {
68
- const remote = trustedEmployeeReason(remoteReason);
41
+ export function withRemoteFailureEvidence(primary, reason, original) {
42
+ const remote = trustedEmployeeReason(reason);
69
43
  if (primary && typeof primary === 'object' && remote) {
70
- const previous = retainedEvidence(primary);
71
- evidence.set(primary, Object.freeze({ ...previous, remote: previous?.remote ?? remote, original: previous?.original ?? Object.freeze([safeCode(primaryCode) ? primaryCode : 'TURN_FAILED']), diagnostic: previous?.diagnostic ?? Object.freeze([]), cleanup: previous?.cleanup ?? Object.freeze([]) }));
44
+ const old = evidence.get(primary);
45
+ evidence.set(primary, { ...old, remote: old?.remote ?? remote, original: old?.original ?? original });
72
46
  }
73
47
  return primary;
74
48
  }
75
- /** A known turn failure is final even while its original resource is still closing. */
76
- export function withPendingCleanupEvidence(primary, firstReason, primaryCode) {
77
- if (primary && typeof primary === 'object') {
78
- const previous = retainedEvidence(primary), first = previous?.first ?? (safeCode(firstReason) ? firstReason : undefined);
79
- evidence.set(primary, Object.freeze({ ...previous, ...(first ? { first } : {}), original: previous?.original ?? Object.freeze([safeCode(primaryCode) ? primaryCode : 'TURN_FAILED']), diagnostic: previous?.diagnostic ?? Object.freeze([]), cleanup: previous?.cleanup ?? Object.freeze([]), cleanupPending: true }));
80
- }
81
- return primary;
82
- }
83
- /** Preserve causal roles without copying arbitrary exception text into employee output. */
84
- export function withFailureEvidence(primary, secondary, kind, firstReason, primaryCode) {
85
- const previous = retainedEvidence(primary), first = previous?.first ?? (safeCode(firstReason) ? firstReason : undefined);
86
- const original = previous?.original ?? (safeCode(primaryCode) ? [primaryCode] : closeErrorCodes(primary, 'TURN_FAILED'));
87
- const secondaryFacts = secondary.map(retainedEvidence), added = [...new Set(secondary.flatMap((error, index) => secondaryFacts[index] ? secondaryFacts[index].original.filter(code => !original.includes(code)) : closeErrorCodes(error, kind === 'diagnostic' ? 'DIAGNOSTIC_WRITE_FAILED' : 'REMOTE_CLEANUP_UNCONFIRMED')))];
88
- const remote = previous?.remote ?? secondaryFacts.find(f => f?.remote)?.remote;
89
- const facts = Object.freeze({ ...(first ? { first } : {}), ...(remote ? { remote } : {}), original: Object.freeze(original), diagnostic: Object.freeze([...new Set([...(previous?.diagnostic ?? []), ...secondaryFacts.flatMap(f => f?.diagnostic ?? []), ...(kind === 'diagnostic' ? added : [])])]), cleanup: Object.freeze([...new Set([...(previous?.cleanup ?? []), ...secondaryFacts.flatMap(f => f?.cleanup ?? []), ...(kind === 'cleanup' ? added : [])])]) });
90
- const code = kind === 'cleanup' ? 'REMOTE_CLEANUP_UNCONFIRMED' : !secondary.length ? primary instanceof NeedError ? primary.code : safeCode(primaryCode) ? primaryCode : 'TURN_FAILED' : primary instanceof NeedError && facts.diagnostic.length > 0 && facts.diagnostic.every(code => code === primary.code) && !facts.cleanup.length && !previous ? primary.code : 'CONVERSATION_DETAILS_FAILED';
91
- const failure = Object.assign(new NeedError(code, '本轮已停止;运行原因与诊断或清理结果分别保留。', '核对原始原因及未确认的保存/清理结果'), { cause: new AggregateError([primary, ...(safeCode(primaryCode) && !(primary instanceof NeedError) ? [new NeedError(primaryCode, '运行错误代码', '可信调用点提供的固定代码')] : []), ...secondary, ...(first ? [new NeedError(first, '首次观察关闭代码', '不是已证明根因')] : [])], 'TURN_FAILURE_EVIDENCE') });
92
- evidence.set(failure, facts);
93
- failure.requires = '原错误代码 ' + facts.original.join('、') + (facts.diagnostic.length ? ';诊断错误代码 ' + facts.diagnostic.join('、') : '') + (facts.first ? ';首次观察关闭 ' + facts.first : '') + (facts.cleanup.length ? ';清理错误代码 ' + facts.cleanup.join('、') : '');
94
- return failure;
95
- }
96
- export function primaryFailureCode(error, fallback) { return retainedEvidence(error)?.original[0] ?? fallback; }
49
+ export function primaryFailureCode(error, fallback) { return error && typeof error === 'object' ? evidence.get(error)?.original ?? fallback : fallback; }
97
50
  export function failureEvidenceSummary(error) {
98
- const facts = retainedEvidence(error);
99
- if (!facts)
100
- return '';
101
- return '技术详情:' + [...(facts.first ? ['首次观察关闭 ' + facts.first] : []), '运行原因 ' + facts.original.join('、'), ...(facts.remote ? ['远端关闭原因 ' + facts.remote] : []), ...(facts.diagnostic.length ? ['详情保存未确认 ' + facts.diagnostic.join('、')] : []), ...(facts.cleanup.length ? ['清理未确认 ' + facts.cleanup.join('、')] : facts.cleanupPending ? ['正在确认主机清理,原资源清理结果尚待确认'] : [])].join(';');
51
+ const facts = error && typeof error === 'object' ? evidence.get(error) : undefined;
52
+ return facts ? '技术详情:' + [...(facts.first ? ['首次关闭原因 ' + facts.first] : []), '运行原因 ' + facts.original, ...(facts.remote ? ['远端原因 ' + facts.remote] : [])].join(';') : '';
102
53
  }
@@ -1,6 +1,5 @@
1
1
  import type { ConnectApi, ConnectTarget, ConnectionState, RuntimeRequest, Runtime } from './provider.ts';
2
2
  import type { NativeWorkspaceApi, HostSessionProjectTarget, LoginProvider } from './connect-contract.ts';
3
- import type { WorkspaceSourceOptions } from './workspace-source.ts';
4
3
  export interface HostWorkspaceGuard {
5
4
  readonly signal: AbortSignal;
6
5
  readonly revocation: AbortSignal;
@@ -10,4 +9,7 @@ export interface HostWorkspaceGuard {
10
9
  dispose(): void;
11
10
  }
12
11
  /** Current official membership and explicit host selection; never infer source from a pathname. */
13
- export declare function hostWorkspaceGuard(get: () => ConnectApi | undefined, api: ConnectApi & NativeWorkspaceApi, connection: ConnectionState, target: ConnectTarget, request: RuntimeRequest, workspace: WorkspaceSourceOptions['workspace'] | undefined, provider: LoginProvider): Promise<HostWorkspaceGuard | undefined>;
12
+ export declare function hostWorkspaceGuard(get: () => ConnectApi | undefined, api: ConnectApi & NativeWorkspaceApi, connection: ConnectionState, target: ConnectTarget, request: RuntimeRequest, workspace: ((request: RuntimeRequest) => Promise<{
13
+ id: string;
14
+ path: string;
15
+ }>) | undefined, provider: LoginProvider): Promise<HostWorkspaceGuard | undefined>;
@@ -27,7 +27,7 @@ export async function hostWorkspaceGuard(get, api, connection, target, request,
27
27
  if (rows.length !== 1 || !selected)
28
28
  return;
29
29
  if (selected.source !== 'host') {
30
- if (selected.source !== null && !['local', 'legacy-host'].includes(selected.source))
30
+ if (selected.source !== null && selected.source !== 'local')
31
31
  throw invalid();
32
32
  return;
33
33
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- import { type CloseChange } from './close-diagnostics.ts';
2
1
  import type { Context } from '@deepseek-ai/cordis';
3
2
  import Schema from '@deepseek-ai/schemastery';
4
- import { LlmAdapter, type GenerateOptions, type StreamChunk } from '@deepseek-ai/dsh-llm';
3
+ import { LlmAdapter, type GenerateOptions, type StreamChunk, type LlmResolvedModelInfo } from '@deepseek-ai/dsh-llm';
5
4
  import { type AcpHooks } from './acp.ts';
6
5
  import { type RuntimeProvider } from './provider.ts';
7
6
  import { type AgentDefinition } from './agents.ts';
@@ -9,48 +8,34 @@ import { type ImageReader, type HostWorkspacePresentation } from './input.ts';
9
8
  import type { LoginDiagnostic } from './login-diagnostic.ts';
10
9
  import { type ModelDirectory, type HostModel } from './model-catalog.ts';
11
10
  import { type PreflightDiagnostics } from './preflight-diagnostic.ts';
11
+ import { type PermissionSource } from './permissions.ts';
12
+ export { readDshPermissions } from './permissions.ts';
12
13
  export declare const name = "ai-workbench-remote-agent";
13
14
  export declare const settingsNamespace = "ai-workbench-codex";
14
15
  export declare const inject: string[];
15
16
  /** Owner-approved defaults; administrators may override through the existing settings. */
16
17
  export declare const DEFAULT_CONFIG: Readonly<{
17
- readonly mode: "session";
18
18
  readonly acpMaxMessageBytes: 4194304;
19
19
  readonly brokerMaxFrameBytes: 2097152;
20
20
  readonly brokerControlMaxBytes: 1048576;
21
- readonly oneShotSandbox: "workspace-write";
22
- readonly oneShotApproval: "never";
23
21
  readonly employeeShellKillGraceMs: 1000;
24
- readonly employeeHttpMcpPolicy: "ignore";
25
22
  }>;
26
23
  export declare const Config: Schema<Schemastery.ObjectS<NoInfer<{
27
- employeeHttpMcpPolicy: Schema<"reject" | "ignore", "reject" | "ignore", "volatile-defined">;
28
- mode: Schema<"session" | "one-shot", "session" | "one-shot", "volatile-defined">;
29
24
  acpMaxMessageBytes: Schema<number, number, "volatile-defined">;
30
25
  brokerMaxFrameBytes: Schema<number, number, "volatile-defined">;
31
26
  brokerControlMaxBytes: Schema<number, number, "volatile-defined">;
32
- oneShotSandbox: Schema<"read-only" | "workspace-write" | "danger-full-access", "read-only" | "workspace-write" | "danger-full-access", "volatile-defined">;
33
- oneShotApproval: Schema<"never", "never", "volatile-defined">;
34
27
  employeeShellKillGraceMs: Schema<number, number, "volatile-defined">;
35
28
  }>>, Schemastery.ObjectT<NoInfer<{
36
- employeeHttpMcpPolicy: Schema<"reject" | "ignore", "reject" | "ignore", "volatile-defined">;
37
- mode: Schema<"session" | "one-shot", "session" | "one-shot", "volatile-defined">;
38
29
  acpMaxMessageBytes: Schema<number, number, "volatile-defined">;
39
30
  brokerMaxFrameBytes: Schema<number, number, "volatile-defined">;
40
31
  brokerControlMaxBytes: Schema<number, number, "volatile-defined">;
41
- oneShotSandbox: Schema<"read-only" | "workspace-write" | "danger-full-access", "read-only" | "workspace-write" | "danger-full-access", "volatile-defined">;
42
- oneShotApproval: Schema<"never", "never", "volatile-defined">;
43
32
  employeeShellKillGraceMs: Schema<number, number, "volatile-defined">;
44
33
  }>>, "plain">;
45
34
  export interface PluginConfig {
46
- mode?: 'session' | 'one-shot';
47
35
  acpMaxMessageBytes?: number;
48
36
  brokerMaxFrameBytes?: number;
49
37
  brokerControlMaxBytes?: number;
50
- oneShotSandbox?: 'read-only' | 'workspace-write' | 'danger-full-access';
51
- oneShotApproval?: 'never';
52
38
  employeeShellKillGraceMs?: number;
53
- employeeHttpMcpPolicy?: 'reject' | 'ignore';
54
39
  }
55
40
  type LiveConfig = {
56
41
  [K in keyof PluginConfig]: PluginConfig[K] | {
@@ -61,7 +46,6 @@ type LiveConfig = {
61
46
  export declare function readConfig(config: LiveConfig): PluginConfig;
62
47
  export type LoginFailureReporter = (sessionId: string | undefined, code: string, diagnostic: LoginDiagnostic) => Promise<{
63
48
  eventId: string;
64
- recorded: true;
65
49
  }>;
66
50
  export declare class CodexRemoteAdapter extends LlmAdapter {
67
51
  private resolveRuntime;
@@ -72,35 +56,29 @@ export declare class CodexRemoteAdapter extends LlmAdapter {
72
56
  private readonly reportLoginFailure?;
73
57
  private readonly directory?;
74
58
  private readonly preflightDiagnostics?;
59
+ private readonly permissions?;
75
60
  private config;
76
61
  private sessions;
77
62
  private turns;
78
63
  private lifetime;
79
64
  private shuttingDown;
80
65
  private detached;
81
- private cleanups;
82
- private preparationFailures;
83
66
  private modelPresentation;
84
67
  private employeeNoticeSessions;
85
- constructor(config: PluginConfig | (() => PluginConfig), resolveRuntime: RuntimeProvider, approve?: InvocationApproval | undefined, providerName?: () => string, agent?: AgentDefinition, readImage?: ImageReader | undefined, reportLoginFailure?: LoginFailureReporter | undefined, directory?: ModelDirectory | undefined, preflightDiagnostics?: PreflightDiagnostics | undefined);
68
+ constructor(config: PluginConfig | (() => PluginConfig), resolveRuntime: RuntimeProvider, approve?: InvocationApproval | undefined, providerName?: () => string, agent?: AgentDefinition, readImage?: ImageReader | undefined, reportLoginFailure?: LoginFailureReporter | undefined, directory?: ModelDirectory | undefined, preflightDiagnostics?: PreflightDiagnostics | undefined, permissions?: PermissionSource | undefined);
86
69
  providerInfo(provider: string): {
87
70
  id: string;
88
71
  name: string;
89
72
  };
90
73
  private catalog;
91
- listModels(provider: string): Promise<(import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo & {
74
+ listModels(provider: string): Promise<(LlmResolvedModelInfo & {
92
75
  catalog: HostModel;
93
76
  })[]>;
94
- resolveModel(provider: string, id: string, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo>;
95
- prepareCall(provider: string, id: string, signal?: AbortSignal): Promise<{
96
- model: import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo & {
97
- catalog: HostModel;
98
- };
77
+ resolveModel(provider: string, id: string, _signal?: AbortSignal): Promise<LlmResolvedModelInfo>;
78
+ prepareCall(provider: string, id: string, _signal?: AbortSignal): Promise<{
79
+ model: LlmResolvedModelInfo;
99
80
  stream: (options: GenerateOptions) => AsyncGenerator<StreamChunk, any, any>;
100
81
  }>;
101
- observeModelInvalidation(fields: readonly string[], changes?: readonly CloseChange[]): void;
102
- invalidateModelState(): Promise<void>;
103
- invalidateEmployeeState(): Promise<void>;
104
82
  providerRetryPolicy(): {
105
83
  mode: "normal";
106
84
  maxRetries: number;
@@ -110,8 +88,6 @@ export declare class CodexRemoteAdapter extends LlmAdapter {
110
88
  jitterRatio: number;
111
89
  };
112
90
  private cleanupRuntime;
113
- /** Publish an already known failure without coupling the official stream to cleanup. */
114
- private finishFailedTurn;
115
91
  disposeSession(sessionId: string): Promise<void>;
116
92
  detachSession(sessionId: string): Promise<void>;
117
93
  dispose(): Promise<void>;
@@ -121,25 +97,20 @@ export declare class CodexRemoteAdapter extends LlmAdapter {
121
97
  /** One official registration owns both routes, preserving opaque replay ownership. */
122
98
  export declare class RemoteAgentsAdapter extends LlmAdapter {
123
99
  private adapters;
124
- constructor(config: () => PluginConfig, makeRuntime: (agent: AgentDefinition) => RuntimeProvider, approve: InvocationApproval, nameFor: (agent: AgentDefinition) => string, readImage?: ImageReader, reportLoginFailure?: LoginFailureReporter, directory?: ModelDirectory, preflightDiagnostics?: PreflightDiagnostics);
100
+ constructor(config: () => PluginConfig, makeRuntime: (agent: AgentDefinition) => RuntimeProvider, approve: InvocationApproval, nameFor: (agent: AgentDefinition) => string, readImage?: ImageReader, reportLoginFailure?: LoginFailureReporter, directory?: ModelDirectory, preflightDiagnostics?: PreflightDiagnostics, permissions?: PermissionSource);
125
101
  private adapter;
126
102
  providerInfo(provider: string): {
127
103
  id: string;
128
104
  name: string;
129
105
  };
130
- listModels(provider: string): Promise<(import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo & {
106
+ listModels(provider: string): Promise<(LlmResolvedModelInfo & {
131
107
  catalog: HostModel;
132
108
  })[]>;
133
- resolveModel(provider: string, model: string, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo>;
109
+ resolveModel(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;
134
110
  prepareCall(provider: string, model: string, signal?: AbortSignal): Promise<{
135
- model: import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo & {
136
- catalog: HostModel;
137
- };
111
+ model: LlmResolvedModelInfo;
138
112
  stream: (options: GenerateOptions) => AsyncGenerator<StreamChunk, any, any>;
139
113
  }>;
140
- observeModelInvalidation(fields: readonly string[], changes?: readonly CloseChange[]): void;
141
- invalidateModelState(): Promise<void>;
142
- invalidateEmployeeState(): Promise<void>;
143
114
  providerRetryPolicy(): {
144
115
  mode: "normal";
145
116
  maxRetries: number;
@@ -156,4 +127,3 @@ export declare class RemoteAgentsAdapter extends LlmAdapter {
156
127
  export declare function apply(ctx: Context, live: LiveConfig): void;
157
128
  type InvocationApproval = (request: Parameters<NonNullable<AcpHooks['approve']>>[0], signal: AbortSignal | undefined, options: GenerateOptions, context?: string, hostWorkspace?: HostWorkspacePresentation) => ReturnType<NonNullable<AcpHooks['approve']>>;
158
129
  export declare function dshApproval(ctx: Context): InvocationApproval;
159
- export {};