vgxness 1.7.0 → 1.8.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.
@@ -69,7 +69,7 @@ Areas:
69
69
  Use --overwrite-vgxness (alias --reinstall) to reinstall only VGXNESS-managed OpenCode entries while preserving unrelated config; --yes is still required to write.
70
70
  It writes only after --yes. The default target is $HOME/.config/opencode/opencode.json; use --scope project to target .opencode/opencode.json explicitly.
71
71
  Project OpenCode config can override user config. Plans are read-only; applies refuse unsafe existing config and create backups before merge.
72
- Claude support is secondary. Claude scopes are local|project|user; compatibility aliases personal/global map to user with warnings. Plans show Claude CLI argv, project .mcp.json compatibility, user ~/.claude.json MCP merge, agents, and guarded CLAUDE.md managed memory separately. Project scope confirmed applies write .mcp.json, .claude/agents/*.md, and the project-root CLAUDE.md managed block as needed. User/global confirmed applies narrowly merge only mcpServers.vgxness in ~/.claude.json, write ~/.claude/agents/*.md, and manage only the VGXNESS block in ~/.claude/CLAUDE.md. Confirmed Claude writes/CLI execution require VGXNESS run preflight metadata (--run-id, with optional --phase/--agent-id). Status/doctor/change-plan are read-only and do not execute Claude Code.
72
+ Claude support is first-class for guarded MCP setup. Claude scopes are local|project|user; compatibility aliases personal/global map to user with warnings. Plans show Claude CLI argv, project .mcp.json compatibility, user ~/.claude.json MCP merge, agents, and guarded CLAUDE.md managed memory separately. Project scope confirmed applies write .mcp.json, .claude/agents/*.md, and the project-root CLAUDE.md managed block as needed. User/global confirmed applies narrowly merge only mcpServers.vgxness in ~/.claude.json, write ~/.claude/agents/*.md, and manage only the VGXNESS block in ~/.claude/CLAUDE.md. Confirmed Claude writes/CLI execution require VGXNESS run preflight metadata (--run-id, with optional --phase/--agent-id). Status/doctor/change-plan are read-only and do not execute Claude Code.
73
73
 
74
74
  skills register --project <name> --name <name> --description <text>
75
75
  skills list [--project <name>] [--scope project|personal]
@@ -98,7 +98,7 @@ Areas:
98
98
  No args in an interactive TTY opens the OpenTUI main menu.
99
99
  No args without a TTY prints static safe setup guidance and exits 0 without opening project state.
100
100
  Setup TUI may launch without --project; Installation remains available and project-scoped checks are deferred while project screens render project-required recovery states.
101
- Provider setup support: OpenCode supported primary/default; Claude supported secondary for CLI MCP registration, project compatibility, and project/user agent planning; Antigravity placeholder; Custom/future extension point.
101
+ Provider setup support: OpenCode first-class supported default guided install; Claude first-class supported guarded install for CLI MCP registration, project compatibility, and project/user agent planning; Antigravity placeholder; Custom/future extension point.
102
102
  Provider config writes/install/apply are external-only and require explicit confirmation.
103
103
 
104
104
  sdd status --project <name> --change <id> [--json]
@@ -41,5 +41,10 @@ function renderDefaults(status) {
41
41
  }
42
42
  function renderProvider(provider) {
43
43
  const safety = provider.actions.some((action) => action.safety.writesProviderConfig) ? 'external write action flagged' : 'no provider writes';
44
- return `${provider.displayName} ${provider.status}/${provider.supportLevel} (${safety})`;
44
+ return `${provider.displayName} ${provider.status}/${renderSupportLevel(provider.supportLevel)} (${safety})`;
45
+ }
46
+ function renderSupportLevel(supportLevel) {
47
+ if (supportLevel === 'supported-primary' || supportLevel === 'supported-secondary')
48
+ return 'supported';
49
+ return supportLevel;
45
50
  }
@@ -14,7 +14,7 @@ const statCards = [
14
14
  { label: 'SDD', value: 'guided', badge: '', description: 'MCP flow' },
15
15
  ];
16
16
  const statusSnapshotLines = [
17
- 'OpenCode primary; dashboard does not call providers.',
17
+ 'OpenCode supported; dashboard does not call providers.',
18
18
  'Advanced checks stay explicit: setup status, mcp doctor opencode.',
19
19
  ];
20
20
  const optionCopy = {
@@ -31,7 +31,7 @@ export function setupTuiViewModelFromPlan(plan, status, state) {
31
31
  workspaceRootLabel: compactPath(workspaceRoot, 72),
32
32
  readinessLabel: label(readiness),
33
33
  readinessBadge: readinessBadge(readiness),
34
- providerLabel: isOpenCode ? 'OpenCode' : isClaude ? 'Claude (supported secondary)' : 'Manual / none',
34
+ providerLabel: isOpenCode ? 'OpenCode' : isClaude ? 'Claude (first-class supported)' : 'Manual / none',
35
35
  databaseLabel: plan === undefined ? 'pending' : plan.db.mode,
36
36
  databasePathLabel: compactPath(databasePath, 72),
37
37
  databaseSourceLabel: String(databaseSource),
@@ -47,8 +47,8 @@ export function setupTuiViewModelFromPlan(plan, status, state) {
47
47
  opencodeActionLabel: isOpenCode ? opencodeActionLabel(opencode?.action) : isClaude ? 'No guided setup write; use guarded Claude install with run preflight.' : 'No automatic provider write; use manual setup guidance.',
48
48
  memoryPathExplanation: memoryExplanation,
49
49
  providerInstallabilityLabel: isOpenCode
50
- ? 'OpenCode is the default guided install provider. Claude is supported secondary via guarded mcp install claude --scope project --yes --run-id <id>.'
51
- : 'Manual / none is read-only guidance. Claude remains supported secondary through explicit guarded apply outside this guided OpenCode flow.',
50
+ ? 'OpenCode is the default guided install provider. Claude is first-class supported via guarded mcp install claude --scope project --yes --run-id <id>.'
51
+ : 'Manual / none is read-only guidance. Claude remains supported through explicit guarded apply outside this guided OpenCode flow.',
52
52
  agentReadinessLabel: agentReadiness.label,
53
53
  agentReadinessDetail: agentReadiness.detail,
54
54
  plannedActions: plan?.actions.map((action) => ({
@@ -79,7 +79,7 @@ export function setupTuiViewModelFromPlan(plan, status, state) {
79
79
  ],
80
80
  providerChoices: [
81
81
  choice('provider:opencode', 'OpenCode', 'Default guided install provider; writes still require final confirmation.', (selections?.provider ?? plan?.provider ?? 'opencode') === 'opencode', state?.focusedChoiceId, [badgeLabels.recommended]),
82
- choice('provider:claude-supported-secondary', 'Claude (supported secondary)', 'Claude CLI MCP registration and project compatibility apply only via guarded mcp install claude --scope project --yes --run-id <id>; not default.', (selections?.provider ?? plan?.provider) === 'claude', state?.focusedChoiceId, ['[supported secondary]', badgeLabels.readOnly]),
82
+ choice('provider:claude-supported', 'Claude (first-class supported)', 'Claude CLI MCP registration and project compatibility apply only via guarded mcp install claude --scope project --yes --run-id <id>; explicit install path.', (selections?.provider ?? plan?.provider) === 'claude', state?.focusedChoiceId, ['[supported]', badgeLabels.readOnly]),
83
83
  choice('provider:none', 'Manual / none', 'No automatic provider config write; follow manual setup guidance.', (selections?.provider ?? plan?.provider) === 'none', state?.focusedChoiceId, [badgeLabels.manual, badgeLabels.readOnly]),
84
84
  ],
85
85
  scopeChoices: isOpenCode
@@ -106,13 +106,13 @@ function previewDetailLines(input) {
106
106
  const opencode = plan?.opencode;
107
107
  const actions = plan?.actions.map((action) => `Planned action: ${action.description}${action.targetPath === undefined ? '' : ` Target: ${compactPath(action.targetPath, 72)}`}${action.backupRequired ? ' Backup required.' : ''}`) ?? ['Planned action: create read-only preview plan.'];
108
108
  return [
109
- `Provider: ${input.provider === 'opencode' ? 'OpenCode [recommended default]' : input.provider === 'claude' ? 'Claude [supported secondary] [guarded explicit apply]' : 'Manual / none [manual] [read-only]'}`,
109
+ `Provider: ${input.provider === 'opencode' ? 'OpenCode [recommended default]' : input.provider === 'claude' ? 'Claude [first-class supported] [guarded explicit apply]' : 'Manual / none [manual] [read-only]'}`,
110
110
  `Memory path: ${plan?.db.mode ?? 'pending'} at ${compactPath(input.databasePath, 72)} (source: ${String(input.databaseSource)})`,
111
111
  `Memory guidance: ${memoryPathExplanation(plan, input.databasePath, input.databaseSource)}`,
112
112
  `Scope: ${input.isOpenCode ? (opencode?.scope ?? 'user') : 'disabled for manual/none provider'}`,
113
113
  `Install mode: ${input.isOpenCode ? (opencode?.installsAgents === false ? 'mcp-only' : 'mcp-plus-agents') : 'disabled for manual/none provider'}`,
114
114
  `Reinstall VGXNESS entries: ${input.isOpenCode ? String(opencode?.overwriteVgxness ?? false) : 'disabled for manual/none provider'}`,
115
- `Provider installability: ${input.isOpenCode ? 'OpenCode installable after final confirmation; Claude supported secondary requires guarded mcp install claude --scope project --yes --run-id <id>.' : 'No guided provider install from this selection; Claude supported secondary uses guarded explicit apply.'}`,
115
+ `Provider installability: ${input.isOpenCode ? 'OpenCode installable after final confirmation; Claude first-class support requires guarded mcp install claude --scope project --yes --run-id <id>.' : 'No guided provider install from this selection; Claude uses guarded explicit apply.'}`,
116
116
  `Agent readiness: ${agentReadinessFromPlan(plan)}`,
117
117
  `Target config: ${input.isOpenCode && opencode?.targetPath !== undefined ? compactPath(opencode.targetPath, 72) : 'none; no provider config will be written'}`,
118
118
  `Safety: ${input.isOpenCode ? '[will write after confirm] only on final confirmation' : '[read-only] manual/no-provider-write mode'}`,
@@ -132,7 +132,7 @@ function helpLines(screen) {
132
132
  'Next/back: Tab continues; Shift+Tab goes back. Enter continues on review and confirms only on final confirmation.',
133
133
  'Cancel/close: q or Esc cancels setup; when help is open, ?/h toggles it closed.',
134
134
  reviewLine,
135
- 'Provider support: OpenCode is the default guided install provider; Claude is supported secondary for guarded explicit apply via mcp install claude --scope project --yes --run-id <id>; Manual / none writes no provider config.',
135
+ 'Provider support: OpenCode is the default guided install provider; Claude is first-class supported for guarded explicit apply via mcp install claude --scope project --yes --run-id <id>; Manual / none writes no provider config.',
136
136
  'Agent readiness: the preview checks vgxness-manager/SDD readiness guidance; preview screens never seed agents.',
137
137
  'No-write guarantee: no provider config is written before explicit final confirmation.',
138
138
  ];
@@ -5,7 +5,7 @@ import { ProviderDoctorService } from './provider-doctor.js';
5
5
  import { ProviderStatusService } from './provider-status.js';
6
6
  import { resolveClaudeCodeScope } from './claude-code-scope.js';
7
7
  export const providerChangePlanProviders = ['opencode', 'claude', 'antigravity', 'custom'];
8
- export const providerChangePlanTypes = ['opencode-mcp-install', 'setup', 'install', 'config-preparation'];
8
+ export const providerChangePlanTypes = ['opencode-mcp-install', 'claude-mcp-install', 'setup', 'install', 'config-preparation'];
9
9
  const safety = {
10
10
  readOnly: true,
11
11
  willWrite: false,
@@ -102,7 +102,7 @@ function unsupportedProviderEnvelope(input) {
102
102
  supported: false,
103
103
  status: 'unsupported',
104
104
  code: 'UNSUPPORTED_PROVIDER',
105
- summary: `${input.provider} is a recognized provider value, but provider change planning is currently implemented only for OpenCode.`,
105
+ summary: `${input.provider} is a recognized provider value, but read-only provider change planning currently supports OpenCode and Claude.`,
106
106
  providerIdentity: {
107
107
  provider: input.provider,
108
108
  adapter: input.provider,
@@ -120,15 +120,16 @@ function unsupportedProviderEnvelope(input) {
120
120
  };
121
121
  }
122
122
  function blockedPlanEnvelope(input, status, doctor, message) {
123
+ const providerName = input.provider === 'claude' ? 'Claude' : 'OpenCode';
123
124
  return {
124
125
  ...baseEnvelope(input),
125
126
  supported: true,
126
127
  status: 'blocked',
127
128
  code: 'PLAN_UNAVAILABLE',
128
- summary: `OpenCode change planning could not resolve the future MCP server command: ${message}`,
129
+ summary: `${providerName} change planning could not resolve the future MCP server command: ${message}`,
129
130
  providerIdentity: {
130
- provider: 'opencode',
131
- adapter: 'opencode',
131
+ provider: input.provider,
132
+ adapter: input.provider,
132
133
  support: 'supported',
133
134
  },
134
135
  statusSummary: statusSummary(status),
@@ -206,14 +207,24 @@ function baseEnvelope(input) {
206
207
  scope: input.scope,
207
208
  provider: input.provider,
208
209
  requestedChangeType: input.changeType,
209
- normalizedChangeType: normalizeChangeType(input.changeType),
210
+ normalizedChangeType: normalizeChangeType(input.provider, input.changeType),
210
211
  payloadMode: input.payloadMode,
211
212
  workspaceRoot: input.workspaceRoot,
212
213
  safety,
213
214
  };
214
215
  }
215
- function normalizeChangeType(changeType) {
216
- return changeType === 'setup' || changeType === 'install' || changeType === 'config-preparation' ? 'opencode-mcp-install' : changeType;
216
+ function normalizeChangeType(provider, changeType) {
217
+ if (provider === 'opencode') {
218
+ return changeType === 'setup' || changeType === 'install' || changeType === 'config-preparation' || changeType === 'claude-mcp-install'
219
+ ? 'opencode-mcp-install'
220
+ : changeType;
221
+ }
222
+ if (provider === 'claude') {
223
+ return changeType === 'setup' || changeType === 'install' || changeType === 'config-preparation' || changeType === 'opencode-mcp-install'
224
+ ? 'claude-mcp-install'
225
+ : changeType;
226
+ }
227
+ return changeType;
217
228
  }
218
229
  function statusSummary(status) {
219
230
  return {
@@ -99,7 +99,7 @@ const finalRunStatuses = ['completed', 'failed', 'blocked', 'cancelled'];
99
99
  const runOutcomes = ['success', 'partial', 'failure', 'blocked', 'cancelled'];
100
100
  const payloadModes = ['compact', 'verbose'];
101
101
  const providerChangePlanProviders = ['opencode', 'claude', 'antigravity', 'custom'];
102
- const providerChangePlanTypes = ['opencode-mcp-install', 'setup', 'install', 'config-preparation'];
102
+ const providerChangePlanTypes = ['opencode-mcp-install', 'claude-mcp-install', 'setup', 'install', 'config-preparation'];
103
103
  const jsonValueSchema = z.lazy(() => z.union([z.string(), z.number().finite(), z.boolean(), z.null(), z.array(jsonValueSchema), z.record(z.string(), jsonValueSchema)]));
104
104
  export const VGX_MCP_TOOL_INPUT_SCHEMAS = {
105
105
  vgxness_sdd_status: z
@@ -13,7 +13,7 @@ const runOutcomes = ['success', 'partial', 'failure', 'blocked', 'cancelled'];
13
13
  const permissionDecisions = ['allow', 'ask', 'deny'];
14
14
  const payloadModes = ['compact', 'verbose'];
15
15
  const providerChangePlanProviders = ['opencode', 'claude', 'antigravity', 'custom'];
16
- const providerChangePlanTypes = ['opencode-mcp-install', 'setup', 'install', 'config-preparation'];
16
+ const providerChangePlanTypes = ['opencode-mcp-install', 'claude-mcp-install', 'setup', 'install', 'config-preparation'];
17
17
  const validChangePattern = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
18
18
  const validMemoryTopicKeyPattern = /^[A-Za-z0-9][A-Za-z0-9._/-]*$/;
19
19
  const maxMemoryTitleLength = 200;
@@ -1,9 +1,10 @@
1
+ import { planClaudeCodeMcpInstall } from '../../mcp/client-install-claude-code-contract.js';
1
2
  import { createMcpClientSetupPreview } from '../../mcp/client-setup-preview.js';
2
- import { noWriteActionSafety } from './provider-setup-adapter.js';
3
+ import { externalProviderWriteSafety, noWriteActionSafety } from './provider-setup-adapter.js';
3
4
  export const claudeSetupAdapter = {
4
5
  id: 'claude',
5
6
  displayName: 'Claude',
6
- supportLevel: 'supported-secondary',
7
+ supportLevel: 'supported',
7
8
  capabilities: ['mcp-preview', 'mcp-install-plan', 'cli-mcp-plan', 'agent-preview', 'doctor', 'manual-guidance'],
8
9
  targets: [
9
10
  { kind: 'project-config', label: 'Project .mcp.json', path: '.mcp.json', writableBySetup: false },
@@ -14,10 +15,11 @@ export const claudeSetupAdapter = {
14
15
  { kind: 'user-config', label: 'User Claude memory', path: '~/.claude/CLAUDE.md', writableBySetup: false },
15
16
  ],
16
17
  getStatus(context) {
18
+ const plan = this.getInstallPlan?.(context);
17
19
  return {
18
20
  providerId: 'claude',
19
- status: 'supported-secondary',
20
- summary: 'Claude is supported as a secondary, non-default provider for CLI MCP registration planning/apply, project .mcp.json compatibility, guarded CLAUDE.md memory, user ~/.claude.json MCP merge, and project/user agents; explicit guarded apply is required for writes or CLI execution.',
21
+ status: plan?.status === 'blocked' ? 'blocked' : 'available',
22
+ summary: 'Claude provider setup is available for CLI MCP registration planning/apply, project .mcp.json compatibility, guarded CLAUDE.md memory, user ~/.claude.json MCP merge, and project/user agents; explicit guarded apply is required for writes or CLI execution.',
21
23
  evidence: context.databasePath !== undefined
22
24
  ? ['Claude MCP preview can be generated from the selected database path.']
23
25
  : ['Claude MCP preview uses a placeholder until a database path is selected.'],
@@ -27,9 +29,10 @@ export const claudeSetupAdapter = {
27
29
  id: 'claude-manual-guidance',
28
30
  label: 'Review guarded Claude install guidance',
29
31
  kind: 'manual-guidance',
30
- description: 'Supported secondary guidance only in setup status; writes are available only through the guarded mcp install claude flow with run preflight metadata.',
32
+ description: 'Claude install guidance only in setup status; writes are available only through the guarded mcp install claude flow with run preflight metadata.',
31
33
  safety: noWriteActionSafety,
32
34
  },
35
+ ...(plan?.actions ?? []),
33
36
  ],
34
37
  };
35
38
  },
@@ -48,4 +51,44 @@ export const claudeSetupAdapter = {
48
51
  warnings: preview.warnings,
49
52
  };
50
53
  },
54
+ getInstallPlan(context) {
55
+ const contract = planClaudeCodeMcpInstall({
56
+ cwd: context.workspaceRoot,
57
+ databasePath: context.databasePath ?? '<database-path>',
58
+ ...(context.databasePathSource !== undefined ? { databasePathSource: context.databasePathSource } : {}),
59
+ scope: 'project',
60
+ ...(context.env !== undefined ? { env: context.env } : {}),
61
+ ...(context.overwriteVgxness !== undefined ? { overwriteVgxness: context.overwriteVgxness } : {}),
62
+ });
63
+ return claudeInstallPlan(context, contract);
64
+ },
51
65
  };
66
+ function claudeInstallPlan(_context, contract) {
67
+ const actions = contract.status === 'would_install' ? [externalInstallAction(contract.targetPath, contract.overwriteVgxness)] : [];
68
+ return {
69
+ providerId: 'claude',
70
+ status: contract.status === 'would_install' ? 'available' : 'blocked',
71
+ readOnly: true,
72
+ mutating: false,
73
+ writesProviderConfig: false,
74
+ summary: contract.status === 'would_install'
75
+ ? 'Claude project install plan is available for external guarded application; the read-only setup status does not write provider config.'
76
+ : contract.message,
77
+ targetPath: contract.targetPath,
78
+ warnings: contract.warnings,
79
+ actions,
80
+ source: contract,
81
+ };
82
+ }
83
+ function externalInstallAction(targetPath, overwriteVgxness = false) {
84
+ return {
85
+ id: 'claude-mcp-install-project',
86
+ label: 'Copy external Claude project install command',
87
+ kind: 'copy-command',
88
+ command: ['vgxness', 'mcp', 'install', 'claude', '--scope', 'project', '--yes', ...(overwriteVgxness ? ['--overwrite-vgxness'] : [])],
89
+ description: overwriteVgxness
90
+ ? 'Copy and run this outside setup status only after reviewing that VGXNESS entries will be overwritten and unrelated config preserved.'
91
+ : 'Copy and run this outside setup status only after reviewing the read-only plan.',
92
+ safety: externalProviderWriteSafety(targetPath),
93
+ };
94
+ }
@@ -5,7 +5,7 @@ import { externalProviderWriteSafety, noWriteActionSafety, } from './provider-se
5
5
  export const openCodeSetupAdapter = {
6
6
  id: 'opencode',
7
7
  displayName: 'OpenCode',
8
- supportLevel: 'supported-primary',
8
+ supportLevel: 'supported',
9
9
  capabilities: ['mcp-preview', 'mcp-install-plan', 'mcp-install-apply-external', 'agent-preview', 'doctor', 'visibility-check'],
10
10
  targets: [
11
11
  { kind: 'user-config', label: 'User/global OpenCode config (default)', path: '$HOME/.config/opencode/opencode.json', writableBySetup: false },
@@ -19,7 +19,7 @@ export const openCodeSetupAdapter = {
19
19
  status: visibility?.ready === true ? 'ready' : 'available',
20
20
  summary: visibility?.ready === true
21
21
  ? 'OpenCode MCP visibility is ready.'
22
- : 'OpenCode is the supported primary provider; install/apply remains external and explicit.',
22
+ : 'OpenCode provider setup is available; install/apply remains external and explicit.',
23
23
  evidence: visibility?.evidence ?? ['OpenCode setup preview and install planning are available.'],
24
24
  guidance: visibility?.guidance ?? ['Preview setup first, then copy and run external install commands only after review.'],
25
25
  actions: plan?.actions ?? [],
@@ -1,3 +1,6 @@
1
+ export function isSupportedProviderLevel(level) {
2
+ return level === 'supported' || level === 'supported-primary' || level === 'supported-secondary';
3
+ }
1
4
  export const noWriteActionSafety = {
2
5
  mutating: false,
3
6
  writesProviderConfig: false,
@@ -1,3 +1,4 @@
1
+ import { isSupportedProviderLevel } from './providers/provider-setup-adapter.js';
1
2
  import { listProviderSetupAdapters } from './providers/provider-setup-registry.js';
2
3
  const agentName = 'vgxness-manager';
3
4
  export class SetupLifecycleService {
@@ -151,7 +152,7 @@ function verificationSummary(environment, project, providers, agents, mcp) {
151
152
  {
152
153
  id: 'providers',
153
154
  label: 'Providers',
154
- status: providers.some((provider) => provider.supportLevel === 'supported-primary') ? 'ready' : 'unknown',
155
+ status: providers.some((provider) => isSupportedProviderLevel(provider.supportLevel)) ? 'ready' : 'unknown',
155
156
  detail: `${providers.length} provider targets are available for read-only setup status.`,
156
157
  },
157
158
  {
@@ -87,7 +87,7 @@ export function createSetupPlan(input) {
87
87
  actions: [
88
88
  {
89
89
  id: 'claude-guarded-install',
90
- description: `Review supported secondary Claude plan for CLI MCP registration, .mcp.json compatibility, ${claude.agentNames.length} .claude/agents/*.md file(s), and guarded project-root CLAUDE.md managed block; apply only with vgxness mcp install claude --scope project --yes --run-id <id>.`,
90
+ description: `Review first-class supported Claude plan for CLI MCP registration, .mcp.json compatibility, ${claude.agentNames.length} .claude/agents/*.md file(s), and guarded project-root CLAUDE.md managed block; apply only with vgxness mcp install claude --scope project --yes --run-id <id>.`,
91
91
  mutating: false,
92
92
  targetPath,
93
93
  backupRequired: claude.backupRequired,
@@ -100,7 +100,7 @@ export function createSetupPlan(input) {
100
100
  targetPath: target.path,
101
101
  reason: target.kind === 'project-memory' ? 'A future guarded Claude apply would create a managed VGXNESS backup before appending or updating the project-root CLAUDE.md managed block.' : 'A future guarded Claude apply would create a managed VGXNESS backup before merging or updating Claude project configuration.',
102
102
  })),
103
- nextCommands: ['vgxness mcp install claude --plan --scope project', 'vgxness mcp install claude --scope project --yes --run-id <id>', 'OpenCode remains the default/primary provider.'],
103
+ nextCommands: ['vgxness mcp install claude --plan --scope project', 'vgxness mcp install claude --scope project --yes --run-id <id>', 'OpenCode remains the default guided setup provider.'],
104
104
  },
105
105
  };
106
106
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vgxness",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "CLI and MCP control plane for guided AI-agent workflows, SDD, memory, and OpenCode setup.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {