vgxness 1.17.1 → 1.18.0
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 +1 -1
- package/dist/mcp/control-plane.js +55 -0
- package/dist/mcp/schema.js +253 -0
- package/dist/mcp/stdio-server.js +6 -0
- package/dist/mcp/validation.js +662 -0
- package/dist/memory/sqlite/migrations/018_skill_system_v2.sql +112 -0
- package/dist/skills/personal-skills.js +11 -8
- package/dist/skills/repositories/skill-evaluation-requests.js +190 -0
- package/dist/skills/repositories/skill-improvement-proposals.js +55 -4
- package/dist/skills/repositories/skills.js +630 -3
- package/dist/skills/skill-index-service.js +2 -2
- package/dist/skills/skill-payload.js +9 -2
- package/dist/skills/skill-registry-service.js +554 -4
- package/dist/skills/skill-status-service.js +6 -3
- package/package.json +1 -1
- package/seeds/skills/skill-seed-v1.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ This package is proprietary software. The npm package ships inspectable JavaScri
|
|
|
8
8
|
|
|
9
9
|
OpenCode is the primary supported provider. Claude setup support is secondary. VGX-managed OpenCode and Claude provider configuration is user-global only; provider config writes require explicit CLI confirmation.
|
|
10
10
|
|
|
11
|
-
VGXNESS is currently versioned from `package.json` (`1.17.
|
|
11
|
+
VGXNESS is currently versioned from `package.json` (`1.17.2`). The latest full project health audit is the historical [v1.14.x snapshot](./docs/project-health-audit-v1.14.x.md), which documents the implemented CLI/MCP/SDD control plane, OpenCode-first workflow, release-readiness checks, and the remaining execution/recovery gaps at that point in time. [v1.10.x](./docs/project-health-audit-v1.10.x.md) and [v1.9.1](./docs/project-health-audit-v1.9.1.md) remain historical validation evidence for those releases.
|
|
12
12
|
|
|
13
13
|
## Requirements
|
|
14
14
|
|
|
@@ -14,6 +14,7 @@ import { SddWorkflowService } from '../sdd/sdd-workflow-service.js';
|
|
|
14
14
|
import { runBootSkillSeed } from '../skills/boot-seed.js';
|
|
15
15
|
import { SkillIndexService } from '../skills/skill-index-service.js';
|
|
16
16
|
import { SkillRegistryService } from '../skills/skill-registry-service.js';
|
|
17
|
+
import { SkillStatusService } from '../skills/skill-status-service.js';
|
|
17
18
|
import { VerificationPlanService } from '../verification/index.js';
|
|
18
19
|
import { ProviderChangePlanService } from './provider-change-plan.js';
|
|
19
20
|
import { ContextCockpitSnapshotService } from './control-plane-snapshot-service.js';
|
|
@@ -86,8 +87,60 @@ export function callVgxTool(call, services) {
|
|
|
86
87
|
if (services.skillIndex === undefined)
|
|
87
88
|
return errorEnvelope('validation_failed', 'Skill index service is not available', validated.tool);
|
|
88
89
|
return toEnvelope(validated.tool, services.skillIndex.getIndex(validated.input));
|
|
90
|
+
case 'vgxness_skill_search':
|
|
91
|
+
if (services.skills.searchSkills === undefined)
|
|
92
|
+
return errorEnvelope('validation_failed', 'Skill search service is not available', validated.tool);
|
|
93
|
+
return toEnvelope(validated.tool, services.skills.searchSkills(validated.input));
|
|
94
|
+
case 'vgxness_skill_get':
|
|
95
|
+
if (services.skills.getSkill === undefined)
|
|
96
|
+
return errorEnvelope('validation_failed', 'Skill get service is not available', validated.tool);
|
|
97
|
+
return toEnvelope(validated.tool, services.skills.getSkill(validated.input));
|
|
98
|
+
case 'vgxness_skill_status':
|
|
99
|
+
if (services.skillStatus === undefined)
|
|
100
|
+
return errorEnvelope('validation_failed', 'Skill status service is not available', validated.tool);
|
|
101
|
+
return toEnvelope(validated.tool, services.skillStatus.getStatus(validated.input));
|
|
89
102
|
case 'vgxness_skill_payload':
|
|
90
103
|
return buildSkillPayloadEnvelope(validated.input, services);
|
|
104
|
+
case 'vgxness_skill_activate':
|
|
105
|
+
if (services.skills.activateSkill === undefined)
|
|
106
|
+
return errorEnvelope('validation_failed', 'Skill activation service is not available', validated.tool);
|
|
107
|
+
return toEnvelope(validated.tool, services.skills.activateSkill(validated.input));
|
|
108
|
+
case 'vgxness_skill_record_usage':
|
|
109
|
+
if (services.skills.recordSkillUsage === undefined)
|
|
110
|
+
return errorEnvelope('validation_failed', 'Skill usage service is not available', validated.tool);
|
|
111
|
+
return toEnvelope(validated.tool, services.skills.recordSkillUsage(validated.input));
|
|
112
|
+
case 'vgxness_skill_propose_improvement':
|
|
113
|
+
if (services.skills.proposeSkillImprovement === undefined)
|
|
114
|
+
return errorEnvelope('validation_failed', 'Skill improvement proposal service is not available', validated.tool);
|
|
115
|
+
return toEnvelope(validated.tool, services.skills.proposeSkillImprovement(validated.input));
|
|
116
|
+
case 'vgxness_skill_list_improvement_proposals':
|
|
117
|
+
if (services.skills.listSkillImprovementProposals === undefined)
|
|
118
|
+
return errorEnvelope('validation_failed', 'Skill improvement proposal list service is not available', validated.tool);
|
|
119
|
+
return toEnvelope(validated.tool, services.skills.listSkillImprovementProposals(validated.input));
|
|
120
|
+
case 'vgxness_skill_request_evaluation':
|
|
121
|
+
if (services.skills.requestSkillEvaluation === undefined)
|
|
122
|
+
return errorEnvelope('validation_failed', 'Skill evaluation request service is not available', validated.tool);
|
|
123
|
+
return toEnvelope(validated.tool, services.skills.requestSkillEvaluation(validated.input));
|
|
124
|
+
case 'vgxness_skill_list_evaluations':
|
|
125
|
+
if (services.skills.listSkillEvaluations === undefined)
|
|
126
|
+
return errorEnvelope('validation_failed', 'Skill evaluation list service is not available', validated.tool);
|
|
127
|
+
return toEnvelope(validated.tool, services.skills.listSkillEvaluations(validated.input));
|
|
128
|
+
case 'vgxness_skill_get_evaluation':
|
|
129
|
+
if (services.skills.getSkillEvaluationRequest === undefined)
|
|
130
|
+
return errorEnvelope('validation_failed', 'Skill evaluation get service is not available', validated.tool);
|
|
131
|
+
return toEnvelope(validated.tool, services.skills.getSkillEvaluationRequest(validated.input));
|
|
132
|
+
case 'vgxness_skill_create_draft':
|
|
133
|
+
if (services.skills.createSkillDraft === undefined)
|
|
134
|
+
return errorEnvelope('validation_failed', 'Skill draft creation service is not available', validated.tool);
|
|
135
|
+
return toEnvelope(validated.tool, services.skills.createSkillDraft(validated.input));
|
|
136
|
+
case 'vgxness_skill_update_draft':
|
|
137
|
+
if (services.skills.updateSkillDraft === undefined)
|
|
138
|
+
return errorEnvelope('validation_failed', 'Skill draft update service is not available', validated.tool);
|
|
139
|
+
return toEnvelope(validated.tool, services.skills.updateSkillDraft(validated.input));
|
|
140
|
+
case 'vgxness_skill_publish_version':
|
|
141
|
+
if (services.skills.publishSkillVersion === undefined)
|
|
142
|
+
return errorEnvelope('validation_failed', 'Skill version publication service is not available', validated.tool);
|
|
143
|
+
return toEnvelope(validated.tool, services.skills.publishSkillVersion(validated.input));
|
|
91
144
|
case 'vgxness_opencode_manager_payload':
|
|
92
145
|
return toEnvelope(validated.tool, services.opencodeManagerPayload.build(validated.input));
|
|
93
146
|
case 'vgxness_opencode_handoff_preview':
|
|
@@ -316,6 +369,7 @@ function createServices(database) {
|
|
|
316
369
|
const agents = new AgentRegistryService(database);
|
|
317
370
|
const skills = new SkillRegistryService(database);
|
|
318
371
|
const skillIndex = new SkillIndexService(skills);
|
|
372
|
+
const skillStatus = new SkillStatusService(skills, agents);
|
|
319
373
|
const runs = new RunService(database);
|
|
320
374
|
const managerProfiles = new ManagerProfileOverlayService({ agents, overlays: new ManagerProfileOverlayRepository(database) });
|
|
321
375
|
const opencodeManagerPayload = new OpenCodeManagerPayloadService({ agents, managerProfiles, skills });
|
|
@@ -329,6 +383,7 @@ function createServices(database) {
|
|
|
329
383
|
managerProfiles,
|
|
330
384
|
skills,
|
|
331
385
|
skillIndex,
|
|
386
|
+
skillStatus,
|
|
332
387
|
seedBuiltInSkills: () => runBootSkillSeed(database),
|
|
333
388
|
opencodeManagerPayload,
|
|
334
389
|
opencodeHandoffPreview: new OpenCodeHandoffPreviewService({ managerPayload: opencodeManagerPayload, sdd, providerStatus }),
|
package/dist/mcp/schema.js
CHANGED
|
@@ -30,7 +30,20 @@ export const SUPPORTED_VGX_MCP_TOOL_NAMES = [
|
|
|
30
30
|
'vgxness_manager_profile_get',
|
|
31
31
|
'vgxness_manager_profile_set',
|
|
32
32
|
'vgxness_skill_index',
|
|
33
|
+
'vgxness_skill_search',
|
|
34
|
+
'vgxness_skill_get',
|
|
35
|
+
'vgxness_skill_status',
|
|
33
36
|
'vgxness_skill_payload',
|
|
37
|
+
'vgxness_skill_activate',
|
|
38
|
+
'vgxness_skill_record_usage',
|
|
39
|
+
'vgxness_skill_propose_improvement',
|
|
40
|
+
'vgxness_skill_list_improvement_proposals',
|
|
41
|
+
'vgxness_skill_request_evaluation',
|
|
42
|
+
'vgxness_skill_list_evaluations',
|
|
43
|
+
'vgxness_skill_get_evaluation',
|
|
44
|
+
'vgxness_skill_create_draft',
|
|
45
|
+
'vgxness_skill_update_draft',
|
|
46
|
+
'vgxness_skill_publish_version',
|
|
34
47
|
'vgxness_opencode_manager_payload',
|
|
35
48
|
'vgxness_opencode_handoff_preview',
|
|
36
49
|
'vgxness_run_list',
|
|
@@ -74,7 +87,20 @@ export const EXPOSED_VGX_MCP_TOOL_NAMES = [
|
|
|
74
87
|
'manager_profile_get',
|
|
75
88
|
'manager_profile_set',
|
|
76
89
|
'skill_index',
|
|
90
|
+
'skill_search',
|
|
91
|
+
'skill_get',
|
|
92
|
+
'skill_status',
|
|
77
93
|
'skill_payload',
|
|
94
|
+
'skill_activate',
|
|
95
|
+
'skill_record_usage',
|
|
96
|
+
'skill_propose_improvement',
|
|
97
|
+
'skill_list_improvement_proposals',
|
|
98
|
+
'skill_request_evaluation',
|
|
99
|
+
'skill_list_evaluations',
|
|
100
|
+
'skill_get_evaluation',
|
|
101
|
+
'skill_create_draft',
|
|
102
|
+
'skill_update_draft',
|
|
103
|
+
'skill_publish_version',
|
|
78
104
|
'opencode_manager_payload',
|
|
79
105
|
'opencode_handoff_preview',
|
|
80
106
|
'run_list',
|
|
@@ -107,6 +133,28 @@ const runStatuses = ['created', 'planned', 'running', 'needs-human', 'completed'
|
|
|
107
133
|
const finalRunStatuses = ['completed', 'failed', 'blocked', 'cancelled'];
|
|
108
134
|
const runOutcomes = ['success', 'partial', 'failure', 'blocked', 'cancelled'];
|
|
109
135
|
const payloadModes = ['compact', 'verbose'];
|
|
136
|
+
const skillVersionStatuses = ['draft', 'active', 'deprecated', 'archived'];
|
|
137
|
+
const skillImprovementProposalStatuses = ['draft', 'pending-approval', 'approved', 'rejected', 'cancelled', 'applied'];
|
|
138
|
+
const skillEvaluationRequestStatuses = ['requested', 'planned', 'running', 'completed', 'failed', 'cancelled', 'skipped'];
|
|
139
|
+
const skillSourceKinds = ['path', 'url', 'inline'];
|
|
140
|
+
const skillUsageOutcomes = ['selected', 'injected', 'helped', 'failed', 'neutral'];
|
|
141
|
+
const skillAttachmentTargetTypes = ['agent', 'subagent', 'workflow-phase', 'provider-adapter', 'intent-signal'];
|
|
142
|
+
const jsonRecordSchema = z.record(z.string(), z.unknown());
|
|
143
|
+
const skillLifecycleActorSchema = z
|
|
144
|
+
.object({
|
|
145
|
+
type: z.enum(['human', 'agent', 'system']),
|
|
146
|
+
id: z.string().min(1),
|
|
147
|
+
displayName: z.string().min(1).optional(),
|
|
148
|
+
})
|
|
149
|
+
.passthrough();
|
|
150
|
+
const skillSourceSchema = z
|
|
151
|
+
.object({
|
|
152
|
+
kind: z.enum(skillSourceKinds),
|
|
153
|
+
path: z.string().min(1).optional(),
|
|
154
|
+
url: z.string().min(1).optional(),
|
|
155
|
+
inlineMetadata: jsonRecordSchema.optional(),
|
|
156
|
+
})
|
|
157
|
+
.passthrough();
|
|
110
158
|
const contextCockpitLevels = ['compact', 'expanded', 'verbose'];
|
|
111
159
|
const providerChangePlanProviders = ['opencode', 'claude', 'antigravity', 'custom'];
|
|
112
160
|
const providerChangePlanTypes = ['opencode-mcp-install', 'claude-mcp-install', 'setup', 'install', 'config-preparation'];
|
|
@@ -483,6 +531,34 @@ export const VGX_MCP_TOOL_INPUT_SCHEMAS = {
|
|
|
483
531
|
scope: z.enum(scopes),
|
|
484
532
|
})
|
|
485
533
|
.strict(),
|
|
534
|
+
vgxness_skill_search: z
|
|
535
|
+
.object({
|
|
536
|
+
project: z.string().min(1),
|
|
537
|
+
scope: z.enum(scopes).optional(),
|
|
538
|
+
query: z.string().min(1).optional(),
|
|
539
|
+
status: z.enum(skillVersionStatuses).optional(),
|
|
540
|
+
sourceKind: z.enum(skillSourceKinds).optional(),
|
|
541
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
542
|
+
})
|
|
543
|
+
.passthrough(),
|
|
544
|
+
vgxness_skill_get: z
|
|
545
|
+
.object({
|
|
546
|
+
project: z.string().min(1),
|
|
547
|
+
scope: z.enum(scopes).optional(),
|
|
548
|
+
id: z.string().min(1).optional(),
|
|
549
|
+
name: z.string().min(1).optional(),
|
|
550
|
+
includeUsage: z.boolean().optional(),
|
|
551
|
+
})
|
|
552
|
+
.passthrough(),
|
|
553
|
+
vgxness_skill_status: z
|
|
554
|
+
.object({
|
|
555
|
+
project: z.string().min(1),
|
|
556
|
+
scope: z.enum(scopes).optional(),
|
|
557
|
+
provider: z.string().min(1).optional(),
|
|
558
|
+
mode: z.enum(agentModes).optional(),
|
|
559
|
+
agent: z.string().min(1).optional(),
|
|
560
|
+
})
|
|
561
|
+
.passthrough(),
|
|
486
562
|
vgxness_skill_payload: z
|
|
487
563
|
.object({
|
|
488
564
|
workspaceRoot: z.string().min(1),
|
|
@@ -499,6 +575,183 @@ export const VGX_MCP_TOOL_INPUT_SCHEMAS = {
|
|
|
499
575
|
mode: z.enum(payloadModes).optional(),
|
|
500
576
|
})
|
|
501
577
|
.passthrough(),
|
|
578
|
+
vgxness_skill_activate: z
|
|
579
|
+
.object({
|
|
580
|
+
project: z.string().min(1),
|
|
581
|
+
scope: z.enum(scopes).optional(),
|
|
582
|
+
skillId: z.string().min(1).optional(),
|
|
583
|
+
name: z.string().min(1).optional(),
|
|
584
|
+
versionId: z.string().min(1).optional(),
|
|
585
|
+
version: z.string().min(1).optional(),
|
|
586
|
+
runId: z.string().min(1).optional(),
|
|
587
|
+
agentId: z.string().min(1).optional(),
|
|
588
|
+
workflow: z.string().min(1).optional(),
|
|
589
|
+
phase: z.string().min(1).optional(),
|
|
590
|
+
providerAdapter: z.string().min(1).optional(),
|
|
591
|
+
intent: jsonRecordSchema.optional(),
|
|
592
|
+
reason: z.string().min(1).optional(),
|
|
593
|
+
workspaceRoot: z.string().min(1).optional(),
|
|
594
|
+
maxSourceBytes: z.number().int().positive().optional(),
|
|
595
|
+
mode: z.enum(payloadModes).optional(),
|
|
596
|
+
})
|
|
597
|
+
.passthrough(),
|
|
598
|
+
vgxness_skill_record_usage: z
|
|
599
|
+
.object({
|
|
600
|
+
skillId: z.string().min(1),
|
|
601
|
+
versionId: z.string().min(1).optional(),
|
|
602
|
+
runId: z.string().min(1).optional(),
|
|
603
|
+
targetType: z.enum(skillAttachmentTargetTypes).optional(),
|
|
604
|
+
targetKey: z.string().min(1).optional(),
|
|
605
|
+
outcome: z.enum(skillUsageOutcomes),
|
|
606
|
+
notes: z.string().min(1).optional(),
|
|
607
|
+
workflow: z.string().min(1).optional(),
|
|
608
|
+
phase: z.string().min(1).optional(),
|
|
609
|
+
providerAdapter: z.string().min(1).optional(),
|
|
610
|
+
agentId: z.string().min(1).optional(),
|
|
611
|
+
intent: jsonRecordSchema.optional(),
|
|
612
|
+
evidence: jsonRecordSchema.optional(),
|
|
613
|
+
})
|
|
614
|
+
.passthrough(),
|
|
615
|
+
vgxness_skill_propose_improvement: z
|
|
616
|
+
.object({
|
|
617
|
+
project: z.string().min(1),
|
|
618
|
+
scope: z.enum(scopes).optional(),
|
|
619
|
+
skillId: z.string().min(1).optional(),
|
|
620
|
+
name: z.string().min(1).optional(),
|
|
621
|
+
baseVersionId: z.string().min(1).optional(),
|
|
622
|
+
baseVersion: z.string().min(1).optional(),
|
|
623
|
+
proposedVersion: z.string().min(1),
|
|
624
|
+
proposedSource: z
|
|
625
|
+
.object({
|
|
626
|
+
kind: z.enum(skillSourceKinds),
|
|
627
|
+
path: z.string().min(1).optional(),
|
|
628
|
+
url: z.string().min(1).optional(),
|
|
629
|
+
inlineMetadata: jsonRecordSchema.optional(),
|
|
630
|
+
})
|
|
631
|
+
.passthrough(),
|
|
632
|
+
proposedCompatibility: jsonRecordSchema.optional(),
|
|
633
|
+
title: z.string().min(1),
|
|
634
|
+
problem: z.string().min(1),
|
|
635
|
+
suggestedChange: z.string().min(1),
|
|
636
|
+
sourceContext: jsonRecordSchema.optional(),
|
|
637
|
+
runId: z.string().min(1).optional(),
|
|
638
|
+
agentId: z.string().min(1).optional(),
|
|
639
|
+
workflow: z.string().min(1).optional(),
|
|
640
|
+
phase: z.string().min(1).optional(),
|
|
641
|
+
providerAdapter: z.string().min(1).optional(),
|
|
642
|
+
evidenceRefs: z.array(z.string().min(1)).optional(),
|
|
643
|
+
evidence: jsonRecordSchema.optional(),
|
|
644
|
+
actor: z.string().min(1).optional(),
|
|
645
|
+
})
|
|
646
|
+
.passthrough(),
|
|
647
|
+
vgxness_skill_list_improvement_proposals: z
|
|
648
|
+
.object({
|
|
649
|
+
project: z.string().min(1),
|
|
650
|
+
scope: z.enum(scopes).optional(),
|
|
651
|
+
skillId: z.string().min(1).optional(),
|
|
652
|
+
name: z.string().min(1).optional(),
|
|
653
|
+
baseVersionId: z.string().min(1).optional(),
|
|
654
|
+
status: z.enum(skillImprovementProposalStatuses).optional(),
|
|
655
|
+
runId: z.string().min(1).optional(),
|
|
656
|
+
agentId: z.string().min(1).optional(),
|
|
657
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
658
|
+
})
|
|
659
|
+
.passthrough(),
|
|
660
|
+
vgxness_skill_request_evaluation: z
|
|
661
|
+
.object({
|
|
662
|
+
project: z.string().min(1),
|
|
663
|
+
scope: z.enum(scopes).optional(),
|
|
664
|
+
skillId: z.string().min(1).optional(),
|
|
665
|
+
name: z.string().min(1).optional(),
|
|
666
|
+
versionId: z.string().min(1).optional(),
|
|
667
|
+
version: z.string().min(1).optional(),
|
|
668
|
+
scenarioId: z.string().min(1).optional(),
|
|
669
|
+
proposalId: z.string().min(1).optional(),
|
|
670
|
+
requestedBy: z.string().min(1),
|
|
671
|
+
runId: z.string().min(1).optional(),
|
|
672
|
+
agentId: z.string().min(1).optional(),
|
|
673
|
+
workflow: z.string().min(1).optional(),
|
|
674
|
+
phase: z.string().min(1).optional(),
|
|
675
|
+
providerAdapter: z.string().min(1).optional(),
|
|
676
|
+
risk: jsonRecordSchema.optional(),
|
|
677
|
+
preflight: jsonRecordSchema.optional(),
|
|
678
|
+
})
|
|
679
|
+
.passthrough(),
|
|
680
|
+
vgxness_skill_list_evaluations: z
|
|
681
|
+
.object({
|
|
682
|
+
project: z.string().min(1),
|
|
683
|
+
scope: z.enum(scopes).optional(),
|
|
684
|
+
skillId: z.string().min(1).optional(),
|
|
685
|
+
name: z.string().min(1).optional(),
|
|
686
|
+
versionId: z.string().min(1).optional(),
|
|
687
|
+
scenarioId: z.string().min(1).optional(),
|
|
688
|
+
proposalId: z.string().min(1).optional(),
|
|
689
|
+
status: z.enum(skillEvaluationRequestStatuses).optional(),
|
|
690
|
+
runId: z.string().min(1).optional(),
|
|
691
|
+
agentId: z.string().min(1).optional(),
|
|
692
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
693
|
+
})
|
|
694
|
+
.passthrough(),
|
|
695
|
+
vgxness_skill_get_evaluation: z
|
|
696
|
+
.object({
|
|
697
|
+
project: z.string().min(1),
|
|
698
|
+
scope: z.enum(scopes).optional(),
|
|
699
|
+
id: z.string().min(1),
|
|
700
|
+
})
|
|
701
|
+
.passthrough(),
|
|
702
|
+
vgxness_skill_create_draft: z
|
|
703
|
+
.object({
|
|
704
|
+
project: z.string().min(1),
|
|
705
|
+
scope: z.enum(scopes).optional(),
|
|
706
|
+
name: z.string().min(1),
|
|
707
|
+
description: z.string().min(1),
|
|
708
|
+
version: z.string().min(1),
|
|
709
|
+
source: skillSourceSchema,
|
|
710
|
+
compatibility: jsonRecordSchema.optional(),
|
|
711
|
+
draftParentVersionId: z.string().min(1).optional(),
|
|
712
|
+
actor: skillLifecycleActorSchema,
|
|
713
|
+
reason: z.string().min(1).optional(),
|
|
714
|
+
runId: z.string().min(1).optional(),
|
|
715
|
+
agentId: z.string().min(1).optional(),
|
|
716
|
+
evidence: jsonRecordSchema.optional(),
|
|
717
|
+
governance: jsonRecordSchema.optional(),
|
|
718
|
+
})
|
|
719
|
+
.passthrough(),
|
|
720
|
+
vgxness_skill_update_draft: z
|
|
721
|
+
.object({
|
|
722
|
+
project: z.string().min(1),
|
|
723
|
+
scope: z.enum(scopes).optional(),
|
|
724
|
+
skillId: z.string().min(1).optional(),
|
|
725
|
+
name: z.string().min(1).optional(),
|
|
726
|
+
versionId: z.string().min(1).optional(),
|
|
727
|
+
version: z.string().min(1).optional(),
|
|
728
|
+
source: skillSourceSchema.optional(),
|
|
729
|
+
compatibility: jsonRecordSchema.optional(),
|
|
730
|
+
expectedDraftRevision: z.number().int().positive().optional(),
|
|
731
|
+
actor: skillLifecycleActorSchema,
|
|
732
|
+
reason: z.string().min(1).optional(),
|
|
733
|
+
runId: z.string().min(1).optional(),
|
|
734
|
+
agentId: z.string().min(1).optional(),
|
|
735
|
+
evidence: jsonRecordSchema.optional(),
|
|
736
|
+
governance: jsonRecordSchema.optional(),
|
|
737
|
+
})
|
|
738
|
+
.passthrough(),
|
|
739
|
+
vgxness_skill_publish_version: z
|
|
740
|
+
.object({
|
|
741
|
+
project: z.string().min(1),
|
|
742
|
+
scope: z.enum(scopes).optional(),
|
|
743
|
+
skillId: z.string().min(1).optional(),
|
|
744
|
+
name: z.string().min(1).optional(),
|
|
745
|
+
versionId: z.string().min(1).optional(),
|
|
746
|
+
version: z.string().min(1).optional(),
|
|
747
|
+
actor: skillLifecycleActorSchema,
|
|
748
|
+
reason: z.string().min(1),
|
|
749
|
+
runId: z.string().min(1).optional(),
|
|
750
|
+
agentId: z.string().min(1).optional(),
|
|
751
|
+
evidence: jsonRecordSchema.optional(),
|
|
752
|
+
governance: jsonRecordSchema.optional(),
|
|
753
|
+
})
|
|
754
|
+
.passthrough(),
|
|
502
755
|
vgxness_opencode_manager_payload: z
|
|
503
756
|
.object({
|
|
504
757
|
project: z.string().min(1),
|
package/dist/mcp/stdio-server.js
CHANGED
|
@@ -69,6 +69,12 @@ function descriptionForTool(publicToolName) {
|
|
|
69
69
|
return 'Read-only context cockpit for start/resume/recovery; returns latest restorable session plus bounded memory previews without traces, provider config writes, repository writes, runs, artifacts, or session mutations.';
|
|
70
70
|
if (publicToolName === 'skill_index')
|
|
71
71
|
return 'Read-only skill registry index for a project and scope; returns SkillIndexOutput without provider config writes, native skill file writes, URL fetches, usage records, startup refresh, or plugin refresh.';
|
|
72
|
+
if (publicToolName === 'skill_create_draft')
|
|
73
|
+
return 'Creates a draft skill version and lifecycle event without publishing, activation, provider config writes, or native skill installation.';
|
|
74
|
+
if (publicToolName === 'skill_update_draft')
|
|
75
|
+
return 'Updates only draft skill versions with optional optimistic revision checking; rejects active, deprecated, or archived version mutation.';
|
|
76
|
+
if (publicToolName === 'skill_publish_version')
|
|
77
|
+
return 'Publishes a draft skill version as active/current with explicit actor and reason; publication is not activation, SDD acceptance, or correctness proof.';
|
|
72
78
|
if (publicToolName === 'sdd_cockpit')
|
|
73
79
|
return 'Agent-callable read-only SDD cockpit summary; returns phase metadata/readModel without artifact bodies or state changes and preserves explicit human acceptance semantics. Use it to decide the next safe SDD action or blocker.';
|
|
74
80
|
if (publicToolName === 'sdd_continue')
|