fa-mcp-sdk 0.4.36 → 0.4.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/cli-template/.claude/skills/upgrade-guide/SKILL.md +276 -0
- package/cli-template/README.md +14 -0
- package/cli-template/package.json +1 -1
- package/dist/core/web/static/agent-tester/index.html +4 -1
- package/dist/core/web/static/agent-tester/script.js +46 -2
- package/dist/core/web/static/agent-tester/styles.css +36 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -211,6 +211,7 @@ Note: The `dist/` directory (compiled JavaScript) is created after running `npm
|
|
|
211
211
|
| `npm run generate-token` | Generate JWT tokens (Web UI) |
|
|
212
212
|
| `node scripts/generate-jwt.js` | Generate JWT token (CLI) |
|
|
213
213
|
| `/gen-jwt` | Generate JWT token (Claude Code skill) |
|
|
214
|
+
| `/upgrade-guide` | Generate upgrade guide for downstream projects (Claude Code skill) |
|
|
214
215
|
| `npm run consul:unreg` | Deregister from Consul |
|
|
215
216
|
|
|
216
217
|
|
|
@@ -244,6 +245,23 @@ agentTester:
|
|
|
244
245
|
The tester UI is available at `http://localhost:<port>/agent-tester` and auto-connects to the local MCP server.
|
|
245
246
|
Supports custom LLM endpoints, configurable system prompts, and dynamic HTTP headers. Recommended model for testing: **gpt-5.2**.
|
|
246
247
|
|
|
248
|
+
## Upgrade Guide Skill
|
|
249
|
+
|
|
250
|
+
Claude Code skill that generates a step-by-step upgrade guide for projects built on fa-mcp-sdk.
|
|
251
|
+
Analyzes git diff between two versions/commits and produces an MD file covering config changes, template file updates, script changes, API changes, and dependency updates.
|
|
252
|
+
|
|
253
|
+
**Usage in Claude Code:**
|
|
254
|
+
```
|
|
255
|
+
/upgrade-guide 0.4.30 0.4.37
|
|
256
|
+
/upgrade-guide 0.4.30
|
|
257
|
+
/upgrade-guide abc1234
|
|
258
|
+
/upgrade-guide 0.4.30 0.4.37 на русском
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Output language is English by default. Add a natural-language hint (e.g., "на русском", "in German") to change it.
|
|
262
|
+
|
|
263
|
+
Skill location: `.claude/skills/upgrade-guide/SKILL.md`
|
|
264
|
+
|
|
247
265
|
## Directory Requirements
|
|
248
266
|
|
|
249
267
|
- Use absolute paths for target directory
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upgrade-guide
|
|
3
|
+
description: "Generate a migration guide for upgrading fa-mcp-sdk to the latest version. Use when user asks to upgrade/update fa-mcp-sdk, mentions 'обновить sdk', 'upgrade sdk', 'migration guide', 'обновление fa-mcp-sdk', or wants to see what changed between SDK versions."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Bash(yarn *) Bash(npm *) Bash(node *) Bash(git *) Bash(cat *) Bash(diff *) Bash(ls *) Bash(find *) Bash(mkdir *) Read Write Glob Grep WebFetch Agent
|
|
6
|
+
argument-hint: "[from-version] [to-version] [language hint]"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# FA-MCP-SDK Upgrade Guide Generator
|
|
10
|
+
|
|
11
|
+
Generate a comprehensive migration guide for upgrading the fa-mcp-sdk dependency in the current project.
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
This skill analyzes the differences between the currently installed version of `fa-mcp-sdk` and the latest (or specified) version, then produces a detailed migration guide as a markdown file.
|
|
16
|
+
|
|
17
|
+
## Argument Parsing
|
|
18
|
+
|
|
19
|
+
Parse `$ARGUMENTS` to extract a target version and an optional language hint.
|
|
20
|
+
|
|
21
|
+
### Language detection
|
|
22
|
+
|
|
23
|
+
Look for a natural-language phrase anywhere in the arguments that indicates the desired output language. Examples:
|
|
24
|
+
- "на русском", "по-русски", "in Russian", "ru" → Russian
|
|
25
|
+
- "in English", "en" → English
|
|
26
|
+
- Any similar phrase or ISO 639-1 code
|
|
27
|
+
|
|
28
|
+
Remove the language hint from the arguments before parsing the target version.
|
|
29
|
+
|
|
30
|
+
**Default: English** if no language hint is found.
|
|
31
|
+
|
|
32
|
+
The detected language determines ALL human-readable text in the generated guide (headings, descriptions, recommendations).
|
|
33
|
+
Technical content (file paths, YAML keys, code snippets, commands) stays as-is regardless of language.
|
|
34
|
+
|
|
35
|
+
### Version/commit references
|
|
36
|
+
|
|
37
|
+
After stripping the language hint, the remaining arguments are version or commit references.
|
|
38
|
+
|
|
39
|
+
An argument is a **commit hash** if it contains 7+ hex characters and does not match semver pattern.
|
|
40
|
+
Otherwise it is treated as a **version** (with or without `v` prefix — `0.4.30` and `v0.4.30` are equivalent).
|
|
41
|
+
|
|
42
|
+
**Two arguments** — explicit FROM and TO:
|
|
43
|
+
- `/upgrade-guide 0.4.30 0.4.37` — from version 0.4.30 to 0.4.37
|
|
44
|
+
- `/upgrade-guide abc1234 def5678` — from commit to commit
|
|
45
|
+
|
|
46
|
+
**One argument** — FROM is the current installed version, TO is the argument:
|
|
47
|
+
- `/upgrade-guide 0.5.0` — upgrade from current to 0.5.0
|
|
48
|
+
- `/upgrade-guide abc1234` — upgrade from current to that commit
|
|
49
|
+
|
|
50
|
+
**No arguments** — FROM is the current installed version, TO is the latest published version.
|
|
51
|
+
|
|
52
|
+
## Step 1: Determine Versions
|
|
53
|
+
|
|
54
|
+
1. Read the current project's `package.json` and extract the installed `fa-mcp-sdk` version — this is the **default FROM**.
|
|
55
|
+
2. Run `yarn info fa-mcp-sdk version` (or `npm view fa-mcp-sdk version`) to get the latest published version — this is the **default TO**.
|
|
56
|
+
3. Apply argument parsing rules above to determine the actual FROM and TO.
|
|
57
|
+
4. If FROM equals TO — inform the user and stop.
|
|
58
|
+
|
|
59
|
+
Display to the user:
|
|
60
|
+
```
|
|
61
|
+
From: X.Y.Z (or commit hash)
|
|
62
|
+
To: A.B.C (or commit hash)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Step 2: Upgrade the Dependency
|
|
66
|
+
|
|
67
|
+
If TO is a published version (not a commit hash), run:
|
|
68
|
+
```bash
|
|
69
|
+
yarn add fa-mcp-sdk@<TO-version>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If TO is a commit hash, run:
|
|
73
|
+
```bash
|
|
74
|
+
yarn add fa-mcp-sdk@https://github.com/Bazilio-san/fa-mcp-sdk#<TO-commit>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Wait for completion. If it fails, report the error and stop.
|
|
78
|
+
|
|
79
|
+
## Step 3: Update SDK Documentation
|
|
80
|
+
|
|
81
|
+
Run:
|
|
82
|
+
```bash
|
|
83
|
+
node ./node_modules/fa-mcp-sdk/scripts/update-doc.js
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
This copies the latest `FA-MCP-SDK-DOC/` from the SDK into the project.
|
|
87
|
+
|
|
88
|
+
## Step 4: Analyze Changes in SDK Between Versions
|
|
89
|
+
|
|
90
|
+
Use the public GitHub repository `https://github.com/Bazilio-san/fa-mcp-sdk` to analyze what changed.
|
|
91
|
+
|
|
92
|
+
### 4.1 Get the commit log between versions
|
|
93
|
+
|
|
94
|
+
Fetch the GitHub compare URL to understand what changed:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
https://api.github.com/repos/Bazilio-san/fa-mcp-sdk/compare/<FROM-ref>...<TO-ref>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Where `<FROM-ref>` and `<TO-ref>` are version tags (try both `v0.4.30` and `0.4.30` formats) or commit hashes.
|
|
101
|
+
|
|
102
|
+
If version tags don't exist, use the commits API to find commits between versions, or search `git log` for version bump commit messages.
|
|
103
|
+
|
|
104
|
+
Alternative approach — use the npm registry to get git metadata, or simply read the changelog if available.
|
|
105
|
+
|
|
106
|
+
### 4.2 Analyze changes in config files
|
|
107
|
+
|
|
108
|
+
These config files in the SDK may have changed and require corresponding updates in the project:
|
|
109
|
+
|
|
110
|
+
- `config/default.yaml` — main configuration defaults
|
|
111
|
+
- `config/custom-environment-variables.yaml` — env var mappings
|
|
112
|
+
- `config/development.yaml` — dev overrides
|
|
113
|
+
- `config/production.yaml` — production overrides
|
|
114
|
+
- `config/local.yaml` — local secrets template
|
|
115
|
+
|
|
116
|
+
For each config file, compare the SDK's version (at `node_modules/fa-mcp-sdk/config/<file>`) with the project's version (at `config/<file>`).
|
|
117
|
+
|
|
118
|
+
Identify:
|
|
119
|
+
- **New keys** added in the SDK that are missing in the project
|
|
120
|
+
- **Removed keys** that existed in the old SDK but are gone now
|
|
121
|
+
- **Changed defaults** where the SDK's default value has changed
|
|
122
|
+
- **New sections** that represent new features
|
|
123
|
+
|
|
124
|
+
### 4.3 Analyze changes in cli-template files
|
|
125
|
+
|
|
126
|
+
These directories in the SDK template may have changed:
|
|
127
|
+
|
|
128
|
+
- `node_modules/fa-mcp-sdk/cli-template/` — the project template
|
|
129
|
+
|
|
130
|
+
Compare template files with their project counterparts. Key files to check:
|
|
131
|
+
|
|
132
|
+
- `package.json` — new scripts, dependency changes
|
|
133
|
+
- `tsconfig.json` — compiler option changes
|
|
134
|
+
- `eslint.config.js` — linting rule changes
|
|
135
|
+
- `CLAUDE.md` — project instructions updates
|
|
136
|
+
- `deploy/` — deployment configuration changes
|
|
137
|
+
- `jest.config.js` — test configuration changes
|
|
138
|
+
- `.claude/skills/` — new or updated skills
|
|
139
|
+
|
|
140
|
+
### 4.4 Analyze changes in scripts
|
|
141
|
+
|
|
142
|
+
Check `node_modules/fa-mcp-sdk/scripts/` for new or modified scripts that may need to be copied or adapted in the project.
|
|
143
|
+
|
|
144
|
+
### 4.5 Analyze changes in core library exports
|
|
145
|
+
|
|
146
|
+
Read `node_modules/fa-mcp-sdk/dist/core/index.js` (or `.d.ts`) to identify:
|
|
147
|
+
- New exports that may be useful
|
|
148
|
+
- Removed/renamed exports that may break existing code
|
|
149
|
+
- Changed type signatures
|
|
150
|
+
|
|
151
|
+
### 4.6 Check project code for breaking changes
|
|
152
|
+
|
|
153
|
+
Scan the project's `src/` directory for:
|
|
154
|
+
- Imports from `fa-mcp-sdk` that reference removed/renamed exports
|
|
155
|
+
- Usage of deprecated APIs
|
|
156
|
+
- Config keys that have been renamed or restructured
|
|
157
|
+
|
|
158
|
+
## Step 5: Generate Migration Guide
|
|
159
|
+
|
|
160
|
+
Write ALL headings, descriptions, and prose in the detected language (default: English).
|
|
161
|
+
Technical content (file paths, YAML keys, code blocks, shell commands) is always in English.
|
|
162
|
+
|
|
163
|
+
Create a file `upgrade-guide-<old>-to-<new>.md` in the project root with the following structure:
|
|
164
|
+
|
|
165
|
+
```markdown
|
|
166
|
+
# FA-MCP-SDK Migration Guide: v<old> -> v<new>
|
|
167
|
+
|
|
168
|
+
Generated: <timestamp>
|
|
169
|
+
|
|
170
|
+
## Summary
|
|
171
|
+
|
|
172
|
+
<Brief overview of what changed and the scope of required updates>
|
|
173
|
+
|
|
174
|
+
## Breaking Changes
|
|
175
|
+
|
|
176
|
+
<List any breaking changes that MUST be addressed. For each:>
|
|
177
|
+
- What changed
|
|
178
|
+
- What code/config is affected
|
|
179
|
+
- Exact fix with code snippets
|
|
180
|
+
|
|
181
|
+
## Config Changes
|
|
182
|
+
|
|
183
|
+
### New Configuration Keys
|
|
184
|
+
|
|
185
|
+
<For each new key, provide:>
|
|
186
|
+
- Key path (e.g., `webServer.adminAuth.type`)
|
|
187
|
+
- Default value
|
|
188
|
+
- Description
|
|
189
|
+
- Whether it needs to be added to the project's config
|
|
190
|
+
|
|
191
|
+
### Changed Defaults
|
|
192
|
+
|
|
193
|
+
<Keys where default values changed>
|
|
194
|
+
|
|
195
|
+
### Removed Keys
|
|
196
|
+
|
|
197
|
+
<Keys that were removed>
|
|
198
|
+
|
|
199
|
+
### Recommended config/default.yaml additions
|
|
200
|
+
|
|
201
|
+
```yaml
|
|
202
|
+
# Add these sections to your config/default.yaml:
|
|
203
|
+
<actual YAML snippets to add>
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Recommended config/custom-environment-variables.yaml additions
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
# Add these mappings:
|
|
210
|
+
<actual YAML snippets>
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Template File Changes
|
|
214
|
+
|
|
215
|
+
### package.json
|
|
216
|
+
|
|
217
|
+
<New scripts, changed dependencies, etc.>
|
|
218
|
+
|
|
219
|
+
### Other Template Files
|
|
220
|
+
|
|
221
|
+
<Changes in tsconfig.json, eslint.config.js, deploy/, etc.>
|
|
222
|
+
|
|
223
|
+
## New Features
|
|
224
|
+
|
|
225
|
+
<New SDK features that the project can now use>
|
|
226
|
+
|
|
227
|
+
## New/Updated Scripts
|
|
228
|
+
|
|
229
|
+
<Scripts that should be copied or updated>
|
|
230
|
+
|
|
231
|
+
## Code Changes Required
|
|
232
|
+
|
|
233
|
+
<Specific code changes needed in the project's src/ files, with before/after examples>
|
|
234
|
+
|
|
235
|
+
## Recommended Actions
|
|
236
|
+
|
|
237
|
+
<Ordered checklist of actions to complete the upgrade>
|
|
238
|
+
|
|
239
|
+
1. [ ] ...
|
|
240
|
+
2. [ ] ...
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Step 6: Assess Impact on the Project
|
|
244
|
+
|
|
245
|
+
After generating the guide, scan the current project's source code (`src/`, `config/`, `tests/`) to evaluate how the changes specifically affect THIS project. Add a section to the guide:
|
|
246
|
+
|
|
247
|
+
```markdown
|
|
248
|
+
## Impact Assessment for This Project
|
|
249
|
+
|
|
250
|
+
### Affected Files
|
|
251
|
+
|
|
252
|
+
<List of project files that need modification, with specific changes>
|
|
253
|
+
|
|
254
|
+
### Risk Level
|
|
255
|
+
|
|
256
|
+
<Low / Medium / High — based on the number and nature of breaking changes>
|
|
257
|
+
|
|
258
|
+
### Estimated Effort
|
|
259
|
+
|
|
260
|
+
<Brief assessment of the work required>
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Step 7: Present Results
|
|
264
|
+
|
|
265
|
+
1. Display a summary of the key findings to the user.
|
|
266
|
+
2. Tell the user the full guide has been saved to `upgrade-guide-<old>-to-<new>.md`.
|
|
267
|
+
3. Ask if they want you to apply any of the recommended changes automatically.
|
|
268
|
+
|
|
269
|
+
## Important Rules
|
|
270
|
+
|
|
271
|
+
- ALWAYS read the actual files to compare — do not guess or assume what changed.
|
|
272
|
+
- When comparing YAML configs, preserve comments and structure.
|
|
273
|
+
- Do not modify project files other than `package.json` (via yarn add) and `FA-MCP-SDK-DOC/` (via update-doc.js) unless the user explicitly asks.
|
|
274
|
+
- The migration guide must contain ACTIONABLE instructions with exact code/config snippets — not vague recommendations.
|
|
275
|
+
- If GitHub API is unavailable or rate-limited, fall back to comparing files directly from `node_modules/fa-mcp-sdk/` against project files.
|
|
276
|
+
- Write the guide in the language detected from the user's arguments (default: **English**). Translate all headings, prose, and descriptions. Keep file paths, YAML keys, code blocks, and shell commands in English.
|
package/cli-template/README.md
CHANGED
|
@@ -102,4 +102,18 @@ Add to `claude_desktop_config.json`:
|
|
|
102
102
|
- **/sse** - Server-Sent Events
|
|
103
103
|
- **/mcp** - JSON-RPC 2.0
|
|
104
104
|
|
|
105
|
+
## Claude Code Skills
|
|
106
|
+
|
|
107
|
+
### `/upgrade-guide`
|
|
108
|
+
|
|
109
|
+
Generates a migration guide for upgrading `fa-mcp-sdk` to the latest (or specified) version. Analyzes config changes, template diffs, new exports, and breaking changes, then saves a step-by-step guide to `upgrade-guide-<old>-to-<new>.md`.
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
/upgrade-guide # current → latest
|
|
113
|
+
/upgrade-guide 0.5.0 # current → 0.5.0
|
|
114
|
+
/upgrade-guide 0.4.30 0.5.0 # 0.4.30 → 0.5.0
|
|
115
|
+
/upgrade-guide abc1234 def5678 # commit → commit
|
|
116
|
+
/upgrade-guide 0.4.30 0.5.0 на русском
|
|
117
|
+
```
|
|
118
|
+
|
|
105
119
|
## Security
|
|
@@ -119,8 +119,11 @@
|
|
|
119
119
|
<section class="config-section">
|
|
120
120
|
<div class="form-group">
|
|
121
121
|
<div class="prompt-label-row">
|
|
122
|
-
<label for="systemPrompt">Agent Prompt</label>
|
|
122
|
+
<label for="systemPrompt">Agent Prompt<span class="prompt-modified-badge" id="promptModifiedBadge" style="display:none">(modified)</span></label>
|
|
123
123
|
<div class="prompt-actions">
|
|
124
|
+
<button type="button" class="btn-view-original" id="btnViewOriginalPrompt" title="View original agent prompt" data-testid="at-system-prompt-view-original" style="display:none">
|
|
125
|
+
<span class="material-icons-round">visibility</span>
|
|
126
|
+
</button>
|
|
124
127
|
<button type="button" class="btn-reset-prompt" id="btnResetAgentPrompt" title="Reset to original agent prompt" data-testid="at-system-prompt-reset" style="display:none">
|
|
125
128
|
<span class="material-icons-round">restart_alt</span>
|
|
126
129
|
</button>
|
|
@@ -398,6 +398,8 @@ class McpAgentTester {
|
|
|
398
398
|
this.systemPromptTextarea = document.getElementById('systemPrompt');
|
|
399
399
|
this.customPromptTextarea = document.getElementById('customPrompt');
|
|
400
400
|
this.btnResetAgentPrompt = document.getElementById('btnResetAgentPrompt');
|
|
401
|
+
this.btnViewOriginalPrompt = document.getElementById('btnViewOriginalPrompt');
|
|
402
|
+
this.promptModifiedBadge = document.getElementById('promptModifiedBadge');
|
|
401
403
|
this.originalAgentPrompt = null;
|
|
402
404
|
|
|
403
405
|
this.connectedServersContainer = document.getElementById('connectedServers');
|
|
@@ -442,9 +444,13 @@ class McpAgentTester {
|
|
|
442
444
|
this.serverUrlDropdown.addEventListener('click', (e) => this.toggleUrlDropdown(e));
|
|
443
445
|
document.addEventListener('click', (e) => this.handleClickOutside(e));
|
|
444
446
|
|
|
445
|
-
this.systemPromptTextarea.addEventListener('input', () =>
|
|
447
|
+
this.systemPromptTextarea.addEventListener('input', () => {
|
|
448
|
+
this.saveFormValuesToStorage();
|
|
449
|
+
this.updatePromptModifiedState();
|
|
450
|
+
});
|
|
446
451
|
this.customPromptTextarea.addEventListener('input', () => this.saveFormValuesToStorage());
|
|
447
452
|
this.btnResetAgentPrompt.addEventListener('click', () => this.resetAgentPrompt());
|
|
453
|
+
this.btnViewOriginalPrompt.addEventListener('click', () => this.viewOriginalPrompt());
|
|
448
454
|
|
|
449
455
|
// LLM settings modal
|
|
450
456
|
this.llmSettingsBtn.addEventListener('click', () => this.openLlmModal());
|
|
@@ -532,7 +538,15 @@ class McpAgentTester {
|
|
|
532
538
|
}
|
|
533
539
|
|
|
534
540
|
closePromptModal () {
|
|
535
|
-
document.getElementById('promptModal')
|
|
541
|
+
const modal = document.getElementById('promptModal');
|
|
542
|
+
const textarea = document.getElementById('promptModalTextarea');
|
|
543
|
+
const saveBtn = document.getElementById('promptModalSave');
|
|
544
|
+
modal.style.display = 'none';
|
|
545
|
+
if (this._viewOriginalMode) {
|
|
546
|
+
textarea.readOnly = false;
|
|
547
|
+
saveBtn.style.display = '';
|
|
548
|
+
this._viewOriginalMode = false;
|
|
549
|
+
}
|
|
536
550
|
this._promptModalTarget = null;
|
|
537
551
|
}
|
|
538
552
|
|
|
@@ -1693,11 +1707,41 @@ class McpAgentTester {
|
|
|
1693
1707
|
this.systemPromptTextarea.value = this.originalAgentPrompt;
|
|
1694
1708
|
this.currentSystemPrompt = this.originalAgentPrompt;
|
|
1695
1709
|
this.saveFormValuesToStorage();
|
|
1710
|
+
this.updatePromptModifiedState();
|
|
1696
1711
|
}
|
|
1697
1712
|
}
|
|
1698
1713
|
|
|
1714
|
+
viewOriginalPrompt () {
|
|
1715
|
+
if (!this.originalAgentPrompt) { return; }
|
|
1716
|
+
const modal = document.getElementById('promptModal');
|
|
1717
|
+
const textarea = document.getElementById('promptModalTextarea');
|
|
1718
|
+
const title = document.getElementById('promptModalTitle');
|
|
1719
|
+
const saveBtn = document.getElementById('promptModalSave');
|
|
1720
|
+
title.textContent = 'Original Agent Prompt';
|
|
1721
|
+
textarea.value = this.originalAgentPrompt;
|
|
1722
|
+
textarea.readOnly = true;
|
|
1723
|
+
saveBtn.style.display = 'none';
|
|
1724
|
+
this._promptModalTarget = null;
|
|
1725
|
+
this._viewOriginalMode = true;
|
|
1726
|
+
modal.style.display = 'flex';
|
|
1727
|
+
textarea.focus();
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1699
1730
|
updateResetPromptButton () {
|
|
1700
1731
|
this.btnResetAgentPrompt.style.display = this.originalAgentPrompt ? '' : 'none';
|
|
1732
|
+
this.updatePromptModifiedState();
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
updatePromptModifiedState () {
|
|
1736
|
+
const hasOriginal = !!this.originalAgentPrompt;
|
|
1737
|
+
const isModified = hasOriginal && this.systemPromptTextarea.value.trim() !== this.originalAgentPrompt.trim();
|
|
1738
|
+
this.promptModifiedBadge.style.display = isModified ? '' : 'none';
|
|
1739
|
+
this.btnViewOriginalPrompt.style.display = isModified ? '' : 'none';
|
|
1740
|
+
if (isModified) {
|
|
1741
|
+
this.systemPromptTextarea.classList.add('prompt-modified');
|
|
1742
|
+
} else {
|
|
1743
|
+
this.systemPromptTextarea.classList.remove('prompt-modified');
|
|
1744
|
+
}
|
|
1701
1745
|
}
|
|
1702
1746
|
|
|
1703
1747
|
saveFormValuesToStorage () {
|
|
@@ -1391,6 +1391,40 @@ body {
|
|
|
1391
1391
|
gap: 2px;
|
|
1392
1392
|
}
|
|
1393
1393
|
|
|
1394
|
+
/* --- Prompt Modified Indicator --- */
|
|
1395
|
+
.prompt-modified-badge {
|
|
1396
|
+
font-size: 0.75em;
|
|
1397
|
+
color: var(--warning, #f0ad4e);
|
|
1398
|
+
margin-left: 6px;
|
|
1399
|
+
font-style: italic;
|
|
1400
|
+
font-weight: 400;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
textarea.prompt-modified {
|
|
1404
|
+
border-left: 3px solid var(--warning, #f0ad4e) !important;
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
.btn-view-original {
|
|
1408
|
+
background: none;
|
|
1409
|
+
border: none;
|
|
1410
|
+
color: var(--text-muted);
|
|
1411
|
+
cursor: pointer;
|
|
1412
|
+
padding: 2px;
|
|
1413
|
+
display: flex;
|
|
1414
|
+
align-items: center;
|
|
1415
|
+
justify-content: center;
|
|
1416
|
+
border-radius: var(--radius-sm);
|
|
1417
|
+
transition: color 0.15s;
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1420
|
+
.btn-view-original:hover {
|
|
1421
|
+
color: var(--primary);
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
.btn-view-original .material-icons-round {
|
|
1425
|
+
font-size: 16px;
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1394
1428
|
.btn-reset-prompt {
|
|
1395
1429
|
background: none;
|
|
1396
1430
|
border: none;
|
|
@@ -1449,8 +1483,8 @@ body {
|
|
|
1449
1483
|
border: 1px solid var(--border);
|
|
1450
1484
|
border-radius: var(--radius-lg);
|
|
1451
1485
|
width: 100%;
|
|
1452
|
-
max-width:
|
|
1453
|
-
|
|
1486
|
+
max-width: 90vw;
|
|
1487
|
+
height: 90vh;
|
|
1454
1488
|
display: flex;
|
|
1455
1489
|
flex-direction: column;
|
|
1456
1490
|
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
|
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.
|
|
4
|
+
"version": "0.4.39",
|
|
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",
|