@openscout/scout 0.2.39 → 0.2.40
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/control-plane-client/assets/arc.es-C-s36DjK.js +188 -0
- package/dist/control-plane-client/assets/index--5UC57U9.css +1 -0
- package/dist/control-plane-client/assets/index-B2VbvZaM.js +9 -0
- package/dist/control-plane-client/index.html +2 -2
- package/dist/main.mjs +32 -22
- package/dist/pair-supervisor.mjs +16 -13
- package/dist/scout-control-plane-web.mjs +16 -13
- package/dist/scout-web-server.mjs +30 -24
- package/package.json +2 -2
- package/dist/control-plane-client/assets/index-CafSuiif.js +0 -9
- package/dist/control-plane-client/assets/index-X47yO2a-.css +0 -1
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&family=Spectral:wght@500;600&display=swap" rel="stylesheet" />
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-B2VbvZaM.js"></script>
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index--5UC57U9.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
package/dist/main.mjs
CHANGED
|
@@ -757,7 +757,7 @@ function diagnoseAgentIdentity(identity, candidates) {
|
|
|
757
757
|
}
|
|
758
758
|
return { kind: "ambiguous", candidates: matches };
|
|
759
759
|
}
|
|
760
|
-
var DIMENSION_ALIASES, normalizeAgentSelectorSegment, SCOUT_DISPATCHER_AGENT_ID = "scout", RESERVED_AGENT_DEFINITION_IDS, parseAgentSelector, formatAgentSelector, extractAgentSelectors, resolveAgentSelector;
|
|
760
|
+
var DIMENSION_ALIASES, normalizeAgentSelectorSegment, SCOUT_DISPATCHER_AGENT_ID = "scout", BUILT_IN_AGENT_DEFINITION_IDS, RESERVED_AGENT_DEFINITION_IDS, parseAgentSelector, formatAgentSelector, extractAgentSelectors, resolveAgentSelector;
|
|
761
761
|
var init_agent_identity = __esm(() => {
|
|
762
762
|
DIMENSION_ALIASES = {
|
|
763
763
|
workspace: "workspace",
|
|
@@ -771,6 +771,12 @@ var init_agent_identity = __esm(() => {
|
|
|
771
771
|
host: "node"
|
|
772
772
|
};
|
|
773
773
|
normalizeAgentSelectorSegment = normalizeAgentIdentitySegment;
|
|
774
|
+
BUILT_IN_AGENT_DEFINITION_IDS = new Set([
|
|
775
|
+
SCOUT_DISPATCHER_AGENT_ID,
|
|
776
|
+
"builder",
|
|
777
|
+
"reviewer",
|
|
778
|
+
"research"
|
|
779
|
+
]);
|
|
774
780
|
RESERVED_AGENT_DEFINITION_IDS = new Set([
|
|
775
781
|
SCOUT_DISPATCHER_AGENT_ID
|
|
776
782
|
]);
|
|
@@ -3577,7 +3583,7 @@ async function readRelayAgentOverrides() {
|
|
|
3577
3583
|
return Object.fromEntries(Object.entries(agents).map(([agentId, record]) => {
|
|
3578
3584
|
const definitionId = normalizeAgentId(record.definitionId || record.agentId || agentId);
|
|
3579
3585
|
const projectRoot = normalizePath(record.projectRoot);
|
|
3580
|
-
const concreteAgentId =
|
|
3586
|
+
const concreteAgentId = buildRelayAgentInstance(definitionId, projectRoot).id;
|
|
3581
3587
|
const defaultHarness = normalizeManagedHarness(typeof record.defaultHarness === "string" ? record.defaultHarness : record.runtime?.harness, "claude");
|
|
3582
3588
|
const harnessProfiles = buildHarnessProfiles({
|
|
3583
3589
|
projectRoot,
|
|
@@ -3612,7 +3618,7 @@ async function writeRelayAgentOverrides(overrides) {
|
|
|
3612
3618
|
const normalizedAgents = Object.fromEntries(Object.entries(overrides).map(([agentId, record]) => {
|
|
3613
3619
|
const definitionId = normalizeAgentId(record.definitionId || record.agentId || agentId);
|
|
3614
3620
|
const projectRoot = normalizePath(record.projectRoot);
|
|
3615
|
-
const concreteAgentId =
|
|
3621
|
+
const concreteAgentId = buildRelayAgentInstance(definitionId, projectRoot).id;
|
|
3616
3622
|
const defaultHarness = normalizeManagedHarness(typeof record.defaultHarness === "string" ? record.defaultHarness : record.runtime?.harness, "claude");
|
|
3617
3623
|
const harnessProfiles = buildHarnessProfiles({
|
|
3618
3624
|
projectRoot,
|
|
@@ -4190,14 +4196,14 @@ async function loadResolvedRelayAgents(options = {}) {
|
|
|
4190
4196
|
const manifest = await readProjectConfig(projectRoot);
|
|
4191
4197
|
const override = overrideByRoot.get(projectRoot);
|
|
4192
4198
|
const resolvedAgent = manifest ? await resolveManifestBackedAgent(projectRoot, manifest, settings, override) : await resolveInferredAgent(projectRoot, settings, override);
|
|
4193
|
-
if (!resolvedAgent.agentId ||
|
|
4199
|
+
if (!resolvedAgent.agentId || BUILT_IN_AGENT_DEFINITION_IDS.has(resolvedAgent.definitionId)) {
|
|
4194
4200
|
continue;
|
|
4195
4201
|
}
|
|
4196
4202
|
resolvedAgents.push(resolvedAgent);
|
|
4197
4203
|
}
|
|
4198
4204
|
const dedupedResolvedAgents = await dedupeResolvedAgentsByCanonicalProjectRoot(resolvedAgents);
|
|
4199
4205
|
const configuredAgents = dedupedResolvedAgents.filter((agent) => agent.registrationKind === "configured");
|
|
4200
|
-
const builtInOverrides = Object.fromEntries(Object.entries(overrides).filter(([
|
|
4206
|
+
const builtInOverrides = Object.fromEntries(Object.entries(overrides).filter(([, record]) => record.definitionId ? BUILT_IN_AGENT_DEFINITION_IDS.has(record.definitionId) : false));
|
|
4201
4207
|
const nextOverrides = {
|
|
4202
4208
|
...builtInOverrides,
|
|
4203
4209
|
...Object.fromEntries(configuredAgents.map((agent) => [
|
|
@@ -4289,11 +4295,12 @@ async function ensureRelayAgentConfigured(value, options = {}) {
|
|
|
4289
4295
|
async function ensureScoutRelayAgentConfigured(options = {}) {
|
|
4290
4296
|
const settings = await readOpenScoutSettings({ currentDirectory: options.currentDirectory });
|
|
4291
4297
|
const overrides = await readRelayAgentOverrides();
|
|
4292
|
-
const existing = overrides[SCOUT_AGENT_ID];
|
|
4293
4298
|
const resolvedProjectRoot = options.projectRoot ? normalizePath(options.projectRoot) : options.currentDirectory ? await findNearestProjectRoot(options.currentDirectory) ?? normalizePath(options.currentDirectory) : normalizePath(process.cwd());
|
|
4299
|
+
const qualifiedAgentId = buildRelayAgentInstance(SCOUT_AGENT_ID, resolvedProjectRoot).id;
|
|
4300
|
+
const existing = overrides[qualifiedAgentId] ?? overrides[SCOUT_AGENT_ID];
|
|
4294
4301
|
const nextOverride = {
|
|
4295
4302
|
...existing,
|
|
4296
|
-
agentId:
|
|
4303
|
+
agentId: qualifiedAgentId,
|
|
4297
4304
|
definitionId: SCOUT_AGENT_ID,
|
|
4298
4305
|
displayName: "Scout",
|
|
4299
4306
|
projectName: "OpenScout",
|
|
@@ -4306,7 +4313,7 @@ async function ensureScoutRelayAgentConfigured(options = {}) {
|
|
|
4306
4313
|
defaultHarness: "claude",
|
|
4307
4314
|
harnessProfiles: buildHarnessProfiles({
|
|
4308
4315
|
projectRoot: resolvedProjectRoot,
|
|
4309
|
-
sessionKey:
|
|
4316
|
+
sessionKey: qualifiedAgentId,
|
|
4310
4317
|
sessionPrefix: settings.agents.sessionPrefix,
|
|
4311
4318
|
defaultHarness: "claude",
|
|
4312
4319
|
profiles: existing?.harnessProfiles,
|
|
@@ -4322,8 +4329,11 @@ async function ensureScoutRelayAgentConfigured(options = {}) {
|
|
|
4322
4329
|
}
|
|
4323
4330
|
};
|
|
4324
4331
|
nextOverride.launchArgs = nextOverride.harnessProfiles?.claude?.launchArgs ?? [];
|
|
4325
|
-
if (
|
|
4326
|
-
overrides[SCOUT_AGENT_ID]
|
|
4332
|
+
if (overrides[SCOUT_AGENT_ID]) {
|
|
4333
|
+
delete overrides[SCOUT_AGENT_ID];
|
|
4334
|
+
}
|
|
4335
|
+
if (JSON.stringify(overrides[qualifiedAgentId]) !== JSON.stringify(nextOverride)) {
|
|
4336
|
+
overrides[qualifiedAgentId] = nextOverride;
|
|
4327
4337
|
await writeRelayAgentOverrides(overrides);
|
|
4328
4338
|
}
|
|
4329
4339
|
return nextOverride;
|
|
@@ -4335,7 +4345,7 @@ async function initializeOpenScoutSetup(options = {}) {
|
|
|
4335
4345
|
syncLegacyMirror: true
|
|
4336
4346
|
});
|
|
4337
4347
|
}
|
|
4338
|
-
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1,
|
|
4348
|
+
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1, PROJECT_SCAN_SKIP_DIRECTORIES, PROJECT_STRONG_MARKERS, PROJECT_WEAK_MARKERS, PROJECT_HARNESS_MARKERS, PROJECT_STRONG_MARKERS_FLAT_NESTED, PROJECT_WEAK_MARKERS_FLAT_NESTED, GIT_BRANCH_CACHE_TTL_MS = 15000, gitBranchCache, SCOUT_SKILL_FILE_NAME = "SKILL.md", SETUP_MODULE_DIRECTORY, SCOUT_SKILL_REPO_ROOT, SCOUT_SKILL_INSTALL_PATHS, PROJECT_SCAN_MAX_DEPTH = 64;
|
|
4339
4349
|
var init_setup = __esm(() => {
|
|
4340
4350
|
init_dist();
|
|
4341
4351
|
init_src();
|
|
@@ -4346,7 +4356,6 @@ var init_setup = __esm(() => {
|
|
|
4346
4356
|
DEFAULT_OPERATOR_NAME = guessedOperatorName();
|
|
4347
4357
|
DEFAULT_CAPABILITIES = ["chat", "invoke", "deliver"];
|
|
4348
4358
|
DEFAULT_TELEGRAM_CONVERSATION_ID = SCOUT_PRIMARY_CONVERSATION_ID;
|
|
4349
|
-
BUILT_IN_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
4350
4359
|
PROJECT_SCAN_SKIP_DIRECTORIES = new Set([
|
|
4351
4360
|
".git",
|
|
4352
4361
|
".hg",
|
|
@@ -7075,7 +7084,7 @@ async function resolveLocalAgentByName(name) {
|
|
|
7075
7084
|
return null;
|
|
7076
7085
|
const overrides = await readRelayAgentOverrides();
|
|
7077
7086
|
for (const [id, override] of Object.entries(overrides)) {
|
|
7078
|
-
if (
|
|
7087
|
+
if (BUILT_IN_AGENT_DEFINITION_IDS.has(id))
|
|
7079
7088
|
continue;
|
|
7080
7089
|
const defId = override.definitionId ?? id;
|
|
7081
7090
|
if (defId === normalized || normalizeAgentSelectorSegment(override.projectName ?? "") === normalized) {
|
|
@@ -7086,7 +7095,7 @@ async function resolveLocalAgentByName(name) {
|
|
|
7086
7095
|
}
|
|
7087
7096
|
async function listLocalAgents(options = {}) {
|
|
7088
7097
|
const overrides = await readRelayAgentOverrides();
|
|
7089
|
-
return Object.entries(overrides).filter(([agentId]) => !
|
|
7098
|
+
return Object.entries(overrides).filter(([agentId]) => !BUILT_IN_AGENT_DEFINITION_IDS.has(agentId)).map(([agentId, override]) => localAgentStatusFromRecord(agentId, localAgentRecordFromRelayAgentOverride(agentId, override), localAgentStatusSource(agentId, overrides))).sort((lhs, rhs) => lhs.projectName.localeCompare(rhs.projectName) || lhs.agentId.localeCompare(rhs.agentId));
|
|
7090
7099
|
}
|
|
7091
7100
|
async function startLocalAgent(input) {
|
|
7092
7101
|
const projectPath = normalizeProjectPath(input.projectPath);
|
|
@@ -7101,7 +7110,7 @@ async function startLocalAgent(input) {
|
|
|
7101
7110
|
const findMatchForRoot = (root) => {
|
|
7102
7111
|
let fallback = null;
|
|
7103
7112
|
for (const [id, override] of Object.entries(overrides)) {
|
|
7104
|
-
if (
|
|
7113
|
+
if (BUILT_IN_AGENT_DEFINITION_IDS.has(id))
|
|
7105
7114
|
continue;
|
|
7106
7115
|
if (!override.projectRoot)
|
|
7107
7116
|
continue;
|
|
@@ -7397,7 +7406,7 @@ async function loadRegisteredLocalAgentBindings(nodeId, options = {}) {
|
|
|
7397
7406
|
return results;
|
|
7398
7407
|
}
|
|
7399
7408
|
async function inferLocalAgentBinding(agentId, nodeId) {
|
|
7400
|
-
if (!agentId ||
|
|
7409
|
+
if (!agentId || BUILT_IN_AGENT_DEFINITION_IDS.has(agentId)) {
|
|
7401
7410
|
return null;
|
|
7402
7411
|
}
|
|
7403
7412
|
const overrides = await readRelayAgentOverrides();
|
|
@@ -7420,7 +7429,7 @@ async function ensureLocalAgentBindingOnline(agentId, nodeId, options = {}) {
|
|
|
7420
7429
|
if (registeredBinding) {
|
|
7421
7430
|
return registeredBinding;
|
|
7422
7431
|
}
|
|
7423
|
-
if (
|
|
7432
|
+
if (BUILT_IN_AGENT_DEFINITION_IDS.has(agentId)) {
|
|
7424
7433
|
return null;
|
|
7425
7434
|
}
|
|
7426
7435
|
if (options.includeDiscovered) {
|
|
@@ -7523,7 +7532,7 @@ function shouldDisableGeneratedCodexEndpoint(endpoint) {
|
|
|
7523
7532
|
}
|
|
7524
7533
|
return endpoint.metadata?.source === "scout-app";
|
|
7525
7534
|
}
|
|
7526
|
-
var
|
|
7535
|
+
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude", SUPPORTED_LOCAL_AGENT_HARNESSES;
|
|
7527
7536
|
var init_local_agents = __esm(async () => {
|
|
7528
7537
|
init_src();
|
|
7529
7538
|
init_claude_stream_json();
|
|
@@ -7532,7 +7541,6 @@ var init_local_agents = __esm(async () => {
|
|
|
7532
7541
|
init_support_paths();
|
|
7533
7542
|
init_local_agent_template();
|
|
7534
7543
|
await init_broker_service();
|
|
7535
|
-
BUILT_IN_LOCAL_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
7536
7544
|
MODULE_DIRECTORY = dirname5(fileURLToPath4(import.meta.url));
|
|
7537
7545
|
OPENSCOUT_REPO_ROOT = resolve6(MODULE_DIRECTORY, "..", "..", "..");
|
|
7538
7546
|
DEFAULT_LOCAL_AGENT_CAPABILITIES = ["chat", "invoke", "deliver"];
|
|
@@ -8559,7 +8567,10 @@ function whoEntryState(endpoints, registrationKind) {
|
|
|
8559
8567
|
async function loadConfiguredAgentIds() {
|
|
8560
8568
|
try {
|
|
8561
8569
|
const overrides = await readRelayAgentOverrides();
|
|
8562
|
-
return new Set(Object.entries(overrides).filter(([agentId
|
|
8570
|
+
return new Set(Object.entries(overrides).filter(([agentId, record]) => {
|
|
8571
|
+
const defId = record.definitionId ?? agentId;
|
|
8572
|
+
return !BUILT_IN_AGENT_DEFINITION_IDS.has(defId);
|
|
8573
|
+
}).map(([agentId]) => agentId));
|
|
8563
8574
|
} catch {
|
|
8564
8575
|
return new Set;
|
|
8565
8576
|
}
|
|
@@ -8730,7 +8741,7 @@ function buildScoutEnrollmentPrompt(input) {
|
|
|
8730
8741
|
].filter((line) => Boolean(line)).join(`
|
|
8731
8742
|
`);
|
|
8732
8743
|
}
|
|
8733
|
-
var BROKER_SHARED_CHANNEL_ID = "channel.shared", BROKER_VOICE_CHANNEL_ID = "channel.voice", BROKER_SYSTEM_CHANNEL_ID = "channel.system", OPERATOR_ID = "operator", DEFAULT_BROKER_HOST2 = "127.0.0.1", DEFAULT_BROKER_PORT2 = 65535
|
|
8744
|
+
var BROKER_SHARED_CHANNEL_ID = "channel.shared", BROKER_VOICE_CHANNEL_ID = "channel.voice", BROKER_SYSTEM_CHANNEL_ID = "channel.system", OPERATOR_ID = "operator", DEFAULT_BROKER_HOST2 = "127.0.0.1", DEFAULT_BROKER_PORT2 = 65535;
|
|
8734
8745
|
var init_service = __esm(async () => {
|
|
8735
8746
|
init_src();
|
|
8736
8747
|
init_setup();
|
|
@@ -8738,7 +8749,6 @@ var init_service = __esm(async () => {
|
|
|
8738
8749
|
init_user_config();
|
|
8739
8750
|
init_paths();
|
|
8740
8751
|
await init_local_agents();
|
|
8741
|
-
BUILT_IN_SCOUT_AGENT_IDS = new Set([SCOUT_AGENT_ID, "builder", "reviewer", "research"]);
|
|
8742
8752
|
});
|
|
8743
8753
|
|
|
8744
8754
|
// ../../apps/desktop/src/cli/commands/ask.ts
|
package/dist/pair-supervisor.mjs
CHANGED
|
@@ -2303,7 +2303,7 @@ function diagnoseAgentIdentity(identity, candidates) {
|
|
|
2303
2303
|
}
|
|
2304
2304
|
return { kind: "ambiguous", candidates: matches };
|
|
2305
2305
|
}
|
|
2306
|
-
var DIMENSION_ALIASES, normalizeAgentSelectorSegment, SCOUT_DISPATCHER_AGENT_ID = "scout", RESERVED_AGENT_DEFINITION_IDS, parseAgentSelector, formatAgentSelector, resolveAgentSelector;
|
|
2306
|
+
var DIMENSION_ALIASES, normalizeAgentSelectorSegment, SCOUT_DISPATCHER_AGENT_ID = "scout", BUILT_IN_AGENT_DEFINITION_IDS, RESERVED_AGENT_DEFINITION_IDS, parseAgentSelector, formatAgentSelector, resolveAgentSelector;
|
|
2307
2307
|
var init_agent_identity = __esm(() => {
|
|
2308
2308
|
DIMENSION_ALIASES = {
|
|
2309
2309
|
workspace: "workspace",
|
|
@@ -2317,6 +2317,12 @@ var init_agent_identity = __esm(() => {
|
|
|
2317
2317
|
host: "node"
|
|
2318
2318
|
};
|
|
2319
2319
|
normalizeAgentSelectorSegment = normalizeAgentIdentitySegment;
|
|
2320
|
+
BUILT_IN_AGENT_DEFINITION_IDS = new Set([
|
|
2321
|
+
SCOUT_DISPATCHER_AGENT_ID,
|
|
2322
|
+
"builder",
|
|
2323
|
+
"reviewer",
|
|
2324
|
+
"research"
|
|
2325
|
+
]);
|
|
2320
2326
|
RESERVED_AGENT_DEFINITION_IDS = new Set([
|
|
2321
2327
|
SCOUT_DISPATCHER_AGENT_ID
|
|
2322
2328
|
]);
|
|
@@ -3616,7 +3622,7 @@ async function readRelayAgentOverrides() {
|
|
|
3616
3622
|
return Object.fromEntries(Object.entries(agents).map(([agentId, record]) => {
|
|
3617
3623
|
const definitionId = normalizeAgentId(record.definitionId || record.agentId || agentId);
|
|
3618
3624
|
const projectRoot = normalizePath(record.projectRoot);
|
|
3619
|
-
const concreteAgentId =
|
|
3625
|
+
const concreteAgentId = buildRelayAgentInstance(definitionId, projectRoot).id;
|
|
3620
3626
|
const defaultHarness = normalizeManagedHarness(typeof record.defaultHarness === "string" ? record.defaultHarness : record.runtime?.harness, "claude");
|
|
3621
3627
|
const harnessProfiles = buildHarnessProfiles({
|
|
3622
3628
|
projectRoot,
|
|
@@ -3651,7 +3657,7 @@ async function writeRelayAgentOverrides(overrides) {
|
|
|
3651
3657
|
const normalizedAgents = Object.fromEntries(Object.entries(overrides).map(([agentId, record]) => {
|
|
3652
3658
|
const definitionId = normalizeAgentId(record.definitionId || record.agentId || agentId);
|
|
3653
3659
|
const projectRoot = normalizePath(record.projectRoot);
|
|
3654
|
-
const concreteAgentId =
|
|
3660
|
+
const concreteAgentId = buildRelayAgentInstance(definitionId, projectRoot).id;
|
|
3655
3661
|
const defaultHarness = normalizeManagedHarness(typeof record.defaultHarness === "string" ? record.defaultHarness : record.runtime?.harness, "claude");
|
|
3656
3662
|
const harnessProfiles = buildHarnessProfiles({
|
|
3657
3663
|
projectRoot,
|
|
@@ -4229,14 +4235,14 @@ async function loadResolvedRelayAgents(options = {}) {
|
|
|
4229
4235
|
const manifest = await readProjectConfig(projectRoot);
|
|
4230
4236
|
const override = overrideByRoot.get(projectRoot);
|
|
4231
4237
|
const resolvedAgent = manifest ? await resolveManifestBackedAgent(projectRoot, manifest, settings, override) : await resolveInferredAgent(projectRoot, settings, override);
|
|
4232
|
-
if (!resolvedAgent.agentId ||
|
|
4238
|
+
if (!resolvedAgent.agentId || BUILT_IN_AGENT_DEFINITION_IDS.has(resolvedAgent.definitionId)) {
|
|
4233
4239
|
continue;
|
|
4234
4240
|
}
|
|
4235
4241
|
resolvedAgents.push(resolvedAgent);
|
|
4236
4242
|
}
|
|
4237
4243
|
const dedupedResolvedAgents = await dedupeResolvedAgentsByCanonicalProjectRoot(resolvedAgents);
|
|
4238
4244
|
const configuredAgents = dedupedResolvedAgents.filter((agent) => agent.registrationKind === "configured");
|
|
4239
|
-
const builtInOverrides = Object.fromEntries(Object.entries(overrides).filter(([
|
|
4245
|
+
const builtInOverrides = Object.fromEntries(Object.entries(overrides).filter(([, record]) => record.definitionId ? BUILT_IN_AGENT_DEFINITION_IDS.has(record.definitionId) : false));
|
|
4240
4246
|
const nextOverrides = {
|
|
4241
4247
|
...builtInOverrides,
|
|
4242
4248
|
...Object.fromEntries(configuredAgents.map((agent) => [
|
|
@@ -4325,7 +4331,7 @@ async function ensureRelayAgentConfigured(value, options = {}) {
|
|
|
4325
4331
|
registrationKind: "configured"
|
|
4326
4332
|
};
|
|
4327
4333
|
}
|
|
4328
|
-
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1,
|
|
4334
|
+
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1, PROJECT_SCAN_SKIP_DIRECTORIES, PROJECT_STRONG_MARKERS, PROJECT_WEAK_MARKERS, PROJECT_HARNESS_MARKERS, PROJECT_STRONG_MARKERS_FLAT_NESTED, PROJECT_WEAK_MARKERS_FLAT_NESTED, GIT_BRANCH_CACHE_TTL_MS = 15000, gitBranchCache, SCOUT_SKILL_FILE_NAME = "SKILL.md", SETUP_MODULE_DIRECTORY, SCOUT_SKILL_REPO_ROOT, SCOUT_SKILL_INSTALL_PATHS, PROJECT_SCAN_MAX_DEPTH = 64;
|
|
4329
4335
|
var init_setup = __esm(() => {
|
|
4330
4336
|
init_dist();
|
|
4331
4337
|
init_src();
|
|
@@ -4336,7 +4342,6 @@ var init_setup = __esm(() => {
|
|
|
4336
4342
|
DEFAULT_OPERATOR_NAME = guessedOperatorName();
|
|
4337
4343
|
DEFAULT_CAPABILITIES = ["chat", "invoke", "deliver"];
|
|
4338
4344
|
DEFAULT_TELEGRAM_CONVERSATION_ID = SCOUT_PRIMARY_CONVERSATION_ID;
|
|
4339
|
-
BUILT_IN_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
4340
4345
|
PROJECT_SCAN_SKIP_DIRECTORIES = new Set([
|
|
4341
4346
|
".git",
|
|
4342
4347
|
".hg",
|
|
@@ -6080,7 +6085,7 @@ async function startLocalAgent(input) {
|
|
|
6080
6085
|
const findMatchForRoot = (root) => {
|
|
6081
6086
|
let fallback = null;
|
|
6082
6087
|
for (const [id, override] of Object.entries(overrides)) {
|
|
6083
|
-
if (
|
|
6088
|
+
if (BUILT_IN_AGENT_DEFINITION_IDS.has(id))
|
|
6084
6089
|
continue;
|
|
6085
6090
|
if (!override.projectRoot)
|
|
6086
6091
|
continue;
|
|
@@ -6359,7 +6364,7 @@ async function loadRegisteredLocalAgentBindings(nodeId, options = {}) {
|
|
|
6359
6364
|
return results;
|
|
6360
6365
|
}
|
|
6361
6366
|
async function inferLocalAgentBinding(agentId, nodeId) {
|
|
6362
|
-
if (!agentId ||
|
|
6367
|
+
if (!agentId || BUILT_IN_AGENT_DEFINITION_IDS.has(agentId)) {
|
|
6363
6368
|
return null;
|
|
6364
6369
|
}
|
|
6365
6370
|
const overrides = await readRelayAgentOverrides();
|
|
@@ -6382,7 +6387,7 @@ async function ensureLocalAgentBindingOnline(agentId, nodeId, options = {}) {
|
|
|
6382
6387
|
if (registeredBinding) {
|
|
6383
6388
|
return registeredBinding;
|
|
6384
6389
|
}
|
|
6385
|
-
if (
|
|
6390
|
+
if (BUILT_IN_AGENT_DEFINITION_IDS.has(agentId)) {
|
|
6386
6391
|
return null;
|
|
6387
6392
|
}
|
|
6388
6393
|
if (options.includeDiscovered) {
|
|
@@ -6405,7 +6410,7 @@ async function ensureLocalAgentBindingOnline(agentId, nodeId, options = {}) {
|
|
|
6405
6410
|
const onlineRecord = await ensureLocalAgentOnline(agentId, recordForHarness(localAgentRecordFromRelayAgentOverride(agentId, override), options.harness));
|
|
6406
6411
|
return buildLocalAgentBinding(agentId, onlineRecord, isLocalAgentRecordOnline(agentId, onlineRecord), nodeId, "relay-agent-registry");
|
|
6407
6412
|
}
|
|
6408
|
-
var
|
|
6413
|
+
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude";
|
|
6409
6414
|
var init_local_agents = __esm(async () => {
|
|
6410
6415
|
init_src();
|
|
6411
6416
|
init_claude_stream_json();
|
|
@@ -6414,7 +6419,6 @@ var init_local_agents = __esm(async () => {
|
|
|
6414
6419
|
init_support_paths();
|
|
6415
6420
|
init_local_agent_template();
|
|
6416
6421
|
await init_broker_service();
|
|
6417
|
-
BUILT_IN_LOCAL_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
6418
6422
|
MODULE_DIRECTORY = dirname5(fileURLToPath4(import.meta.url));
|
|
6419
6423
|
OPENSCOUT_REPO_ROOT = resolve4(MODULE_DIRECTORY, "..", "..", "..");
|
|
6420
6424
|
DEFAULT_LOCAL_AGENT_CAPABILITIES = ["chat", "invoke", "deliver"];
|
|
@@ -12141,7 +12145,6 @@ var BROKER_SHARED_CHANNEL_ID = "channel.shared";
|
|
|
12141
12145
|
var OPERATOR_ID = "operator";
|
|
12142
12146
|
var DEFAULT_BROKER_HOST2 = "127.0.0.1";
|
|
12143
12147
|
var DEFAULT_BROKER_PORT2 = 65535;
|
|
12144
|
-
var BUILT_IN_SCOUT_AGENT_IDS = new Set([SCOUT_AGENT_ID, "builder", "reviewer", "research"]);
|
|
12145
12148
|
function buildScoutBrokerUrlFromEnv() {
|
|
12146
12149
|
const host = process.env.OPENSCOUT_BROKER_HOST ?? DEFAULT_BROKER_HOST2;
|
|
12147
12150
|
const port = Number.parseInt(process.env.OPENSCOUT_BROKER_PORT ?? String(DEFAULT_BROKER_PORT2), 10);
|
|
@@ -1232,7 +1232,7 @@ function diagnoseAgentIdentity(identity, candidates) {
|
|
|
1232
1232
|
}
|
|
1233
1233
|
return { kind: "ambiguous", candidates: matches };
|
|
1234
1234
|
}
|
|
1235
|
-
var DIMENSION_ALIASES, normalizeAgentSelectorSegment, SCOUT_DISPATCHER_AGENT_ID = "scout", RESERVED_AGENT_DEFINITION_IDS, parseAgentSelector, formatAgentSelector, extractAgentSelectors, resolveAgentSelector;
|
|
1235
|
+
var DIMENSION_ALIASES, normalizeAgentSelectorSegment, SCOUT_DISPATCHER_AGENT_ID = "scout", BUILT_IN_AGENT_DEFINITION_IDS, RESERVED_AGENT_DEFINITION_IDS, parseAgentSelector, formatAgentSelector, extractAgentSelectors, resolveAgentSelector;
|
|
1236
1236
|
var init_agent_identity = __esm(() => {
|
|
1237
1237
|
DIMENSION_ALIASES = {
|
|
1238
1238
|
workspace: "workspace",
|
|
@@ -1246,6 +1246,12 @@ var init_agent_identity = __esm(() => {
|
|
|
1246
1246
|
host: "node"
|
|
1247
1247
|
};
|
|
1248
1248
|
normalizeAgentSelectorSegment = normalizeAgentIdentitySegment;
|
|
1249
|
+
BUILT_IN_AGENT_DEFINITION_IDS = new Set([
|
|
1250
|
+
SCOUT_DISPATCHER_AGENT_ID,
|
|
1251
|
+
"builder",
|
|
1252
|
+
"reviewer",
|
|
1253
|
+
"research"
|
|
1254
|
+
]);
|
|
1249
1255
|
RESERVED_AGENT_DEFINITION_IDS = new Set([
|
|
1250
1256
|
SCOUT_DISPATCHER_AGENT_ID
|
|
1251
1257
|
]);
|
|
@@ -2693,7 +2699,7 @@ async function readRelayAgentOverrides() {
|
|
|
2693
2699
|
return Object.fromEntries(Object.entries(agents).map(([agentId, record]) => {
|
|
2694
2700
|
const definitionId = normalizeAgentId(record.definitionId || record.agentId || agentId);
|
|
2695
2701
|
const projectRoot = normalizePath(record.projectRoot);
|
|
2696
|
-
const concreteAgentId =
|
|
2702
|
+
const concreteAgentId = buildRelayAgentInstance(definitionId, projectRoot).id;
|
|
2697
2703
|
const defaultHarness = normalizeManagedHarness(typeof record.defaultHarness === "string" ? record.defaultHarness : record.runtime?.harness, "claude");
|
|
2698
2704
|
const harnessProfiles = buildHarnessProfiles({
|
|
2699
2705
|
projectRoot,
|
|
@@ -2728,7 +2734,7 @@ async function writeRelayAgentOverrides(overrides) {
|
|
|
2728
2734
|
const normalizedAgents = Object.fromEntries(Object.entries(overrides).map(([agentId, record]) => {
|
|
2729
2735
|
const definitionId = normalizeAgentId(record.definitionId || record.agentId || agentId);
|
|
2730
2736
|
const projectRoot = normalizePath(record.projectRoot);
|
|
2731
|
-
const concreteAgentId =
|
|
2737
|
+
const concreteAgentId = buildRelayAgentInstance(definitionId, projectRoot).id;
|
|
2732
2738
|
const defaultHarness = normalizeManagedHarness(typeof record.defaultHarness === "string" ? record.defaultHarness : record.runtime?.harness, "claude");
|
|
2733
2739
|
const harnessProfiles = buildHarnessProfiles({
|
|
2734
2740
|
projectRoot,
|
|
@@ -3306,14 +3312,14 @@ async function loadResolvedRelayAgents(options = {}) {
|
|
|
3306
3312
|
const manifest = await readProjectConfig(projectRoot);
|
|
3307
3313
|
const override = overrideByRoot.get(projectRoot);
|
|
3308
3314
|
const resolvedAgent = manifest ? await resolveManifestBackedAgent(projectRoot, manifest, settings, override) : await resolveInferredAgent(projectRoot, settings, override);
|
|
3309
|
-
if (!resolvedAgent.agentId ||
|
|
3315
|
+
if (!resolvedAgent.agentId || BUILT_IN_AGENT_DEFINITION_IDS.has(resolvedAgent.definitionId)) {
|
|
3310
3316
|
continue;
|
|
3311
3317
|
}
|
|
3312
3318
|
resolvedAgents.push(resolvedAgent);
|
|
3313
3319
|
}
|
|
3314
3320
|
const dedupedResolvedAgents = await dedupeResolvedAgentsByCanonicalProjectRoot(resolvedAgents);
|
|
3315
3321
|
const configuredAgents = dedupedResolvedAgents.filter((agent) => agent.registrationKind === "configured");
|
|
3316
|
-
const builtInOverrides = Object.fromEntries(Object.entries(overrides).filter(([
|
|
3322
|
+
const builtInOverrides = Object.fromEntries(Object.entries(overrides).filter(([, record]) => record.definitionId ? BUILT_IN_AGENT_DEFINITION_IDS.has(record.definitionId) : false));
|
|
3317
3323
|
const nextOverrides = {
|
|
3318
3324
|
...builtInOverrides,
|
|
3319
3325
|
...Object.fromEntries(configuredAgents.map((agent) => [
|
|
@@ -3402,7 +3408,7 @@ async function ensureRelayAgentConfigured(value, options = {}) {
|
|
|
3402
3408
|
registrationKind: "configured"
|
|
3403
3409
|
};
|
|
3404
3410
|
}
|
|
3405
|
-
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1,
|
|
3411
|
+
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1, PROJECT_SCAN_SKIP_DIRECTORIES, PROJECT_STRONG_MARKERS, PROJECT_WEAK_MARKERS, PROJECT_HARNESS_MARKERS, PROJECT_STRONG_MARKERS_FLAT_NESTED, PROJECT_WEAK_MARKERS_FLAT_NESTED, GIT_BRANCH_CACHE_TTL_MS = 15000, gitBranchCache, SCOUT_SKILL_FILE_NAME = "SKILL.md", SETUP_MODULE_DIRECTORY, SCOUT_SKILL_REPO_ROOT, SCOUT_SKILL_INSTALL_PATHS, PROJECT_SCAN_MAX_DEPTH = 64;
|
|
3406
3412
|
var init_setup = __esm(() => {
|
|
3407
3413
|
init_dist();
|
|
3408
3414
|
init_src();
|
|
@@ -3413,7 +3419,6 @@ var init_setup = __esm(() => {
|
|
|
3413
3419
|
DEFAULT_OPERATOR_NAME = guessedOperatorName();
|
|
3414
3420
|
DEFAULT_CAPABILITIES = ["chat", "invoke", "deliver"];
|
|
3415
3421
|
DEFAULT_TELEGRAM_CONVERSATION_ID = SCOUT_PRIMARY_CONVERSATION_ID;
|
|
3416
|
-
BUILT_IN_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
3417
3422
|
PROJECT_SCAN_SKIP_DIRECTORIES = new Set([
|
|
3418
3423
|
".git",
|
|
3419
3424
|
".hg",
|
|
@@ -5235,7 +5240,7 @@ function buildLocalAgentBinding(agentId, record, alive, nodeId, source) {
|
|
|
5235
5240
|
};
|
|
5236
5241
|
}
|
|
5237
5242
|
async function inferLocalAgentBinding(agentId, nodeId) {
|
|
5238
|
-
if (!agentId ||
|
|
5243
|
+
if (!agentId || BUILT_IN_AGENT_DEFINITION_IDS.has(agentId)) {
|
|
5239
5244
|
return null;
|
|
5240
5245
|
}
|
|
5241
5246
|
const overrides = await readRelayAgentOverrides();
|
|
@@ -5246,7 +5251,7 @@ async function inferLocalAgentBinding(agentId, nodeId) {
|
|
|
5246
5251
|
const record = localAgentRecordFromRelayAgentOverride(agentId, override);
|
|
5247
5252
|
return buildLocalAgentBinding(agentId, record, isLocalAgentRecordOnline(agentId, record), nodeId, "relay-agent-registry");
|
|
5248
5253
|
}
|
|
5249
|
-
var
|
|
5254
|
+
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude";
|
|
5250
5255
|
var init_local_agents = __esm(async () => {
|
|
5251
5256
|
init_src();
|
|
5252
5257
|
init_claude_stream_json();
|
|
@@ -5255,7 +5260,6 @@ var init_local_agents = __esm(async () => {
|
|
|
5255
5260
|
init_support_paths();
|
|
5256
5261
|
init_local_agent_template();
|
|
5257
5262
|
await init_broker_service();
|
|
5258
|
-
BUILT_IN_LOCAL_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
5259
5263
|
MODULE_DIRECTORY = dirname6(fileURLToPath5(import.meta.url));
|
|
5260
5264
|
OPENSCOUT_REPO_ROOT = resolve5(MODULE_DIRECTORY, "..", "..", "..");
|
|
5261
5265
|
DEFAULT_LOCAL_AGENT_CAPABILITIES = ["chat", "invoke", "deliver"];
|
|
@@ -7563,6 +7567,7 @@ async function controlScoutDesktopPairingService(action, currentDirectory) {
|
|
|
7563
7567
|
}
|
|
7564
7568
|
|
|
7565
7569
|
// apps/desktop/src/app/desktop/shell.ts
|
|
7570
|
+
init_src();
|
|
7566
7571
|
init_setup();
|
|
7567
7572
|
import { readFile as readFile5, readdir as readdir3, stat as stat3 } from "fs/promises";
|
|
7568
7573
|
import { performance } from "perf_hooks";
|
|
@@ -7599,7 +7604,6 @@ var BROKER_SYSTEM_CHANNEL_ID = "channel.system";
|
|
|
7599
7604
|
var OPERATOR_ID = "operator";
|
|
7600
7605
|
var DEFAULT_BROKER_HOST2 = "127.0.0.1";
|
|
7601
7606
|
var DEFAULT_BROKER_PORT2 = 65535;
|
|
7602
|
-
var BUILT_IN_SCOUT_AGENT_IDS = new Set([SCOUT_AGENT_ID, "builder", "reviewer", "research"]);
|
|
7603
7607
|
function buildScoutBrokerUrlFromEnv() {
|
|
7604
7608
|
const host = process.env.OPENSCOUT_BROKER_HOST ?? DEFAULT_BROKER_HOST2;
|
|
7605
7609
|
const port = Number.parseInt(process.env.OPENSCOUT_BROKER_PORT ?? String(DEFAULT_BROKER_PORT2), 10);
|
|
@@ -8345,7 +8349,6 @@ function readProjectGitActivity(projectRoot) {
|
|
|
8345
8349
|
|
|
8346
8350
|
// apps/desktop/src/app/desktop/shell.ts
|
|
8347
8351
|
var OPERATOR_ID2 = "operator";
|
|
8348
|
-
var BUILT_IN_ROLE_AGENT_IDS = new Set(["scout", "builder", "reviewer", "research"]);
|
|
8349
8352
|
var RECENT_AGENT_ACTIVITY_WINDOW_SECONDS = 60 * 60 * 24 * 30;
|
|
8350
8353
|
var RECONCILE_OFFLINE_WAIT_SECONDS = 60 * 3;
|
|
8351
8354
|
var RECONCILE_NO_FOLLOW_UP_SECONDS = 60 * 10;
|
|
@@ -8556,7 +8559,7 @@ function interAgentThreadKey(participantIds) {
|
|
|
8556
8559
|
function visibleRelayAgentIds(snapshot, configuredAgentIds, messagesByConversation, directActivity) {
|
|
8557
8560
|
const visible = new Set([
|
|
8558
8561
|
...configuredAgentIds,
|
|
8559
|
-
...Array.from(
|
|
8562
|
+
...Array.from(BUILT_IN_AGENT_DEFINITION_IDS)
|
|
8560
8563
|
]);
|
|
8561
8564
|
const cutoff = Math.floor(Date.now() / 1000) - RECENT_AGENT_ACTIVITY_WINDOW_SECONDS;
|
|
8562
8565
|
for (const [agentId, activity] of directActivity.entries()) {
|