fa-mcp-sdk 0.4.111 → 0.4.113

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.
@@ -30,7 +30,7 @@ with concrete next-step options (retry, fix, roll back, leave-as-is) — never s
30
30
  1. Parse arguments → resolve FROM/TO refs
31
31
  2. Validate refs → fail fast on bogus versions
32
32
  3. Preflight safety → branch + uncommitted-changes check
33
- 4. Install TO into project → `yarn add fa-mcp-sdk@<TO>` (first mutation)
33
+ 4. Install TO into project → run `install-target-sdk.mjs` (yarn add + copy update-sdk.js + run it)
34
34
  5. Analyze diff → categorize every change as Auto / Needs-Input / Manual
35
35
  6. Build execution plan
36
36
  7. PRESENT PLAN + CONFIRM ← blocking gate; nothing else mutates until user says go
@@ -154,25 +154,28 @@ This is the last point before mutating the project. Run these checks and **ask t
154
154
 
155
155
  This is the first mutating action. From here on, we're committed to either finishing the upgrade or rolling back.
156
156
 
157
- If TO is a published version:
158
- ```bash
159
- yarn add fa-mcp-sdk@<TO-version>
160
- ```
157
+ Run the bundled wrapper from the project root — it performs all three sub-steps in one go:
161
158
 
162
- If TO is a commit hash:
163
159
  ```bash
164
- yarn add fa-mcp-sdk@https://github.com/Bazilio-san/fa-mcp-sdk#<TO-commit>
160
+ node .claude/skills/upgrade-sdk/scripts/install-target-sdk.mjs <TO>
165
161
  ```
166
162
 
167
- Wait for completion. If `yarn add` fails, show the error verbatim and ask the user how to proceed (retry, switch to a
168
- different TO ref, or abort).
163
+ where `<TO>` is either:
164
+ - a published version (e.g. `0.4.108`), or
165
+ - a git URL with a commit hash (e.g. `https://github.com/Bazilio-san/fa-mcp-sdk#<TO-commit>`).
169
166
 
170
- Then run:
171
- ```bash
172
- node ./node_modules/fa-mcp-sdk/scripts/update-sdk.js
173
- ```
174
- This copies the latest `FA-MCP-SDK-DOC/` and `.claude/` content from the SDK into the project. Pinned folders (any
175
- folder under the project's `.claude/` containing a direct file named `pin`) are preserved by the script as-is.
167
+ The wrapper sequentially:
168
+ 1. runs `yarn add fa-mcp-sdk@<TO>`;
169
+ 2. copies `node_modules/fa-mcp-sdk/scripts/update-sdk.js` over the project's `scripts/update-sdk.js` (overwriting
170
+ the existing file so the project always uses the updater shipped with the target SDK version);
171
+ 3. runs `node scripts/update-sdk.js` from the project root.
172
+
173
+ `update-sdk.js` then copies the latest `FA-MCP-SDK-DOC/` and `.claude/` content from the SDK into the project.
174
+ Pinned folders (any folder under the project's `.claude/` containing a direct file named `pin`) are preserved by
175
+ the script as-is.
176
+
177
+ If any sub-step fails, the wrapper exits non-zero with the error. Show it verbatim and ask the user how to proceed
178
+ (retry, switch to a different TO ref, or abort).
176
179
 
177
180
  ## Step 5: Analyze the diff
178
181
 
@@ -230,6 +233,10 @@ structure with override values. If `default.yaml` changed but `_local.yaml` did
230
233
  After `yarn add fa-mcp-sdk@<TO>`, the SDK ships its template at `node_modules/fa-mcp-sdk/cli-template/`. This is the
231
234
  canonical source for any template files in the project.
232
235
 
236
+ **Scope:** the table below lists ONLY files that `scripts/update-sdk.js` (already executed in Step 4) does NOT
237
+ copy. Anything inside `cli-template/FA-MCP-SDK-DOC/`, `cli-template/.claude/`, and the individual scripts under
238
+ `node_modules/fa-mcp-sdk/scripts/` is refreshed by `update-sdk.js` automatically — do NOT re-process it here.
239
+
233
240
  | Template (source of truth) | Project (destination) | Notes |
234
241
  |------------------------------------------------------------------|-------------------------------|-------|
235
242
  | `node_modules/fa-mcp-sdk/cli-template/package.json` | `package.json` | **Merge carefully** — see rule below |
@@ -239,10 +246,8 @@ canonical source for any template files in the project.
239
246
  | `node_modules/fa-mcp-sdk/cli-template/CLAUDE.md` | `CLAUDE.md` | Merge — project may add custom sections |
240
247
  | `node_modules/fa-mcp-sdk/cli-template/jest.config.js` | `jest.config.js` | Overwrite unless customized |
241
248
  | `node_modules/fa-mcp-sdk/cli-template/deploy/` | `deploy/` | Merge per file |
242
- | `node_modules/fa-mcp-sdk/cli-template/.claude/skills/<skill>/` | `.claude/skills/<skill>/` | Overwrite unless locally customized |
243
249
  | `node_modules/fa-mcp-sdk/cli-template/r/<name>.xml` | `.run/<name>.run.xml` | **Renamed** — see rule below |
244
250
  | `node_modules/fa-mcp-sdk/cli-template/gitignore` | `.gitignore` | Source has no leading dot |
245
- | `node_modules/fa-mcp-sdk/cli-template/FA-MCP-SDK-DOC/` | `FA-MCP-SDK-DOC/` | Auto-updated by `update-sdk.js` in Step 4 |
246
251
 
247
252
  #### Rule: `package.json` — ADD ONLY new dependencies
248
253
 
@@ -267,27 +272,18 @@ The project has no `r/` directory — it was renamed to `.run/` at generation, a
267
272
  local customizations, treat as Needs-Input (ask the user: overwrite / merge / skip).
268
273
  - REMOVED file → informational only; do not delete the project's `.run/<name>.run.xml`.
269
274
 
270
- #### Rule: `.claude/` files use fcp.js
275
+ #### Editing `.claude/` files outside the auto-refresh
271
276
 
272
- `.claude/**` is denied for direct `Write`/`Edit` in the project's `settings.json`. To update any file under
273
- `.claude/` (skills, scripts, hooks, agents, settings.json) use the project's `scripts/fcp.js` workflow described in
274
- the `edit-claude-files` skill write the new content to a temp file, then
275
- `node scripts/fcp.js .claude/<path> <temp-file>` to install it atomically. This applies to every cli-template
276
- `.claude/` entry being copied into the project.
277
+ If during Step 8 you need to write or merge an individual file under the project's `.claude/` (e.g. a custom
278
+ non-template skill that `update-sdk.js` does NOT touch because its folder contains a `pin` marker), direct
279
+ `Write`/`Edit` is denied by the project's `settings.json`. Use the project's `scripts/fcp.js` workflow described in
280
+ the `edit-claude-files` skill: write the new content to a temp file, then
281
+ `node scripts/fcp.js .claude/<path> <temp-file>` to install it atomically.
277
282
 
278
283
  For any other changed template file: source path under `node_modules/fa-mcp-sdk/cli-template/...`, destination in the
279
284
  project, action = overwrite or merge (depending on local customization).
280
285
 
281
- ### 5.4 Scripts
282
-
283
- The CLI copies scripts from `node_modules/fa-mcp-sdk/scripts/` (NOT from `cli-template/scripts/`) into the project's
284
- `scripts/`, then removes `copy-static.js`, `publish.js`, and `scripts/publish-README.md` (SDK-internal, not shipped).
285
-
286
- - Canonical source: `node_modules/fa-mcp-sdk/scripts/<name>.js`
287
- - Project destination: `scripts/<name>.js`
288
- - Exclude: `copy-static.js`, `publish.js`, `publish-README.md`
289
-
290
- ### 5.5 Core library exports
286
+ ### 5.4 Core library exports
291
287
 
292
288
  **Prefer the TypeScript source over compiled output.** Fetch `src/core/index.ts` (and any re-exported `_types_/`
293
289
  files it references) at both FROM and TO via GitHub raw:
@@ -307,10 +303,49 @@ Why source over `dist/`:
307
303
  State explicitly in the report that analysis was made from compiled artifacts and double-check via the GitHub source
308
304
  viewer for any flagged change.
309
305
 
310
- ### 5.6 Project code scan
306
+ #### Type / interface changes (not just renames)
307
+
308
+ Renaming an export is the obvious case — the harder one is a **shape change** to a type/interface the project
309
+ consumes. These break compilation in ways that don't show up as "removed export":
310
+
311
+ - A new **required** field added to an interface (e.g. `IToolHandlerParams`) — every place that constructs or
312
+ destructures that interface needs the new field.
313
+ - A previously required field made optional, OR an optional field made required.
314
+ - A field's **type** changed (e.g. `string` → `string | undefined`, `Foo` → `Foo[]`, a string-union narrowed).
315
+ - Generic signatures changed (added/removed type parameters, added constraints).
316
+ - Return-type changes on a function/method the project imports.
317
+ - Function parameters reordered, added, removed, or changed type.
318
+
319
+ For each such change, classify per consumer:
320
+ 1. **Project does NOT consume the changed type/symbol** → informational only, no action.
321
+ 2. **Project consumes it AND the migration is mechanical** (one obvious code edit, e.g. add a field with a known
322
+ default, rename a parameter) → Auto in Step 6.
323
+ 3. **Project consumes it AND the migration requires a judgment call** (where does the new required value come from?
324
+ how should the new generic be parameterized? does the narrower type still cover the project's usage?) →
325
+ Needs-Input in Step 6.
326
+
327
+ For every consumer site, capture file:line and the exact migration plan. This list is the primary reference when
328
+ `tsc` fails in Step 9 — consult it before debugging blindly.
329
+
330
+ #### Optional new features
331
+
332
+ Not every SDK change is a breaking one. The TO version may add **new** exports, methods, hook params, config
333
+ options, or capabilities the project could adopt but isn't forced to:
334
+
335
+ - New helper functions / utilities re-exported from `fa-mcp-sdk`.
336
+ - New optional parameters on existing handlers (existing call sites keep working).
337
+ - New `appConfig` sections / options with sensible defaults.
338
+ - New transport / auth / DB capabilities the project's domain might benefit from.
339
+
340
+ These do NOT break the build, so they go on a separate **Optional improvements** list (see Step 6). The skill
341
+ should surface them, but never apply them silently — the user decides per item whether they're relevant.
342
+
343
+ ### 5.5 Project code scan
311
344
 
312
345
  Scan the project's `src/`, `config/`, and `tests/` for:
313
346
  - Imports from `fa-mcp-sdk` referencing removed/renamed exports
347
+ - Consumers of types/interfaces whose **shape** changed in 5.4 (added required field, changed field type,
348
+ changed generic signature, changed function parameter/return type) — even if the import path is unchanged
314
349
  - Usage of deprecated APIs
315
350
  - Config keys that were renamed or restructured
316
351
 
@@ -318,18 +353,20 @@ For each hit, capture file:line and the exact replacement plan — needed for St
318
353
 
319
354
  ## Step 6: Categorize and build the execution plan
320
355
 
321
- For every change found in Step 5, assign one of three categories:
356
+ For every change found in Step 5, assign one of four categories:
322
357
 
323
358
  ### Auto — LLM applies without asking
324
- - `yarn add fa-mcp-sdk@<TO>` (already done in Step 4)
325
- - `node ./node_modules/fa-mcp-sdk/scripts/update-sdk.js` (already done in Step 4)
359
+ - `node .claude/skills/upgrade-sdk/scripts/install-target-sdk.mjs <TO>` (already done in Step 4 — installs SDK,
360
+ refreshes `scripts/update-sdk.js`, and runs it)
326
361
  - Adding a brand-new config key to `config/default.yaml` when the project doesn't override it
327
362
  - Adding new env var mappings to `config/custom-environment-variables.yaml`
328
363
  - Adding a missing dependency to `package.json` under `dependencies`/`devDependencies`
329
- - Copying a new template file the project doesn't have yet (scripts, `.run/` entries, new skill folders)
364
+ - Copying a new template file the project doesn't have yet (`.run/` entries from `cli-template/r/`, etc. — note that
365
+ `FA-MCP-SDK-DOC/`, `.claude/`, and individual SDK scripts are refreshed automatically by `update-sdk.js`, not here)
330
366
  - Applying a mechanical rename of a renamed SDK export across the project's `src/` when there's exactly one
331
367
  unambiguous replacement
332
- - Updating SDK-shipped skill files via the `.claude/` fcp.js protocol when the project hasn't customized them
368
+ - Applying a mechanical type/interface migration when the fix is unambiguous (e.g. a newly required field has a
369
+ single obvious source, a renamed parameter where call sites use the same value)
333
370
 
334
371
  ### Needs-Input — LLM applies, but needs user input
335
372
  - A locally-customized file conflicts with the new template — ask: overwrite / merge / skip
@@ -338,6 +375,19 @@ For every change found in Step 5, assign one of three categories:
338
375
  - A `BREAKING CHANGE:` marker that the LLM can apply mechanically but wants explicit confirmation
339
376
  - The project's `config/local.yaml` has stale overrides for keys that changed structure — ask whether to drop them,
340
377
  port to the new structure, or leave them and warn
378
+ - A type/interface shape change where the project's consumer needs a non-obvious value (where does the new required
379
+ field come from? how should a new generic be parameterized?)
380
+
381
+ ### 💡 Optional improvements — LLM proposes per item, applies only on per-item confirmation
382
+ Non-breaking SDK additions the project COULD adopt but isn't forced to. List each as a discrete `yes/no` question
383
+ in Step 7. Examples:
384
+ - A new helper now exported from `fa-mcp-sdk` that could replace a hand-rolled utility in the project
385
+ - A new optional parameter on an existing API that would let the project remove a workaround
386
+ - A new `appConfig` section that enables a capability the project may want (caching, AD auth, Consul, etc.)
387
+ - A new transport option / DB feature relevant to the project's domain
388
+
389
+ Default for every Optional item is **NO** — the user must explicitly opt in per item. Skipped items go to the
390
+ final report under "Optional improvements not adopted (FYI)".
341
391
 
342
392
  ### Manual — LLM cannot perform
343
393
  Reserve this only for things the LLM truly cannot do in this session. Examples:
@@ -347,7 +397,7 @@ Reserve this only for things the LLM truly cannot do in this session. Examples:
347
397
 
348
398
  **If a step could be automated in principle but requires human judgment, prefer Needs-Input over Manual.**
349
399
 
350
- Build the plan as three lists with item counts and concrete actions.
400
+ Build the plan as four lists (Auto / Needs-Input / Optional / Manual) with item counts and concrete actions.
351
401
 
352
402
  ## Step 7: Present the plan and ASK FOR CONFIRMATION
353
403
 
@@ -357,13 +407,13 @@ Render the plan in the conversation in the detected language:
357
407
  ## Upgrade plan: fa-mcp-sdk v<FROM> → v<TO>
358
408
 
359
409
  ### 🤖 I will do automatically (N items)
360
- 1. ✅ yarn add fa-mcp-sdk@<TO> [already done]
361
- 2. node ./node_modules/fa-mcp-sdk/scripts/update-sdk.js [already done]
362
- 3. Add new key `webServer.foo` (default `bar`) to `config/default.yaml`
363
- 4. Copy new template file `.run/new-task.run.xml` (renamed from `r/new-task.xml`)
364
- 5. Add dep `some-pkg@^1.2.3` to package.json `dependencies`
365
- 6. Apply rename `oldFn` → `newFn` in src/foo.ts:42, src/bar.ts:17, src/baz.ts:55
366
- 7. Run verification: `oxlint --fix . && oxfmt . && rimraf dist && tsc` + project tests + clean startup
410
+ 1. ✅ node .claude/skills/upgrade-sdk/scripts/install-target-sdk.mjs <TO> [already done]
411
+ (yarn add + refresh `scripts/update-sdk.js` + run `node scripts/update-sdk.js`)
412
+ 2. Add new key `webServer.foo` (default `bar`) to `config/default.yaml`
413
+ 3. Copy new template file `.run/new-task.run.xml` (renamed from `r/new-task.xml`)
414
+ 4. Add dep `some-pkg@^1.2.3` to package.json `dependencies`
415
+ 5. Apply rename `oldFn` → `newFn` in src/foo.ts:42, src/bar.ts:17, src/baz.ts:55
416
+ 6. Run verification: `oxlint --fix . && oxfmt . && rimraf dist && tsc` + project tests + clean startup
367
417
 
368
418
  ### ❓ I need your input on (M items)
369
419
  1. `config/local.yaml` overrides `webServer.auth` which restructured in v<TO>. Options:
@@ -371,9 +421,16 @@ Render the plan in the conversation in the detected language:
371
421
  2. New config key `someService.apiKey` has no default. What value should I set?
372
422
  3. Project's `.claude/skills/upgrade-sdk/SKILL.md` is locally customized. Overwrite with new template,
373
423
  merge non-conflicting parts only, or skip?
424
+ 4. `IToolHandlerParams` gained required field `transport`. Project consumers at src/tools/handle-tool-call.ts:12
425
+ need it — should I derive it from `params.transport ?? 'http'` or expose it as a new tool argument?
426
+
427
+ ### 💡 Optional improvements available (L items) — default NO per item
428
+ 1. v<TO> adds `appConfig.cache.redis` — project currently uses in-memory cache. Adopt Redis cache? (no/yes)
429
+ 2. v<TO> exports `mergeByBatch()` helper — project has a hand-rolled batch-merge in src/db/repo.ts:88. Replace? (no/yes)
430
+ 3. v<TO> adds optional `agentTester.openAi.proxy` — project doesn't need a proxy today. Add scaffolding? (no/yes)
374
431
 
375
432
  ### 👋 You'll need to do manually (K items)
376
- - [empty if everything is in Auto or Needs-Input]
433
+ - [empty if everything is in Auto / Needs-Input / Optional]
377
434
 
378
435
  ### Rollback info
379
436
  - Pre-upgrade commit: <hash>
@@ -383,7 +440,8 @@ Render the plan in the conversation in the detected language:
383
440
 
384
441
  Then ask **explicitly**:
385
442
 
386
- > "Confirm — apply the Auto items now and prompt you inline for the Needs-Input items as I reach them? (yes/no)"
443
+ > "Confirm — apply the Auto items now and prompt you inline for the Needs-Input + Optional items as I reach them?
444
+ > (yes/no)"
387
445
 
388
446
  Wait for explicit confirmation. If the user declines, stop and leave the project as it is after Step 4 (note this in
389
447
  the final report). If the user confirms, proceed to Step 8.
@@ -391,13 +449,15 @@ the final report). If the user confirms, proceed to Step 8.
391
449
  ## Step 8: Execute
392
450
 
393
451
  Apply each Auto item in order. For each Needs-Input item, ask the user **at the moment you reach it** (one question
394
- at a time so the user can reason — don't batch). Apply with the answer, then move on.
452
+ at a time so the user can reason — don't batch). Apply with the answer, then move on. After Auto + Needs-Input,
453
+ walk through Optional items one-by-one (default NO) — apply only those the user explicitly accepts.
395
454
 
396
455
  Be transparent about state — after each item is applied, output a one-line acknowledgment so the user can follow
397
456
  along, e.g. `✓ Added webServer.foo to config/default.yaml`.
398
457
 
399
- When touching files under `.claude/`, always use the project's `scripts/fcp.js` workflow (see Step 5.3 "Rule:
400
- `.claude/` files use fcp.js" and the project's `edit-claude-files` skill).
458
+ When touching files under `.claude/` that `update-sdk.js` did not just refresh (e.g. pinned custom skills), always
459
+ use the project's `scripts/fcp.js` workflow see Step 5.3 → "Editing `.claude/` files outside the auto-refresh"
460
+ and the project's `edit-claude-files` skill.
401
461
 
402
462
  Maintain an in-memory execution log so the final report can list exactly what was done and what required input.
403
463
 
@@ -463,10 +523,14 @@ the likely-causing file(s), then ask the user to choose:
463
523
 
464
524
  Apply the user's choice:
465
525
  - **fix** → diagnose, apply a fix (asking inline for any info needed), re-run verification. Loop if it fails again.
526
+ **When `tsc` is the failing step, consult Step 5.4 (Core library exports → Type / interface changes) FIRST**
527
+ — most TS errors after an SDK upgrade trace back to a shape change you already cataloged there. Match the error
528
+ to the relevant 5.4 entry and apply the migration plan, instead of debugging the error in isolation.
466
529
  - **retry** → rerun the failing step once. If it fails again, present the same four options.
467
- - **rollback** → run `yarn add fa-mcp-sdk@<FROM>` (or git-URL form), `git checkout <pre-upgrade-hash> -- .`,
468
- `node ./node_modules/fa-mcp-sdk/scripts/update-sdk.js` if needed. If the user stashed changes in Step 3, restore
469
- them with `git stash pop`. Report what was rolled back.
530
+ - **rollback** → re-run the wrapper with the previous ref:
531
+ `node .claude/skills/upgrade-sdk/scripts/install-target-sdk.mjs <FROM>` (uses a git URL form for commit hashes,
532
+ e.g. `https://github.com/Bazilio-san/fa-mcp-sdk#<FROM-commit>`), then `git checkout <pre-upgrade-hash> -- .`.
533
+ If the user stashed changes in Step 3, restore them with `git stash pop`. Report what was rolled back.
470
534
  - **leave-as-is** → no further changes. Final report will clearly mark the failure and what remains unverified.
471
535
 
472
536
  ## Step 10: Report
@@ -504,7 +568,22 @@ Pre-upgrade commit: <hash>
504
568
  - `config/local.yaml`: chose (a) port to new structure — applied N keys
505
569
  - `someService.apiKey`: set to `<value-you-provided>`
506
570
  - `oldFn` → `newFn` rename: applied to src/foo.ts:42, src/bar.ts:17, src/baz.ts:55
571
+ - `IToolHandlerParams.transport`: derived from `params.transport ?? 'http'` per your choice — applied at
572
+ src/tools/handle-tool-call.ts:12
573
+ - ...
574
+
575
+ ## 💡 Optional improvements adopted
576
+
577
+ - Redis cache: enabled (`appConfig.cache.redis` populated, dep `ioredis@^5.4.1` added)
578
+ - ...
579
+ - [empty if user declined all Optional items]
580
+
581
+ ## 💡 Optional improvements NOT adopted (FYI)
582
+
583
+ - `mergeByBatch()` helper now available — project keeps hand-rolled version in src/db/repo.ts:88
584
+ - `agentTester.openAi.proxy` option available — not adopted (project doesn't need a proxy)
507
585
  - ...
586
+ - [empty if no Optional items existed, or all were adopted]
508
587
 
509
588
  ## 👋 Still on your plate
510
589
 
@@ -525,9 +604,8 @@ Pre-upgrade commit: <hash>
525
604
  - Prior SDK version: `v<FROM>`
526
605
  - To roll back manually:
527
606
  ```bash
528
- yarn add fa-mcp-sdk@<FROM>
607
+ node .claude/skills/upgrade-sdk/scripts/install-target-sdk.mjs <FROM>
529
608
  git checkout <hash> -- .
530
- node ./node_modules/fa-mcp-sdk/scripts/update-sdk.js
531
609
  ```
532
610
 
533
611
  ## Notes
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ import { cpSync, existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { spawnSync } from 'child_process';
5
+
6
+ const target = process.argv[2];
7
+ if (!target) {
8
+ console.error('Usage: node install-target-sdk.mjs <version|git-url>');
9
+ console.error(' e.g. 0.4.108');
10
+ console.error(' e.g. https://github.com/Bazilio-san/fa-mcp-sdk#<commit-hash>');
11
+ process.exit(1);
12
+ }
13
+
14
+ const cwd = process.cwd();
15
+
16
+ if (!existsSync(join(cwd, 'package.json'))) {
17
+ console.error(`No package.json in ${cwd}. Run this script from the project root.`);
18
+ process.exit(1);
19
+ }
20
+
21
+ function run(cmd, args) {
22
+ console.log(`\n> ${cmd} ${args.join(' ')}`);
23
+ const res = spawnSync(cmd, args, { cwd, stdio: 'inherit', shell: process.platform === 'win32' });
24
+ if (res.status !== 0) {
25
+ console.error(`Command failed: ${cmd} ${args.join(' ')} (exit ${res.status})`);
26
+ process.exit(res.status ?? 1);
27
+ }
28
+ }
29
+
30
+ run('yarn', ['add', `fa-mcp-sdk@${target}`]);
31
+
32
+ const sdkUpdaterSrc = join(cwd, 'node_modules', 'fa-mcp-sdk', 'scripts', 'update-sdk.js');
33
+ const sdkUpdaterDest = join(cwd, 'scripts', 'update-sdk.js');
34
+
35
+ if (!existsSync(sdkUpdaterSrc)) {
36
+ console.error(`Updater not found: ${sdkUpdaterSrc}`);
37
+ process.exit(1);
38
+ }
39
+
40
+ cpSync(sdkUpdaterSrc, sdkUpdaterDest);
41
+ console.log(`Copied update-sdk.js: ${sdkUpdaterSrc} -> ${sdkUpdaterDest}`);
42
+
43
+ run('node', ['scripts/update-sdk.js']);
44
+
45
+ console.log('\nSDK installed and template assets refreshed.');
@@ -57,7 +57,7 @@
57
57
  "dependencies": {
58
58
  "@modelcontextprotocol/sdk": "^1.29.0",
59
59
  "dotenv": "^17.4.1",
60
- "fa-mcp-sdk": "^0.4.109"
60
+ "fa-mcp-sdk": "^0.4.112"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/express": "^5.0.6",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fa-mcp-sdk",
3
3
  "productName": "FA MCP SDK",
4
- "version": "0.4.111",
4
+ "version": "0.4.113",
5
5
  "description": "Core infrastructure and templates for building Model Context Protocol (MCP) servers with TypeScript",
6
6
  "type": "module",
7
7
  "main": "dist/core/index.js",