@bradygaster/squad-sdk 0.6.2 → 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 -39
|
@@ -0,0 +1,270 @@
|
|
|
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 { normalizeEol } from '../utils/normalize-eol.js';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// doc → config
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/**
|
|
15
|
+
* Merge metadata extracted from an agent doc into an existing SquadConfig.
|
|
16
|
+
*
|
|
17
|
+
* Only fields present in the doc metadata will overwrite config values;
|
|
18
|
+
* everything else is left untouched.
|
|
19
|
+
*
|
|
20
|
+
* @param doc - Metadata parsed from the .agent.md file
|
|
21
|
+
* @param config - Current typed configuration (mutated in-place *and* returned)
|
|
22
|
+
* @returns The updated config
|
|
23
|
+
*/
|
|
24
|
+
export function syncDocToConfig(doc, config) {
|
|
25
|
+
// --- Team-level fields ---
|
|
26
|
+
if (doc.name) {
|
|
27
|
+
config.team.name = doc.name;
|
|
28
|
+
}
|
|
29
|
+
if (doc.description) {
|
|
30
|
+
config.team.description = doc.description;
|
|
31
|
+
}
|
|
32
|
+
// --- Model preferences → models.default ---
|
|
33
|
+
if (doc.modelPreferences.length > 0) {
|
|
34
|
+
config.models.default = doc.modelPreferences[0];
|
|
35
|
+
}
|
|
36
|
+
// --- Routing hints → routing rules ---
|
|
37
|
+
if (doc.routingHints.length > 0) {
|
|
38
|
+
// Merge routing hints as rules (additive – don't drop existing rules)
|
|
39
|
+
const existingPatterns = new Set(config.routing.rules.map((r) => r.pattern));
|
|
40
|
+
for (const hint of doc.routingHints) {
|
|
41
|
+
if (!existingPatterns.has(hint)) {
|
|
42
|
+
config.routing.rules.push({ pattern: hint, agents: [] });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// --- Capabilities / tools → first agent entry (if any) ---
|
|
47
|
+
if (config.agents.length > 0) {
|
|
48
|
+
const agent = config.agents[0];
|
|
49
|
+
if (doc.tools.length > 0) {
|
|
50
|
+
agent.tools = doc.tools;
|
|
51
|
+
}
|
|
52
|
+
if (doc.capabilities.length > 0) {
|
|
53
|
+
agent.charter = doc.capabilities.join('\n');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (doc.name) {
|
|
57
|
+
// Create a stub agent from the doc
|
|
58
|
+
const agent = {
|
|
59
|
+
name: doc.name,
|
|
60
|
+
role: doc.description ?? 'agent',
|
|
61
|
+
};
|
|
62
|
+
if (doc.tools.length > 0)
|
|
63
|
+
agent.tools = doc.tools;
|
|
64
|
+
if (doc.capabilities.length > 0)
|
|
65
|
+
agent.charter = doc.capabilities.join('\n');
|
|
66
|
+
if (doc.modelPreferences.length > 0)
|
|
67
|
+
agent.model = doc.modelPreferences[0];
|
|
68
|
+
config.agents.push(agent);
|
|
69
|
+
}
|
|
70
|
+
return config;
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// config → doc
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
/**
|
|
76
|
+
* Generate (or update) an agent doc from a typed SquadConfig.
|
|
77
|
+
*
|
|
78
|
+
* If a `template` is provided the function replaces recognised section
|
|
79
|
+
* placeholders (`{{IDENTITY}}`, `{{CAPABILITIES}}`, etc.) with values
|
|
80
|
+
* from the config. If no template is given a minimal markdown document
|
|
81
|
+
* is produced from scratch.
|
|
82
|
+
*
|
|
83
|
+
* @param config - The typed configuration
|
|
84
|
+
* @param template - Optional markdown template with `{{SECTION}}` placeholders
|
|
85
|
+
* @returns Generated markdown string
|
|
86
|
+
*/
|
|
87
|
+
export function syncConfigToDoc(config, template) {
|
|
88
|
+
const identity = buildIdentityBlock(config);
|
|
89
|
+
const capabilities = buildCapabilitiesBlock(config);
|
|
90
|
+
const routing = buildRoutingBlock(config);
|
|
91
|
+
const constraints = buildConstraintsBlock(config);
|
|
92
|
+
const tools = buildToolsBlock(config);
|
|
93
|
+
if (template) {
|
|
94
|
+
let result = template;
|
|
95
|
+
result = result.replace('{{IDENTITY}}', identity);
|
|
96
|
+
result = result.replace('{{CAPABILITIES}}', capabilities);
|
|
97
|
+
result = result.replace('{{ROUTING}}', routing);
|
|
98
|
+
result = result.replace('{{CONSTRAINTS}}', constraints);
|
|
99
|
+
result = result.replace('{{TOOLS}}', tools);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
// Build from scratch
|
|
103
|
+
const parts = [
|
|
104
|
+
`# ${config.team.name}`,
|
|
105
|
+
'',
|
|
106
|
+
'## Identity',
|
|
107
|
+
'',
|
|
108
|
+
identity,
|
|
109
|
+
'',
|
|
110
|
+
'## Capabilities',
|
|
111
|
+
'',
|
|
112
|
+
capabilities,
|
|
113
|
+
'',
|
|
114
|
+
'## Routing',
|
|
115
|
+
'',
|
|
116
|
+
routing,
|
|
117
|
+
'',
|
|
118
|
+
'## Constraints',
|
|
119
|
+
'',
|
|
120
|
+
constraints,
|
|
121
|
+
'',
|
|
122
|
+
'## Tools',
|
|
123
|
+
'',
|
|
124
|
+
tools,
|
|
125
|
+
'',
|
|
126
|
+
];
|
|
127
|
+
return parts.join('\n');
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// drift detection
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* Detect mismatches between an agent doc and a typed config.
|
|
134
|
+
*
|
|
135
|
+
* @param doc - Metadata parsed from the .agent.md file
|
|
136
|
+
* @param config - Current typed configuration
|
|
137
|
+
* @returns A drift report listing every mismatch found
|
|
138
|
+
*/
|
|
139
|
+
export function detectDrift(doc, config) {
|
|
140
|
+
const entries = [];
|
|
141
|
+
// --- Team name ---
|
|
142
|
+
if (doc.name && doc.name !== config.team.name) {
|
|
143
|
+
entries.push({
|
|
144
|
+
field: 'team.name',
|
|
145
|
+
docValue: doc.name,
|
|
146
|
+
configValue: config.team.name,
|
|
147
|
+
message: `Team name differs: doc="${doc.name}", config="${config.team.name}"`,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// --- Description ---
|
|
151
|
+
if (doc.description && doc.description !== config.team.description) {
|
|
152
|
+
entries.push({
|
|
153
|
+
field: 'team.description',
|
|
154
|
+
docValue: doc.description,
|
|
155
|
+
configValue: config.team.description,
|
|
156
|
+
message: `Description differs: doc="${doc.description}", config="${config.team.description ?? '(none)'}"`,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// --- Default model ---
|
|
160
|
+
if (doc.modelPreferences.length > 0 &&
|
|
161
|
+
doc.modelPreferences[0] !== config.models.default) {
|
|
162
|
+
entries.push({
|
|
163
|
+
field: 'models.default',
|
|
164
|
+
docValue: doc.modelPreferences[0],
|
|
165
|
+
configValue: config.models.default,
|
|
166
|
+
message: `Default model differs: doc="${doc.modelPreferences[0]}", config="${config.models.default}"`,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
// --- Routing hints vs rules ---
|
|
170
|
+
const rulePatterns = new Set(config.routing.rules.map((r) => r.pattern));
|
|
171
|
+
for (const hint of doc.routingHints) {
|
|
172
|
+
if (!rulePatterns.has(hint)) {
|
|
173
|
+
entries.push({
|
|
174
|
+
field: 'routing.rules',
|
|
175
|
+
docValue: hint,
|
|
176
|
+
configValue: undefined,
|
|
177
|
+
message: `Routing hint "${hint}" in doc but not in config rules`,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// --- Tools ---
|
|
182
|
+
if (config.agents.length > 0) {
|
|
183
|
+
const agentTools = config.agents[0].tools ?? [];
|
|
184
|
+
const docToolSet = new Set(doc.tools);
|
|
185
|
+
const configToolSet = new Set(agentTools);
|
|
186
|
+
for (const t of doc.tools) {
|
|
187
|
+
if (!configToolSet.has(t)) {
|
|
188
|
+
entries.push({
|
|
189
|
+
field: 'agents[0].tools',
|
|
190
|
+
docValue: t,
|
|
191
|
+
configValue: undefined,
|
|
192
|
+
message: `Tool "${t}" in doc but not in config`,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
for (const t of agentTools) {
|
|
197
|
+
if (!docToolSet.has(t)) {
|
|
198
|
+
entries.push({
|
|
199
|
+
field: 'agents[0].tools',
|
|
200
|
+
docValue: undefined,
|
|
201
|
+
configValue: t,
|
|
202
|
+
message: `Tool "${t}" in config but not in doc`,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
inSync: entries.length === 0,
|
|
209
|
+
entries,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// ---------------------------------------------------------------------------
|
|
213
|
+
// Block builders (config → markdown fragments)
|
|
214
|
+
// ---------------------------------------------------------------------------
|
|
215
|
+
function buildIdentityBlock(config) {
|
|
216
|
+
const lines = [];
|
|
217
|
+
lines.push(`**Name:** ${config.team.name}`);
|
|
218
|
+
if (config.team.description) {
|
|
219
|
+
lines.push(`**Description:** ${config.team.description}`);
|
|
220
|
+
}
|
|
221
|
+
if (config.models.default) {
|
|
222
|
+
lines.push(`**Model:** ${config.models.default}`);
|
|
223
|
+
}
|
|
224
|
+
return lines.join('\n');
|
|
225
|
+
}
|
|
226
|
+
function buildCapabilitiesBlock(config) {
|
|
227
|
+
if (config.agents.length === 0)
|
|
228
|
+
return '_No capabilities defined._';
|
|
229
|
+
const caps = [];
|
|
230
|
+
for (const agent of config.agents) {
|
|
231
|
+
if (agent.charter) {
|
|
232
|
+
const charter = normalizeEol(agent.charter);
|
|
233
|
+
for (const line of charter.split('\n')) {
|
|
234
|
+
caps.push(`- ${line}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
caps.push(`- ${agent.role} (${agent.name})`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return caps.join('\n');
|
|
242
|
+
}
|
|
243
|
+
function buildRoutingBlock(config) {
|
|
244
|
+
if (config.routing.rules.length === 0)
|
|
245
|
+
return '_No routing rules defined._';
|
|
246
|
+
const lines = [];
|
|
247
|
+
for (const rule of config.routing.rules) {
|
|
248
|
+
const agents = rule.agents.length > 0 ? rule.agents.join(', ') : '(unassigned)';
|
|
249
|
+
lines.push(`- ${rule.pattern} → ${agents}`);
|
|
250
|
+
}
|
|
251
|
+
return lines.join('\n');
|
|
252
|
+
}
|
|
253
|
+
function buildConstraintsBlock(_config) {
|
|
254
|
+
// Constraints aren't first-class in SquadConfig yet – placeholder
|
|
255
|
+
return '_No constraints defined._';
|
|
256
|
+
}
|
|
257
|
+
function buildToolsBlock(config) {
|
|
258
|
+
const allTools = new Set();
|
|
259
|
+
for (const agent of config.agents) {
|
|
260
|
+
for (const t of agent.tools ?? []) {
|
|
261
|
+
allTools.add(t);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (allTools.size === 0)
|
|
265
|
+
return '_No tools defined._';
|
|
266
|
+
return Array.from(allTools)
|
|
267
|
+
.map((t) => `- ${t}`)
|
|
268
|
+
.join('\n');
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=doc-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-sync.js","sourceRoot":"","sources":["../../src/config/doc-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Audit — Risk Punch List (M3-13, Issue #154)
|
|
3
|
+
*
|
|
4
|
+
* Internal development tool that audits all v1 modules for completeness
|
|
5
|
+
* and produces a risk assessment before GA.
|
|
6
|
+
*/
|
|
7
|
+
import type { SquadConfig } from './schema.js';
|
|
8
|
+
export type FeatureCompleteness = 'complete' | 'partial' | 'stub' | 'missing';
|
|
9
|
+
export type RiskLevel = 'low' | 'medium' | 'high';
|
|
10
|
+
export interface FeatureStatus {
|
|
11
|
+
/** Module / feature name */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Current completeness level */
|
|
14
|
+
status: FeatureCompleteness;
|
|
15
|
+
/** Free-form notes on what's done or missing */
|
|
16
|
+
notes: string;
|
|
17
|
+
/** Overall risk for GA */
|
|
18
|
+
riskLevel: RiskLevel;
|
|
19
|
+
}
|
|
20
|
+
export interface FeatureAuditReport {
|
|
21
|
+
/** When the audit was generated */
|
|
22
|
+
timestamp: string;
|
|
23
|
+
/** Squad config version audited against */
|
|
24
|
+
configVersion: string;
|
|
25
|
+
/** Per-module results */
|
|
26
|
+
features: FeatureStatus[];
|
|
27
|
+
/** Rollup counts */
|
|
28
|
+
summary: {
|
|
29
|
+
total: number;
|
|
30
|
+
complete: number;
|
|
31
|
+
partial: number;
|
|
32
|
+
stub: number;
|
|
33
|
+
missing: number;
|
|
34
|
+
highRisk: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Audit all v1 modules against the provided config and return a report.
|
|
39
|
+
*/
|
|
40
|
+
export declare function auditFeatures(config: SquadConfig): FeatureAuditReport;
|
|
41
|
+
/**
|
|
42
|
+
* Filter the report to only high-risk features that need attention before GA.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getHighRiskFeatures(report: FeatureAuditReport): FeatureStatus[];
|
|
45
|
+
/**
|
|
46
|
+
* Generate a markdown summary of the audit report.
|
|
47
|
+
*/
|
|
48
|
+
export declare function generateAuditMarkdown(report: FeatureAuditReport): string;
|
|
49
|
+
//# sourceMappingURL=feature-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-audit.d.ts","sourceRoot":"","sources":["../../src/config/feature-audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9E,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,oBAAoB;IACpB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAkGD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,CAkBrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAE/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAqCxE"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Audit — Risk Punch List (M3-13, Issue #154)
|
|
3
|
+
*
|
|
4
|
+
* Internal development tool that audits all v1 modules for completeness
|
|
5
|
+
* and produces a risk assessment before GA.
|
|
6
|
+
*/
|
|
7
|
+
function checkCoordinator(config) {
|
|
8
|
+
const hasAgents = config.agents.length > 0;
|
|
9
|
+
const hasRouting = config.routing.rules.length > 0;
|
|
10
|
+
if (hasAgents && hasRouting) {
|
|
11
|
+
return { name: 'coordinator', status: 'complete', notes: 'Agents and routing rules configured', riskLevel: 'low' };
|
|
12
|
+
}
|
|
13
|
+
if (hasAgents || hasRouting) {
|
|
14
|
+
return { name: 'coordinator', status: 'partial', notes: 'Missing agents or routing rules', riskLevel: 'medium' };
|
|
15
|
+
}
|
|
16
|
+
return { name: 'coordinator', status: 'stub', notes: 'No agents or routing rules configured', riskLevel: 'high' };
|
|
17
|
+
}
|
|
18
|
+
function checkCasting(config) {
|
|
19
|
+
// Casting is a standalone engine; config only needs agents to benefit
|
|
20
|
+
const hasAgents = config.agents.length > 0;
|
|
21
|
+
if (hasAgents) {
|
|
22
|
+
return { name: 'casting', status: 'complete', notes: 'Casting engine available with configured agents', riskLevel: 'low' };
|
|
23
|
+
}
|
|
24
|
+
return { name: 'casting', status: 'partial', notes: 'No agents configured to cast', riskLevel: 'medium' };
|
|
25
|
+
}
|
|
26
|
+
function checkSkills(_config) {
|
|
27
|
+
// Skills system exists but is loaded at runtime from filesystem
|
|
28
|
+
return { name: 'skills', status: 'complete', notes: 'Skill loader and matcher implemented', riskLevel: 'low' };
|
|
29
|
+
}
|
|
30
|
+
function checkRouting(config) {
|
|
31
|
+
const ruleCount = config.routing.rules.length;
|
|
32
|
+
const hasFallback = !!config.routing.fallbackBehavior;
|
|
33
|
+
if (ruleCount > 0 && hasFallback) {
|
|
34
|
+
return { name: 'routing', status: 'complete', notes: `${ruleCount} routing rule(s) with fallback`, riskLevel: 'low' };
|
|
35
|
+
}
|
|
36
|
+
if (hasFallback) {
|
|
37
|
+
return { name: 'routing', status: 'partial', notes: 'Fallback configured but no routing rules', riskLevel: 'medium' };
|
|
38
|
+
}
|
|
39
|
+
return { name: 'routing', status: 'stub', notes: 'No routing rules or fallback configured', riskLevel: 'high' };
|
|
40
|
+
}
|
|
41
|
+
function checkModels(config) {
|
|
42
|
+
const hasDefault = !!config.models.default;
|
|
43
|
+
const tierCount = Object.keys(config.models.tiers).length;
|
|
44
|
+
if (hasDefault && tierCount > 0) {
|
|
45
|
+
return { name: 'models', status: 'complete', notes: `Default model set, ${tierCount} tier(s) configured`, riskLevel: 'low' };
|
|
46
|
+
}
|
|
47
|
+
if (hasDefault) {
|
|
48
|
+
return { name: 'models', status: 'partial', notes: 'Default model set but no tiers', riskLevel: 'medium' };
|
|
49
|
+
}
|
|
50
|
+
return { name: 'models', status: 'stub', notes: 'No default model configured', riskLevel: 'high' };
|
|
51
|
+
}
|
|
52
|
+
function checkHooks(config) {
|
|
53
|
+
if (!config.hooks) {
|
|
54
|
+
return { name: 'hooks', status: 'partial', notes: 'Hooks section not configured', riskLevel: 'medium' };
|
|
55
|
+
}
|
|
56
|
+
const hasAny = (config.hooks.allowedWritePaths && config.hooks.allowedWritePaths.length > 0) ||
|
|
57
|
+
(config.hooks.blockedCommands && config.hooks.blockedCommands.length > 0) ||
|
|
58
|
+
config.hooks.scrubPii !== undefined ||
|
|
59
|
+
config.hooks.reviewerLockout !== undefined;
|
|
60
|
+
if (hasAny) {
|
|
61
|
+
return { name: 'hooks', status: 'complete', notes: 'Hook policies configured', riskLevel: 'low' };
|
|
62
|
+
}
|
|
63
|
+
return { name: 'hooks', status: 'partial', notes: 'Hooks section present but empty', riskLevel: 'medium' };
|
|
64
|
+
}
|
|
65
|
+
function checkTools(_config) {
|
|
66
|
+
// Tools are registered at runtime via ToolRegistry
|
|
67
|
+
return { name: 'tools', status: 'complete', notes: 'ToolRegistry with 5 built-in squad tools', riskLevel: 'low' };
|
|
68
|
+
}
|
|
69
|
+
function checkStreaming(_config) {
|
|
70
|
+
// Streaming pipeline exists in runtime/streaming.ts
|
|
71
|
+
return { name: 'streaming', status: 'complete', notes: 'Streaming event pipeline implemented', riskLevel: 'low' };
|
|
72
|
+
}
|
|
73
|
+
const MODULE_CHECKERS = [
|
|
74
|
+
checkCoordinator,
|
|
75
|
+
checkCasting,
|
|
76
|
+
checkSkills,
|
|
77
|
+
checkRouting,
|
|
78
|
+
checkModels,
|
|
79
|
+
checkHooks,
|
|
80
|
+
checkTools,
|
|
81
|
+
checkStreaming,
|
|
82
|
+
];
|
|
83
|
+
// --- Public API ---
|
|
84
|
+
/**
|
|
85
|
+
* Audit all v1 modules against the provided config and return a report.
|
|
86
|
+
*/
|
|
87
|
+
export function auditFeatures(config) {
|
|
88
|
+
const features = MODULE_CHECKERS.map((checker) => checker(config));
|
|
89
|
+
const summary = {
|
|
90
|
+
total: features.length,
|
|
91
|
+
complete: features.filter((f) => f.status === 'complete').length,
|
|
92
|
+
partial: features.filter((f) => f.status === 'partial').length,
|
|
93
|
+
stub: features.filter((f) => f.status === 'stub').length,
|
|
94
|
+
missing: features.filter((f) => f.status === 'missing').length,
|
|
95
|
+
highRisk: features.filter((f) => f.riskLevel === 'high').length,
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
timestamp: new Date().toISOString(),
|
|
99
|
+
configVersion: config.version,
|
|
100
|
+
features,
|
|
101
|
+
summary,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Filter the report to only high-risk features that need attention before GA.
|
|
106
|
+
*/
|
|
107
|
+
export function getHighRiskFeatures(report) {
|
|
108
|
+
return report.features.filter((f) => f.riskLevel === 'high');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Generate a markdown summary of the audit report.
|
|
112
|
+
*/
|
|
113
|
+
export function generateAuditMarkdown(report) {
|
|
114
|
+
const lines = [
|
|
115
|
+
'# Feature Audit Report',
|
|
116
|
+
'',
|
|
117
|
+
`**Generated:** ${report.timestamp}`,
|
|
118
|
+
`**Config Version:** ${report.configVersion}`,
|
|
119
|
+
'',
|
|
120
|
+
'## Summary',
|
|
121
|
+
'',
|
|
122
|
+
`| Metric | Count |`,
|
|
123
|
+
`| --- | --- |`,
|
|
124
|
+
`| Total modules | ${report.summary.total} |`,
|
|
125
|
+
`| Complete | ${report.summary.complete} |`,
|
|
126
|
+
`| Partial | ${report.summary.partial} |`,
|
|
127
|
+
`| Stub | ${report.summary.stub} |`,
|
|
128
|
+
`| Missing | ${report.summary.missing} |`,
|
|
129
|
+
`| **High risk** | **${report.summary.highRisk}** |`,
|
|
130
|
+
'',
|
|
131
|
+
'## Module Details',
|
|
132
|
+
'',
|
|
133
|
+
'| Module | Status | Risk | Notes |',
|
|
134
|
+
'| --- | --- | --- | --- |',
|
|
135
|
+
];
|
|
136
|
+
for (const f of report.features) {
|
|
137
|
+
lines.push(`| ${f.name} | ${f.status} | ${f.riskLevel} | ${f.notes} |`);
|
|
138
|
+
}
|
|
139
|
+
const highRisk = getHighRiskFeatures(report);
|
|
140
|
+
if (highRisk.length > 0) {
|
|
141
|
+
lines.push('', '## ⚠️ High Risk Items', '');
|
|
142
|
+
for (const f of highRisk) {
|
|
143
|
+
lines.push(`- **${f.name}** (${f.status}): ${f.notes}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return lines.join('\n');
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=feature-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-audit.js","sourceRoot":"","sources":["../../src/config/feature-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration module exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './schema.js';
|
|
5
|
+
export * from './agent-source.js';
|
|
6
|
+
export * from './routing.js';
|
|
7
|
+
export * from './models.js';
|
|
8
|
+
export * from './init.js';
|
|
9
|
+
export * from './agent-doc.js';
|
|
10
|
+
export * from './doc-sync.js';
|
|
11
|
+
export * from './migration.js';
|
|
12
|
+
export * from './markdown-migration.js';
|
|
13
|
+
export * from './legacy-fallback.js';
|
|
14
|
+
export * from './feature-audit.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration module exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './schema.js';
|
|
5
|
+
export * from './agent-source.js';
|
|
6
|
+
export * from './routing.js';
|
|
7
|
+
export * from './models.js';
|
|
8
|
+
export * from './init.js';
|
|
9
|
+
export * from './agent-doc.js';
|
|
10
|
+
export * from './doc-sync.js';
|
|
11
|
+
export * from './migration.js';
|
|
12
|
+
export * from './markdown-migration.js';
|
|
13
|
+
export * from './legacy-fallback.js';
|
|
14
|
+
export * from './feature-audit.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Squad Initialization Module (M2-6, PRD #98)
|
|
3
|
+
*
|
|
4
|
+
* Creates new Squad projects with typed configuration.
|
|
5
|
+
* Generates squad.config.ts or squad.config.json with agent definitions.
|
|
6
|
+
*
|
|
7
|
+
* @module config/init
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Agent specification for initialization.
|
|
11
|
+
*/
|
|
12
|
+
export interface InitAgentSpec {
|
|
13
|
+
/** Agent name (kebab-case) */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Agent role identifier */
|
|
16
|
+
role: string;
|
|
17
|
+
/** Display name (optional, defaults to titlecased name) */
|
|
18
|
+
displayName?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialization options.
|
|
22
|
+
*/
|
|
23
|
+
export interface InitOptions {
|
|
24
|
+
/** Root directory for Squad team files */
|
|
25
|
+
teamRoot: string;
|
|
26
|
+
/** Project name */
|
|
27
|
+
projectName: string;
|
|
28
|
+
/** Project description (optional) */
|
|
29
|
+
projectDescription?: string;
|
|
30
|
+
/** Agents to create */
|
|
31
|
+
agents: InitAgentSpec[];
|
|
32
|
+
/** Config format (typescript or json) */
|
|
33
|
+
configFormat?: 'typescript' | 'json';
|
|
34
|
+
/** User name for initial history entries */
|
|
35
|
+
userName?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Initialization result.
|
|
39
|
+
*/
|
|
40
|
+
export interface InitResult {
|
|
41
|
+
/** List of created file paths */
|
|
42
|
+
createdFiles: string[];
|
|
43
|
+
/** Configuration file path */
|
|
44
|
+
configPath: string;
|
|
45
|
+
/** Agent directory paths */
|
|
46
|
+
agentDirs: string[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Initialize a new Squad project.
|
|
50
|
+
*
|
|
51
|
+
* Creates:
|
|
52
|
+
* - .squad/ directory structure
|
|
53
|
+
* - squad.config.ts or squad.config.json
|
|
54
|
+
* - Agent directories with charter.md and history.md
|
|
55
|
+
* - .gitattributes for merge drivers
|
|
56
|
+
*
|
|
57
|
+
* @param options - Initialization options
|
|
58
|
+
* @returns Result with created file paths
|
|
59
|
+
*/
|
|
60
|
+
export declare function initSquad(options: InitOptions): Promise<InitResult>;
|
|
61
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/config/init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB;IACvB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,yCAAyC;IACzC,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IACrC,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAmRD;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAmHzE"}
|