sigma-agents 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { SmartRouter } from './router.js';
2
- export { ModelProfiler } from './profiles.js';
3
- export { SubAgentManager } from './sub-agent.js';
4
- export * from './types.js';
1
+ export { ModelProfiler } from "./profiles.js";
2
+ export { SmartRouter } from "./router.js";
3
+ export { SubAgentManager } from "./sub-agent.js";
4
+ export * from "./types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -14,11 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SubAgentManager = exports.ModelProfiler = exports.SmartRouter = void 0;
18
- var router_js_1 = require("./router.js");
19
- Object.defineProperty(exports, "SmartRouter", { enumerable: true, get: function () { return router_js_1.SmartRouter; } });
17
+ exports.SubAgentManager = exports.SmartRouter = exports.ModelProfiler = void 0;
20
18
  var profiles_js_1 = require("./profiles.js");
21
19
  Object.defineProperty(exports, "ModelProfiler", { enumerable: true, get: function () { return profiles_js_1.ModelProfiler; } });
20
+ var router_js_1 = require("./router.js");
21
+ Object.defineProperty(exports, "SmartRouter", { enumerable: true, get: function () { return router_js_1.SmartRouter; } });
22
22
  var sub_agent_js_1 = require("./sub-agent.js");
23
23
  Object.defineProperty(exports, "SubAgentManager", { enumerable: true, get: function () { return sub_agent_js_1.SubAgentManager; } });
24
24
  __exportStar(require("./types.js"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,+CAAiD;AAAxC,+GAAA,eAAe,OAAA;AACxB,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,+CAAiD;AAAxC,+GAAA,eAAe,OAAA;AACxB,6CAA2B"}
@@ -1,4 +1,4 @@
1
- import { ModelProfile, TaskCategory } from './types.js';
1
+ import type { ModelProfile, TaskCategory } from "./types.js";
2
2
  export declare class ModelProfiler {
3
3
  profiles: Map<string, ModelProfile>;
4
4
  /**
@@ -21,6 +21,12 @@ export declare class ModelProfiler {
21
21
  * Charge les profiles par défaut des modèles Alibaba
22
22
  */
23
23
  private loadDefaultProfiles;
24
+ /**
25
+ * Valide la forme d'un profile chargé depuis un JSON non fiable.
26
+ * Empêche les entrées sans id (qui s'écraseraient sous la clé undefined)
27
+ * et les champs malformés qui feraient planter getBestForTask.
28
+ */
29
+ static isValidProfile(profile: unknown): profile is ModelProfile;
24
30
  /**
25
31
  * Returns empty default profiles.
26
32
  * Actual profiles should be populated from /phi-init or user configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxD,qBAAa,aAAa;IACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;IAEvD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIvC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI;IAqB3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;OAIG;IACH,kBAAkB,IAAI,YAAY,EAAE;CAGrC"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,qBAAa,aAAa;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;IAEvD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIvC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI;IAqB3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,YAAY;IA6BhE;;;;OAIG;IACH,kBAAkB,IAAI,YAAY,EAAE;CAGpC"}
package/dist/profiles.js CHANGED
@@ -9,18 +9,25 @@ class ModelProfiler {
9
9
  */
10
10
  async loadFromFile(path) {
11
11
  try {
12
- const content = await (0, promises_1.readFile)(path, 'utf8');
12
+ const content = await (0, promises_1.readFile)(path, "utf8");
13
13
  const data = JSON.parse(content);
14
14
  if (Array.isArray(data.profiles)) {
15
15
  this.profiles.clear();
16
16
  for (const profile of data.profiles) {
17
+ if (!ModelProfiler.isValidProfile(profile)) {
18
+ console.warn("Skipping invalid profile entry");
19
+ continue;
20
+ }
17
21
  this.profiles.set(profile.id, profile);
18
22
  }
19
23
  }
20
24
  }
21
25
  catch (error) {
22
- // If file doesn't exist, use default profiles
23
- console.warn(`Could not load profiles from ${path}:`, error);
26
+ // Missing file is nominal: fall back to defaults silently.
27
+ // Only warn on real read/parse errors.
28
+ if (error.code !== "ENOENT") {
29
+ console.warn(`Could not load profiles from ${path}:`, error);
30
+ }
24
31
  this.loadDefaultProfiles();
25
32
  }
26
33
  }
@@ -29,9 +36,9 @@ class ModelProfiler {
29
36
  */
30
37
  async saveToFile(path) {
31
38
  const data = {
32
- profiles: Array.from(this.profiles.values())
39
+ profiles: Array.from(this.profiles.values()),
33
40
  };
34
- await (0, promises_1.writeFile)(path, JSON.stringify(data, null, 2), 'utf8');
41
+ await (0, promises_1.writeFile)(path, JSON.stringify(data, null, 2), "utf8");
35
42
  }
36
43
  /**
37
44
  * Ajoute un profile
@@ -44,7 +51,7 @@ class ModelProfiler {
44
51
  */
45
52
  getBestForTask(category) {
46
53
  const candidates = Array.from(this.profiles.values())
47
- .filter(profile => profile.strengths.includes(category))
54
+ .filter((profile) => profile.strengths.includes(category))
48
55
  .sort((a, b) => {
49
56
  // Priority: quality > speed
50
57
  if (a.quality !== b.quality) {
@@ -69,6 +76,36 @@ class ModelProfiler {
69
76
  this.profiles.set(profile.id, profile);
70
77
  }
71
78
  }
79
+ /**
80
+ * Valide la forme d'un profile chargé depuis un JSON non fiable.
81
+ * Empêche les entrées sans id (qui s'écraseraient sous la clé undefined)
82
+ * et les champs malformés qui feraient planter getBestForTask.
83
+ */
84
+ static isValidProfile(profile) {
85
+ if (typeof profile !== "object" || profile === null) {
86
+ return false;
87
+ }
88
+ const p = profile;
89
+ if (typeof p.id !== "string" || p.id.length === 0) {
90
+ return false;
91
+ }
92
+ if (typeof p.provider !== "string") {
93
+ return false;
94
+ }
95
+ if (p.speed !== "fast" && p.speed !== "medium" && p.speed !== "slow") {
96
+ return false;
97
+ }
98
+ if (p.quality !== "high" && p.quality !== "medium" && p.quality !== "low") {
99
+ return false;
100
+ }
101
+ if (!Array.isArray(p.strengths) || !p.strengths.every((s) => typeof s === "string")) {
102
+ return false;
103
+ }
104
+ if (typeof p.maxTokens !== "number" || typeof p.supportsTools !== "boolean") {
105
+ return false;
106
+ }
107
+ return true;
108
+ }
72
109
  /**
73
110
  * Returns empty default profiles.
74
111
  * Actual profiles should be populated from /phi-init or user configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { RoutingConfig, TaskCategory } from './types.js';
1
+ import type { RoutingConfig, TaskCategory } from "./types.js";
2
2
  export declare class SmartRouter {
3
3
  private config;
4
4
  constructor(config: RoutingConfig);
@@ -19,6 +19,11 @@ export declare class SmartRouter {
19
19
  * Charge la configuration depuis un fichier JSON
20
20
  */
21
21
  static loadConfig(configPath: string): Promise<RoutingConfig>;
22
+ /**
23
+ * Valide la structure d'une RoutingConfig chargée depuis un fichier non fiable.
24
+ * Fail-safe : retourne false sur toute incohérence structurelle.
25
+ */
26
+ static validateRoutingConfig(config: unknown): config is RoutingConfig;
22
27
  /**
23
28
  * Default configuration with provider-agnostic model names.
24
29
  * Uses 'default' as model placeholder — the actual model is determined
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IA+B1C;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE;IAmBlG;;OAEG;WACU,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAUnE;;;;OAIG;IACH,MAAM,CAAC,aAAa,IAAI,aAAa;CAoDtC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,qBAAa,WAAW;IACvB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAkC1C;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE;IAmBlG;;OAEG;WACU,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBnE;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,aAAa;IA2CtE;;;;OAIG;IACH,MAAM,CAAC,aAAa,IAAI,aAAa;CAoIrC"}
package/dist/router.js CHANGED
@@ -14,18 +14,23 @@ class SmartRouter {
14
14
  classifyTask(prompt) {
15
15
  const lowerPrompt = prompt.toLowerCase();
16
16
  const categories = [];
17
+ if (!this.config?.routes) {
18
+ return "general";
19
+ }
17
20
  // Check each category
18
21
  for (const [category, route] of Object.entries(this.config.routes)) {
19
- const hasKeyword = route.keywords.some(keyword => lowerPrompt.includes(keyword.toLowerCase()));
22
+ if (!Array.isArray(route?.keywords))
23
+ continue;
24
+ const hasKeyword = route.keywords.some((keyword) => lowerPrompt.includes(keyword.toLowerCase()));
20
25
  if (hasKeyword) {
21
26
  categories.push(category);
22
27
  }
23
28
  }
24
29
  if (categories.length === 0) {
25
- return 'general';
30
+ return "general";
26
31
  }
27
32
  // Apply priorities
28
- const priorityOrder = ['debug', 'code', 'plan', 'review', 'test', 'explore', 'general'];
33
+ const priorityOrder = ["debug", "code", "plan", "review", "test", "explore", "general"];
29
34
  for (const priority of priorityOrder) {
30
35
  if (categories.includes(priority)) {
31
36
  return priority;
@@ -43,13 +48,13 @@ class SmartRouter {
43
48
  return {
44
49
  model: this.config.default.model,
45
50
  agent: this.config.default.agent,
46
- category
51
+ category,
47
52
  };
48
53
  }
49
54
  return {
50
55
  model: route.preferredModel,
51
56
  agent: route.agent,
52
- category
57
+ category,
53
58
  };
54
59
  }
55
60
  /**
@@ -57,14 +62,60 @@ class SmartRouter {
57
62
  */
58
63
  static async loadConfig(configPath) {
59
64
  try {
60
- const content = await (0, promises_1.readFile)(configPath, 'utf8');
61
- return JSON.parse(content);
65
+ const content = await (0, promises_1.readFile)(configPath, "utf8");
66
+ const parsed = JSON.parse(content);
67
+ if (!SmartRouter.validateRoutingConfig(parsed)) {
68
+ console.warn(`Invalid routing config structure in ${configPath}; falling back to defaults`);
69
+ return SmartRouter.defaultConfig();
70
+ }
71
+ return parsed;
62
72
  }
63
73
  catch {
64
74
  // File doesn't exist yet — use defaults silently
65
75
  return SmartRouter.defaultConfig();
66
76
  }
67
77
  }
78
+ /**
79
+ * Valide la structure d'une RoutingConfig chargée depuis un fichier non fiable.
80
+ * Fail-safe : retourne false sur toute incohérence structurelle.
81
+ */
82
+ static validateRoutingConfig(config) {
83
+ if (typeof config !== "object" || config === null) {
84
+ return false;
85
+ }
86
+ const candidate = config;
87
+ const routes = candidate.routes;
88
+ if (typeof routes !== "object" || routes === null) {
89
+ return false;
90
+ }
91
+ for (const route of Object.values(routes)) {
92
+ if (typeof route !== "object" || route === null) {
93
+ return false;
94
+ }
95
+ const r = route;
96
+ if (typeof r.preferredModel !== "string" || typeof r.fallback !== "string") {
97
+ return false;
98
+ }
99
+ if (!(r.agent === null || typeof r.agent === "string")) {
100
+ return false;
101
+ }
102
+ if (!Array.isArray(r.keywords) || !r.keywords.every((k) => typeof k === "string")) {
103
+ return false;
104
+ }
105
+ }
106
+ const defaults = candidate.default;
107
+ if (typeof defaults !== "object" || defaults === null) {
108
+ return false;
109
+ }
110
+ const d = defaults;
111
+ if (typeof d.model !== "string") {
112
+ return false;
113
+ }
114
+ if (!(d.agent === null || typeof d.agent === "string")) {
115
+ return false;
116
+ }
117
+ return true;
118
+ }
68
119
  /**
69
120
  * Default configuration with provider-agnostic model names.
70
121
  * Uses 'default' as model placeholder — the actual model is determined
@@ -74,52 +125,132 @@ class SmartRouter {
74
125
  return {
75
126
  routes: {
76
127
  code: {
77
- preferredModel: 'default',
78
- fallback: 'default',
128
+ preferredModel: "default",
129
+ fallback: "default",
79
130
  agent: null,
80
- keywords: ['code', 'implement', 'write', 'create', 'build', 'développer', 'coder', 'programmer', 'function', 'class', 'method']
131
+ keywords: [
132
+ "code",
133
+ "implement",
134
+ "write",
135
+ "create",
136
+ "build",
137
+ "développer",
138
+ "coder",
139
+ "programmer",
140
+ "function",
141
+ "class",
142
+ "method",
143
+ ],
81
144
  },
82
145
  debug: {
83
- preferredModel: 'default',
84
- fallback: 'default',
146
+ preferredModel: "default",
147
+ fallback: "default",
85
148
  agent: null,
86
- keywords: ['debug', 'fix', 'error', 'bug', 'broken', 'issue', 'problem', 'repair', 'correct', 'erreur', 'problème', 'réparer']
149
+ keywords: [
150
+ "debug",
151
+ "fix",
152
+ "error",
153
+ "bug",
154
+ "broken",
155
+ "issue",
156
+ "problem",
157
+ "repair",
158
+ "correct",
159
+ "erreur",
160
+ "problème",
161
+ "réparer",
162
+ ],
87
163
  },
88
164
  explore: {
89
- preferredModel: 'default',
90
- fallback: 'default',
165
+ preferredModel: "default",
166
+ fallback: "default",
91
167
  agent: null,
92
- keywords: ['explore', 'understand', 'analyze', 'examine', 'investigate', 'study', 'review', 'explorer', 'analyser', 'comprendre']
168
+ keywords: [
169
+ "explore",
170
+ "understand",
171
+ "analyze",
172
+ "examine",
173
+ "investigate",
174
+ "study",
175
+ "review",
176
+ "explorer",
177
+ "analyser",
178
+ "comprendre",
179
+ ],
93
180
  },
94
181
  plan: {
95
- preferredModel: 'default',
96
- fallback: 'default',
182
+ preferredModel: "default",
183
+ fallback: "default",
97
184
  agent: null,
98
- keywords: ['plan', 'design', 'architecture', 'strategy', 'approach', 'structure', 'organize', 'concevoir', 'planifier', 'architecture']
185
+ keywords: [
186
+ "plan",
187
+ "design",
188
+ "architecture",
189
+ "strategy",
190
+ "approach",
191
+ "structure",
192
+ "organize",
193
+ "concevoir",
194
+ "planifier",
195
+ "architecture",
196
+ ],
99
197
  },
100
198
  test: {
101
- preferredModel: 'default',
102
- fallback: 'default',
199
+ preferredModel: "default",
200
+ fallback: "default",
103
201
  agent: null,
104
- keywords: ['test', 'testing', 'unit', 'integration', 'verify', 'validate', 'check', 'tester', 'vérifier', 'valider']
202
+ keywords: [
203
+ "test",
204
+ "testing",
205
+ "unit",
206
+ "integration",
207
+ "verify",
208
+ "validate",
209
+ "check",
210
+ "tester",
211
+ "vérifier",
212
+ "valider",
213
+ ],
105
214
  },
106
215
  review: {
107
- preferredModel: 'default',
108
- fallback: 'default',
216
+ preferredModel: "default",
217
+ fallback: "default",
109
218
  agent: null,
110
- keywords: ['review', 'audit', 'check', 'validate', 'quality', 'improve', 'optimize', 'réviser', 'améliorer', 'optimiser']
219
+ keywords: [
220
+ "review",
221
+ "audit",
222
+ "check",
223
+ "validate",
224
+ "quality",
225
+ "improve",
226
+ "optimize",
227
+ "réviser",
228
+ "améliorer",
229
+ "optimiser",
230
+ ],
111
231
  },
112
232
  general: {
113
- preferredModel: 'default',
114
- fallback: 'default',
233
+ preferredModel: "default",
234
+ fallback: "default",
115
235
  agent: null,
116
- keywords: ['help', 'explain', 'what', 'how', 'why', 'question', 'aide', 'expliquer', 'comment', 'pourquoi']
117
- }
236
+ keywords: [
237
+ "help",
238
+ "explain",
239
+ "what",
240
+ "how",
241
+ "why",
242
+ "question",
243
+ "aide",
244
+ "expliquer",
245
+ "comment",
246
+ "pourquoi",
247
+ ],
248
+ },
118
249
  },
119
250
  default: {
120
- model: 'default',
121
- agent: null
122
- }
251
+ model: "default",
252
+ agent: null,
253
+ },
123
254
  };
124
255
  }
125
256
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SubAgentConfig } from './types.js';
1
+ import type { SubAgentConfig } from "./types.js";
2
2
  export declare class SubAgentManager {
3
3
  private agents;
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sub-agent.d.ts","sourceRoot":"","sources":["../src/sub-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA0C;IAExD;;;OAGG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5D;;OAEG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAItC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAa5D;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IA0E1D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGhC"}
1
+ {"version":3,"file":"sub-agent.d.ts","sourceRoot":"","sources":["../src/sub-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,eAAe;IAC3B,OAAO,CAAC,MAAM,CAA0C;IAExD;;;OAGG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5D;;OAEG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAItC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAI5D;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IA4E1D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG/B"}
package/dist/sub-agent.js CHANGED
@@ -12,12 +12,12 @@ class SubAgentManager {
12
12
  async loadAgentDefinitions(agentsDir) {
13
13
  try {
14
14
  const files = await (0, promises_1.readdir)(agentsDir);
15
- const mdFiles = files.filter(file => file.endsWith('.md'));
15
+ const mdFiles = files.filter((file) => file.endsWith(".md"));
16
16
  this.agents.clear();
17
17
  for (const file of mdFiles) {
18
18
  try {
19
19
  const filePath = (0, node_path_1.join)(agentsDir, file);
20
- const content = await (0, promises_1.readFile)(filePath, 'utf8');
20
+ const content = await (0, promises_1.readFile)(filePath, "utf8");
21
21
  const agent = this.parseAgentMarkdown(content);
22
22
  if (agent) {
23
23
  this.agents.set(agent.name, agent);
@@ -42,16 +42,7 @@ class SubAgentManager {
42
42
  * Construit la commande CLI pour spawner un sous-agent phi
43
43
  */
44
44
  createCommand(agent, task) {
45
- return [
46
- 'phi',
47
- '--print',
48
- '--model',
49
- agent.model,
50
- '--no-session',
51
- '--system-prompt',
52
- agent.systemPrompt,
53
- task
54
- ];
45
+ return ["phi", "--print", "--model", agent.model, "--no-session", "--system-prompt", agent.systemPrompt, task];
55
46
  }
56
47
  /**
57
48
  * Parse un fichier markdown avec frontmatter YAML
@@ -69,14 +60,14 @@ class SubAgentManager {
69
60
  * Le contenu après le frontmatter devient le system prompt...
70
61
  */
71
62
  parseAgentMarkdown(content) {
72
- const lines = content.split('\n');
73
- if (!lines[0]?.startsWith('---')) {
63
+ const lines = content.split(/\r?\n/);
64
+ if (!lines[0]?.startsWith("---")) {
74
65
  return null;
75
66
  }
76
67
  // Trouver la fin du frontmatter
77
68
  let frontmatterEnd = -1;
78
69
  for (let i = 1; i < lines.length; i++) {
79
- if (lines[i] === '---') {
70
+ if (lines[i] === "---") {
80
71
  frontmatterEnd = i;
81
72
  break;
82
73
  }
@@ -89,9 +80,9 @@ class SubAgentManager {
89
80
  const frontmatter = {};
90
81
  for (const line of frontmatterLines) {
91
82
  const trimmed = line.trim();
92
- if (!trimmed || trimmed.startsWith('#'))
83
+ if (!trimmed || trimmed.startsWith("#"))
93
84
  continue;
94
- const colonIndex = trimmed.indexOf(':');
85
+ const colonIndex = trimmed.indexOf(":");
95
86
  if (colonIndex === -1)
96
87
  continue;
97
88
  const key = trimmed.substring(0, colonIndex).trim();
@@ -99,9 +90,9 @@ class SubAgentManager {
99
90
  // Parser la valeur
100
91
  let value = valueStr;
101
92
  // Arrays (format: [item1, item2])
102
- if (valueStr.startsWith('[') && valueStr.endsWith(']')) {
93
+ if (valueStr.startsWith("[") && valueStr.endsWith("]")) {
103
94
  const arrayContent = valueStr.slice(1, -1);
104
- value = arrayContent.split(',').map(item => item.trim().replace(/['"]/g, ''));
95
+ value = arrayContent.split(",").map((item) => item.trim().replace(/['"]/g, ""));
105
96
  }
106
97
  // Numbers
107
98
  else if (/^\d+$/.test(valueStr)) {
@@ -116,18 +107,18 @@ class SubAgentManager {
116
107
  }
117
108
  // Extract system prompt (content after frontmatter)
118
109
  const systemPromptLines = lines.slice(frontmatterEnd + 1);
119
- const systemPrompt = systemPromptLines.join('\n').trim();
110
+ const systemPrompt = systemPromptLines.join("\n").trim();
120
111
  // Valider les champs requis
121
112
  if (!frontmatter.name || !frontmatter.model || !systemPrompt) {
122
113
  return null;
123
114
  }
124
115
  return {
125
116
  name: frontmatter.name,
126
- description: frontmatter.description || '',
117
+ description: frontmatter.description || "",
127
118
  model: frontmatter.model,
128
119
  tools: Array.isArray(frontmatter.tools) ? frontmatter.tools : [],
129
120
  systemPrompt,
130
- maxTokens: frontmatter.maxTokens || undefined
121
+ maxTokens: frontmatter.maxTokens || undefined,
131
122
  };
132
123
  }
133
124
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sub-agent.js","sourceRoot":"","sources":["../src/sub-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sub-agent.js","sourceRoot":"","sources":["../src/sub-agent.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export type TaskCategory = 'code' | 'debug' | 'explore' | 'plan' | 'test' | 'review' | 'general';
1
+ export type TaskCategory = "code" | "debug" | "explore" | "plan" | "test" | "review" | "general";
2
2
  export interface ModelProfile {
3
3
  id: string;
4
4
  provider: string;
5
- speed: 'fast' | 'medium' | 'slow';
6
- quality: 'high' | 'medium' | 'low';
5
+ speed: "fast" | "medium" | "slow";
6
+ quality: "high" | "medium" | "low";
7
7
  strengths: TaskCategory[];
8
8
  maxTokens: number;
9
9
  supportsTools: boolean;