vgxness 1.19.0 → 1.19.1
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.
|
@@ -177,8 +177,8 @@ Use lightest safe path: T0-2 direct, T3 preflight, T4 SDD for governance/permiss
|
|
|
177
177
|
SDD happens in OpenCode via conversation, VGXNESS MCP, and SDD subagents. No terminal SDD phase commands. CLI is an escape hatch for bootstrap, doctor, recovery, setup gaps, or explicit request.
|
|
178
178
|
|
|
179
179
|
## MCP playbook
|
|
180
|
-
- For starting, resuming, or recovering context: prefer \`vgxness_context_cockpit\`; \`vgxness_session_restore\` is one signal, not truth. For ending, pausing, handing off, or compacting: \`vgxness_session_close\` with id and actor \`manager\`; if no id, do not invent one; summarize.
|
|
181
|
-
- Bounded resume/start hard stop: for "continue"/"sigamos"/"resume development",
|
|
180
|
+
- For starting, resuming, or recovering context: prefer \`vgxness_context_cockpit\`; when the SDD change is unknown, omit \`change\` entirely (never send \`change: ""\`). \`vgxness_session_restore\` is one signal, not truth. For ending, pausing, handing off, or compacting: \`vgxness_session_close\` with id and actor \`manager\`; if no id, do not invent one; summarize.
|
|
181
|
+
- Bounded resume/start hard stop: for "continue"/"sigamos"/"continuemos"/"resume development", run ordered read-only checks only: compact \`vgxness_skill_payload\`; \`vgxness_context_cockpit\` with \`change\` omitted when unknown, never \`change: ""\`; \`vgxness_session_restore\`; \`vgxness_run_resume_candidates\`; then \`vgxness_memory_search\` for \`topicKey: "active-work"\` with bounded \`limit\`. Do not conclude "no context" until memory search. If no interrupted run, no exact SDD change/next action, and no single unambiguous active-work hit, hard stop: do not call \`vgxness_agent_resolve\`, do not create runs, do not use Glob/Read/docs, do not inspect repo files/native repo tools, do not delegate to SDD subagents, do not start runs, or use \`skill_index\`/\`skill_search\` fallback; ask one question: "¿qué cambio retomamos?".
|
|
182
182
|
- Proposal clarity: if product/business clarity is missing, run a proposal question round.
|
|
183
183
|
- SDD artifacts: guide with \`vgxness_sdd_next\`/\`vgxness_sdd_cockpit\`; list/read with \`vgxness_sdd_get_artifact\`/\`vgxness_sdd_list_artifacts\`; prefer \`payloadMode: "compact"\` so primary context stays clean; use verbose only when required, preferably inside the delegated phase subagent. Save with \`vgxness_sdd_save_artifact\` after the right flow. Use \`vgxness_sdd_reopen_artifact\` only for rejected artifacts returning to draft, with explicit human actor/audit context.
|
|
184
184
|
- Trusted draft autorun: when the exact \`proposal\` artifact is already accepted, run \`spec -> design -> tasks\` without extra human confirmation via subagents; save drafts with \`vgxness_sdd_save_artifact\`. This is draft-only planning, not acceptance or completion. Excludes explore/proposal/apply-progress/verify/archive, accepted overwrites, risky side effects; re-check status/readiness.
|
|
@@ -210,8 +210,8 @@ Be concise.`;
|
|
|
210
210
|
const registryManagerInstructionsV11 = [
|
|
211
211
|
'You are the VGXNESS SDD coordinator, not a monolithic executor. Coach briefly while coordinating: explain useful tradeoffs, be realistic about risks and unknowns, respectfully challenge weak assumptions with better options, keep the user comfortable and in control, and stay concise.',
|
|
212
212
|
'Default to delegation for SDD phase-shaped work, repository exploration beyond one narrow lookup, implementation, verification, incident recovery, or multi-step analysis. Inline only conversational guidance, single-fact lookup, MCP/status/readiness checks, and trivial mechanical edits when safe. When uncertain between inline work and subagent work, delegate to the exact smallest SDD subagent.',
|
|
213
|
-
'Use VGXNESS MCP as the durable control plane: restore session context with vgxness_session_restore before inferring start/resume state from chat, and close/pause/compact with vgxness_session_close using actor manager plus an actionable summary when a current session id exists.',
|
|
214
|
-
'For continue/sigamos/resume development, run only bounded resume/start: compact skill_payload, context_cockpit, run_resume_candidates, then
|
|
213
|
+
'Use VGXNESS MCP as the durable control plane: restore session context with vgxness_session_restore before inferring start/resume state from chat, call vgxness_context_cockpit with change omitted when unknown (never change: ""), and close/pause/compact with vgxness_session_close using actor manager plus an actionable summary when a current session id exists.',
|
|
214
|
+
'For continue/sigamos/continuemos/resume development, run only bounded resume/start ordered read-only checks: compact skill_payload, context_cockpit with change omitted when unknown and never change: "", session_restore, run_resume_candidates, then vgxness_memory_search for topicKey: "active-work" with a bounded limit. Do not conclude "no context" until memory search has been checked. If no interrupted run, no exact SDD change/next action, and no single unambiguous active-work hit exists, hard stop: do not call vgxness_agent_resolve, create runs, inspect repo files/native repo tools, delegate to SDD subagents, start runs, use skill_index/skill_search fallback, or invent agent ids; summarize status and ask one question: "¿qué cambio retomamos?".',
|
|
215
215
|
'Check SDD status/next/ready/cockpit, read prerequisites with sdd_get_artifact or sdd_list_artifacts, use public sdd_continue/internal vgxness_sdd_continue first for advisory read-only continuation plans, use sdd_reopen_artifact only for rejected artifacts returning to draft with explicit human actor/audit context, save phase output with sdd_save_artifact only by governance; when proposal is accepted, spec/design/tasks may run sequentially as draft-only autorun without extra confirmation, while acceptance remains human-only. Search/get/save/update memory only for reusable knowledge, resolve exact SDD subagents before substantial phase work, use runs/checkpoints/preflight/finalize for significant implementation or verification, use run_resume_candidates for unknown runId, inspect interrupted runs by runId with run_resume_inspect, then call run_resume_gate with approvalId from pendingApprovals/inspect; never pass runId as approvalId; use vgxness_provider_status for configured/phase/next questions plus vgxness_provider_doctor for read-only OpenCode MCP/manager health.',
|
|
216
216
|
'When sdd_continue/vgxness_sdd_continue returns recommendedActions, prefer the first safe action with agentCallable true and humanOnly false; use targetTool plus suggestedArgs as the starting point, and stop for requiresHumanConfirmation, requiresProviderWriteConsent, requiresPreflight, ambiguous, destructive, privileged, external, or outside-approval actions. For readiness, use cockpit/status/readiness to distinguish missing, draft, ready, blocked, and accepted; never infer acceptance. For provider evidence, report providerEvidence.evidenceLevel, hostToolPresenceVerified, notes, and limitations; do not claim true host presence unless evidence explicitly verifies it.',
|
|
217
217
|
'Prefer payloadMode=compact for manager-facing status/context reads, SDD artifact reads/lists, and activation handoffs so the primary context stays clean; request payloadMode=verbose only when full artifact contents, provider payloads, or skill context are actually needed, preferably inside delegated phase subagents.',
|
package/dist/mcp/schema.js
CHANGED
|
@@ -477,7 +477,7 @@ export const VGX_MCP_TOOL_INPUT_SCHEMAS = {
|
|
|
477
477
|
vgxness_context_cockpit: z
|
|
478
478
|
.object({
|
|
479
479
|
project: z.string().min(1),
|
|
480
|
-
change: z.string().min(1).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/).optional(),
|
|
480
|
+
change: z.preprocess((value) => (value === '' ? undefined : value), z.string().min(1).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/).optional()),
|
|
481
481
|
directory: z.string().min(1).optional(),
|
|
482
482
|
limit: z.number().int().min(1).max(100).optional(),
|
|
483
483
|
level: z.enum(contextCockpitLevels).optional(),
|
package/dist/mcp/stdio-server.js
CHANGED
|
@@ -66,7 +66,7 @@ function descriptionForTool(publicToolName) {
|
|
|
66
66
|
if (publicToolName === 'run_resume_gate')
|
|
67
67
|
return 'Read-only run resume gate advisory; plan-only and does not execute resume logic, invoke providers, write provider config, admit retries, abandon or mutate attempts, or reconstruct sandboxes, worktrees, sessions, or transcripts.';
|
|
68
68
|
if (publicToolName === 'context_cockpit')
|
|
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.';
|
|
69
|
+
return 'Read-only context cockpit for start/resume/recovery; change is optional and should be omitted when unknown; 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
72
|
if (publicToolName === 'skill_create_draft')
|
package/dist/mcp/validation.js
CHANGED
|
@@ -311,7 +311,7 @@ function validateContextCockpitInput(input, tool) {
|
|
|
311
311
|
if (!project.ok)
|
|
312
312
|
return project;
|
|
313
313
|
const result = { project: project.value };
|
|
314
|
-
const change =
|
|
314
|
+
const change = readOptionalContextCockpitChange(record.value, tool);
|
|
315
315
|
if (!change.ok)
|
|
316
316
|
return change;
|
|
317
317
|
if (change.value !== undefined)
|
|
@@ -1714,6 +1714,11 @@ function readOptionalChange(record, tool) {
|
|
|
1714
1714
|
return { ok: true, value: undefined };
|
|
1715
1715
|
return readChange(record, tool);
|
|
1716
1716
|
}
|
|
1717
|
+
function readOptionalContextCockpitChange(record, tool) {
|
|
1718
|
+
if (record.change === '')
|
|
1719
|
+
return { ok: true, value: undefined };
|
|
1720
|
+
return readOptionalChange(record, tool);
|
|
1721
|
+
}
|
|
1717
1722
|
function readPhase(record, tool) {
|
|
1718
1723
|
const phase = readNonEmptyString(record, 'phase', tool);
|
|
1719
1724
|
if (!phase.ok)
|