@senpi/runtime 3.0.6-dev.runtime-phase-2.20260627082846 → 3.0.6-dev.skill-manager-v2.20260629194505

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 (41) hide show
  1. package/dist/index.d.ts +18 -6
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +0 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/skills-manager/bootstrap.d.ts +12 -7
  6. package/dist/skills-manager/bootstrap.d.ts.map +1 -1
  7. package/dist/skills-manager/bootstrap.js +44 -22
  8. package/dist/skills-manager/bootstrap.js.map +1 -1
  9. package/dist/skills-manager/constants.d.ts +5 -33
  10. package/dist/skills-manager/constants.d.ts.map +1 -1
  11. package/dist/skills-manager/constants.js +11 -50
  12. package/dist/skills-manager/constants.js.map +1 -1
  13. package/dist/skills-manager/coordinator.d.ts +26 -119
  14. package/dist/skills-manager/coordinator.d.ts.map +1 -1
  15. package/dist/skills-manager/coordinator.js +107 -344
  16. package/dist/skills-manager/coordinator.js.map +1 -1
  17. package/dist/skills-manager/fetcher.d.ts +23 -2
  18. package/dist/skills-manager/fetcher.d.ts.map +1 -1
  19. package/dist/skills-manager/fetcher.js +36 -6
  20. package/dist/skills-manager/fetcher.js.map +1 -1
  21. package/dist/skills-manager/manifest.d.ts +136 -0
  22. package/dist/skills-manager/manifest.d.ts.map +1 -0
  23. package/dist/skills-manager/manifest.js +177 -0
  24. package/dist/skills-manager/manifest.js.map +1 -0
  25. package/dist/skills-manager/skills-manifest.json +16 -0
  26. package/dist/skills-manager/types.d.ts +49 -30
  27. package/dist/skills-manager/types.d.ts.map +1 -1
  28. package/dist/skills-manager/utils.d.ts +10 -26
  29. package/dist/skills-manager/utils.d.ts.map +1 -1
  30. package/dist/skills-manager/utils.js +18 -34
  31. package/dist/skills-manager/utils.js.map +1 -1
  32. package/dist/skills-manager/version-manager.d.ts +21 -91
  33. package/dist/skills-manager/version-manager.d.ts.map +1 -1
  34. package/dist/skills-manager/version-manager.js +48 -178
  35. package/dist/skills-manager/version-manager.js.map +1 -1
  36. package/dist/skills-manager/writer.d.ts +12 -1
  37. package/dist/skills-manager/writer.d.ts.map +1 -1
  38. package/dist/skills-manager/writer.js +50 -4
  39. package/dist/skills-manager/writer.js.map +1 -1
  40. package/openclaw.plugin.json +17 -6
  41. package/package.json +3 -2
@@ -1,20 +1,9 @@
1
1
  // Env-overridable constants for the skills-manager module.
2
2
  //
3
3
  // All declarations follow the same pattern: read `process.env.<NAME>` at
4
- // module load time and fall back to a hardcoded default on missing /
5
- // unparseable input. Numeric constants delegate parsing to
6
- // `parseEnvPositiveInt` in `./utils.js` so this file stays purely a list
7
- // of "what env var maps to what default" — no logic, just declarations.
8
- //
9
- // On the constants ↔ utils import edge: `utils.ts` imports
10
- // `DEFAULT_SKILLS_DIRS` from this file for `normalizeSkillsDir`'s
11
- // fallback, and this file imports `parseEnvPositiveInt` from utils. The
12
- // resulting ESM cycle is benign because both reads are deferred — `utils.ts`
13
- // only touches `DEFAULT_SKILLS_DIRS` inside the function body of
14
- // `normalizeSkillsDir` (called at runtime, after both modules have
15
- // finished evaluating), and this file only calls `parseEnvPositiveInt`
16
- // after Node has hoisted utils's function declarations into scope.
17
- import { parseEnvPositiveInt } from "./utils.js";
4
+ // module load time and fall back to a hardcoded default on missing input —
5
+ // no logic, just declarations.
6
+ import { getManifestSkillNames } from "./manifest.js";
18
7
  export const SKILLS_MANAGER_STATE_FILE = process.env.SENPI_SKILLS_STATE_FILE ?? "skills-manager-state.json";
19
8
  /**
20
9
  * Default skills-directory search path.
@@ -49,43 +38,15 @@ export const SKILLS_REPO_BRANCH = process.env.SENPI_SKILLS_BRANCH ?? "main";
49
38
  export const SKILLS_RAW_REPO_URL = process.env.SENPI_SKILLS_RAW_REPO_URL ?? "https://raw.githubusercontent.com/Senpi-ai/senpi-skills";
50
39
  /** Full base URL for fetching raw skill files: <raw-repo-url>/<branch>. */
51
40
  export const SKILLS_RAW_BASE_URL = `${SKILLS_RAW_REPO_URL}/${SKILLS_REPO_BRANCH}`;
52
- /** Allowlist of skill names that may be installed from the remote skills repo. */
53
- export const ALLOWED_SKILLS = (() => {
54
- const parsed = process.env.SENPI_ALLOWED_SKILLS?.split(",").map((s) => s.trim()).filter(Boolean) ?? [];
55
- return parsed.length > 0 ? parsed : ["senpi-trading-runtime"];
56
- })();
57
- /**
58
- * Character budget for skills-update notifications before the renderer
59
- * starts shedding detail (descriptions first, then capping per-section
60
- * lists). See `SkillsUpdateCoordinator.sendUpdateSummary` for the
61
- * three-tier sizing logic.
62
- *
63
- * Default: **4000** — 96 chars under Telegram's hard 4096-char per-message
64
- * limit, leaving headroom for the openclaw channel's markdown→HTML wrap
65
- * tags so the converted HTML payload stays under the API ceiling.
66
- *
67
- * Override: `SENPI_TELEGRAM_NOTIFICATION_BUDGET_CHARS` env var. Useful
68
- * if your downstream channel has a different limit (e.g. a custom
69
- * non-Telegram transport that accepts longer messages, or a stricter
70
- * gateway that needs more headroom). Values must be a positive integer;
71
- * anything unparseable falls back to the default.
72
- */
73
- export const TELEGRAM_NOTIFICATION_BUDGET_CHARS = parseEnvPositiveInt(process.env.SENPI_TELEGRAM_NOTIFICATION_BUDGET_CHARS, 4000);
74
41
  /**
75
- * Per-section cap (Updated: / Failed to update:) when even the compact
76
- * notification render would exceed `TELEGRAM_NOTIFICATION_BUDGET_CHARS`.
77
- * The renderer shows the first N skills of each section and appends a
78
- * "… and M more <updated|failed> skills not shown" tail line.
79
- *
80
- * Default: **10** — chosen so a single-section overflow still produces
81
- * a useful actionable list rather than collapsing to a one-line summary
82
- * (per PR #78 review feedback).
42
+ * Allowlist of skill names that may be installed from the remote skills repo.
83
43
  *
84
- * Override: `SENPI_NOTIFICATION_SKILL_LIST_TOP_N` env var. Set higher
85
- * to surface more skills per overflow notification (at the cost of a
86
- * lower hit-rate against the budget), or lower to bias toward shorter
87
- * messages. Values must be a positive integer; anything unparseable
88
- * falls back to the default.
44
+ * Defaults to the **manifest** skill set (the single source of truth), so the
45
+ * allowlist can never drift from the managed set. `SENPI_ALLOWED_SKILLS`
46
+ * (comma-separated) still overrides for ad-hoc installs outside the manifest.
89
47
  */
90
- export const NOTIFICATION_SKILL_LIST_TOP_N = parseEnvPositiveInt(process.env.SENPI_NOTIFICATION_SKILL_LIST_TOP_N, 10);
48
+ export const ALLOWED_SKILLS = (() => {
49
+ const parsed = process.env.SENPI_ALLOWED_SKILLS?.split(",").map((s) => s.trim()).filter(Boolean) ?? [];
50
+ return parsed.length > 0 ? parsed : getManifestSkillNames();
51
+ })();
91
52
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/skills-manager/constants.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,2DAA2D;AAC3D,yEAAyE;AACzE,wEAAwE;AACxE,EAAE;AACF,2DAA2D;AAC3D,kEAAkE;AAClE,wEAAwE;AACxE,6EAA6E;AAC7E,iEAAiE;AACjE,mEAAmE;AACnE,uEAAuE;AACvE,mEAAmE;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,yBAAyB,GACpC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,2BAA2B,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,GAAG,EAAE;IAC1D,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC1B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACjE,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,CAAC,MAAM,eAAe,GAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,0CAA0C,CAAC;AAElF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAC7B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC;AAE5C,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAC9B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,yDAAyD,CAAC;AAErG,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;AAElF,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,GAAG,EAAE;IACrD,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1F,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;AAChE,CAAC,CAAC,EAAE,CAAC;AAEL;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,mBAAmB,CACnE,OAAO,CAAC,GAAG,CAAC,wCAAwC,EACpD,IAAI,CACL,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAC9D,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,EAAE,CACH,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/skills-manager/constants.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,+BAA+B;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GACpC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,2BAA2B,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,GAAG,EAAE;IAC1D,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC1B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACjE,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,CAAC,MAAM,eAAe,GAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,0CAA0C,CAAC;AAElF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAC7B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC;AAE5C,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAC9B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,yDAAyD,CAAC;AAErG,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,GAAG,EAAE;IACrD,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1F,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC9D,CAAC,CAAC,EAAE,CAAC"}
@@ -16,9 +16,10 @@
16
16
  * health as healthy. The first tick fires on the next external invocation
17
17
  * of `runTickOnce()`.
18
18
  *
19
- * Each tick: resolve skill names (configured list or discovery), check
20
- * remote versions in parallel, auto-apply patch/minor, notify on major
21
- * (deduped by version), skip on none/unknown.
19
+ * Each tick: take the managed skill set from the manifest
20
+ * (`skills-manifest.json`, the single source of truth), check remote versions
21
+ * in parallel, auto-apply patch/minor, notify on major (deduped by version),
22
+ * skip on none/unknown.
22
23
  */
23
24
  import type { SkillsManagerSnapshot, SkillsUpdateCoordinatorOptions } from "./types.js";
24
25
  export declare class SkillsCoordinatorUnavailableError extends Error {
@@ -32,38 +33,11 @@ export declare class SkillsUpdateCoordinator {
32
33
  private runToken;
33
34
  private state;
34
35
  private snapshot;
35
- /** Latest remote version per skill name — populated during ticks. */
36
- private latestVersions;
37
36
  /**
38
- * Local (pre-install) version per skill name — populated during ticks
39
- * and manual RPC paths from `SkillVersionInfo.localVersion`. Used by the
40
- * update-summary and major-available notifications to render the
41
- * `prev → new` transition. Captured *before* the install runs so the
42
- * value still reflects the on-disk version at the time the user chose to
43
- * update; reading `state.skills[name].installedVersion` instead would
44
- * surface the *post-install* version (recorded by `recordSuccess`) and
45
- * collapse the transition to `vX -> vX`.
37
+ * Latest remote version per skill name — populated during ticks. Read by
38
+ * `buildSnapshot` (status RPC) and used as the install `expectedVersion`.
46
39
  */
47
- private previousVersions;
48
- /**
49
- * Cached short descriptions parsed from each skill's **remote** SKILL.md
50
- * frontmatter — i.e. the description for the upcoming/current remote
51
- * version, not whatever's installed locally. Used to enrich
52
- * update-summary and major-available notifications with a one-line
53
- * "About:" so the user gets context for the version the message is
54
- * actually announcing.
55
- *
56
- * Populated during tick / updateSkill / updateAll alongside
57
- * `latestVersions`; absent / null entries simply omit the line from the
58
- * notification.
59
- *
60
- * Using the remote description (rather than the local one) keeps the
61
- * notification description in sync with the version number it sits next
62
- * to — e.g. when notifying about a major bump v1 → v2, the "About:" line
63
- * reflects the v2 description, even if the v1 local copy on disk is
64
- * stale or worded differently.
65
- */
66
- private skillDescriptions;
40
+ private latestVersions;
67
41
  constructor(options: SkillsUpdateCoordinatorOptions);
68
42
  /**
69
43
  * Load persisted state and bootstrap missing skills. Does **not** schedule
@@ -161,14 +135,12 @@ export declare class SkillsUpdateCoordinator {
161
135
  private runTick;
162
136
  /**
163
137
  * Clone the repo once and install every skill in `skillNames`.
164
- * Per-skill errors are recorded in state without aborting the others.
165
- * The update summary notification distinguishes successful installs from
166
- * failures so the user can see exactly which skills need attention.
138
+ * Per-skill errors are recorded in state without aborting the others;
139
+ * outcomes are logged (no notification).
167
140
  *
168
- * If the clone itself fails we log and return without touching state or
169
- * sending a summary — a full-clone failure is almost always a transient
170
- * network/git issue that affects every skill equally, so attributing it
171
- * per-skill would be misleading. The next tick retries.
141
+ * If the clone itself fails we log and return without touching state — a
142
+ * full-clone failure is almost always a transient network/git issue that
143
+ * affects every skill equally. The next tick retries.
172
144
  */
173
145
  private applyUpdates;
174
146
  /**
@@ -229,78 +201,6 @@ export declare class SkillsUpdateCoordinator {
229
201
  * caller via a rejected promise (batch path captures it instead).
230
202
  */
231
203
  private applyUpdate;
232
- /**
233
- * Format the per-skill nested-bullet block used in both notification
234
- * shapes. Renders the structure suggested in PR #78 review feedback:
235
- *
236
- * **skill-name**
237
- * • v1.0.0 → v2.0.0 (or "v1.0.0 (install failed)" when failed)
238
- * • description: … (omitted when no remote description)
239
- * • error: … (only on failure, replaces the description)
240
- *
241
- * **Why markdown, not HTML?**
242
- * Openclaw's Telegram channel (`src/telegram/send.ts:sendMessageTelegram`)
243
- * pipes outbound text through `renderTelegramHtmlText`, which defaults
244
- * `textMode` to `"markdown"` — i.e. it expects the source to be markdown
245
- * and runs `markdownToTelegramHtml` over it before handing the converted
246
- * HTML to the Bot API with `parse_mode: "HTML"`. The `message` tool
247
- * (which is what this coordinator's `notify` callback ultimately hits via
248
- * `/tools/invoke`) does not expose `textMode`, so HTML written by us is
249
- * treated as literal characters by the markdown step and rendered as
250
- * visible `<b>` text in the chat (the actual production bug this docstring
251
- * fixes — confirmed against a live notification screenshot).
252
- *
253
- * Using markdown source (`**bold**`, backticks) instead means the channel's
254
- * markdown→HTML converter produces the correct `<b>` / `<code>` HTML
255
- * payload and Telegram renders the formatting properly.
256
- *
257
- * @param skillName Skill identifier (rendered bold via `**name**`).
258
- * @param toVersion Resolved upgraded-to version. `null` for failure rows
259
- * where no install completed; renders as
260
- * "vPREV (install failed)".
261
- * @param errorReason Optional failure reason. When provided, replaces
262
- * the description line with `error: …`.
263
- */
264
- private formatSkillBlock;
265
- /**
266
- * Send a one-way Telegram notification for a pending major update, deduped
267
- * by version.
268
- *
269
- * The dedup key (`lastNotifiedMajorVersion`) is only set after the notify
270
- * call resolves successfully. If the notification fails (Telegram API down,
271
- * transient network error, etc.) the key is left unchanged so the next tick
272
- * retries delivery instead of silently suppressing it forever.
273
- */
274
- private handleMajorAvailable;
275
- /**
276
- * Send an aggregated notification summarising the outcome of this tick's
277
- * updates. Successful installs and failures are shown in separate sections
278
- * so the user can tell which skills still need attention. Sections with no
279
- * entries are omitted. If neither section has entries, no notification is
280
- * sent.
281
- *
282
- * Format (markdown source — see `formatSkillBlock` for why markdown
283
- * rather than HTML):
284
- *
285
- * Senpi skills update:
286
- *
287
- * Updated:
288
- *
289
- * **skill-a**
290
- * • v1.0.0 → v1.0.1
291
- * • description: …
292
- *
293
- * **skill-b**
294
- * • v2.0.0 → v2.0.1
295
- * • description: …
296
- *
297
- * Failed to update:
298
- *
299
- * **skill-c**
300
- * • v1.0.0 (install failed)
301
- * • error: clone failed: …
302
- */
303
- private sendUpdateSummary;
304
204
  /**
305
205
  * Return the version-check function for this coordinator: either the
306
206
  * injected `deps.checkSkillVersion` (unit tests) or the real
@@ -312,14 +212,21 @@ export declare class SkillsUpdateCoordinator {
312
212
  */
313
213
  private resolveCheckFn;
314
214
  /**
315
- * Resolve the list of skill names to check this tick.
316
- * Uses `config.skills` when non-empty; otherwise discovers all immediate
317
- * subdirectories across every dir in the `skillsDir` search path,
318
- * deduped by name and sorted.
215
+ * Resolve a skill name to its concrete source (repo/branch/path/rawBaseUrl)
216
+ * from the manifest, applying any plugin-config per-skill overrides. The
217
+ * `SENPI_SKILLS_BRANCH` / `SENPI_SKILLS_REPO_URL` env testing knobs are
218
+ * applied inside {@link resolveSkillSource}.
219
+ */
220
+ private resolveSource;
221
+ /**
222
+ * The managed skill set for this tick — **always the manifest** set
223
+ * (`skills-manifest.json`), the single source of truth. `config.skills` and
224
+ * directory discovery no longer define the set: the manifest does, full stop
225
+ * (only `enabled: false` disables the manager entirely).
319
226
  *
320
- * Per-dir read errors (other than ENOENT) are logged but do not abort the
321
- * scan — a misconfigured secondary dir cannot mask skills present in the
322
- * primary.
227
+ * `deps.listManagedSkills` is a test-only seam to substitute the set without
228
+ * a fixture manifest on disk; production always falls through to the
229
+ * manifest.
323
230
  */
324
231
  private resolveSkillNames;
325
232
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/skills-manager/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,OAAO,KAAK,EAMV,qBAAqB,EAGrB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AASpB,qBAAa,iCAAkC,SAAQ,KAAK;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAuB;IAwCtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvCpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,QAAQ,CAAwB;IACxC,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAoC;IAC1D;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB,CAAoC;IAC5D;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,iBAAiB,CAAoC;gBAEhC,OAAO,EAAE,8BAA8B;IAKpE;;;;;;;;;OASG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B5B;;;;;;;;;;OAUG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,iEAAiE;IACjE,WAAW,IAAI,qBAAqB;IAMpC;;;;;;;;;;OAUG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAmGxD;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CACxB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAClF;IA2ID;;;OAGG;YACW,aAAa;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAqBpC;;;OAGG;YACW,OAAO;IAuFrB;;;;;;;;;;OAUG;YACW,YAAY;IAsC1B;;;;;;;;;;;OAWG;YACW,mBAAmB;IA4DjC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;;;;;OAQG;YACW,WAAW;IAmDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;;;;;;OAQG;YACW,oBAAoB;IAuClC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;YACW,iBAAiB;IA8F/B;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;;;;OASG;YACW,iBAAiB;IAqC/B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,aAAa;YA+BP,YAAY;CAS3B"}
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/skills-manager/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,KAAK,EAMV,qBAAqB,EAGrB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AAGpB,qBAAa,iCAAkC,SAAQ,KAAK;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAuB;IAatB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,QAAQ,CAAwB;IACxC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAoC;gBAE7B,OAAO,EAAE,8BAA8B;IAKpE;;;;;;;;;OASG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B5B;;;;;;;;;;OAUG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,iEAAiE;IACjE,WAAW,IAAI,qBAAqB;IAMpC;;;;;;;;;;OAUG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAkGxD;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CACxB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAClF;IA0ID;;;OAGG;YACW,aAAa;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAqBpC;;;OAGG;YACW,OAAO;IA0FrB;;;;;;;;OAQG;YACW,YAAY;IAmC1B;;;;;;;;;;;OAWG;YACW,mBAAmB;IA6FjC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;;;;;OAQG;YACW,WAAW;IAmDzB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAatB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,aAAa;YA+BP,YAAY;CAS3B"}