v2.2-paseo-providers: Paseo provider stack + v2.2.1 pane-scoped chat fixes
Ship Paseo-equivalent provider snapshot, AgentComposerBar, ACP dispatch rewrite with streaming/persist, permission prompts, and agent commands. Follow-up: pane-scoped chat resolution, CoderMessageList tool timeline, WS user-delta replace, and inference orphan tool_call stripping. Archive openspec v2-2; update CHANGELOG and CURRENT. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -309,6 +309,14 @@ export function parseAgentsMd(content: string): ParseResult {
|
||||
return { agents, errors };
|
||||
}
|
||||
|
||||
/** True when a file at `<project>/AGENTS.md` is an agent registry, not Cursor/doc nav. */
|
||||
export function isAgentRegistryMarkdown(content: string): boolean {
|
||||
const firstLine = content.trimStart().split('\n')[0]?.trim() ?? '';
|
||||
// BooCode monorepo root AGENTS.md is navigation only; registry is /data/AGENTS.md.
|
||||
if (firstLine === '# Agent navigation') return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---- mtime-keyed cache + public API ----------------------------------------
|
||||
|
||||
interface CacheEntry {
|
||||
@@ -397,7 +405,7 @@ export async function getAgentsForProject(projectPath: string): Promise<AgentsRe
|
||||
for (const a of r.agents) byName.set(a.name, { ...a, source: 'global' });
|
||||
errors.push(...r.errors);
|
||||
}
|
||||
if (projectContent !== null) {
|
||||
if (projectContent !== null && isAgentRegistryMarkdown(projectContent)) {
|
||||
const r = parseAgentsMd(projectContent);
|
||||
for (const a of r.agents) byName.set(a.name, { ...a, source: 'project' });
|
||||
errors.push(...r.errors);
|
||||
|
||||
Reference in New Issue
Block a user