@elliotding/ai-agent-mcp 0.1.27 → 0.1.29

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 CHANGED
@@ -9,9 +9,11 @@ CSP AI Agent is an MCP server that enables seamless synchronization of AI resour
9
9
  ## Key Features
10
10
 
11
11
  - **AI Resource Management**: Subscribe, sync, search, and upload AI resources
12
+ - **Hybrid Sync Strategy (v2.0)**: Complex skills download scripts locally while maintaining remote telemetry
12
13
  - **Multi-source Git Support**: Aggregate resources from multiple Git repositories with priority-based conflict resolution
14
+ - **Incremental Update**: String content equality comparison to skip unchanged files (reduces bandwidth)
13
15
  - **Intelligent Caching**: Skip redundant downloads and file writes using content-based comparison
14
- - **MCP Prompt Mode**: Commands and Skills are registered as MCP Prompts (no local file writes)
16
+ - **MCP Prompt Mode**: Commands and Skills are registered as MCP Prompts (no local file writes for simple resources)
15
17
  - **Solid Prompt Fallback**: Newly subscribed Commands and Skills can be resolved immediately through `resolve_prompt_content`
16
18
  - **Auto-configuration**: MCP servers are automatically registered in `~/.cursor/mcp.json`
17
19
  - **Telemetry & Analytics**: Track resource usage and sync health
@@ -72,24 +74,59 @@ csp-ai-agent-mcp --transport stdio
72
74
 
73
75
  #### 1. `sync_resources`
74
76
 
75
- Synchronize subscribed AI resources.
77
+ Synchronize subscribed AI resources with hybrid sync strategy (v2.0).
78
+
79
+ **Hybrid Sync Strategy:**
80
+ - **Simple resources** (single markdown file): Registered as MCP Prompt only
81
+ - **Complex skills** (with scripts): MCP Prompt + local script files in **isolated path** `~/.csp-ai-agent/skills/<name>/`
82
+ - **Path isolation**: Complex skills NOT stored in `~/.cursor/skills/` to prevent AI auto-discovery and ensure telemetry tracking
83
+ - **Incremental mode**: Skips unchanged files using string content equality comparison (client-side)
76
84
 
77
85
  ```typescript
78
86
  // In Cursor AI Agent context
79
87
  const mcpJson = JSON.parse(fs.readFileSync('~/.cursor/mcp.json', 'utf8'));
80
88
  const configured = Object.keys(mcpJson.mcpServers || {});
81
89
 
82
- await callMcpTool('sync_resources', {
90
+ const result = await callMcpTool('sync_resources', {
83
91
  mode: 'incremental', // or 'full', 'check'
84
92
  configured_mcp_servers: configured, // Optimization: skip already configured MCPs
85
93
  });
94
+
95
+ // Execute local actions (for complex skills, rules, and MCPs)
96
+ if (result.local_actions_required) {
97
+ for (const action of result.local_actions_required) {
98
+ if (action.action === 'write_file') {
99
+ const localPath = expandPath(action.path);
100
+
101
+ // Skip if content unchanged
102
+ if (fs.existsSync(localPath)) {
103
+ const local = fs.readFileSync(localPath, 'utf8');
104
+ if (local === action.content) continue;
105
+ }
106
+
107
+ // Write file
108
+ fs.mkdirSync(path.dirname(localPath), { recursive: true });
109
+ fs.writeFileSync(localPath, action.content, action.encoding || 'utf8');
110
+
111
+ // Set permissions (Unix only)
112
+ if (action.mode && process.platform !== 'win32') {
113
+ fs.chmodSync(localPath, parseInt(action.mode, 8));
114
+ }
115
+ }
116
+ }
117
+ }
86
118
  ```
87
119
 
88
120
  **Modes:**
89
- - `incremental` (default): Update only changed resources
121
+ - `incremental` (default): Update only changed resources, skip unchanged files
90
122
  - `full`: Download all resources (file recovery mode)
91
123
  - `check`: Status check only (no downloads)
92
124
 
125
+ **Result Fields:**
126
+ - `summary.skipped`: Number of resources skipped (already up-to-date)
127
+ - `skipped_resources`: Details of skipped resources with reasons
128
+ - `local_actions_required`: File operations for AI to execute locally
129
+
93
130
  **Optimization:** Pass `configured_mcp_servers` to skip downloading MCP resources that are already in `~/.cursor/mcp.json`. This can save **70-90% of API calls and network traffic** in typical scenarios.
94
131
 
95
132
  #### 2. `manage_subscription`
@@ -145,15 +182,37 @@ await callMcpTool('upload_resource', {
145
182
 
146
183
  #### 5. `uninstall_resource`
147
184
 
148
- Remove a resource from local installation.
185
+ Remove a resource from local installation (v2.0: includes local script cleanup).
149
186
 
150
187
  ```typescript
151
- await callMcpTool('uninstall_resource', {
152
- resource_id_or_name: 'my-skill',
153
- remove_from_account: false, // Keep subscription, only remove local files
188
+ // Uninstall a skill with local scripts
189
+ const result = await callMcpTool('uninstall_resource', {
190
+ resource_id_or_name: 'zoom-build',
191
+ remove_from_account: true, // Also cancel subscription
154
192
  });
193
+
194
+ // Execute local cleanup (AI must perform on user's machine)
195
+ if (result.local_actions_required) {
196
+ for (const action of result.local_actions_required) {
197
+ if (action.action === 'delete_file') {
198
+ const localPath = expandPath(action.path);
199
+ if (fs.existsSync(localPath)) {
200
+ fs.rmSync(localPath, {
201
+ recursive: action.recursive || false,
202
+ force: true
203
+ });
204
+ console.log(`Deleted: ${action.path}`);
205
+ }
206
+ }
207
+ }
208
+ }
155
209
  ```
156
210
 
211
+ **Behavior:**
212
+ - **Command/Skill**: Unregisters MCP Prompt + queues local directory deletion (`~/.cursor/skills/<name>/`)
213
+ - **Rule/MCP**: Returns `local_actions_required` for file/config removal
214
+ - **`remove_from_account: true`**: Also cancels server-side subscription (otherwise will re-sync on next sync)
215
+
157
216
  #### 6. `track_usage`
158
217
 
159
218
  Record resource invocation telemetry.
@@ -262,21 +321,125 @@ The server reads `AI-Resources/ai-resources-config.json` to discover available G
262
321
 
263
322
  ## Architecture
264
323
 
265
- ### Resource Delivery Strategy
324
+ ### Hybrid Sync Strategy (v2.1 - Client-Side Metadata Scanning)
325
+
326
+ **Zero Server Dependency!** MCP Server scans local Git repositories to detect complex skills, eliminating the need for server-side metadata API.
327
+
328
+ **Architecture:**
329
+
330
+ ```
331
+ ┌─────────────────────────────────────────────────────────────┐
332
+ │ MCP Server (user-csp-ai-agent) │
333
+ │ │
334
+ │ ┌───────────────────────────────────────────────────────┐ │
335
+ │ │ Git Working Directory (AI-Resources/) │ │
336
+ │ │ ├── csp/ai-resources/skills/zoom-build/ │ │
337
+ │ │ │ ├── SKILL.md │ │
338
+ │ │ │ ├── scripts/build-cli │ │
339
+ │ │ │ ├── scripts/build-trigger │ │
340
+ │ │ │ └── teams/client-android.json │ │
341
+ │ │ └── csp/ai-resources/skills/hang-log-analyzer/ │ │
342
+ │ │ └── SKILL.md │ │
343
+ │ └───────────────────────────────────────────────────────┘ │
344
+ │ ↓ │
345
+ │ ┌───────────────────────────────────────────────────────┐ │
346
+ │ │ scanResourceMetadata(resourceName, type) │ │
347
+ │ │ - Recursively reads all files in directory │ │
348
+ │ │ - Detects scripts/, teams/, references/ paths │ │
349
+ │ │ - Infers file permissions (0755 for scripts) │ │
350
+ │ │ - Returns { has_scripts, script_files[] } │ │
351
+ │ └───────────────────────────────────────────────────────┘ │
352
+ │ ↓ │
353
+ │ ┌─────────────┐ ┌────────────────────────────┐ │
354
+ │ │ MCP Prompt │ │ Local Script Files │ │
355
+ │ │ Registration│ + │ (for complex skills only) │ │
356
+ │ │ (Telemetry) │ │ → local_actions_required[] │ │
357
+ │ └─────────────┘ └────────────────────────────┘ │
358
+ └─────────────────────────────────────────────────────────────┘
359
+ ```
360
+
361
+ **Two-Layer Resource Delivery:**
362
+
363
+ 1. **Remote Layer (MCP Prompt)** - For telemetry tracking
364
+ - All Skills/Commands registered as MCP Prompts
365
+ - AI invokes via `/skill/name` → MCP Server records usage
366
+ - Returns `SKILL.md` content to AI
367
+
368
+ 2. **Local Layer (Script Files)** - For complex skills only
369
+ - Skills with `has_scripts=true` download to `~/.cursor/skills/<name>/`
370
+ - Includes executable scripts, configuration files, and references
371
+ - AI can execute local scripts referenced in `SKILL.md`
372
+
373
+ **Resource Classification:**
374
+
375
+ ```
376
+ ┌─────────────────┬──────────────────┬─────────────────────┬────────────────┐
377
+ │ Resource Type │ MCP Prompt │ Local Files │ Decision │
378
+ ├─────────────────┼──────────────────┼─────────────────────┼────────────────┤
379
+ │ Simple Command │ ✅ Registered │ ❌ Not downloaded │ Single .md │
380
+ │ Simple Skill │ ✅ Registered │ ❌ Not downloaded │ Only SKILL.md │
381
+ │ Complex Skill │ ✅ Registered │ ✅ Downloaded │ has_scripts=T │
382
+ │ Rule │ ❌ Not applicable │ ✅ Downloaded │ Engine needs │
383
+ │ MCP │ ❌ Not applicable │ ✅ Downloaded │ Engine needs │
384
+ └─────────────────┴──────────────────┴─────────────────────┴────────────────┘
385
+ ```
386
+
387
+ **Example: Complex Skill (zoom-build)**
388
+
389
+ ```
390
+ Server-side (MCP Server):
391
+ .prompt-cache/skill-6dea7a2c8cf83e5d227ee39035411730.md
392
+ (AI fetches via prompts/get, telemetry recorded)
393
+
394
+ User-side (Cursor machine):
395
+ ~/.csp-ai-agent/skills/zoom-build/
396
+ ├── SKILL.md
397
+ ├── scripts/
398
+ │ ├── build-cli ← mode 755 (executable)
399
+ │ ├── build-trigger ← mode 755
400
+ │ └── build-poll
401
+ └── teams/
402
+ ├── client-android.json
403
+ └── client-ios.json
404
+
405
+ Invocation flow (v2.4 - Manifest Strategy):
406
+ /skill/zoom-build
407
+ → MCP Server: prompts/get → tracks telemetry ✅
408
+ → AI gets SKILL.md: "Run scripts/build-cli from ~/.csp-ai-agent/skills/zoom-build/"
409
+ → AI executes local script from isolated path ✅
410
+ → Script returns build URL
411
+ ```
412
+
413
+ **Why isolated path + manifest (~/.csp-ai-agent/)?**
414
+ - **SKILL.md NOT downloaded to skills directory** — only scripts are cached locally
415
+ - **Manifest stored separately** in `~/.csp-ai-agent/.manifests/<name>.md` for version tracking
416
+ - **Cursor cannot discover** the skill (missing SKILL.md in skills directory)
417
+ - **AI cannot auto-invoke** (no SKILL.md to discover)
418
+ - **Telemetry guaranteed** — AI must call `resolve_prompt_content` first (controlled by Rule)
419
+ - **Scripts remain cached** — fast execution without re-download
420
+
421
+ ### Resource Delivery Strategy (Legacy Reference)
422
+
423
+ **Previous Versions:**
424
+ - v1.0-1.4: All resources downloaded to local files
425
+ - v1.5-1.7: Pure MCP Prompt mode (telemetry enabled, but complex skills broken)
426
+ - v2.0+: Hybrid approach (best of both worlds)
266
427
 
267
428
  ```
268
429
  ┌─────────────────┬──────────────────┬─────────────────────┐
269
430
  │ Resource Type │ Storage │ Delivery Method │
270
431
  ├─────────────────┼──────────────────┼─────────────────────┤
271
432
  │ Command │ MCP Prompt │ In-memory cache │
272
- │ Skill │ MCP Prompt │ In-memory cache │
433
+ │ Skill (simple) │ MCP Prompt │ In-memory cache │
434
+ │ Skill (complex) │ MCP Prompt + │ Cache + local files │
435
+ │ │ Local scripts │ │
273
436
  │ Rule │ ~/.cursor/rules/ │ write_file action │
274
437
  │ MCP (local) │ ~/.cursor/mcp-*/ │ write_file actions │
275
438
  │ MCP (remote) │ ~/.cursor/mcp.* │ merge_mcp_json only │
276
439
  └─────────────────┴──────────────────┴─────────────────────┘
277
440
  ```
278
441
 
279
- ### Sync Flow
442
+ ### Sync Flow (v2.0 Hybrid)
280
443
 
281
444
  ```
282
445
  User: "csp 同步资源"
@@ -287,32 +450,166 @@ AI Agent: Call sync_resources(mode: 'incremental', configured_mcp_servers: [...]
287
450
 
288
451
  MCP Server:
289
452
  1. Fetch subscription list from CSP API
290
- 2. For each subscription:
291
- - Skip if MCP already in configured_mcp_servers (optimization)
292
- - Download resource files (API or Git fallback)
293
- - Generate local_actions_required
294
- 3. Return result + actions
453
+ 2. Git pull resource repositories
454
+ 3. For each subscription:
455
+ a. Register MCP Prompt (all Skills/Commands)
456
+ b. Scan local Git via scanResourceMetadata() (not API call)
457
+ c. If has_scripts=true:
458
+ - Generate write_file actions for ALL script files
459
+ - Set mode="0755" for executables
460
+ d. Track skipped resources
461
+ 4. Return result + local_actions_required
295
462
 
296
- AI Agent: Execute local_actions_required
297
- - write_file: Compare content, skip if identical
298
- - merge_mcp_json: Check skip_if_exists, preserve user env
463
+ AI Agent (Cursor): Execute local_actions_required
464
+ - write_file:
465
+ 1. Read existing file (if exists)
466
+ 2. Check content equality (localContent === action.content)
467
+ 3. SKIP write if identical (already up-to-date)
468
+ 4. Write file + create parent dirs
469
+ 5. Set permissions (chmod on Unix)
470
+ - merge_mcp_json: Smart merge preserving user env
299
471
 
300
472
  User: Resources synced ✅
473
+ - Summary: synced=5, skipped=3 (already up-to-date)
474
+ - Complex skills now have local scripts available
301
475
  ```
302
476
 
303
477
  ## Performance Optimizations
304
478
 
305
- ### 1. Content-based File Comparison (v0.1.23)
479
+ ### 1. Client-Side Metadata Scanning (v2.1 - 2026-03-27)
480
+
481
+ **Breakthrough:** Eliminated dependency on server-side metadata API by scanning local Git repositories.
482
+
483
+ **Architecture:**
484
+
485
+ ```
486
+ Before (v2.0):
487
+ sync_resources → REST API /resources/{id}/metadata → has_scripts + script_files
488
+ ↑ (requires server team coordination)
489
+
490
+ After (v2.1):
491
+ sync_resources → multiSourceGitManager.scanResourceMetadata() → has_scripts + script_files
492
+ ↑ (scans AI-Resources/ local filesystem)
493
+ ```
494
+
495
+ **Implementation:**
306
496
 
307
- **Before:** Used SHA-256 hash comparison (error-prone, platform-dependent)
308
- **After:** Direct string equality check (`existing === action.content`)
497
+ ```typescript
498
+ // New method in multi-source-manager.ts
499
+ const metadata = await multiSourceGitManager.scanResourceMetadata(
500
+ 'zoom-build',
501
+ 'skill'
502
+ );
503
+ // Returns:
504
+ // {
505
+ // has_scripts: true,
506
+ // script_files: [
507
+ // { relative_path: 'scripts/build-cli', content: '...', mode: '0755' },
508
+ // { relative_path: 'teams/client-android.json', content: '...', mode: '0644' }
509
+ // ]
510
+ // }
511
+ ```
309
512
 
310
513
  **Benefits:**
311
- - ✅ Infinitely faster (0ms vs 6ms per file)
312
- - ✅ 100% reliable (no platform issues)
313
- - ✅ Simpler implementation (6 lines vs 15+ lines)
514
+ - ✅ Zero server-side code changes needed
515
+ - ✅ No REST API dependency
516
+ - ✅ Real-time Git repository reflection
517
+ - ✅ Instant deployment (no backend coordination)
518
+ - ✅ Local filesystem speed (< 50ms for typical skill)
314
519
 
315
- ### 2. MCP Skip Optimization (v0.1.23)
520
+ ### 2. Incremental Sync with SKILL.md Content Check (v2.1.1)
521
+
522
+ **Problem:** Re-downloading unchanged multi-file skills wastes bandwidth and time.
523
+
524
+ **Solution:** Skill-level content comparison (SKILL.md only).
525
+
526
+ ```typescript
527
+ // Client-side logic when executing write_file actions
528
+ for (const action of local_actions_required) {
529
+ if (action.action === 'write_file') {
530
+ const localPath = expandPath(action.path);
531
+
532
+ // For SKILL.md: compare content to decide whether to skip entire skill
533
+ if (action.path.endsWith('SKILL.md')) {
534
+ const existingContent = fs.existsSync(localPath)
535
+ ? fs.readFileSync(localPath, 'utf8')
536
+ : null;
537
+
538
+ if (existingContent === action.content) {
539
+ // SKILL.md unchanged → skip entire skill
540
+ skipSkill(skillName);
541
+ continue;
542
+ }
543
+ }
544
+
545
+ // SKILL.md changed → re-download all script files
546
+ writeFile(localPath, action.content, action.mode);
547
+ }
548
+ }
549
+ ```
550
+
551
+ **Why SKILL.md-only?**
552
+ - ✅ Atomic update: either skip all or download all
553
+ - ✅ Detects file additions/deletions (version bump in SKILL.md)
554
+ - ✅ Simpler logic (single content check vs multiple file I/O)
555
+ - ✅ SKILL.md is the version manifest (any script change should update version)
556
+
557
+ **Benefits:**
558
+ - ✅ 67% less I/O for unchanged skills (1 file read vs 3+)
559
+ - ✅ Prevents orphaned files (no partial updates)
560
+ - ✅ Guarantees consistency (all-or-nothing sync)
561
+
562
+ **Metrics (zoom-build skill, 3 files, 50KB):**
563
+ - First sync: 50KB downloaded, ~200ms
564
+ - Second sync (SKILL.md unchanged): 0 bytes downloaded, ~50ms ✅
565
+ - Third sync (SKILL.md changed): 50KB downloaded, ~200ms (re-downloads all)
566
+
567
+ ### 3. Content-based File Comparison (v2.2.0)
568
+
569
+ **Before:** Used SHA-256 hash calculation (introduced extra CPU overhead)
570
+ **After:** Direct string equality check (`existingContent === action.content`)
571
+
572
+ **Benefits:**
573
+ - ✅ Zero hash calculation overhead (no `crypto` calls)
574
+ - ✅ 100% reliable (string equality is unambiguous)
575
+ - ✅ Simpler implementation (removed `file-hash.ts` utility)
576
+ - ✅ Client-side execution (no MCP Server filesystem access)
577
+
578
+ ### 4. Cross-Resource Invocation Guidance (v2.3.0)
579
+
580
+ **Problem:** When a Command/Skill/Rule references another independent resource, AI Agent might read local files directly, bypassing telemetry tracking.
581
+
582
+ **Solution:** Auto-inject guidance prefix when returning content via `resolve_prompt_content`.
583
+
584
+ **Implementation:**
585
+ ```typescript
586
+ // PromptManager.resolvePromptContentForInvocation()
587
+ const guidancePrefix = buildCrossResourceGuidance(resourceType);
588
+ return {
589
+ content: guidancePrefix + strippedContent
590
+ };
591
+ ```
592
+
593
+ **Example returned content:**
594
+ ```markdown
595
+ <!-- CROSS-RESOURCE INVOCATION GUIDANCE (auto-generated by MCP Server) -->
596
+ > **Important**: If this command references OTHER independent Commands or Skills:
597
+ > - ALWAYS invoke them via resolve_prompt_content
598
+ > - NEVER read local files directly for cross-resource calls
599
+ > - This ensures every independent resource invocation is tracked in telemetry.
600
+ > ...
601
+ <!-- END GUIDANCE -->
602
+
603
+ [Actual Command/Skill content]
604
+ ```
605
+
606
+ **Benefits:**
607
+ - ✅ Transparent to resource creators (no need to modify Command/Skill content)
608
+ - ✅ Clear guidance for AI Agent (no guessing required)
609
+ - ✅ Accurate telemetry (cross-resource calls always go through MCP Server)
610
+ - ✅ Distinguishes cross-resource calls vs internal skill tools
611
+
612
+ ### 5. MCP Skip Optimization (v0.1.23)
316
613
 
317
614
  **Before:** Always downloaded all MCP resources, generated all write_file actions
318
615
  **After:** Skip downloading MCPs that are already in `configured_mcp_servers`
@@ -449,17 +746,72 @@ GET /sse
449
746
 
450
747
  ## Version History
451
748
 
749
+ ### v0.1.29 (2026-03-30)
750
+
751
+ **Breaking Change - Manifest-Based Path Isolation:**
752
+ - **SKILL.md no longer downloaded to local disk** — only exists in MCP Server `.prompt-cache/` and client-side `~/.csp-ai-agent/.manifests/<name>.md`
753
+ - **Scripts cached in isolated path** `~/.csp-ai-agent/skills/<name>/scripts/` (no SKILL.md in this directory)
754
+ - **Cursor cannot auto-discover** skills (missing SKILL.md prevents skill recognition)
755
+ - **Manifest file** `~/.csp-ai-agent/.manifests/<name>.md` stores SKILL.md content for incremental update checks
756
+ - **Migration**: Run `sync_resources` with `mode: 'full'` to adopt new structure
757
+
758
+ **Why This Design:**
759
+ 1. **Telemetry Guaranteed**: AI cannot find SKILL.md locally → must call `resolve_prompt_content` → telemetry recorded ✅
760
+ 2. **Performance Preserved**: Scripts remain cached locally → fast execution without re-download ✅
761
+ 3. **Atomic Updates**: Manifest comparison determines if entire skill needs re-sync ✅
762
+ 4. **Cursor Isolation**: No SKILL.md in skills directory → Cursor doesn't recognize as standalone skill ✅
763
+
764
+ **Rule Enhancement:**
765
+ - Added "二、复杂 Skill 调用规范(Telemetry 保障)" in `csp-ai-prompts.mdc`
766
+ - Clear two-step flow: resolve_prompt_content (telemetry) → read scripts from `~/.csp-ai-agent/` (execution)
767
+ - Universal for all complex skills (zoom-build, zoom-design-doc, hang-log-analyzer, etc.)
768
+
769
+ **Technical Details:**
770
+ - `WriteFileAction.skill_manifest_content` field: carries SKILL.md content for version comparison
771
+ - `is_skill_manifest: true` on first script file: triggers atomic skill-level incremental check
772
+ - Uninstall now deletes both skills directory and manifest file
773
+
774
+ ### v0.1.28 (2026-03-30)
775
+
776
+ **Breaking Change - Path Isolation:**
777
+ - **Complex skills now download to `~/.csp-ai-agent/skills/<name>/`** instead of `~/.cursor/skills/<name>/`
778
+ - This prevents AI Agent from auto-discovering local files and ensures telemetry tracking
779
+ - Forces AI to call `resolve_prompt_content` first (entry point), then read scripts from isolated path
780
+ - **Migration**: Existing users should run `sync_resources` with `mode: 'full'` to migrate to new path
781
+
782
+ **Rule Enhancement:**
783
+ - Added "复杂 Skill 调用规范" section in `csp-ai-prompts.mdc` to standardize invocation behavior
784
+ - Clear distinction: First call uses `resolve_prompt_content` (telemetry), internal tools read from `~/.csp-ai-agent/`
785
+ - Universal guidance for all complex skills (zoom-build, zoom-design-doc, etc.)
786
+
787
+ **Benefits:**
788
+ - ✅ Guarantees telemetry for every skill invocation (no bypass)
789
+ - ✅ Maintains local script caching for performance
790
+ - ✅ Simple skills unchanged (MCP Prompt only)
791
+
792
+ ### v0.1.24 (2026-03-27)
793
+
794
+ **New Features:**
795
+ - Added cross-resource invocation guidance mechanism in `resolve_prompt_content`
796
+ - Auto-inject guidance prefix to instruct AI Agent how to handle references to other Commands/Skills
797
+ - Clear distinction between cross-resource calls (use `resolve_prompt_content`) vs internal skill tools (use local files)
798
+
799
+ **Code Quality:**
800
+ - Added `is_skill_manifest` marker to `WriteFileAction` for atomic skill-level updates
801
+ - Enhanced `PromptManager.buildCrossResourceGuidance()` to generate resource-specific guidance
802
+ - Improved telemetry accuracy by ensuring cross-resource calls always go through MCP Server
803
+
452
804
  ### v0.1.23 (2026-03-27)
453
805
 
454
806
  **Performance Optimizations:**
455
- - Removed hash-based file comparison, use direct content equality
807
+ - Removed hash-based file comparison, use direct string content equality check
456
808
  - Added `configured_mcp_servers` parameter to skip downloading already-configured MCPs
457
809
  - Typical sync time reduced by 80-85% (8-12s → 1-2s)
458
- - Removed `crypto` dependency from sync operations
810
+ - Removed `crypto` dependency and `file-hash.ts` utility from sync operations
459
811
 
460
812
  **Bug Fixes:**
461
- - Fixed hash calculation mismatch between MCP Server and AI Agent (BUG-2026-03-27-001)
462
- - Eliminated platform-dependent `cat | sha256sum` issues
813
+ - Fixed content comparison logic to use string equality (eliminates platform-dependent issues)
814
+ - Eliminated hash calculation overhead (BUG-2026-03-27-001)
463
815
 
464
816
  ### v0.1.22 and earlier
465
817
 
@@ -148,6 +148,20 @@ declare class APIClient {
148
148
  content: string;
149
149
  }>;
150
150
  }>;
151
+ /**
152
+ * Get full resource metadata including script files and content hash.
153
+ *
154
+ * This is the primary endpoint for hybrid sync — returns enhanced metadata
155
+ * with has_scripts, script_files array, and file permissions.
156
+ *
157
+ * Fallback: If the server hasn't implemented this endpoint yet, falls back
158
+ * to downloadResource() and infers has_scripts from file structure.
159
+ *
160
+ * GET /api/v1/resources/{id}/metadata
161
+ * Response: { data: { id, name, type, version, content, has_scripts, script_files, content_hash } }
162
+ *
163
+ * @param userToken Per-request token from the caller's mcp.json configuration.
164
+ */
151
165
  /**
152
166
  * Get resource detail
153
167
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -295,6 +295,20 @@ class APIClient {
295
295
  const response = await this.get(`/csp/api/resources/download/${resourceId}`, this.authConfig(userToken));
296
296
  return response.data;
297
297
  }
298
+ /**
299
+ * Get full resource metadata including script files and content hash.
300
+ *
301
+ * This is the primary endpoint for hybrid sync — returns enhanced metadata
302
+ * with has_scripts, script_files array, and file permissions.
303
+ *
304
+ * Fallback: If the server hasn't implemented this endpoint yet, falls back
305
+ * to downloadResource() and infers has_scripts from file structure.
306
+ *
307
+ * GET /api/v1/resources/{id}/metadata
308
+ * Response: { data: { id, name, type, version, content, has_scripts, script_files, content_hash } }
309
+ *
310
+ * @param userToken Per-request token from the caller's mcp.json configuration.
311
+ */
298
312
  /**
299
313
  * Get resource detail
300
314
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAA6E;AAC7E,sCAAmC;AACnC,4CAAqE;AACrE,4CAAiD;AAEjD,MAAM,SAAS;IACL,MAAM,CAAgB;IACb,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW;IAE/C;QACE,IAAI,CAAC,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,eAAM,CAAC,GAAG,CAAC,UAAU;YAC9B,OAAO,EAAE,eAAM,CAAC,GAAG,CAAC,OAAO;YAC3B,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,wBAAwB;aACvC;SACF,CAAC,CAAC;QAEH,sDAAsD;QACtD,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAClC,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACzC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,kCAAkC;oBAClC,mGAAmG,CACpG,CACF,CAAC;YACJ,CAAC;YAED,2BAA2B;YAC3B,eAAM,CAAC,KAAK,CACV;gBACE,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE;gBAC3C,GAAG,EAAE,aAAa,CAAC,GAAG;gBACtB,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3F,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAiC,CAAC;aAC/E,EACD,gBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,CAC3E,CAAC;YAEF,6CAA6C;YAC5C,aAAqB,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9C,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,eAAM,CAAC,KAAK,CAAC;gBACX,IAAI,EAAE,+BAA+B;gBACrC,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,EAAE,+BAA+B,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;QAEF,4CAA4C;QAC5C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE;YACX,MAAM,SAAS,GAAI,QAAQ,CAAC,MAAc,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,SAAS,CAAC;YAClE,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;YAE7C,4BAA4B;YAC5B,IAAA,sBAAa,EACX,MAAM,EACN,GAAG,EACH,QAAQ,CAAC,MAAM,EACf,QAAQ,EACR,QAAQ,CAAC,MAAM,CAAC,IAAI,EACpB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,OAAiC,CAC3C,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,CAAC,KAAiB,EAAE,EAAE;YACpB,MAAM,SAAS,GAAI,KAAK,CAAC,MAAc,EAAE,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,SAAS,CAAC;YAChE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC;YAE3C,yBAAyB;YACzB,IAAA,oBAAW,EACT,MAAM,EACN,GAAG,EACH,KAAK,EACL,KAAK,CAAC,MAAM,EAAE,IAAI,EAClB,UAAU,CACX,CAAC;YAEF,oCAAoC;YACpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,eAAM,CAAC,KAAK,CACV;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,MAAM;oBACN,GAAG;oBACH,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;oBACrC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBACtG,QAAQ;iBACT,EACD,uBAAuB,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CACvD,CAAC;YACJ,CAAC;YAED,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,KAAyB,EAAE,KAA0B;QAC9D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,KAAK;YACR,OAAO,EAAE;gBACP,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;gBACzB,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAA+B;QACrD,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC;YAC3E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjC,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,SAA2B,EAC3B,MAAc,EACd,GAAW,EACX,UAAU,GAAG,CAAC;QAEd,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,GAClB,KAAK,YAAY,kBAAU;gBAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAEnF,IAAI,cAAc,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACxD,eAAM,CAAC,IAAI,CACT;oBACE,MAAM;oBACN,GAAG;oBACH,UAAU,EAAE,UAAU,GAAG,CAAC;oBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK;iBACN,EACD,mCAAmC,KAAK,OAAO,CAChD,CAAC;gBAEF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,oCAAoC;YACpC,IAAI,KAAK,YAAY,kBAAU,EAAE,CAAC;gBAChC,MAAM,IAAA,uBAAc,EAClB,MAAM,EACN,GAAG,EACH,KAAK,EACL,KAAK,CAAC,QAAQ,EAAE,MAAM,EACtB,UAAU,CACX,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,MAA2B;QACnD,OAAO,IAAI,CAAC,gBAAgB,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC,EACD,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,IAAc,EAAE,MAA2B;QACpE,OAAO,IAAI,CAAC,gBAAgB,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC,EACD,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,IAAc,EAAE,MAA2B;QACnE,OAAO,IAAI,CAAC,gBAAgB,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC,EACD,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAI,GAAW,EAAE,MAA2B;QACtD,OAAO,IAAI,CAAC,gBAAgB,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC,EACD,QAAQ,EACR,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,oCAAoC;IACpC,6CAA6C;IAE7C;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CACpB,MAIC,EACD,SAAkB;QAiBlB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAmB5B,kCAAkC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CACb,WAAqB,EACrB,QAAQ,GAAG,IAAI,EACf,KAAmC,EACnC,SAAkB;QAUlB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAa9B,sCAAsC,EACtC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EACzD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,WAA8B,EAAE,SAAkB;QAClE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAI/B,yCAAyC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAE3G,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CACnB,MAOC,EACD,SAAkB;QAwBlB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CA2B5B,2BAA2B,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;YACxB,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;YAClC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,GAAG,CAAC;gBACJ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;gBACnB,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,KAAK;aACxC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,gBAAgB,CACpB,UAAkB,EAClB,SAAkB;QASlB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAW5B,+BAA+B,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CACrB,UAAkB,EAClB,SAAkB;QAoBlB,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,mBAAmB,CACvB,MAMC,EACD,SAAkB;QAOlB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAIzB,2BAA2B,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,sBAAsB,CAC1B,QAAgB,EAChB,aAAqB,EACrB,SAAkB;QAQlB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAW1B,6BAA6B,EAC7B,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,EACtD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,eAAe,CACnB,OAuBC,EACD,SAAiB;QAEjB,MAAM,IAAI,CAAC,IAAI,CACb,8BAA8B,EAC9B,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAMpB;QAKC,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAY;QAIjD,OAAO,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;YAC9C,SAAS,EAAE,QAAQ;YACnB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF;AAED,4BAA4B;AACf,QAAA,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -59,10 +59,37 @@ declare class MultiSourceGitManager {
59
59
  * @param resourceType 'command' | 'skill'
60
60
  * @returns Array of { path, content } file entries, or [] when not found.
61
61
  */
62
- readResourceFiles(resourceName: string, resourceType: 'command' | 'skill' | 'rule' | 'mcp'): Promise<Array<{
62
+ readResourceFiles(resourceName: string, resourceType: 'command' | 'skill' | 'rule' | 'mcp', includeAllFiles?: boolean): Promise<Array<{
63
63
  path: string;
64
64
  content: string;
65
65
  }>>;
66
+ /**
67
+ * Recursively read all files in a directory, returning relative paths and content.
68
+ *
69
+ * @param dirPath - Absolute path to the directory
70
+ * @param relativePath - Relative path prefix (for recursion)
71
+ * @param results - Accumulator array
72
+ */
73
+ private readDirectoryRecursive;
74
+ /**
75
+ * Scan resource directory and generate metadata (has_scripts, script_files).
76
+ *
77
+ * This method enables client-side metadata generation without requiring
78
+ * server-side API support. It inspects the local Git working directory.
79
+ *
80
+ * @param resourceName - Resource name
81
+ * @param resourceType - Resource type
82
+ * @returns Metadata object with has_scripts and script_files
83
+ */
84
+ scanResourceMetadata(resourceName: string, resourceType: 'command' | 'skill' | 'rule' | 'mcp'): Promise<{
85
+ has_scripts: boolean;
86
+ script_files?: Array<{
87
+ relative_path: string;
88
+ content: string;
89
+ mode?: string;
90
+ encoding: 'utf8' | 'base64';
91
+ }>;
92
+ }>;
66
93
  /**
67
94
  * Check status of all sources without pulling
68
95
  */