@bradygaster/squad-sdk 0.7.0 → 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/README.md +296 -296
- package/dist/adapter/client.d.ts +225 -0
- package/dist/adapter/client.d.ts.map +1 -0
- package/dist/adapter/client.js +397 -0
- package/dist/adapter/client.js.map +1 -0
- package/dist/adapter/errors.d.ts +260 -0
- package/dist/adapter/errors.d.ts.map +1 -0
- package/dist/adapter/errors.js +362 -0
- package/dist/adapter/errors.js.map +1 -0
- package/dist/adapter/types.d.ts +779 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +11 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/agents/charter-compiler.d.ts +102 -0
- package/dist/agents/charter-compiler.d.ts.map +1 -0
- package/dist/agents/charter-compiler.js +157 -0
- package/dist/agents/charter-compiler.js.map +1 -0
- package/dist/agents/history-shadow.d.ts +80 -0
- package/dist/agents/history-shadow.d.ts.map +1 -0
- package/dist/agents/history-shadow.js +239 -0
- package/dist/agents/history-shadow.js.map +1 -0
- package/dist/agents/index.d.ts +68 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +74 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/lifecycle.d.ts +138 -0
- package/dist/agents/lifecycle.d.ts.map +1 -0
- package/dist/agents/lifecycle.js +258 -0
- package/dist/agents/lifecycle.js.map +1 -0
- package/dist/agents/model-selector.d.ts +80 -0
- package/dist/agents/model-selector.d.ts.map +1 -0
- package/dist/agents/model-selector.js +198 -0
- package/dist/agents/model-selector.js.map +1 -0
- package/dist/agents/onboarding.d.ts +65 -0
- package/dist/agents/onboarding.d.ts.map +1 -0
- package/dist/agents/onboarding.js +373 -0
- package/dist/agents/onboarding.js.map +1 -0
- package/dist/build/bundle.d.ts +32 -0
- package/dist/build/bundle.d.ts.map +1 -0
- package/dist/build/bundle.js +97 -0
- package/dist/build/bundle.js.map +1 -0
- package/dist/build/ci-pipeline.d.ts +51 -0
- package/dist/build/ci-pipeline.d.ts.map +1 -0
- package/dist/build/ci-pipeline.js +180 -0
- package/dist/build/ci-pipeline.js.map +1 -0
- package/dist/build/github-dist.d.ts +37 -0
- package/dist/build/github-dist.d.ts.map +1 -0
- package/dist/build/github-dist.js +117 -0
- package/dist/build/github-dist.js.map +1 -0
- package/dist/build/index.d.ts +11 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +11 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/install-migration.d.ts +28 -0
- package/dist/build/install-migration.d.ts.map +1 -0
- package/dist/build/install-migration.js +103 -0
- package/dist/build/install-migration.js.map +1 -0
- package/dist/build/npm-package.d.ts +54 -0
- package/dist/build/npm-package.d.ts.map +1 -0
- package/dist/build/npm-package.js +128 -0
- package/dist/build/npm-package.js.map +1 -0
- package/dist/build/release.d.ts +108 -0
- package/dist/build/release.d.ts.map +1 -0
- package/dist/build/release.js +295 -0
- package/dist/build/release.js.map +1 -0
- package/dist/build/versioning.d.ts +38 -0
- package/dist/build/versioning.d.ts.map +1 -0
- package/dist/build/versioning.js +113 -0
- package/dist/build/versioning.js.map +1 -0
- package/dist/casting/casting-engine.d.ts +60 -0
- package/dist/casting/casting-engine.d.ts.map +1 -0
- package/dist/casting/casting-engine.js +223 -0
- package/dist/casting/casting-engine.js.map +1 -0
- package/dist/casting/casting-history.d.ts +54 -0
- package/dist/casting/casting-history.d.ts.map +1 -0
- package/dist/casting/casting-history.js +63 -0
- package/dist/casting/casting-history.js.map +1 -0
- package/dist/casting/index.d.ts +46 -0
- package/dist/casting/index.d.ts.map +1 -0
- package/dist/casting/index.js +37 -0
- package/dist/casting/index.js.map +1 -0
- package/dist/client/event-bus.d.ts +29 -0
- package/dist/client/event-bus.d.ts.map +1 -0
- package/dist/client/event-bus.js +53 -0
- package/dist/client/event-bus.js.map +1 -0
- package/dist/client/index.d.ts +100 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +170 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/session-pool.d.ts +66 -0
- package/dist/client/session-pool.d.ts.map +1 -0
- package/dist/client/session-pool.js +145 -0
- package/dist/client/session-pool.js.map +1 -0
- package/dist/config/agent-doc.d.ts +43 -0
- package/dist/config/agent-doc.d.ts.map +1 -0
- package/dist/config/agent-doc.js +158 -0
- package/dist/config/agent-doc.js.map +1 -0
- package/dist/config/agent-source.d.ts +95 -0
- package/dist/config/agent-source.d.ts.map +1 -0
- package/dist/config/agent-source.js +274 -0
- package/dist/config/agent-source.js.map +1 -0
- package/dist/config/doc-sync.d.ts +66 -0
- package/dist/config/doc-sync.d.ts.map +1 -0
- package/dist/config/doc-sync.js +270 -0
- package/dist/config/doc-sync.js.map +1 -0
- package/dist/config/feature-audit.d.ts +49 -0
- package/dist/config/feature-audit.d.ts.map +1 -0
- package/dist/config/feature-audit.js +148 -0
- package/dist/config/feature-audit.js.map +1 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +15 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/init.d.ts +61 -0
- package/dist/config/init.d.ts.map +1 -0
- package/dist/config/init.js +369 -0
- package/dist/config/init.js.map +1 -0
- package/dist/config/legacy-fallback.d.ts +83 -0
- package/dist/config/legacy-fallback.d.ts.map +1 -0
- package/dist/config/legacy-fallback.js +212 -0
- package/dist/config/legacy-fallback.js.map +1 -0
- package/dist/config/markdown-migration.d.ts +157 -0
- package/dist/config/markdown-migration.d.ts.map +1 -0
- package/dist/config/markdown-migration.js +434 -0
- package/dist/config/markdown-migration.js.map +1 -0
- package/dist/config/migration.d.ts +123 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +273 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/migrations/index.d.ts +36 -0
- package/dist/config/migrations/index.d.ts.map +1 -0
- package/dist/config/migrations/index.js +216 -0
- package/dist/config/migrations/index.js.map +1 -0
- package/dist/config/models.d.ts +134 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +354 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/routing.d.ts +118 -0
- package/dist/config/routing.d.ts.map +1 -0
- package/dist/config/routing.js +247 -0
- package/dist/config/routing.js.map +1 -0
- package/dist/config/schema.d.ts +72 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +63 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/coordinator/coordinator.d.ts +82 -0
- package/dist/coordinator/coordinator.d.ts.map +1 -0
- package/dist/coordinator/coordinator.js +174 -0
- package/dist/coordinator/coordinator.js.map +1 -0
- package/dist/coordinator/direct-response.d.ts +83 -0
- package/dist/coordinator/direct-response.d.ts.map +1 -0
- package/dist/coordinator/direct-response.js +187 -0
- package/dist/coordinator/direct-response.js.map +1 -0
- package/dist/coordinator/fan-out.d.ts +83 -0
- package/dist/coordinator/fan-out.d.ts.map +1 -0
- package/dist/coordinator/fan-out.js +161 -0
- package/dist/coordinator/fan-out.js.map +1 -0
- package/dist/coordinator/index.d.ts +47 -0
- package/dist/coordinator/index.d.ts.map +1 -0
- package/dist/coordinator/index.js +54 -0
- package/dist/coordinator/index.js.map +1 -0
- package/dist/coordinator/response-tiers.d.ts +49 -0
- package/dist/coordinator/response-tiers.d.ts.map +1 -0
- package/dist/coordinator/response-tiers.js +149 -0
- package/dist/coordinator/response-tiers.js.map +1 -0
- package/dist/hooks/index.d.ts +103 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +279 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +24 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/marketplace/backend.d.ts +35 -0
- package/dist/marketplace/backend.d.ts.map +1 -0
- package/dist/marketplace/backend.js +99 -0
- package/dist/marketplace/backend.js.map +1 -0
- package/dist/marketplace/browser.d.ts +33 -0
- package/dist/marketplace/browser.d.ts.map +1 -0
- package/dist/marketplace/browser.js +97 -0
- package/dist/marketplace/browser.js.map +1 -0
- package/dist/marketplace/extension-adapter.d.ts +51 -0
- package/dist/marketplace/extension-adapter.d.ts.map +1 -0
- package/dist/marketplace/extension-adapter.js +81 -0
- package/dist/marketplace/extension-adapter.js.map +1 -0
- package/dist/marketplace/index.d.ts +51 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +108 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/packaging.d.ts +25 -0
- package/dist/marketplace/packaging.d.ts.map +1 -0
- package/dist/marketplace/packaging.js +117 -0
- package/dist/marketplace/packaging.js.map +1 -0
- package/dist/marketplace/schema.d.ts +50 -0
- package/dist/marketplace/schema.d.ts.map +1 -0
- package/dist/marketplace/schema.js +120 -0
- package/dist/marketplace/schema.js.map +1 -0
- package/dist/marketplace/security.d.ts +26 -0
- package/dist/marketplace/security.d.ts.map +1 -0
- package/dist/marketplace/security.js +199 -0
- package/dist/marketplace/security.js.map +1 -0
- package/dist/parsers.d.ts +15 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +15 -0
- package/dist/parsers.js.map +1 -0
- package/dist/ralph/index.d.ts +56 -0
- package/dist/ralph/index.d.ts.map +1 -0
- package/dist/ralph/index.js +61 -0
- package/dist/ralph/index.js.map +1 -0
- package/dist/resolution.d.ts +47 -0
- package/dist/resolution.d.ts.map +1 -0
- package/dist/resolution.js +106 -0
- package/dist/resolution.js.map +1 -0
- package/dist/runtime/benchmarks.d.ts +121 -0
- package/dist/runtime/benchmarks.d.ts.map +1 -0
- package/dist/runtime/benchmarks.js +251 -0
- package/dist/runtime/benchmarks.js.map +1 -0
- package/dist/runtime/config.d.ts +313 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +466 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/cost-tracker.d.ts +73 -0
- package/dist/runtime/cost-tracker.d.ts.map +1 -0
- package/dist/runtime/cost-tracker.js +157 -0
- package/dist/runtime/cost-tracker.js.map +1 -0
- package/dist/runtime/event-bus.d.ts +190 -0
- package/dist/runtime/event-bus.d.ts.map +1 -0
- package/dist/runtime/event-bus.js +218 -0
- package/dist/runtime/event-bus.js.map +1 -0
- package/dist/runtime/health.d.ts +66 -0
- package/dist/runtime/health.d.ts.map +1 -0
- package/dist/runtime/health.js +111 -0
- package/dist/runtime/health.js.map +1 -0
- package/dist/runtime/i18n.d.ts +54 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +126 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/offline.d.ts +64 -0
- package/dist/runtime/offline.d.ts.map +1 -0
- package/dist/runtime/offline.js +108 -0
- package/dist/runtime/offline.js.map +1 -0
- package/dist/runtime/streaming.d.ts +97 -0
- package/dist/runtime/streaming.d.ts.map +1 -0
- package/dist/runtime/streaming.js +156 -0
- package/dist/runtime/streaming.js.map +1 -0
- package/dist/runtime/telemetry.d.ts +82 -0
- package/dist/runtime/telemetry.d.ts.map +1 -0
- package/dist/runtime/telemetry.js +120 -0
- package/dist/runtime/telemetry.js.map +1 -0
- package/dist/sharing/agent-repo.d.ts +33 -0
- package/dist/sharing/agent-repo.d.ts.map +1 -0
- package/dist/sharing/agent-repo.js +79 -0
- package/dist/sharing/agent-repo.js.map +1 -0
- package/dist/sharing/cache.d.ts +36 -0
- package/dist/sharing/cache.d.ts.map +1 -0
- package/dist/sharing/cache.js +85 -0
- package/dist/sharing/cache.js.map +1 -0
- package/dist/sharing/conflicts.d.ts +32 -0
- package/dist/sharing/conflicts.d.ts.map +1 -0
- package/dist/sharing/conflicts.js +121 -0
- package/dist/sharing/conflicts.js.map +1 -0
- package/dist/sharing/export.d.ts +50 -0
- package/dist/sharing/export.d.ts.map +1 -0
- package/dist/sharing/export.js +156 -0
- package/dist/sharing/export.js.map +1 -0
- package/dist/sharing/history-split.d.ts +34 -0
- package/dist/sharing/history-split.d.ts.map +1 -0
- package/dist/sharing/history-split.js +101 -0
- package/dist/sharing/history-split.js.map +1 -0
- package/dist/sharing/import.d.ts +37 -0
- package/dist/sharing/import.d.ts.map +1 -0
- package/dist/sharing/import.js +138 -0
- package/dist/sharing/import.js.map +1 -0
- package/dist/sharing/index.d.ts +11 -0
- package/dist/sharing/index.d.ts.map +1 -0
- package/dist/sharing/index.js +11 -0
- package/dist/sharing/index.js.map +1 -0
- package/dist/sharing/versioning.d.ts +32 -0
- package/dist/sharing/versioning.d.ts.map +1 -0
- package/dist/sharing/versioning.js +64 -0
- package/dist/sharing/versioning.js.map +1 -0
- package/dist/skills/index.d.ts +49 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +85 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +56 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +106 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-source.d.ts +63 -0
- package/dist/skills/skill-source.d.ts.map +1 -0
- package/dist/skills/skill-source.js +199 -0
- package/dist/skills/skill-source.js.map +1 -0
- package/dist/tools/index.d.ts +87 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +419 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +43 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/normalize-eol.d.ts +6 -0
- package/dist/utils/normalize-eol.d.ts.map +1 -0
- package/dist/utils/normalize-eol.js +8 -0
- package/dist/utils/normalize-eol.js.map +1 -0
- package/package.json +115 -63
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Source Registry
|
|
3
|
+
* Pluggable agent discovery and loading
|
|
4
|
+
*/
|
|
5
|
+
export interface AgentSource {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly type: 'local' | 'github' | 'marketplace';
|
|
8
|
+
listAgents(): Promise<AgentManifest[]>;
|
|
9
|
+
getAgent(name: string): Promise<AgentDefinition | null>;
|
|
10
|
+
getCharter(name: string): Promise<string | null>;
|
|
11
|
+
}
|
|
12
|
+
export interface AgentManifest {
|
|
13
|
+
name: string;
|
|
14
|
+
role: string;
|
|
15
|
+
version?: string;
|
|
16
|
+
source: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentDefinition extends AgentManifest {
|
|
19
|
+
charter: string;
|
|
20
|
+
model?: string;
|
|
21
|
+
tools?: string[];
|
|
22
|
+
skills?: string[];
|
|
23
|
+
history?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse charter.md content to extract agent metadata.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseCharterMetadata(content: string): {
|
|
29
|
+
name?: string;
|
|
30
|
+
role?: string;
|
|
31
|
+
model?: string;
|
|
32
|
+
skills?: string[];
|
|
33
|
+
tools?: string[];
|
|
34
|
+
};
|
|
35
|
+
export declare class LocalAgentSource implements AgentSource {
|
|
36
|
+
private basePath;
|
|
37
|
+
readonly name = "local";
|
|
38
|
+
readonly type: "local";
|
|
39
|
+
constructor(basePath: string);
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the agents directory, preferring .squad/agents over .ai-team/agents.
|
|
42
|
+
*/
|
|
43
|
+
private resolveAgentsDir;
|
|
44
|
+
listAgents(): Promise<AgentManifest[]>;
|
|
45
|
+
getAgent(name: string): Promise<AgentDefinition | null>;
|
|
46
|
+
getCharter(name: string): Promise<string | null>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Pluggable fetcher interface for GitHub API calls (enables testing).
|
|
50
|
+
*/
|
|
51
|
+
export interface GitHubFetcher {
|
|
52
|
+
/** List directory entries at a path in a repo. */
|
|
53
|
+
listDirectory(owner: string, repo: string, path: string, ref?: string): Promise<Array<{
|
|
54
|
+
name: string;
|
|
55
|
+
type: 'file' | 'dir';
|
|
56
|
+
}>>;
|
|
57
|
+
/** Fetch file content (UTF-8 string) at a path in a repo. */
|
|
58
|
+
getFileContent(owner: string, repo: string, path: string, ref?: string): Promise<string | null>;
|
|
59
|
+
}
|
|
60
|
+
export declare class GitHubAgentSource implements AgentSource {
|
|
61
|
+
readonly name = "github";
|
|
62
|
+
readonly type: "github";
|
|
63
|
+
private owner;
|
|
64
|
+
private repoName;
|
|
65
|
+
private branch?;
|
|
66
|
+
private pathPrefix;
|
|
67
|
+
private fetcher;
|
|
68
|
+
constructor(repo: string, options?: {
|
|
69
|
+
ref?: string;
|
|
70
|
+
pathPrefix?: string;
|
|
71
|
+
fetcher?: GitHubFetcher;
|
|
72
|
+
});
|
|
73
|
+
listAgents(): Promise<AgentManifest[]>;
|
|
74
|
+
getAgent(name: string): Promise<AgentDefinition | null>;
|
|
75
|
+
getCharter(name: string): Promise<string | null>;
|
|
76
|
+
}
|
|
77
|
+
export declare class MarketplaceAgentSource implements AgentSource {
|
|
78
|
+
private apiEndpoint;
|
|
79
|
+
readonly name = "marketplace";
|
|
80
|
+
readonly type: "marketplace";
|
|
81
|
+
constructor(apiEndpoint: string);
|
|
82
|
+
listAgents(): Promise<AgentManifest[]>;
|
|
83
|
+
getAgent(name: string): Promise<AgentDefinition | null>;
|
|
84
|
+
getCharter(name: string): Promise<string | null>;
|
|
85
|
+
}
|
|
86
|
+
export declare class AgentRegistry {
|
|
87
|
+
private sources;
|
|
88
|
+
register(source: AgentSource): void;
|
|
89
|
+
unregister(name: string): boolean;
|
|
90
|
+
getSource(name: string): AgentSource | undefined;
|
|
91
|
+
listAllAgents(): Promise<AgentManifest[]>;
|
|
92
|
+
findAgent(name: string): Promise<AgentDefinition | null>;
|
|
93
|
+
getCharter(name: string): Promise<string | null>;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=agent-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-source.d.ts","sourceRoot":"","sources":["../../src/config/agent-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Source Registry
|
|
3
|
+
* Pluggable agent discovery and loading
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs/promises';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
/** Directories to scan for agents, in priority order. */
|
|
8
|
+
const AGENT_DIRS = ['.squad/agents', '.ai-team/agents'];
|
|
9
|
+
/**
|
|
10
|
+
* Parse charter.md content to extract agent metadata.
|
|
11
|
+
*/
|
|
12
|
+
export function parseCharterMetadata(content) {
|
|
13
|
+
const result = {};
|
|
14
|
+
const identityMatch = content.match(/##\s+Identity\s*\n([\s\S]*?)(?=\n##|\n---|$)/i);
|
|
15
|
+
if (identityMatch) {
|
|
16
|
+
const section = identityMatch[1];
|
|
17
|
+
const nameMatch = section.match(/\*\*Name:\*\*\s*(.+)/i);
|
|
18
|
+
if (nameMatch)
|
|
19
|
+
result.name = nameMatch[1].trim();
|
|
20
|
+
const roleMatch = section.match(/\*\*Role:\*\*\s*(.+)/i);
|
|
21
|
+
if (roleMatch)
|
|
22
|
+
result.role = roleMatch[1].trim();
|
|
23
|
+
const expertiseMatch = section.match(/\*\*Expertise:\*\*\s*(.+)/i);
|
|
24
|
+
if (expertiseMatch) {
|
|
25
|
+
result.skills = expertiseMatch[1].split(',').map(s => s.trim()).filter(Boolean);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const modelMatch = content.match(/##\s+Model\s*\n([\s\S]*?)(?=\n##|\n---|$)/i);
|
|
29
|
+
if (modelMatch) {
|
|
30
|
+
const preferredMatch = modelMatch[1].match(/\*\*Preferred:\*\*\s*(.+)/i);
|
|
31
|
+
if (preferredMatch)
|
|
32
|
+
result.model = preferredMatch[1].trim();
|
|
33
|
+
}
|
|
34
|
+
const toolsMatch = content.match(/##\s+Tools?\s*\n([\s\S]*?)(?=\n##|\n---|$)/i);
|
|
35
|
+
if (toolsMatch) {
|
|
36
|
+
result.tools = toolsMatch[1]
|
|
37
|
+
.split('\n')
|
|
38
|
+
.map(line => {
|
|
39
|
+
const m = line.match(/^\s*[-*]\s+`?([^`\s]+)`?/);
|
|
40
|
+
return m ? m[1].trim() : null;
|
|
41
|
+
})
|
|
42
|
+
.filter((t) => t !== null);
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
export class LocalAgentSource {
|
|
47
|
+
basePath;
|
|
48
|
+
name = 'local';
|
|
49
|
+
type = 'local';
|
|
50
|
+
constructor(basePath) {
|
|
51
|
+
this.basePath = basePath;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolve the agents directory, preferring .squad/agents over .ai-team/agents.
|
|
55
|
+
*/
|
|
56
|
+
async resolveAgentsDir() {
|
|
57
|
+
for (const dir of AGENT_DIRS) {
|
|
58
|
+
const fullPath = path.join(this.basePath, dir);
|
|
59
|
+
try {
|
|
60
|
+
const stat = await fs.stat(fullPath);
|
|
61
|
+
if (stat.isDirectory())
|
|
62
|
+
return fullPath;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// directory doesn't exist, try next
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
async listAgents() {
|
|
71
|
+
const agentsDir = await this.resolveAgentsDir();
|
|
72
|
+
if (!agentsDir)
|
|
73
|
+
return [];
|
|
74
|
+
const manifests = [];
|
|
75
|
+
let entries;
|
|
76
|
+
try {
|
|
77
|
+
entries = await fs.readdir(agentsDir, { withFileTypes: true });
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
for (const entry of entries) {
|
|
83
|
+
if (!entry.isDirectory())
|
|
84
|
+
continue;
|
|
85
|
+
const charterPath = path.join(agentsDir, entry.name, 'charter.md');
|
|
86
|
+
try {
|
|
87
|
+
const content = await fs.readFile(charterPath, 'utf-8');
|
|
88
|
+
const meta = parseCharterMetadata(content);
|
|
89
|
+
manifests.push({
|
|
90
|
+
name: meta.name || entry.name,
|
|
91
|
+
role: meta.role || 'agent',
|
|
92
|
+
source: 'local',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Skip agents with missing/unreadable charter
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return manifests;
|
|
100
|
+
}
|
|
101
|
+
async getAgent(name) {
|
|
102
|
+
const agentsDir = await this.resolveAgentsDir();
|
|
103
|
+
if (!agentsDir)
|
|
104
|
+
return null;
|
|
105
|
+
const charterPath = path.join(agentsDir, name, 'charter.md');
|
|
106
|
+
let charter;
|
|
107
|
+
try {
|
|
108
|
+
charter = await fs.readFile(charterPath, 'utf-8');
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const meta = parseCharterMetadata(charter);
|
|
114
|
+
// Optionally read history.md
|
|
115
|
+
let history;
|
|
116
|
+
try {
|
|
117
|
+
history = await fs.readFile(path.join(agentsDir, name, 'history.md'), 'utf-8');
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// history is optional
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
name: meta.name || name,
|
|
124
|
+
role: meta.role || 'agent',
|
|
125
|
+
source: 'local',
|
|
126
|
+
charter,
|
|
127
|
+
model: meta.model,
|
|
128
|
+
tools: meta.tools,
|
|
129
|
+
skills: meta.skills,
|
|
130
|
+
history,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
async getCharter(name) {
|
|
134
|
+
const agentsDir = await this.resolveAgentsDir();
|
|
135
|
+
if (!agentsDir)
|
|
136
|
+
return null;
|
|
137
|
+
try {
|
|
138
|
+
return await fs.readFile(path.join(agentsDir, name, 'charter.md'), 'utf-8');
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/** Parse "owner/repo" format into components. */
|
|
146
|
+
function parseOwnerRepo(repo) {
|
|
147
|
+
const parts = repo.split('/');
|
|
148
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
149
|
+
throw new Error(`Invalid repo format "${repo}": expected "owner/repo"`);
|
|
150
|
+
}
|
|
151
|
+
return { owner: parts[0], repo: parts[1] };
|
|
152
|
+
}
|
|
153
|
+
export class GitHubAgentSource {
|
|
154
|
+
name = 'github';
|
|
155
|
+
type = 'github';
|
|
156
|
+
owner;
|
|
157
|
+
repoName;
|
|
158
|
+
branch;
|
|
159
|
+
pathPrefix;
|
|
160
|
+
fetcher;
|
|
161
|
+
constructor(repo, options) {
|
|
162
|
+
const parsed = parseOwnerRepo(repo);
|
|
163
|
+
this.owner = parsed.owner;
|
|
164
|
+
this.repoName = parsed.repo;
|
|
165
|
+
this.branch = options?.ref;
|
|
166
|
+
this.pathPrefix = options?.pathPrefix ?? '.squad/agents';
|
|
167
|
+
this.fetcher = options?.fetcher ?? createDefaultFetcher();
|
|
168
|
+
}
|
|
169
|
+
async listAgents() {
|
|
170
|
+
const entries = await this.fetcher.listDirectory(this.owner, this.repoName, this.pathPrefix, this.branch);
|
|
171
|
+
const dirs = entries.filter(e => e.type === 'dir');
|
|
172
|
+
const manifests = [];
|
|
173
|
+
for (const dir of dirs) {
|
|
174
|
+
const charterPath = `${this.pathPrefix}/${dir.name}/charter.md`;
|
|
175
|
+
const content = await this.fetcher.getFileContent(this.owner, this.repoName, charterPath, this.branch);
|
|
176
|
+
if (!content)
|
|
177
|
+
continue;
|
|
178
|
+
const meta = parseCharterMetadata(content);
|
|
179
|
+
manifests.push({
|
|
180
|
+
name: meta.name || dir.name,
|
|
181
|
+
role: meta.role || 'agent',
|
|
182
|
+
source: 'github',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return manifests;
|
|
186
|
+
}
|
|
187
|
+
async getAgent(name) {
|
|
188
|
+
const charterPath = `${this.pathPrefix}/${name}/charter.md`;
|
|
189
|
+
const charter = await this.fetcher.getFileContent(this.owner, this.repoName, charterPath, this.branch);
|
|
190
|
+
if (!charter)
|
|
191
|
+
return null;
|
|
192
|
+
const meta = parseCharterMetadata(charter);
|
|
193
|
+
let history;
|
|
194
|
+
const historyPath = `${this.pathPrefix}/${name}/history.md`;
|
|
195
|
+
const historyContent = await this.fetcher.getFileContent(this.owner, this.repoName, historyPath, this.branch);
|
|
196
|
+
if (historyContent)
|
|
197
|
+
history = historyContent;
|
|
198
|
+
return {
|
|
199
|
+
name: meta.name || name,
|
|
200
|
+
role: meta.role || 'agent',
|
|
201
|
+
source: 'github',
|
|
202
|
+
charter,
|
|
203
|
+
model: meta.model,
|
|
204
|
+
tools: meta.tools,
|
|
205
|
+
skills: meta.skills,
|
|
206
|
+
history,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
async getCharter(name) {
|
|
210
|
+
const charterPath = `${this.pathPrefix}/${name}/charter.md`;
|
|
211
|
+
return this.fetcher.getFileContent(this.owner, this.repoName, charterPath, this.branch);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/** Default fetcher that returns empty results when no real fetcher is configured. */
|
|
215
|
+
function createDefaultFetcher() {
|
|
216
|
+
return {
|
|
217
|
+
async listDirectory() {
|
|
218
|
+
return [];
|
|
219
|
+
},
|
|
220
|
+
async getFileContent() {
|
|
221
|
+
return null;
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
export class MarketplaceAgentSource {
|
|
226
|
+
apiEndpoint;
|
|
227
|
+
name = 'marketplace';
|
|
228
|
+
type = 'marketplace';
|
|
229
|
+
constructor(apiEndpoint) {
|
|
230
|
+
this.apiEndpoint = apiEndpoint;
|
|
231
|
+
}
|
|
232
|
+
async listAgents() {
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
async getAgent(name) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
async getCharter(name) {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
export class AgentRegistry {
|
|
243
|
+
sources = new Map();
|
|
244
|
+
register(source) {
|
|
245
|
+
this.sources.set(source.name, source);
|
|
246
|
+
}
|
|
247
|
+
unregister(name) {
|
|
248
|
+
return this.sources.delete(name);
|
|
249
|
+
}
|
|
250
|
+
getSource(name) {
|
|
251
|
+
return this.sources.get(name);
|
|
252
|
+
}
|
|
253
|
+
async listAllAgents() {
|
|
254
|
+
const results = await Promise.all(Array.from(this.sources.values()).map(s => s.listAgents()));
|
|
255
|
+
return results.flat();
|
|
256
|
+
}
|
|
257
|
+
async findAgent(name) {
|
|
258
|
+
for (const source of this.sources.values()) {
|
|
259
|
+
const agent = await source.getAgent(name);
|
|
260
|
+
if (agent)
|
|
261
|
+
return agent;
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
async getCharter(name) {
|
|
266
|
+
for (const source of this.sources.values()) {
|
|
267
|
+
const charter = await source.getCharter(name);
|
|
268
|
+
if (charter)
|
|
269
|
+
return charter;
|
|
270
|
+
}
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=agent-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-source.js","sourceRoot":"","sources":["../../src/config/agent-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Doc ↔ Config Synchronisation (M2-12)
|
|
3
|
+
*
|
|
4
|
+
* Keeps agent documentation (.agent.md) in sync with typed SquadConfig.
|
|
5
|
+
* The .agent.md file is the *reference* document; SquadConfig is the
|
|
6
|
+
* *runtime* source of truth. This module bridges the two.
|
|
7
|
+
*
|
|
8
|
+
* @module config/doc-sync
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentDocMetadata } from './agent-doc.js';
|
|
11
|
+
import type { SquadConfig } from './schema.js';
|
|
12
|
+
/**
|
|
13
|
+
* A single mismatch between the agent doc and the typed config.
|
|
14
|
+
*/
|
|
15
|
+
export interface DriftEntry {
|
|
16
|
+
/** Which field differs */
|
|
17
|
+
field: string;
|
|
18
|
+
/** Value found in the agent doc */
|
|
19
|
+
docValue: unknown;
|
|
20
|
+
/** Value found in the typed config */
|
|
21
|
+
configValue: unknown;
|
|
22
|
+
/** Human-readable summary */
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Result of a drift-detection run.
|
|
27
|
+
*/
|
|
28
|
+
export interface DriftReport {
|
|
29
|
+
/** True when doc and config are perfectly aligned */
|
|
30
|
+
inSync: boolean;
|
|
31
|
+
/** Individual mismatches */
|
|
32
|
+
entries: DriftEntry[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Merge metadata extracted from an agent doc into an existing SquadConfig.
|
|
36
|
+
*
|
|
37
|
+
* Only fields present in the doc metadata will overwrite config values;
|
|
38
|
+
* everything else is left untouched.
|
|
39
|
+
*
|
|
40
|
+
* @param doc - Metadata parsed from the .agent.md file
|
|
41
|
+
* @param config - Current typed configuration (mutated in-place *and* returned)
|
|
42
|
+
* @returns The updated config
|
|
43
|
+
*/
|
|
44
|
+
export declare function syncDocToConfig(doc: AgentDocMetadata, config: SquadConfig): SquadConfig;
|
|
45
|
+
/**
|
|
46
|
+
* Generate (or update) an agent doc from a typed SquadConfig.
|
|
47
|
+
*
|
|
48
|
+
* If a `template` is provided the function replaces recognised section
|
|
49
|
+
* placeholders (`{{IDENTITY}}`, `{{CAPABILITIES}}`, etc.) with values
|
|
50
|
+
* from the config. If no template is given a minimal markdown document
|
|
51
|
+
* is produced from scratch.
|
|
52
|
+
*
|
|
53
|
+
* @param config - The typed configuration
|
|
54
|
+
* @param template - Optional markdown template with `{{SECTION}}` placeholders
|
|
55
|
+
* @returns Generated markdown string
|
|
56
|
+
*/
|
|
57
|
+
export declare function syncConfigToDoc(config: SquadConfig, template?: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Detect mismatches between an agent doc and a typed config.
|
|
60
|
+
*
|
|
61
|
+
* @param doc - Metadata parsed from the .agent.md file
|
|
62
|
+
* @param config - Current typed configuration
|
|
63
|
+
* @returns A drift report listing every mismatch found
|
|
64
|
+
*/
|
|
65
|
+
export declare function detectDrift(doc: AgentDocMetadata, config: SquadConfig): DriftReport;
|
|
66
|
+
//# sourceMappingURL=doc-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-sync.d.ts","sourceRoot":"","sources":["../../src/config/doc-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAMD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,WAAW,GAClB,WAAW,CAiDb;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CA2CR;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,WAAW,GAClB,WAAW,CAiFb"}
|