@agents-ensemble/core 0.6.5 → 0.8.0
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/conductor/conductor-agent.d.ts +50 -14
- package/dist/conductor/conductor-agent.d.ts.map +1 -1
- package/dist/conductor/conductor-agent.js +1 -96
- package/dist/conductor/conductor-agent.js.map +1 -1
- package/dist/conductor/conductor-auth.d.ts +36 -6
- package/dist/conductor/conductor-auth.d.ts.map +1 -1
- package/dist/conductor/conductor-auth.js +59 -7
- package/dist/conductor/conductor-auth.js.map +1 -1
- package/dist/conductor/conductor-pi-auth.d.ts +75 -0
- package/dist/conductor/conductor-pi-auth.d.ts.map +1 -0
- package/dist/conductor/conductor-pi-auth.js +524 -0
- package/dist/conductor/conductor-pi-auth.js.map +1 -0
- package/dist/conductor/conductor-send-reconnect.d.ts +10 -6
- package/dist/conductor/conductor-send-reconnect.d.ts.map +1 -1
- package/dist/conductor/conductor-send-reconnect.js +6 -4
- package/dist/conductor/conductor-send-reconnect.js.map +1 -1
- package/dist/conductor/conductor-session-driver.d.ts +4 -4
- package/dist/conductor/conductor-session-driver.d.ts.map +1 -1
- package/dist/conductor/conductor-session-driver.js +47 -29
- package/dist/conductor/conductor-session-driver.js.map +1 -1
- package/dist/conductor/conductor-session.d.ts +5 -1
- package/dist/conductor/conductor-session.d.ts.map +1 -1
- package/dist/conductor/conductor-session.js +138 -32
- package/dist/conductor/conductor-session.js.map +1 -1
- package/dist/conductor/conductor-tool-pi-adapter.d.ts +13 -0
- package/dist/conductor/conductor-tool-pi-adapter.d.ts.map +1 -0
- package/dist/conductor/conductor-tool-pi-adapter.js +30 -0
- package/dist/conductor/conductor-tool-pi-adapter.js.map +1 -0
- package/dist/conductor/conductor-tool-sdk-adapter.d.ts +6 -0
- package/dist/conductor/conductor-tool-sdk-adapter.d.ts.map +1 -0
- package/dist/conductor/conductor-tool-sdk-adapter.js +16 -0
- package/dist/conductor/conductor-tool-sdk-adapter.js.map +1 -0
- package/dist/conductor/conductor-tool.d.ts +35 -0
- package/dist/conductor/conductor-tool.d.ts.map +1 -0
- package/dist/conductor/conductor-tool.js +41 -0
- package/dist/conductor/conductor-tool.js.map +1 -0
- package/dist/conductor/cursor-sdk-conductor-agent.d.ts +18 -0
- package/dist/conductor/cursor-sdk-conductor-agent.d.ts.map +1 -0
- package/dist/conductor/cursor-sdk-conductor-agent.js +134 -0
- package/dist/conductor/cursor-sdk-conductor-agent.js.map +1 -0
- package/dist/conductor/index.d.ts +21 -7
- package/dist/conductor/index.d.ts.map +1 -1
- package/dist/conductor/index.js +11 -4
- package/dist/conductor/index.js.map +1 -1
- package/dist/conductor/list-conductor-models.d.ts +7 -2
- package/dist/conductor/list-conductor-models.d.ts.map +1 -1
- package/dist/conductor/list-conductor-models.js +9 -1
- package/dist/conductor/list-conductor-models.js.map +1 -1
- package/dist/conductor/pi-conductor-agent.d.ts +47 -0
- package/dist/conductor/pi-conductor-agent.d.ts.map +1 -0
- package/dist/conductor/pi-conductor-agent.js +479 -0
- package/dist/conductor/pi-conductor-agent.js.map +1 -0
- package/dist/conductor/pi-conductor-session.d.ts +20 -0
- package/dist/conductor/pi-conductor-session.d.ts.map +1 -0
- package/dist/conductor/pi-conductor-session.js +60 -0
- package/dist/conductor/pi-conductor-session.js.map +1 -0
- package/dist/conductor/pi-mcp-bridge.d.ts +65 -0
- package/dist/conductor/pi-mcp-bridge.d.ts.map +1 -0
- package/dist/conductor/pi-mcp-bridge.js +259 -0
- package/dist/conductor/pi-mcp-bridge.js.map +1 -0
- package/dist/conductor/pi-resource-loader.d.ts +148 -0
- package/dist/conductor/pi-resource-loader.d.ts.map +1 -0
- package/dist/conductor/pi-resource-loader.js +675 -0
- package/dist/conductor/pi-resource-loader.js.map +1 -0
- package/dist/conductor/session/dispatch-hold.d.ts +14 -0
- package/dist/conductor/session/dispatch-hold.d.ts.map +1 -1
- package/dist/conductor/session/dispatch-hold.js +30 -0
- package/dist/conductor/session/dispatch-hold.js.map +1 -1
- package/dist/conductor/session/events/index.d.ts +1 -1
- package/dist/conductor/session/events/index.d.ts.map +1 -1
- package/dist/conductor/session/events/index.js.map +1 -1
- package/dist/conductor/session/events/session-log-event-groups.d.ts +2 -2
- package/dist/conductor/session/events/session-log-event-groups.d.ts.map +1 -1
- package/dist/conductor/session/events/session-log-event-groups.js +1 -0
- package/dist/conductor/session/events/session-log-event-groups.js.map +1 -1
- package/dist/conductor/session/events/session-log-event.d.ts +10 -1
- package/dist/conductor/session/events/session-log-event.d.ts.map +1 -1
- package/dist/conductor/session/format-session-event.js +3 -0
- package/dist/conductor/session/format-session-event.js.map +1 -1
- package/dist/conductor/session/session-logger.d.ts.map +1 -1
- package/dist/conductor/session/session-logger.js +1 -0
- package/dist/conductor/session/session-logger.js.map +1 -1
- package/dist/config/defaults.d.ts +2 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +2 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/parse-config.d.ts.map +1 -1
- package/dist/config/parse-config.js +29 -1
- package/dist/config/parse-config.js.map +1 -1
- package/dist/config/resolve-settings.d.ts +25 -1
- package/dist/config/resolve-settings.d.ts.map +1 -1
- package/dist/config/resolve-settings.js +38 -1
- package/dist/config/resolve-settings.js.map +1 -1
- package/dist/config/types.d.ts +11 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/dispatch/prompt-worker-tool.d.ts +2 -2
- package/dist/dispatch/prompt-worker-tool.d.ts.map +1 -1
- package/dist/dispatch/prompt-worker-tool.js +1 -0
- package/dist/dispatch/prompt-worker-tool.js.map +1 -1
- package/dist/dispatch/session-usage-tool.d.ts +2 -2
- package/dist/dispatch/session-usage-tool.d.ts.map +1 -1
- package/dist/dispatch/session-usage-tool.js +2 -0
- package/dist/dispatch/session-usage-tool.js.map +1 -1
- package/dist/dispatch/set-dispatch-hold-tool.d.ts +2 -2
- package/dist/dispatch/set-dispatch-hold-tool.d.ts.map +1 -1
- package/dist/dispatch/set-dispatch-hold-tool.js +1 -0
- package/dist/dispatch/set-dispatch-hold-tool.js.map +1 -1
- package/dist/dispatch/worker-status-tool.d.ts +2 -2
- package/dist/dispatch/worker-status-tool.d.ts.map +1 -1
- package/dist/dispatch/worker-status-tool.js +2 -0
- package/dist/dispatch/worker-status-tool.js.map +1 -1
- package/dist/dispatch/yaml-tool-result.d.ts +3 -9
- package/dist/dispatch/yaml-tool-result.d.ts.map +1 -1
- package/dist/dispatch/yaml-tool-result.js.map +1 -1
- package/dist/escalation/answer-open-question-tool.d.ts +2 -2
- package/dist/escalation/answer-open-question-tool.d.ts.map +1 -1
- package/dist/escalation/answer-open-question-tool.js +1 -0
- package/dist/escalation/answer-open-question-tool.js.map +1 -1
- package/dist/escalation/ask-human-tool.d.ts +2 -2
- package/dist/escalation/ask-human-tool.d.ts.map +1 -1
- package/dist/escalation/ask-human-tool.js +1 -0
- package/dist/escalation/ask-human-tool.js.map +1 -1
- package/dist/escalation/open-question-list-tools.d.ts +2 -2
- package/dist/escalation/open-question-list-tools.d.ts.map +1 -1
- package/dist/escalation/open-question-list-tools.js +2 -0
- package/dist/escalation/open-question-list-tools.js.map +1 -1
- package/dist/github/fetch-github-updates.d.ts +0 -6
- package/dist/github/fetch-github-updates.d.ts.map +1 -1
- package/dist/github/fetch-github-updates.js +119 -135
- package/dist/github/fetch-github-updates.js.map +1 -1
- package/dist/github/github-client.d.ts.map +1 -1
- package/dist/github/github-client.js +8 -0
- package/dist/github/github-client.js.map +1 -1
- package/dist/github/github-monitor-cursor.d.ts +36 -9
- package/dist/github/github-monitor-cursor.d.ts.map +1 -1
- package/dist/github/github-monitor-cursor.js +9 -19
- package/dist/github/github-monitor-cursor.js.map +1 -1
- package/dist/github/github-monitor.d.ts +2 -0
- package/dist/github/github-monitor.d.ts.map +1 -1
- package/dist/github/github-monitor.js +13 -0
- package/dist/github/github-monitor.js.map +1 -1
- package/dist/github/github-test-fixtures.d.ts +9 -0
- package/dist/github/github-test-fixtures.d.ts.map +1 -1
- package/dist/github/github-test-fixtures.js +6 -0
- package/dist/github/github-test-fixtures.js.map +1 -1
- package/dist/github/github-update-types.d.ts +11 -1
- package/dist/github/github-update-types.d.ts.map +1 -1
- package/dist/github/index.d.ts +4 -2
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +1 -0
- package/dist/github/index.js.map +1 -1
- package/dist/github/register-github-watch-tool.d.ts +7 -2
- package/dist/github/register-github-watch-tool.d.ts.map +1 -1
- package/dist/github/register-github-watch-tool.js +31 -24
- package/dist/github/register-github-watch-tool.js.map +1 -1
- package/dist/github/unregister-github-watch-tool.d.ts +11 -0
- package/dist/github/unregister-github-watch-tool.d.ts.map +1 -0
- package/dist/github/unregister-github-watch-tool.js +52 -0
- package/dist/github/unregister-github-watch-tool.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -3
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/load-mcp-config.d.ts +29 -5
- package/dist/mcp/load-mcp-config.d.ts.map +1 -1
- package/dist/mcp/load-mcp-config.js +9 -2
- package/dist/mcp/load-mcp-config.js.map +1 -1
- package/dist/permission/resolve-permission-tool.d.ts +2 -2
- package/dist/permission/resolve-permission-tool.d.ts.map +1 -1
- package/dist/permission/resolve-permission-tool.js +1 -0
- package/dist/permission/resolve-permission-tool.js.map +1 -1
- package/dist/profile/index.d.ts +1 -1
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/profile/index.js.map +1 -1
- package/dist/profile/load-profile.d.ts.map +1 -1
- package/dist/profile/load-profile.js +19 -0
- package/dist/profile/load-profile.js.map +1 -1
- package/dist/profile/types.d.ts +7 -0
- package/dist/profile/types.d.ts.map +1 -1
- package/dist/profile/types.js.map +1 -1
- package/dist/prompt/modules/ensemble/base-module.d.ts.map +1 -1
- package/dist/prompt/modules/ensemble/base-module.js +2 -1
- package/dist/prompt/modules/ensemble/base-module.js.map +1 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.d.ts.map +1 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.js +4 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.js.map +1 -1
- package/dist/runtime/worker-session.d.ts +5 -0
- package/dist/runtime/worker-session.d.ts.map +1 -1
- package/dist/runtime/worker-session.js +5 -1
- package/dist/runtime/worker-session.js.map +1 -1
- package/dist/session/session-sidecar.d.ts +4 -0
- package/dist/session/session-sidecar.d.ts.map +1 -1
- package/dist/session/session-sidecar.js +16 -0
- package/dist/session/session-sidecar.js.map +1 -1
- package/dist/testing/mock-conductor-get-usage.d.ts +2 -1
- package/dist/testing/mock-conductor-get-usage.d.ts.map +1 -1
- package/dist/testing/mock-conductor-get-usage.js +1 -10
- package/dist/testing/mock-conductor-get-usage.js.map +1 -1
- package/dist/usage/enrich-session-usage-cost.d.ts +2 -2
- package/dist/usage/enrich-session-usage-cost.d.ts.map +1 -1
- package/dist/usage/session-usage-tracker.d.ts +2 -2
- package/dist/usage/session-usage-tracker.d.ts.map +1 -1
- package/dist/usage/session-usage-tracker.js +2 -2
- package/dist/usage/session-usage-tracker.js.map +1 -1
- package/dist/usage/types.d.ts +2 -2
- package/dist/usage/types.d.ts.map +1 -1
- package/dist/worktree/worktree.d.ts.map +1 -1
- package/dist/worktree/worktree.js +33 -16
- package/dist/worktree/worktree.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { AuthStorage, ModelRegistry, } from '@earendil-works/pi-coding-agent';
|
|
4
|
+
import { findEnvKeys, getEnvApiKey, } from '@earendil-works/pi-ai/compat';
|
|
5
|
+
import { loadPiResources, resolvePiResourceRoots, } from './pi-resource-loader.js';
|
|
6
|
+
/** Create the Pi credential store and model registry for the user root. */
|
|
7
|
+
export function createPiConductorAuthContext(options) {
|
|
8
|
+
const roots = resolvePiResourceRoots(options);
|
|
9
|
+
const authPath = join(roots.agentDir, 'auth.json');
|
|
10
|
+
const modelsPath = join(roots.agentDir, 'models.json');
|
|
11
|
+
const authStorage = AuthStorage.create(authPath);
|
|
12
|
+
return {
|
|
13
|
+
agentDir: roots.agentDir,
|
|
14
|
+
authPath,
|
|
15
|
+
modelsPath,
|
|
16
|
+
authStorage,
|
|
17
|
+
modelRegistry: ModelRegistry.create(authStorage, modelsPath),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** Resolve the provider used by `ensemble auth` from an explicit/default model. */
|
|
21
|
+
export async function resolvePiConductorProvider(options) {
|
|
22
|
+
const resources = await loadPiResources(options);
|
|
23
|
+
const context = createPiConductorAuthContext(options);
|
|
24
|
+
return resolvePiConductorProviderFromResources(options, resources, context);
|
|
25
|
+
}
|
|
26
|
+
/** Login to a Pi provider. API-key login persists only in the user auth file. */
|
|
27
|
+
export async function loginPiConductor(options) {
|
|
28
|
+
const resources = await loadPiResources(options);
|
|
29
|
+
const context = createPiConductorAuthContext(options);
|
|
30
|
+
const provider = resolveConductorProviderOrThrow(options, resources, context);
|
|
31
|
+
const oauthProvider = context.authStorage
|
|
32
|
+
.getOAuthProviders()
|
|
33
|
+
.some((candidate) => candidate.id === provider);
|
|
34
|
+
if (oauthProvider) {
|
|
35
|
+
if (!options.oauthCallbacks) {
|
|
36
|
+
throw new Error(`Pi provider "${provider}" uses OAuth. Run this command from a TTY so the OAuth login flow can interact with you.`);
|
|
37
|
+
}
|
|
38
|
+
await context.authStorage.login(provider, options.oauthCallbacks);
|
|
39
|
+
return {
|
|
40
|
+
backend: 'pi',
|
|
41
|
+
provider,
|
|
42
|
+
method: 'oauth',
|
|
43
|
+
authPath: context.authPath,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const apiKey = options.apiKey?.trim();
|
|
47
|
+
if (!apiKey) {
|
|
48
|
+
throw new Error(`Pi provider "${provider}" requires an API key. Pass a secret API-key prompt value or set ${formatPiProviderEnvHint(provider)}.`);
|
|
49
|
+
}
|
|
50
|
+
context.authStorage.set(provider, { type: 'api_key', key: apiKey });
|
|
51
|
+
return {
|
|
52
|
+
backend: 'pi',
|
|
53
|
+
provider,
|
|
54
|
+
method: 'api_key',
|
|
55
|
+
authPath: context.authPath,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Whether the selected Pi provider exposes Pi's native OAuth login flow. */
|
|
59
|
+
export async function isPiConductorOAuthProvider(options) {
|
|
60
|
+
const resources = await loadPiResources(options);
|
|
61
|
+
const context = createPiConductorAuthContext(options);
|
|
62
|
+
const provider = resolveConductorProviderOrThrow(options, resources, context);
|
|
63
|
+
return context.authStorage
|
|
64
|
+
.getOAuthProviders()
|
|
65
|
+
.some((candidate) => candidate.id === provider);
|
|
66
|
+
}
|
|
67
|
+
/** Remove a Pi provider's user-layer credential. */
|
|
68
|
+
export async function logoutPiConductor(options) {
|
|
69
|
+
const resources = await loadPiResources(options);
|
|
70
|
+
const context = createPiConductorAuthContext(options);
|
|
71
|
+
const provider = resolveConductorProviderOrThrow(options, resources, context);
|
|
72
|
+
context.authStorage.logout(provider);
|
|
73
|
+
return {
|
|
74
|
+
backend: 'pi',
|
|
75
|
+
provider,
|
|
76
|
+
authPath: context.authPath,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** Return non-secret Pi auth metadata for the selected/default provider. */
|
|
80
|
+
export async function getPiConductorAuthStatus(options) {
|
|
81
|
+
const resources = await loadPiResources(options);
|
|
82
|
+
const context = createPiConductorAuthContext(options);
|
|
83
|
+
const providers = resolveStatusProviders(options, resources, context);
|
|
84
|
+
return {
|
|
85
|
+
backend: 'pi',
|
|
86
|
+
authPath: context.authPath,
|
|
87
|
+
providers: providers.map((provider) => getPiProviderAuthStatus(provider, context, resources, options.env ?? process.env)),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** List only Pi models whose provider has usable configured auth. */
|
|
91
|
+
export async function listPiConductorModels(options = { cwd: process.cwd() }) {
|
|
92
|
+
const resources = await loadPiResources(options);
|
|
93
|
+
const context = createPiConductorAuthContext(options);
|
|
94
|
+
const requestedProvider = normalizeProvider(options.provider) ?? providerFromModelId(options.modelId);
|
|
95
|
+
const entries = new Map();
|
|
96
|
+
// ModelRegistry's fast `getAvailable()` only sees its user AuthStorage. The
|
|
97
|
+
// conductor also honors project auth.json, so filter the complete registry
|
|
98
|
+
// through the merged project-over-user auth view before listing models.
|
|
99
|
+
for (const model of context.modelRegistry.getAll()) {
|
|
100
|
+
if (requestedProvider && model.provider !== requestedProvider)
|
|
101
|
+
continue;
|
|
102
|
+
if (!hasPiProviderAuth(model.provider, context, resources, options.env ?? process.env)) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
addPiModelEntry(entries, model);
|
|
106
|
+
}
|
|
107
|
+
// ModelRegistry reads the user models.json. Project models remain governed by
|
|
108
|
+
// the existing resource loader, so add those merged definitions explicitly.
|
|
109
|
+
for (const [provider, config] of Object.entries(resources.models.providers)) {
|
|
110
|
+
if (requestedProvider && provider !== requestedProvider)
|
|
111
|
+
continue;
|
|
112
|
+
if (!hasPiProviderAuth(provider, context, resources, options.env ?? process.env)) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
for (const model of config.models ?? []) {
|
|
116
|
+
addPiCustomModelEntry(entries, provider, model);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const result = [...entries.values()].sort((left, right) => left.id.localeCompare(right.id));
|
|
120
|
+
if (result.length === 0) {
|
|
121
|
+
const providerHint = requestedProvider ? ` for provider "${requestedProvider}"` : '';
|
|
122
|
+
throw new Error(`No authenticated Pi models are available${providerHint}. ` +
|
|
123
|
+
`Run ensemble auth login --provider <provider>, set provider credentials in ${context.agentDir}, ` +
|
|
124
|
+
'or configure a provider environment variable.');
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
/** Resolve a key while retaining project-over-user auth precedence. */
|
|
129
|
+
export async function resolvePiConductorApiKey(options) {
|
|
130
|
+
const env = options.env ?? process.env;
|
|
131
|
+
if (options.explicitApiKey !== undefined)
|
|
132
|
+
return options.explicitApiKey;
|
|
133
|
+
// A project auth file intentionally remains above the user auth layer. When
|
|
134
|
+
// both roots point at the same file, AuthStorage is the canonical reader so
|
|
135
|
+
// OAuth refresh is not bypassed by the resource-layer compatibility parser.
|
|
136
|
+
if (options.resources.roots.agentDir !== options.resources.roots.projectDir) {
|
|
137
|
+
const projectEntry = options.resources.authLayers.at(-1)?.[options.provider];
|
|
138
|
+
if (isPiOAuthAuthEntry(projectEntry)) {
|
|
139
|
+
throw new Error(formatProjectOAuthAuthError(options.provider));
|
|
140
|
+
}
|
|
141
|
+
const projectKey = resolvePiAuthEntry(projectEntry, env);
|
|
142
|
+
if (projectKey !== undefined)
|
|
143
|
+
return projectKey;
|
|
144
|
+
}
|
|
145
|
+
const userStatus = options.authStorage.getAuthStatus(options.provider);
|
|
146
|
+
if (userStatus.source === 'stored' || userStatus.source === 'runtime') {
|
|
147
|
+
// AuthStorage owns OAuth refresh and locking. Keep this call dynamic per
|
|
148
|
+
// request rather than capturing its result during agent construction.
|
|
149
|
+
return options.authStorage.getApiKey(options.provider);
|
|
150
|
+
}
|
|
151
|
+
const settingsKey = resolvePiSettingsApiKey(options.resources.settings, options.provider, env);
|
|
152
|
+
if (settingsKey !== undefined)
|
|
153
|
+
return settingsKey;
|
|
154
|
+
const modelsKey = resolvePiModelsApiKey(options.resources.models.providers[options.provider], env);
|
|
155
|
+
if (modelsKey !== undefined)
|
|
156
|
+
return modelsKey;
|
|
157
|
+
return getEnvApiKey(options.provider, toProviderEnv(env));
|
|
158
|
+
}
|
|
159
|
+
/** Return whether a provider has configured auth without exposing its value. */
|
|
160
|
+
export function hasPiProviderAuth(provider, context, resources, env = process.env) {
|
|
161
|
+
const status = getPiProviderAuthStatus(provider, context, resources, env);
|
|
162
|
+
return status.configured;
|
|
163
|
+
}
|
|
164
|
+
/** Synchronous readiness check used by CLI/e2e guards before async loading. */
|
|
165
|
+
export function hasPiConductorAuth(options) {
|
|
166
|
+
const context = createPiConductorAuthContext(options);
|
|
167
|
+
const env = options.env ?? process.env;
|
|
168
|
+
const roots = resolvePiResourceRoots(options);
|
|
169
|
+
const projectAuth = readPiJsonSync(join(roots.projectDir, 'auth.json'));
|
|
170
|
+
const settings = readPiSettingsSync(roots);
|
|
171
|
+
const models = readPiModelsSync(roots);
|
|
172
|
+
const selection = resolvePiConductorSelectionSync(options, settings, models, context);
|
|
173
|
+
if (selection.provider) {
|
|
174
|
+
return hasPiProviderAuthSync({
|
|
175
|
+
provider: selection.provider,
|
|
176
|
+
context,
|
|
177
|
+
roots,
|
|
178
|
+
projectAuth,
|
|
179
|
+
settings,
|
|
180
|
+
models,
|
|
181
|
+
env,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// A configured model that cannot be mapped to one provider is not a
|
|
185
|
+
// usable conductor selection, even if another provider happens to have
|
|
186
|
+
// credentials.
|
|
187
|
+
if (selection.modelId)
|
|
188
|
+
return false;
|
|
189
|
+
return hasAnyPiConductorAuthSync({
|
|
190
|
+
context,
|
|
191
|
+
roots,
|
|
192
|
+
projectAuth,
|
|
193
|
+
settings,
|
|
194
|
+
models,
|
|
195
|
+
env,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Mirror PiConductorAgent's synchronous provider/model selection for guards.
|
|
200
|
+
* The async agent receives the same merged settings and model layers.
|
|
201
|
+
*/
|
|
202
|
+
function resolvePiConductorSelectionSync(options, settings, models, context) {
|
|
203
|
+
const requestedModel = normalizeModelId(options.modelId);
|
|
204
|
+
const configuredModel = normalizeModelId(firstString(settings.defaultModel, settings.model, settings.modelId));
|
|
205
|
+
const selectedModel = requestedModel ?? configuredModel;
|
|
206
|
+
let provider = normalizeProvider(options.provider);
|
|
207
|
+
let modelId = selectedModel;
|
|
208
|
+
if (selectedModel?.includes('/')) {
|
|
209
|
+
const separator = selectedModel.indexOf('/');
|
|
210
|
+
if (!provider) {
|
|
211
|
+
provider = normalizeProvider(selectedModel.slice(0, separator));
|
|
212
|
+
}
|
|
213
|
+
modelId = normalizeModelId(selectedModel.slice(separator + 1));
|
|
214
|
+
}
|
|
215
|
+
if (!provider)
|
|
216
|
+
provider = normalizeProvider(settings.defaultProvider);
|
|
217
|
+
if (!provider && modelId) {
|
|
218
|
+
const matches = new Set();
|
|
219
|
+
for (const model of context.modelRegistry.getAll()) {
|
|
220
|
+
if (model.id === modelId)
|
|
221
|
+
matches.add(model.provider);
|
|
222
|
+
}
|
|
223
|
+
for (const [candidate, config] of Object.entries(models.providers)) {
|
|
224
|
+
if (config.models?.some((model) => model.id === modelId)) {
|
|
225
|
+
matches.add(candidate);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (matches.size === 1)
|
|
229
|
+
provider = [...matches][0];
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
...(provider ? { provider } : {}),
|
|
233
|
+
...(modelId ? { modelId } : {}),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
function hasPiProviderAuthSync(options) {
|
|
237
|
+
const projectEntry = options.projectAuth?.[options.provider];
|
|
238
|
+
if (options.roots.agentDir !== options.roots.projectDir &&
|
|
239
|
+
isPiOAuthAuthEntry(projectEntry)) {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
if (resolvePiAuthEntry(projectEntry, options.env) !== undefined)
|
|
243
|
+
return true;
|
|
244
|
+
if (options.context.authStorage.has(options.provider))
|
|
245
|
+
return true;
|
|
246
|
+
// Keep readiness aligned with ModelRegistry, including command-backed or
|
|
247
|
+
// otherwise registry-native user models, while the explicit checks below
|
|
248
|
+
// honor the injected test/runtime environment.
|
|
249
|
+
if (options.context.modelRegistry
|
|
250
|
+
.getAvailable()
|
|
251
|
+
.some((model) => model.provider === options.provider)) {
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
if (resolvePiSettingsApiKey(options.settings, options.provider, options.env) !== undefined) {
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
if (resolvePiModelsApiKey(options.models.providers[options.provider], options.env) !== undefined) {
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
return getEnvApiKey(options.provider, toProviderEnv(options.env)) !== undefined;
|
|
261
|
+
}
|
|
262
|
+
function hasAnyPiConductorAuthSync(options) {
|
|
263
|
+
if (options.context.modelRegistry.getAvailable().length > 0)
|
|
264
|
+
return true;
|
|
265
|
+
const providers = new Set([
|
|
266
|
+
...options.context.authStorage.list(),
|
|
267
|
+
...options.context.modelRegistry.getAll().map((model) => model.provider),
|
|
268
|
+
...Object.keys(options.models.providers),
|
|
269
|
+
...Object.keys(options.projectAuth ?? {}),
|
|
270
|
+
...options.context.authStorage.getOAuthProviders().map((provider) => provider.id),
|
|
271
|
+
]);
|
|
272
|
+
for (const provider of providers) {
|
|
273
|
+
if (hasPiProviderAuthSync({ ...options, provider }))
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
if (typeof options.settings.apiKey === 'string' ||
|
|
277
|
+
(isRecord(options.settings.apiKeys) &&
|
|
278
|
+
Object.values(options.settings.apiKeys).some((entry) => typeof entry === 'string'))) {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
function readPiSettingsSync(roots) {
|
|
284
|
+
return mergePiRecords(readPiJsonSync(join(roots.agentDir, 'settings.json')) ?? {}, readPiJsonSync(join(roots.projectDir, 'settings.json')) ?? {});
|
|
285
|
+
}
|
|
286
|
+
function readPiModelsSync(roots) {
|
|
287
|
+
const merged = mergePiRecords(readPiJsonSync(join(roots.agentDir, 'models.json')) ?? {}, readPiJsonSync(join(roots.projectDir, 'models.json')) ?? {});
|
|
288
|
+
return {
|
|
289
|
+
providers: isRecord(merged.providers)
|
|
290
|
+
? merged.providers
|
|
291
|
+
: {},
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
function resolveConductorProviderOrThrow(options, resources, context) {
|
|
295
|
+
const provider = resolvePiConductorProviderFromResources(options, resources, context);
|
|
296
|
+
if (provider)
|
|
297
|
+
return provider;
|
|
298
|
+
throw new Error(`Pi provider is not configured. Set defaultProvider in ${join(context.agentDir, 'settings.json')} or pass --provider <id>.`);
|
|
299
|
+
}
|
|
300
|
+
function resolvePiConductorProviderFromResources(options, resources, context) {
|
|
301
|
+
const explicit = normalizeProvider(options.provider);
|
|
302
|
+
if (explicit)
|
|
303
|
+
return explicit;
|
|
304
|
+
const requestedModel = normalizeModelId(options.modelId);
|
|
305
|
+
const configuredModel = normalizeModelId(firstString(resources.settings.defaultModel, resources.settings.model, resources.settings.modelId));
|
|
306
|
+
const selectedModel = requestedModel ?? configuredModel;
|
|
307
|
+
if (selectedModel?.includes('/')) {
|
|
308
|
+
return selectedModel.slice(0, selectedModel.indexOf('/'));
|
|
309
|
+
}
|
|
310
|
+
const configuredProvider = normalizeProvider(resources.settings.defaultProvider);
|
|
311
|
+
if (configuredProvider)
|
|
312
|
+
return configuredProvider;
|
|
313
|
+
if (selectedModel) {
|
|
314
|
+
const matches = new Set();
|
|
315
|
+
for (const model of context.modelRegistry.getAll()) {
|
|
316
|
+
if (model.id === selectedModel)
|
|
317
|
+
matches.add(model.provider);
|
|
318
|
+
}
|
|
319
|
+
for (const [provider, config] of Object.entries(resources.models.providers)) {
|
|
320
|
+
if (config.models?.some((model) => model.id === selectedModel)) {
|
|
321
|
+
matches.add(provider);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (matches.size === 1)
|
|
325
|
+
return [...matches][0];
|
|
326
|
+
}
|
|
327
|
+
return '';
|
|
328
|
+
}
|
|
329
|
+
function resolveStatusProviders(options, resources, context) {
|
|
330
|
+
const explicit = normalizeProvider(options.provider);
|
|
331
|
+
if (explicit)
|
|
332
|
+
return [explicit];
|
|
333
|
+
const configured = resolvePiConductorProviderFromResources(options, resources, context);
|
|
334
|
+
if (configured)
|
|
335
|
+
return [configured];
|
|
336
|
+
const providers = new Set([
|
|
337
|
+
...context.authStorage.list(),
|
|
338
|
+
...context.modelRegistry.getAll().map((model) => model.provider),
|
|
339
|
+
...Object.keys(resources.models.providers),
|
|
340
|
+
...context.authStorage.getOAuthProviders().map((provider) => provider.id),
|
|
341
|
+
]);
|
|
342
|
+
return [...providers].sort();
|
|
343
|
+
}
|
|
344
|
+
function getPiProviderAuthStatus(provider, context, resources, env) {
|
|
345
|
+
if (resources.roots.agentDir !== resources.roots.projectDir) {
|
|
346
|
+
const projectEntry = resources.authLayers.at(-1)?.[provider];
|
|
347
|
+
if (isPiOAuthAuthEntry(projectEntry)) {
|
|
348
|
+
return {
|
|
349
|
+
provider,
|
|
350
|
+
configured: false,
|
|
351
|
+
source: 'project_oauth_unsupported',
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
const projectKey = resolvePiAuthEntry(projectEntry, env);
|
|
355
|
+
if (projectKey !== undefined) {
|
|
356
|
+
return { provider, configured: true, source: 'project_stored' };
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
const registryStatus = context.modelRegistry.getProviderAuthStatus(provider);
|
|
360
|
+
if (registryStatus.configured || registryStatus.source === 'stored') {
|
|
361
|
+
return normalizePiAuthStatus(provider, registryStatus, true);
|
|
362
|
+
}
|
|
363
|
+
const settingsKey = resolvePiSettingsApiKey(resources.settings, provider, env);
|
|
364
|
+
if (settingsKey !== undefined) {
|
|
365
|
+
return { provider, configured: true, source: 'settings_json' };
|
|
366
|
+
}
|
|
367
|
+
const modelsKey = resolvePiModelsApiKey(resources.models.providers[provider], env);
|
|
368
|
+
if (modelsKey !== undefined) {
|
|
369
|
+
return { provider, configured: true, source: 'models_json_key' };
|
|
370
|
+
}
|
|
371
|
+
const envKey = getEnvApiKey(provider, toProviderEnv(env));
|
|
372
|
+
if (envKey !== undefined) {
|
|
373
|
+
return {
|
|
374
|
+
provider,
|
|
375
|
+
configured: true,
|
|
376
|
+
source: 'environment',
|
|
377
|
+
label: formatPiProviderEnvHint(provider),
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
return normalizePiAuthStatus(provider, registryStatus, false);
|
|
381
|
+
}
|
|
382
|
+
function normalizePiAuthStatus(provider, status, configured) {
|
|
383
|
+
return {
|
|
384
|
+
provider,
|
|
385
|
+
configured,
|
|
386
|
+
...(status.source ? { source: status.source } : {}),
|
|
387
|
+
...(status.label ? { label: status.label } : {}),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function addPiModelEntry(entries, model) {
|
|
391
|
+
const id = `${model.provider}/${model.id}`;
|
|
392
|
+
entries.set(id, {
|
|
393
|
+
id,
|
|
394
|
+
displayName: model.name || model.id,
|
|
395
|
+
provider: model.provider,
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
function addPiCustomModelEntry(entries, provider, model) {
|
|
399
|
+
const id = `${provider}/${model.id}`;
|
|
400
|
+
entries.set(id, {
|
|
401
|
+
id,
|
|
402
|
+
displayName: model.name ?? model.id,
|
|
403
|
+
provider,
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
function resolvePiAuthEntry(entry, env) {
|
|
407
|
+
if (typeof entry === 'string')
|
|
408
|
+
return expandEnvReference(entry, env);
|
|
409
|
+
if (!isRecord(entry))
|
|
410
|
+
return undefined;
|
|
411
|
+
if (isPiOAuthAuthEntry(entry))
|
|
412
|
+
return undefined;
|
|
413
|
+
for (const key of ['key', 'apiKey', 'token', 'accessToken', 'access']) {
|
|
414
|
+
const value = entry[key];
|
|
415
|
+
if (typeof value === 'string')
|
|
416
|
+
return expandEnvReference(value, env);
|
|
417
|
+
}
|
|
418
|
+
return undefined;
|
|
419
|
+
}
|
|
420
|
+
function isPiOAuthAuthEntry(entry) {
|
|
421
|
+
return isRecord(entry) && entry.type === 'oauth';
|
|
422
|
+
}
|
|
423
|
+
function formatProjectOAuthAuthError(provider) {
|
|
424
|
+
return (`Project Pi OAuth credentials for provider "${provider}" are not supported in ` +
|
|
425
|
+
'project .ensemble/pi/auth.json because that layer cannot refresh them safely. ' +
|
|
426
|
+
`Run ensemble auth login --provider ${provider} to store the credential in the user AuthStorage.`);
|
|
427
|
+
}
|
|
428
|
+
function resolvePiSettingsApiKey(settings, provider, env) {
|
|
429
|
+
if (typeof settings.apiKey === 'string') {
|
|
430
|
+
return expandEnvReference(settings.apiKey, env);
|
|
431
|
+
}
|
|
432
|
+
if (!isRecord(settings.apiKeys))
|
|
433
|
+
return undefined;
|
|
434
|
+
const value = settings.apiKeys[provider];
|
|
435
|
+
return typeof value === 'string' ? expandEnvReference(value, env) : undefined;
|
|
436
|
+
}
|
|
437
|
+
function resolvePiModelsApiKey(providerConfig, env) {
|
|
438
|
+
return providerConfig?.apiKey
|
|
439
|
+
? expandEnvReference(providerConfig.apiKey, env)
|
|
440
|
+
: undefined;
|
|
441
|
+
}
|
|
442
|
+
function expandEnvReference(value, env) {
|
|
443
|
+
if (value.startsWith('!'))
|
|
444
|
+
return undefined;
|
|
445
|
+
const variable = /^\$\{([^}]+)\}$/.exec(value) ?? /^\$([A-Za-z_][A-Za-z0-9_]*)$/.exec(value);
|
|
446
|
+
return variable ? env[variable[1]] : value;
|
|
447
|
+
}
|
|
448
|
+
function toProviderEnv(env) {
|
|
449
|
+
return Object.fromEntries(Object.entries(env).filter((entry) => typeof entry[1] === 'string'));
|
|
450
|
+
}
|
|
451
|
+
function normalizeProvider(value) {
|
|
452
|
+
if (typeof value !== 'string')
|
|
453
|
+
return undefined;
|
|
454
|
+
const normalized = value.trim();
|
|
455
|
+
return normalized && normalized !== 'default' && normalized !== 'auto'
|
|
456
|
+
? normalized
|
|
457
|
+
: undefined;
|
|
458
|
+
}
|
|
459
|
+
function normalizeModelId(value) {
|
|
460
|
+
if (typeof value !== 'string')
|
|
461
|
+
return undefined;
|
|
462
|
+
const normalized = value.trim();
|
|
463
|
+
return normalized && normalized !== 'default' && normalized !== 'auto'
|
|
464
|
+
? normalized
|
|
465
|
+
: undefined;
|
|
466
|
+
}
|
|
467
|
+
function providerFromModelId(value) {
|
|
468
|
+
const modelId = normalizeModelId(value);
|
|
469
|
+
if (!modelId?.includes('/'))
|
|
470
|
+
return undefined;
|
|
471
|
+
return normalizeProvider(modelId.slice(0, modelId.indexOf('/')));
|
|
472
|
+
}
|
|
473
|
+
function firstString(...values) {
|
|
474
|
+
for (const value of values) {
|
|
475
|
+
if (typeof value !== 'string')
|
|
476
|
+
continue;
|
|
477
|
+
const normalized = value.trim();
|
|
478
|
+
if (normalized && normalized !== 'default' && normalized !== 'auto')
|
|
479
|
+
return normalized;
|
|
480
|
+
}
|
|
481
|
+
return undefined;
|
|
482
|
+
}
|
|
483
|
+
/** Return the concrete environment variables recognised by Pi for a provider. */
|
|
484
|
+
export function formatPiProviderEnvHint(provider) {
|
|
485
|
+
// `findEnvKeys` normally reports only variables that are currently set. A
|
|
486
|
+
// truthy probe lets the SDK expose its existing provider mapping even for a
|
|
487
|
+
// missing credential, which is the case where this recovery hint is used.
|
|
488
|
+
const envKeys = findEnvKeys(provider, PI_ENV_HINT_PROBE);
|
|
489
|
+
if (envKeys)
|
|
490
|
+
return envKeys.join(' / ');
|
|
491
|
+
if (provider === 'google-vertex') {
|
|
492
|
+
return 'GOOGLE_APPLICATION_CREDENTIALS / GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION';
|
|
493
|
+
}
|
|
494
|
+
if (provider === 'amazon-bedrock') {
|
|
495
|
+
return ('AWS_PROFILE / AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY / ' +
|
|
496
|
+
'AWS_BEARER_TOKEN_BEDROCK');
|
|
497
|
+
}
|
|
498
|
+
return `${provider.toUpperCase().replace(/[^A-Z0-9]+/g, '_')}_API_KEY`;
|
|
499
|
+
}
|
|
500
|
+
const PI_ENV_HINT_PROBE = new Proxy({}, { get: (_target, property) => (typeof property === 'string' ? 'configured' : undefined) });
|
|
501
|
+
function isRecord(value) {
|
|
502
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
503
|
+
}
|
|
504
|
+
function readPiJsonSync(path) {
|
|
505
|
+
try {
|
|
506
|
+
const value = JSON.parse(readFileSync(path, 'utf8'));
|
|
507
|
+
return isRecord(value) ? value : undefined;
|
|
508
|
+
}
|
|
509
|
+
catch {
|
|
510
|
+
return undefined;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
function mergePiRecords(base, override) {
|
|
514
|
+
const merged = { ...base };
|
|
515
|
+
for (const [key, value] of Object.entries(override)) {
|
|
516
|
+
const previous = merged[key];
|
|
517
|
+
merged[key] =
|
|
518
|
+
isRecord(previous) && isRecord(value)
|
|
519
|
+
? mergePiRecords(previous, value)
|
|
520
|
+
: value;
|
|
521
|
+
}
|
|
522
|
+
return merged;
|
|
523
|
+
}
|
|
524
|
+
//# sourceMappingURL=conductor-pi-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conductor-pi-auth.js","sourceRoot":"","sources":["../../src/conductor/conductor-pi-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConductorAgent, type
|
|
1
|
+
import { type ConductorAgent, type ConductorAgentCreateOptions, type ConductorAgentFactory, type ConductorSendCallbacks, type ConductorSendResult } from './conductor-agent.js';
|
|
2
2
|
/** セッション中に `ConductorAgent` インスタンスを差し替え可能にする holder。 */
|
|
3
3
|
export interface ConductorAgentHandle {
|
|
4
4
|
conductor: ConductorAgent;
|
|
@@ -14,12 +14,16 @@ export interface ConductorReconnectCallbacks {
|
|
|
14
14
|
}) => void;
|
|
15
15
|
onReconnectComplete?: (input: ConductorReconnectCompleteInfo) => void;
|
|
16
16
|
}
|
|
17
|
-
/** Direct な
|
|
18
|
-
export type ConductorReconnectOptions = (
|
|
19
|
-
|
|
17
|
+
/** Direct な options と `conductorOptions` wrapper の両方を受け付ける。 */
|
|
18
|
+
export type ConductorReconnectOptions = (ConductorAgentCreateOptions & ConductorReconnectCallbacks & {
|
|
19
|
+
conductorAgentFactory: ConductorAgentFactory;
|
|
20
|
+
}) | ({
|
|
21
|
+
conductorOptions: ConductorAgentCreateOptions;
|
|
22
|
+
conductorAgentFactory: ConductorAgentFactory;
|
|
20
23
|
} & ConductorReconnectCallbacks);
|
|
21
24
|
export interface ConductorSendReconnectOptions extends ConductorReconnectCallbacks {
|
|
22
|
-
conductorOptions:
|
|
25
|
+
conductorOptions: ConductorAgentCreateOptions;
|
|
26
|
+
conductorAgentFactory: ConductorAgentFactory;
|
|
23
27
|
/** 後方互換用。指定時は auth/transport 両方の attempt に使う。 */
|
|
24
28
|
onReconnectAttempt?: (input: {
|
|
25
29
|
agentId: string;
|
|
@@ -33,7 +37,7 @@ export interface ConductorSendReconnectOptions extends ConductorReconnectCallbac
|
|
|
33
37
|
onAuthReconnectComplete?: (input: ConductorReconnectCompleteInfo) => void;
|
|
34
38
|
onTransportReconnectComplete?: (input: ConductorReconnectCompleteInfo) => void;
|
|
35
39
|
}
|
|
36
|
-
/** close →
|
|
40
|
+
/** close → factory.resume(sameId) で in-process の agent を差し替える。 */
|
|
37
41
|
export declare function reconnectConductorAgent(handle: ConductorAgentHandle, options: ConductorReconnectOptions): Promise<string>;
|
|
38
42
|
/**
|
|
39
43
|
* SDK の RetriableError / transport stall 相当の send 結果かを保守的に判定する。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conductor-send-reconnect.d.ts","sourceRoot":"","sources":["../../src/conductor/conductor-send-reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"conductor-send-reconnect.d.ts","sourceRoot":"","sources":["../../src/conductor/conductor-send-reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAG9B,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,IAAI,CAAC;CACvE;AAED,+DAA+D;AAC/D,MAAM,MAAM,yBAAyB,GACjC,CAAC,2BAA2B,GAC1B,2BAA2B,GAAG;IAC5B,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,CAAC,GACJ,CAAC;IACC,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,GAAG,2BAA2B,CAAC,CAAC;AAErC,MAAM,WAAW,6BACf,SAAQ,2BAA2B;IACnC,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1D,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAC1E,4BAA4B,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,IAAI,CAAC;CAChF;AAED,kEAAkE;AAClE,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAWT;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,GAC9D,OAAO,CAAC,mBAAmB,CAAC,CA0B9B"}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import { ConductorAgent, } from './conductor-agent.js';
|
|
2
1
|
import { isConductorSendAuthError } from './conductor-auth.js';
|
|
3
|
-
/** close →
|
|
2
|
+
/** close → factory.resume(sameId) で in-process の agent を差し替える。 */
|
|
4
3
|
export async function reconnectConductorAgent(handle, options) {
|
|
5
4
|
const agentId = handle.conductor.agentId;
|
|
6
5
|
options.onReconnectAttempt?.({ agentId });
|
|
7
6
|
let conductorOptions;
|
|
7
|
+
const conductorAgentFactory = options.conductorAgentFactory;
|
|
8
8
|
if ('conductorOptions' in options) {
|
|
9
9
|
conductorOptions = options.conductorOptions;
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
const { onReconnectAttempt, onReconnectComplete, ...sdkOptions } = options;
|
|
12
|
+
const { onReconnectAttempt, onReconnectComplete, conductorAgentFactory: _conductorAgentFactory, ...sdkOptions } = options;
|
|
13
13
|
void onReconnectAttempt;
|
|
14
14
|
void onReconnectComplete;
|
|
15
|
+
void _conductorAgentFactory;
|
|
15
16
|
conductorOptions = sdkOptions;
|
|
16
17
|
}
|
|
17
18
|
try {
|
|
18
19
|
await handle.conductor.close();
|
|
19
|
-
handle.conductor = await
|
|
20
|
+
handle.conductor = await conductorAgentFactory.resume(agentId, conductorOptions);
|
|
20
21
|
options.onReconnectComplete?.({ agentId, success: true });
|
|
21
22
|
return agentId;
|
|
22
23
|
}
|
|
@@ -61,6 +62,7 @@ export async function sendConductorWithReconnect(handle, message, options) {
|
|
|
61
62
|
}
|
|
62
63
|
try {
|
|
63
64
|
await reconnectConductorAgent(handle, {
|
|
65
|
+
conductorAgentFactory: options.conductorAgentFactory,
|
|
64
66
|
conductorOptions: options.conductorOptions,
|
|
65
67
|
onReconnectAttempt: resolveReconnectAttempt(options, reconnectReason),
|
|
66
68
|
onReconnectComplete: resolveReconnectComplete(options, reconnectReason),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conductor-send-reconnect.js","sourceRoot":"","sources":["../../src/conductor/conductor-send-reconnect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conductor-send-reconnect.js","sourceRoot":"","sources":["../../src/conductor/conductor-send-reconnect.ts"],"names":[],"mappings":"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"}
|