vgxness 1.20.12 → 1.20.13
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/dist/adapters/opencode/install/client-install-opencode-contract.js +1 -1
- package/dist/adapters/opencode/install/client-install-opencode.js +1 -1
- package/dist/adapters/opencode/install/opencode-handoff-preview.js +1 -1
- package/dist/application/provider-setup/provider-doctor.js +3 -3
- package/dist/application/provider-setup/provider-status.js +1 -1
- package/dist/application/sdd/sdd-continuation-plan.js +1 -1
- package/dist/interfaces/cli/cli-help.js +2 -2
- package/dist/interfaces/cli/commands/setup-dispatcher.js +2 -2
- package/dist/interfaces/cli/home-tui-app.js +2 -2
- package/dist/interfaces/cli/sdd-renderer.js +3 -3
- package/dist/interfaces/mcp/stdio-server.js +1 -1
- package/dist/setup/setup-plan.js +1 -1
- package/dist/status/product-status.js +1 -1
- package/package.json +1 -1
|
@@ -199,7 +199,7 @@ function warningsForScope(_scope, overwriteVgxness, agentPlan, bashPermissionPol
|
|
|
199
199
|
: [];
|
|
200
200
|
const bashWarnings = bashPermissionPolicy.manager === 'deny'
|
|
201
201
|
? [
|
|
202
|
-
'OpenCode config sets top-level permission.bash = ask; manager read/search discovery tools (read/glob/grep) are allowed while manager bash/edit/write are denied;
|
|
202
|
+
'OpenCode config sets top-level permission.bash = ask; manager read/search discovery tools (read/glob/grep) are allowed while manager bash/edit/write are denied; capability subagents keep explicit permissions plus legacy SDD task aliases. This is config-level evidence only and does not verify provider runtime enforcement.',
|
|
203
203
|
]
|
|
204
204
|
: ['OpenCode top-level permission.bash is set to ask.'];
|
|
205
205
|
return [
|
|
@@ -216,7 +216,7 @@ function confirmationRequiredMessage(scope) {
|
|
|
216
216
|
function warnings() {
|
|
217
217
|
return [
|
|
218
218
|
'Restart OpenCode after installation so it reloads the project MCP config.',
|
|
219
|
-
'OpenCode config sets top-level permission.bash = ask; manager read/search discovery tools (read/glob/grep) are allowed while manager bash/edit/write are denied;
|
|
219
|
+
'OpenCode config sets top-level permission.bash = ask; manager read/search discovery tools (read/glob/grep) are allowed while manager bash/edit/write are denied; capability subagents keep explicit permissions plus legacy SDD task aliases. This is config-level evidence only and does not verify provider runtime enforcement.',
|
|
220
220
|
];
|
|
221
221
|
}
|
|
222
222
|
function manualTest(databasePath, source) {
|
|
@@ -38,7 +38,7 @@ export class OpenCodeHandoffPreviewService {
|
|
|
38
38
|
},
|
|
39
39
|
...(sdd.summary !== undefined ? { sdd: sdd.summary } : {}),
|
|
40
40
|
...(provider.value.value !== undefined ? { providerStatus: compactProvider(provider.value.value) } : {}),
|
|
41
|
-
nextSafeAction: 'Continue in OpenCode conversation using this preview context and VGXNESS MCP; let
|
|
41
|
+
nextSafeAction: 'Continue in OpenCode conversation using this preview context and VGXNESS MCP; let reusable capability subagents handle daily SDD progression when appropriate. Call vgxness_opencode_manager_payload separately with payloadMode=verbose if verbose provider artifact bodies are needed.',
|
|
42
42
|
safety: {
|
|
43
43
|
readOnly: true,
|
|
44
44
|
executesProvider: false,
|
|
@@ -459,8 +459,8 @@ function subagentsCheck(config) {
|
|
|
459
459
|
const agents = isRecord(config?.agent) ? config.agent : undefined;
|
|
460
460
|
const missing = vgxnessOpenCodeSddSubagents.filter((name) => !isRecord(agents?.[name]) || agents[name]?.hidden !== true);
|
|
461
461
|
if (missing.length > 0)
|
|
462
|
-
return { id: 'opencode-sdd-subagents', status: 'fail', detail: `Missing or non-hidden
|
|
463
|
-
return { id: 'opencode-sdd-subagents', status: 'pass', detail: 'All expected
|
|
462
|
+
return { id: 'opencode-sdd-subagents', status: 'fail', detail: `Missing or non-hidden capability subagents: ${missing.join(', ')}.` };
|
|
463
|
+
return { id: 'opencode-sdd-subagents', status: 'pass', detail: 'All expected capability subagents exist and are hidden.' };
|
|
464
464
|
}
|
|
465
465
|
function delegationCheck(config) {
|
|
466
466
|
const manager = isRecord(config?.agent) && isRecord(config.agent[vgxnessOpenCodeDefaultAgent]) ? config.agent[vgxnessOpenCodeDefaultAgent] : undefined;
|
|
@@ -470,7 +470,7 @@ function delegationCheck(config) {
|
|
|
470
470
|
const missing = vgxnessOpenCodeSddSubagents.filter((name) => permission[name] !== 'allow');
|
|
471
471
|
if (missing.length > 0)
|
|
472
472
|
return { id: 'opencode-delegation-permissions', status: 'fail', detail: `Manager cannot delegate to expected subagents: ${missing.join(', ')}.` };
|
|
473
|
-
return { id: 'opencode-delegation-permissions', status: 'pass', detail: 'Manager task permission is deny-by-default and allows exact SDD
|
|
473
|
+
return { id: 'opencode-delegation-permissions', status: 'pass', detail: 'Manager task permission is deny-by-default and allows exact capability subagents plus legacy SDD aliases.' };
|
|
474
474
|
}
|
|
475
475
|
function promptContractCheck(config, expected) {
|
|
476
476
|
const agents = isRecord(config?.agent) ? config.agent : undefined;
|
|
@@ -569,7 +569,7 @@ function summarizeClaudeStatus(status, mcpEntry) {
|
|
|
569
569
|
}
|
|
570
570
|
function nextActionFor(status, mcpEntry, sddNext) {
|
|
571
571
|
if (sddNext !== undefined)
|
|
572
|
-
return { kind: 'advance-sdd', message: 'Continue the next SDD phase inside OpenCode using MCP status/ready/artifact tools and
|
|
572
|
+
return { kind: 'advance-sdd', message: 'Continue the next SDD phase inside OpenCode using MCP status/ready/artifact tools and reusable capability subagents.' };
|
|
573
573
|
if (status === 'ready')
|
|
574
574
|
return { kind: 'continue', message: 'Continue using the provider; no read-only follow-up is required.' };
|
|
575
575
|
if (status === 'not-configured' && !mcpEntry.configured)
|
|
@@ -27,7 +27,7 @@ export function sddContinuationPlanFrom(input) {
|
|
|
27
27
|
safety: [
|
|
28
28
|
'Read-only planner: this command does not execute providers or mutate SDD artifacts, runs, provider config, or openspec/ files.',
|
|
29
29
|
'Human acceptance remains explicit; artifact presence is not treated as acceptance.',
|
|
30
|
-
'Continue SDD phases in OpenCode conversation through VGXNESS MCP and
|
|
30
|
+
'Continue SDD phases in OpenCode conversation through VGXNESS MCP and reusable capability subagents; the removed code runtime is not a CLI fallback.',
|
|
31
31
|
'No openspec/ files are created or written.',
|
|
32
32
|
],
|
|
33
33
|
};
|
|
@@ -43,7 +43,7 @@ Areas:
|
|
|
43
43
|
opencode preview --provider opencode (--agent <name> | --agent-id <id>) --project <name> --change <id> --phase <phase> [--scope project|personal]
|
|
44
44
|
OpenCode CLI preview prints the legacy injection preview JSON for inspection; MCP opencode_handoff_preview is the read-only conversation handoff preview and can be paired with opencode_manager_payload for verbose manager payload details.
|
|
45
45
|
|
|
46
|
-
Interactive Home TUI opens from \`vgxness\` in a real terminal; non-TTY use prints safe guidance. Daily SDD progression should happen inside OpenCode through conversation, VGXNESS MCP, and
|
|
46
|
+
Interactive Home TUI opens from \`vgxness\` in a real terminal; non-TTY use prints safe guidance. Daily SDD progression should happen inside OpenCode through conversation, VGXNESS MCP, and reusable capability subagents; use status/next/sdd continue for read-only CLI guidance.
|
|
47
47
|
|
|
48
48
|
orchestrator preview --project <name> --intent <text> [--change <id>] [--db <path>]
|
|
49
49
|
Orchestrator preview classifies natural-language requests only; it never executes providers, edits files, records runs, or writes provider config.
|
|
@@ -69,7 +69,7 @@ Areas:
|
|
|
69
69
|
mcp doctor [--db <path>] [--project <name>] [--change <id>] [--timeout-ms <ms>]
|
|
70
70
|
MCP setup preview is read-only; it does not install or write .opencode/, .claude/, or provider config.
|
|
71
71
|
Without --db, MCP install and setup commands use the vgxness global default database; pass --db .vgx/memory.sqlite for project-local compatibility.
|
|
72
|
-
OpenCode install defaults to user-global scope and installs mcp.vgxness plus top-level permission.bash=ask, vgxness-manager with bash=deny and native repo tools disabled, and hidden vgxness-sdd-*
|
|
72
|
+
OpenCode install defaults to user-global scope and installs mcp.vgxness plus top-level permission.bash=ask, vgxness-manager with bash=deny and native repo tools disabled, and hidden capability agents such as vgxness-explore/vgxness-plan/vgxness-verify with legacy vgxness-sdd-* task aliases; use --mcp-only for legacy MCP-only config.
|
|
73
73
|
Use --overwrite-vgxness (alias --reinstall) to reinstall only VGXNESS-managed OpenCode entries while preserving unrelated config; --yes is still required to write.
|
|
74
74
|
It writes only after --yes. VGX-managed provider configuration is user-global only for OpenCode and Claude; the OpenCode target is $HOME/.config/opencode/opencode.json.
|
|
75
75
|
Project/local provider files are external/manual diagnostics and will not be written by VGXNESS. Plans are read-only; applies refuse unsafe existing user-global config and create backups before merge.
|
|
@@ -336,14 +336,14 @@ export function promptSetupWizard(environment, defaults) {
|
|
|
336
336
|
const scope = scopeText === 'project' || scopeText === 'user' ? scopeText : undefined;
|
|
337
337
|
if (scope === undefined)
|
|
338
338
|
return validationFailure('OpenCode scope must be project or user.');
|
|
339
|
-
const modeText = defaulted(await promptLine(environment, 'Install mode: MCP + manager/
|
|
339
|
+
const modeText = defaulted(await promptLine(environment, 'Install mode: MCP + manager/capability agents, MCP only [MCP + manager/capability agents]: '), defaults.installMode);
|
|
340
340
|
const installMode = modeText === 'mcp-plus-agents' || modeText.toLowerCase() === 'mcp + manager/sdd agents'
|
|
341
341
|
? 'mcp-plus-agents'
|
|
342
342
|
: modeText === 'mcp-only' || modeText.toLowerCase() === 'mcp only'
|
|
343
343
|
? 'mcp-only'
|
|
344
344
|
: undefined;
|
|
345
345
|
if (installMode === undefined)
|
|
346
|
-
return validationFailure('Install mode must be MCP + manager/
|
|
346
|
+
return validationFailure('Install mode must be MCP + manager/capability agents or MCP only.');
|
|
347
347
|
const overwriteText = defaulted(await promptLine(environment, 'Reinstall VGXNESS entries: overwrite existing mcp.vgxness and VGXNESS agents after final confirmation; preserve unrelated OpenCode config [no]: '), 'no');
|
|
348
348
|
const overwriteVgxness = overwriteText.toLowerCase() === 'yes' || overwriteText.toLowerCase() === 'y' || overwriteText.toLowerCase() === 'true';
|
|
349
349
|
const input = {
|
|
@@ -288,7 +288,7 @@ function focusedSddLines(plan, input, sdd) {
|
|
|
288
288
|
'',
|
|
289
289
|
'This panel intentionally does not open SQLite until a change id is selected.',
|
|
290
290
|
'Allowed input: letters, numbers, dot, underscore, dash; first character must be alphanumeric.',
|
|
291
|
-
'Daily SDD stays in OpenCode through conversation, VGXNESS MCP,
|
|
291
|
+
'Daily SDD stays in OpenCode through conversation, VGXNESS MCP, reusable capability subagents, and registry skills.',
|
|
292
292
|
'',
|
|
293
293
|
`Continue: vgxness sdd continue --project ${plan.project} --change ${change}`,
|
|
294
294
|
`Status: vgxness sdd status --project ${plan.project} --change ${change}`,
|
|
@@ -369,7 +369,7 @@ function sddLines() {
|
|
|
369
369
|
'Change: not selected. Press Enter for the focused SDD gate.',
|
|
370
370
|
'',
|
|
371
371
|
'The Home TUI does not open local SDD state until a change id is selected.',
|
|
372
|
-
'Daily SDD should stay in OpenCode through conversation, VGXNESS MCP, and
|
|
372
|
+
'Daily SDD should stay in OpenCode through conversation, VGXNESS MCP, and reusable capability subagents.',
|
|
373
373
|
'',
|
|
374
374
|
'CLI fallback: `vgxness sdd continue --project <name> --change <id>`.',
|
|
375
375
|
];
|
|
@@ -10,7 +10,7 @@ export function renderSddStatus(input) {
|
|
|
10
10
|
? 'No next SDD phase remains for this change.'
|
|
11
11
|
: input.status.nextReadyPhase === undefined
|
|
12
12
|
? 'Review blockers or accept present draft artifacts before continuing.'
|
|
13
|
-
: `Continue the ${input.status.nextReadyPhase} phase in OpenCode using VGXNESS MCP and
|
|
13
|
+
: `Continue the ${input.status.nextReadyPhase} phase in OpenCode using VGXNESS MCP and reusable capability subagents.`;
|
|
14
14
|
const commandLabel = directPhaseCommand === undefined ? 'Diagnostic command' : 'Continuation guidance command';
|
|
15
15
|
const lines = [
|
|
16
16
|
'SDD Status',
|
|
@@ -43,7 +43,7 @@ export function renderSddNext(input) {
|
|
|
43
43
|
: `vgxness sdd status --project ${input.project} --change ${input.decision.change}`;
|
|
44
44
|
const commandLabel = input.decision.status === 'runnable' && input.decision.nextPhase !== undefined ? 'Continuation guidance command' : 'Diagnostic command';
|
|
45
45
|
const primaryAction = input.decision.status === 'runnable' && input.decision.nextPhase !== undefined
|
|
46
|
-
? `Continue the ${input.decision.nextPhase} phase in OpenCode using VGXNESS MCP and
|
|
46
|
+
? `Continue the ${input.decision.nextPhase} phase in OpenCode using VGXNESS MCP and reusable capability subagents.`
|
|
47
47
|
: input.decision.recommendedAction;
|
|
48
48
|
const lines = [
|
|
49
49
|
'SDD Next',
|
|
@@ -87,7 +87,7 @@ export function renderSddContinuationPlan(plan) {
|
|
|
87
87
|
`Reason: ${plan.reason}`,
|
|
88
88
|
'',
|
|
89
89
|
'Recommended plan:',
|
|
90
|
-
`- ${plan.status === 'runnable' && plan.nextPhase !== undefined ? `Continue the ${plan.nextPhase} phase in OpenCode using VGXNESS MCP and
|
|
90
|
+
`- ${plan.status === 'runnable' && plan.nextPhase !== undefined ? `Continue the ${plan.nextPhase} phase in OpenCode using VGXNESS MCP and reusable capability subagents.` : plan.recommendedAction}`,
|
|
91
91
|
`- ${suggestedCommandLabel}: ${plan.suggestedCommand}`,
|
|
92
92
|
`- Diagnostic command: ${plan.inspectCommand}`,
|
|
93
93
|
'',
|
|
@@ -56,7 +56,7 @@ function descriptionForTool(publicToolName) {
|
|
|
56
56
|
if (publicToolName === 'provider_change_plan')
|
|
57
57
|
return 'Read-only provider change plan preview; composes status, doctor, and OpenCode install planning without writing provider config.';
|
|
58
58
|
if (publicToolName === 'opencode_handoff_preview')
|
|
59
|
-
return 'Read-only OpenCode handoff preview; returns compact context for continuing in OpenCode conversation with VGXNESS MCP and
|
|
59
|
+
return 'Read-only OpenCode handoff preview; returns compact context for continuing in OpenCode conversation with VGXNESS MCP and reusable capability subagents, does not execute/control OpenCode, write .opencode/provider config, or create runs, checkpoints, events, sessions, or skill-usage records. Request verbose manager payload separately when artifact bodies are needed.';
|
|
60
60
|
if (publicToolName === 'verification_plan')
|
|
61
61
|
return 'Read-only verification plan recommendations only; does not execute commands, write provider config, persist results, create checkpoints, or infer SDD acceptance.';
|
|
62
62
|
if (publicToolName === 'run_resume_candidates')
|
package/dist/setup/setup-plan.js
CHANGED
|
@@ -175,7 +175,7 @@ function setupPlanFromOpenCode(input) {
|
|
|
175
175
|
actions: [
|
|
176
176
|
{
|
|
177
177
|
id: `opencode-${input.opencode.action}`,
|
|
178
|
-
description: `${input.opencode.overwriteVgxness ? 'Reinstall/overwrite VGXNESS entries in' : input.opencode.action === 'create' ? 'Create' : 'Merge'} OpenCode config with mcp.vgxness using vgxness mcp start${input.installMode === 'mcp-plus-agents' ? ' and manager/
|
|
178
|
+
description: `${input.opencode.overwriteVgxness ? 'Reinstall/overwrite VGXNESS entries in' : input.opencode.action === 'create' ? 'Create' : 'Merge'} OpenCode config with mcp.vgxness using vgxness mcp start${input.installMode === 'mcp-plus-agents' ? ' and manager/capability agents' : ''}${input.opencode.overwriteVgxness ? '; unrelated OpenCode config is preserved' : ''}${bashPermissionDescription(input.opencode.bashPermissionPolicy)}.`,
|
|
179
179
|
mutating: false,
|
|
180
180
|
targetPath: input.opencode.targetPath,
|
|
181
181
|
backupRequired: input.opencode.backupRequired,
|
|
@@ -84,7 +84,7 @@ function fromSddCockpit(cockpit, project, baseSafety, relatedRunContext) {
|
|
|
84
84
|
: cockpit.aggregateBlockers.map((blocker) => `${blocker.phase}: ${blocker.reason} at ${blocker.topicKey}${blocker.action === undefined ? '' : `; action=${blocker.action}`}`),
|
|
85
85
|
next: [
|
|
86
86
|
cockpit.next.status === 'runnable' && cockpit.next.nextPhase !== undefined
|
|
87
|
-
? `Continue the ${cockpit.next.nextPhase} phase in OpenCode using VGXNESS MCP and
|
|
87
|
+
? `Continue the ${cockpit.next.nextPhase} phase in OpenCode using VGXNESS MCP and reusable capability subagents.`
|
|
88
88
|
: cockpit.recommendedAction,
|
|
89
89
|
],
|
|
90
90
|
command,
|