@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.
Files changed (306) hide show
  1. package/README.md +296 -296
  2. package/dist/adapter/client.d.ts +225 -0
  3. package/dist/adapter/client.d.ts.map +1 -0
  4. package/dist/adapter/client.js +397 -0
  5. package/dist/adapter/client.js.map +1 -0
  6. package/dist/adapter/errors.d.ts +260 -0
  7. package/dist/adapter/errors.d.ts.map +1 -0
  8. package/dist/adapter/errors.js +362 -0
  9. package/dist/adapter/errors.js.map +1 -0
  10. package/dist/adapter/types.d.ts +779 -0
  11. package/dist/adapter/types.d.ts.map +1 -0
  12. package/dist/adapter/types.js +11 -0
  13. package/dist/adapter/types.js.map +1 -0
  14. package/dist/agents/charter-compiler.d.ts +102 -0
  15. package/dist/agents/charter-compiler.d.ts.map +1 -0
  16. package/dist/agents/charter-compiler.js +157 -0
  17. package/dist/agents/charter-compiler.js.map +1 -0
  18. package/dist/agents/history-shadow.d.ts +80 -0
  19. package/dist/agents/history-shadow.d.ts.map +1 -0
  20. package/dist/agents/history-shadow.js +239 -0
  21. package/dist/agents/history-shadow.js.map +1 -0
  22. package/dist/agents/index.d.ts +68 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +74 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/agents/lifecycle.d.ts +138 -0
  27. package/dist/agents/lifecycle.d.ts.map +1 -0
  28. package/dist/agents/lifecycle.js +258 -0
  29. package/dist/agents/lifecycle.js.map +1 -0
  30. package/dist/agents/model-selector.d.ts +80 -0
  31. package/dist/agents/model-selector.d.ts.map +1 -0
  32. package/dist/agents/model-selector.js +198 -0
  33. package/dist/agents/model-selector.js.map +1 -0
  34. package/dist/agents/onboarding.d.ts +65 -0
  35. package/dist/agents/onboarding.d.ts.map +1 -0
  36. package/dist/agents/onboarding.js +373 -0
  37. package/dist/agents/onboarding.js.map +1 -0
  38. package/dist/build/bundle.d.ts +32 -0
  39. package/dist/build/bundle.d.ts.map +1 -0
  40. package/dist/build/bundle.js +97 -0
  41. package/dist/build/bundle.js.map +1 -0
  42. package/dist/build/ci-pipeline.d.ts +51 -0
  43. package/dist/build/ci-pipeline.d.ts.map +1 -0
  44. package/dist/build/ci-pipeline.js +180 -0
  45. package/dist/build/ci-pipeline.js.map +1 -0
  46. package/dist/build/github-dist.d.ts +37 -0
  47. package/dist/build/github-dist.d.ts.map +1 -0
  48. package/dist/build/github-dist.js +117 -0
  49. package/dist/build/github-dist.js.map +1 -0
  50. package/dist/build/index.d.ts +11 -0
  51. package/dist/build/index.d.ts.map +1 -0
  52. package/dist/build/index.js +11 -0
  53. package/dist/build/index.js.map +1 -0
  54. package/dist/build/install-migration.d.ts +28 -0
  55. package/dist/build/install-migration.d.ts.map +1 -0
  56. package/dist/build/install-migration.js +103 -0
  57. package/dist/build/install-migration.js.map +1 -0
  58. package/dist/build/npm-package.d.ts +54 -0
  59. package/dist/build/npm-package.d.ts.map +1 -0
  60. package/dist/build/npm-package.js +128 -0
  61. package/dist/build/npm-package.js.map +1 -0
  62. package/dist/build/release.d.ts +108 -0
  63. package/dist/build/release.d.ts.map +1 -0
  64. package/dist/build/release.js +295 -0
  65. package/dist/build/release.js.map +1 -0
  66. package/dist/build/versioning.d.ts +38 -0
  67. package/dist/build/versioning.d.ts.map +1 -0
  68. package/dist/build/versioning.js +113 -0
  69. package/dist/build/versioning.js.map +1 -0
  70. package/dist/casting/casting-engine.d.ts +60 -0
  71. package/dist/casting/casting-engine.d.ts.map +1 -0
  72. package/dist/casting/casting-engine.js +223 -0
  73. package/dist/casting/casting-engine.js.map +1 -0
  74. package/dist/casting/casting-history.d.ts +54 -0
  75. package/dist/casting/casting-history.d.ts.map +1 -0
  76. package/dist/casting/casting-history.js +63 -0
  77. package/dist/casting/casting-history.js.map +1 -0
  78. package/dist/casting/index.d.ts +46 -0
  79. package/dist/casting/index.d.ts.map +1 -0
  80. package/dist/casting/index.js +37 -0
  81. package/dist/casting/index.js.map +1 -0
  82. package/dist/client/event-bus.d.ts +29 -0
  83. package/dist/client/event-bus.d.ts.map +1 -0
  84. package/dist/client/event-bus.js +53 -0
  85. package/dist/client/event-bus.js.map +1 -0
  86. package/dist/client/index.d.ts +100 -0
  87. package/dist/client/index.d.ts.map +1 -0
  88. package/dist/client/index.js +170 -0
  89. package/dist/client/index.js.map +1 -0
  90. package/dist/client/session-pool.d.ts +66 -0
  91. package/dist/client/session-pool.d.ts.map +1 -0
  92. package/dist/client/session-pool.js +145 -0
  93. package/dist/client/session-pool.js.map +1 -0
  94. package/dist/config/agent-doc.d.ts +43 -0
  95. package/dist/config/agent-doc.d.ts.map +1 -0
  96. package/dist/config/agent-doc.js +158 -0
  97. package/dist/config/agent-doc.js.map +1 -0
  98. package/dist/config/agent-source.d.ts +95 -0
  99. package/dist/config/agent-source.d.ts.map +1 -0
  100. package/dist/config/agent-source.js +274 -0
  101. package/dist/config/agent-source.js.map +1 -0
  102. package/dist/config/doc-sync.d.ts +66 -0
  103. package/dist/config/doc-sync.d.ts.map +1 -0
  104. package/dist/config/doc-sync.js +270 -0
  105. package/dist/config/doc-sync.js.map +1 -0
  106. package/dist/config/feature-audit.d.ts +49 -0
  107. package/dist/config/feature-audit.d.ts.map +1 -0
  108. package/dist/config/feature-audit.js +148 -0
  109. package/dist/config/feature-audit.js.map +1 -0
  110. package/dist/config/index.d.ts +15 -0
  111. package/dist/config/index.d.ts.map +1 -0
  112. package/dist/config/index.js +15 -0
  113. package/dist/config/index.js.map +1 -0
  114. package/dist/config/init.d.ts +61 -0
  115. package/dist/config/init.d.ts.map +1 -0
  116. package/dist/config/init.js +369 -0
  117. package/dist/config/init.js.map +1 -0
  118. package/dist/config/legacy-fallback.d.ts +83 -0
  119. package/dist/config/legacy-fallback.d.ts.map +1 -0
  120. package/dist/config/legacy-fallback.js +212 -0
  121. package/dist/config/legacy-fallback.js.map +1 -0
  122. package/dist/config/markdown-migration.d.ts +157 -0
  123. package/dist/config/markdown-migration.d.ts.map +1 -0
  124. package/dist/config/markdown-migration.js +434 -0
  125. package/dist/config/markdown-migration.js.map +1 -0
  126. package/dist/config/migration.d.ts +123 -0
  127. package/dist/config/migration.d.ts.map +1 -0
  128. package/dist/config/migration.js +273 -0
  129. package/dist/config/migration.js.map +1 -0
  130. package/dist/config/migrations/index.d.ts +36 -0
  131. package/dist/config/migrations/index.d.ts.map +1 -0
  132. package/dist/config/migrations/index.js +216 -0
  133. package/dist/config/migrations/index.js.map +1 -0
  134. package/dist/config/models.d.ts +134 -0
  135. package/dist/config/models.d.ts.map +1 -0
  136. package/dist/config/models.js +354 -0
  137. package/dist/config/models.js.map +1 -0
  138. package/dist/config/routing.d.ts +118 -0
  139. package/dist/config/routing.d.ts.map +1 -0
  140. package/dist/config/routing.js +247 -0
  141. package/dist/config/routing.js.map +1 -0
  142. package/dist/config/schema.d.ts +72 -0
  143. package/dist/config/schema.d.ts.map +1 -0
  144. package/dist/config/schema.js +63 -0
  145. package/dist/config/schema.js.map +1 -0
  146. package/dist/coordinator/coordinator.d.ts +82 -0
  147. package/dist/coordinator/coordinator.d.ts.map +1 -0
  148. package/dist/coordinator/coordinator.js +174 -0
  149. package/dist/coordinator/coordinator.js.map +1 -0
  150. package/dist/coordinator/direct-response.d.ts +83 -0
  151. package/dist/coordinator/direct-response.d.ts.map +1 -0
  152. package/dist/coordinator/direct-response.js +187 -0
  153. package/dist/coordinator/direct-response.js.map +1 -0
  154. package/dist/coordinator/fan-out.d.ts +83 -0
  155. package/dist/coordinator/fan-out.d.ts.map +1 -0
  156. package/dist/coordinator/fan-out.js +161 -0
  157. package/dist/coordinator/fan-out.js.map +1 -0
  158. package/dist/coordinator/index.d.ts +47 -0
  159. package/dist/coordinator/index.d.ts.map +1 -0
  160. package/dist/coordinator/index.js +54 -0
  161. package/dist/coordinator/index.js.map +1 -0
  162. package/dist/coordinator/response-tiers.d.ts +49 -0
  163. package/dist/coordinator/response-tiers.d.ts.map +1 -0
  164. package/dist/coordinator/response-tiers.js +149 -0
  165. package/dist/coordinator/response-tiers.js.map +1 -0
  166. package/dist/hooks/index.d.ts +103 -0
  167. package/dist/hooks/index.d.ts.map +1 -0
  168. package/dist/hooks/index.js +279 -0
  169. package/dist/hooks/index.js.map +1 -0
  170. package/dist/index.d.ts +24 -1
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +23 -3
  173. package/dist/index.js.map +1 -1
  174. package/dist/marketplace/backend.d.ts +35 -0
  175. package/dist/marketplace/backend.d.ts.map +1 -0
  176. package/dist/marketplace/backend.js +99 -0
  177. package/dist/marketplace/backend.js.map +1 -0
  178. package/dist/marketplace/browser.d.ts +33 -0
  179. package/dist/marketplace/browser.d.ts.map +1 -0
  180. package/dist/marketplace/browser.js +97 -0
  181. package/dist/marketplace/browser.js.map +1 -0
  182. package/dist/marketplace/extension-adapter.d.ts +51 -0
  183. package/dist/marketplace/extension-adapter.d.ts.map +1 -0
  184. package/dist/marketplace/extension-adapter.js +81 -0
  185. package/dist/marketplace/extension-adapter.js.map +1 -0
  186. package/dist/marketplace/index.d.ts +51 -0
  187. package/dist/marketplace/index.d.ts.map +1 -0
  188. package/dist/marketplace/index.js +108 -0
  189. package/dist/marketplace/index.js.map +1 -0
  190. package/dist/marketplace/packaging.d.ts +25 -0
  191. package/dist/marketplace/packaging.d.ts.map +1 -0
  192. package/dist/marketplace/packaging.js +117 -0
  193. package/dist/marketplace/packaging.js.map +1 -0
  194. package/dist/marketplace/schema.d.ts +50 -0
  195. package/dist/marketplace/schema.d.ts.map +1 -0
  196. package/dist/marketplace/schema.js +120 -0
  197. package/dist/marketplace/schema.js.map +1 -0
  198. package/dist/marketplace/security.d.ts +26 -0
  199. package/dist/marketplace/security.d.ts.map +1 -0
  200. package/dist/marketplace/security.js +199 -0
  201. package/dist/marketplace/security.js.map +1 -0
  202. package/dist/parsers.d.ts +15 -0
  203. package/dist/parsers.d.ts.map +1 -0
  204. package/dist/parsers.js +15 -0
  205. package/dist/parsers.js.map +1 -0
  206. package/dist/ralph/index.d.ts +56 -0
  207. package/dist/ralph/index.d.ts.map +1 -0
  208. package/dist/ralph/index.js +61 -0
  209. package/dist/ralph/index.js.map +1 -0
  210. package/dist/resolution.d.ts +47 -0
  211. package/dist/resolution.d.ts.map +1 -0
  212. package/dist/resolution.js +106 -0
  213. package/dist/resolution.js.map +1 -0
  214. package/dist/runtime/benchmarks.d.ts +121 -0
  215. package/dist/runtime/benchmarks.d.ts.map +1 -0
  216. package/dist/runtime/benchmarks.js +251 -0
  217. package/dist/runtime/benchmarks.js.map +1 -0
  218. package/dist/runtime/config.d.ts +313 -0
  219. package/dist/runtime/config.d.ts.map +1 -0
  220. package/dist/runtime/config.js +466 -0
  221. package/dist/runtime/config.js.map +1 -0
  222. package/dist/runtime/cost-tracker.d.ts +73 -0
  223. package/dist/runtime/cost-tracker.d.ts.map +1 -0
  224. package/dist/runtime/cost-tracker.js +157 -0
  225. package/dist/runtime/cost-tracker.js.map +1 -0
  226. package/dist/runtime/event-bus.d.ts +190 -0
  227. package/dist/runtime/event-bus.d.ts.map +1 -0
  228. package/dist/runtime/event-bus.js +218 -0
  229. package/dist/runtime/event-bus.js.map +1 -0
  230. package/dist/runtime/health.d.ts +66 -0
  231. package/dist/runtime/health.d.ts.map +1 -0
  232. package/dist/runtime/health.js +111 -0
  233. package/dist/runtime/health.js.map +1 -0
  234. package/dist/runtime/i18n.d.ts +54 -0
  235. package/dist/runtime/i18n.d.ts.map +1 -0
  236. package/dist/runtime/i18n.js +126 -0
  237. package/dist/runtime/i18n.js.map +1 -0
  238. package/dist/runtime/offline.d.ts +64 -0
  239. package/dist/runtime/offline.d.ts.map +1 -0
  240. package/dist/runtime/offline.js +108 -0
  241. package/dist/runtime/offline.js.map +1 -0
  242. package/dist/runtime/streaming.d.ts +97 -0
  243. package/dist/runtime/streaming.d.ts.map +1 -0
  244. package/dist/runtime/streaming.js +156 -0
  245. package/dist/runtime/streaming.js.map +1 -0
  246. package/dist/runtime/telemetry.d.ts +82 -0
  247. package/dist/runtime/telemetry.d.ts.map +1 -0
  248. package/dist/runtime/telemetry.js +120 -0
  249. package/dist/runtime/telemetry.js.map +1 -0
  250. package/dist/sharing/agent-repo.d.ts +33 -0
  251. package/dist/sharing/agent-repo.d.ts.map +1 -0
  252. package/dist/sharing/agent-repo.js +79 -0
  253. package/dist/sharing/agent-repo.js.map +1 -0
  254. package/dist/sharing/cache.d.ts +36 -0
  255. package/dist/sharing/cache.d.ts.map +1 -0
  256. package/dist/sharing/cache.js +85 -0
  257. package/dist/sharing/cache.js.map +1 -0
  258. package/dist/sharing/conflicts.d.ts +32 -0
  259. package/dist/sharing/conflicts.d.ts.map +1 -0
  260. package/dist/sharing/conflicts.js +121 -0
  261. package/dist/sharing/conflicts.js.map +1 -0
  262. package/dist/sharing/export.d.ts +50 -0
  263. package/dist/sharing/export.d.ts.map +1 -0
  264. package/dist/sharing/export.js +156 -0
  265. package/dist/sharing/export.js.map +1 -0
  266. package/dist/sharing/history-split.d.ts +34 -0
  267. package/dist/sharing/history-split.d.ts.map +1 -0
  268. package/dist/sharing/history-split.js +101 -0
  269. package/dist/sharing/history-split.js.map +1 -0
  270. package/dist/sharing/import.d.ts +37 -0
  271. package/dist/sharing/import.d.ts.map +1 -0
  272. package/dist/sharing/import.js +138 -0
  273. package/dist/sharing/import.js.map +1 -0
  274. package/dist/sharing/index.d.ts +11 -0
  275. package/dist/sharing/index.d.ts.map +1 -0
  276. package/dist/sharing/index.js +11 -0
  277. package/dist/sharing/index.js.map +1 -0
  278. package/dist/sharing/versioning.d.ts +32 -0
  279. package/dist/sharing/versioning.d.ts.map +1 -0
  280. package/dist/sharing/versioning.js +64 -0
  281. package/dist/sharing/versioning.js.map +1 -0
  282. package/dist/skills/index.d.ts +49 -0
  283. package/dist/skills/index.d.ts.map +1 -0
  284. package/dist/skills/index.js +85 -0
  285. package/dist/skills/index.js.map +1 -0
  286. package/dist/skills/skill-loader.d.ts +56 -0
  287. package/dist/skills/skill-loader.d.ts.map +1 -0
  288. package/dist/skills/skill-loader.js +106 -0
  289. package/dist/skills/skill-loader.js.map +1 -0
  290. package/dist/skills/skill-source.d.ts +63 -0
  291. package/dist/skills/skill-source.d.ts.map +1 -0
  292. package/dist/skills/skill-source.js +199 -0
  293. package/dist/skills/skill-source.js.map +1 -0
  294. package/dist/tools/index.d.ts +87 -0
  295. package/dist/tools/index.d.ts.map +1 -0
  296. package/dist/tools/index.js +419 -0
  297. package/dist/tools/index.js.map +1 -0
  298. package/dist/types.d.ts +43 -0
  299. package/dist/types.d.ts.map +1 -0
  300. package/dist/types.js +8 -0
  301. package/dist/types.js.map +1 -0
  302. package/dist/utils/normalize-eol.d.ts +6 -0
  303. package/dist/utils/normalize-eol.d.ts.map +1 -0
  304. package/dist/utils/normalize-eol.js +8 -0
  305. package/dist/utils/normalize-eol.js.map +1 -0
  306. 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"}