This directory is an experimental local VS Code prototype for translating pre-stable editor bridge JSON into VS Code-style data records and for hosting a minimal local VS Code extension package scaffold.
The extension scaffold is not published, has no marketplace packaging,
has no LSP, and does not define a stable ABI/API. It can consume the checked
examples under docs/examples/editor-bridge and can also run limited
live JSON flows from this source tree through the local command facade.
The default tests are mostly static/mock tests, not VS Code GUI
integration tests, and they run without npm install, Vivado, xsim, or
hardware. A limited opt-in Extension Host runtime smoke exists for local
dependency-policy review; it is not a product claim.
The package includes a copied pccx aperture-mark icon and
pccx SystemVerilog Light / pccx SystemVerilog Dark color themes derived
from the local pccx-UI/Systemverilog-IDE design-system package. These assets are
visual branding only; they do not replace the host-theme-first
presentation boundary and do not make the theme surface complete.
A text-only first-use walkthrough for the command palette, Problems/Output
panels, and current status-bar boundary is tracked in
docs/typical-first-time-use.md.
systemverilog-ide is the editor cockpit: it owns VS Code command
registration, presentation mapping, opt-in workspace command shape, and
future context construction for editor users. It does not become a
separate analysis backend.
pccx-lab is the CLI-first verification/tooling backend. Reusable
analysis, diagnostics, declaration lookup, validation status, and log
handoff should flow through the existing facade and CLI/core boundary
rather than being duplicated inside this extension scaffold.
pccx-llm-launcher is a future local LLM/chat/model backend candidate.
This prototype only adds workflow boundary status and context bundle commands
behind a controlled tool boundary, plus a validation command proposal
surface that returns data only and a disabled-by-default approved
validation runner for allowlisted proposal IDs. There are no provider/runtime calls, no
pccx-llm-launcher runtime calls, and no MCP server implementation in this
scaffold.
Problem payloads become diagnostic-like records:
error->Errorwarning->Warninginfoor unknown severities ->Information- CLI 1-based
line/columnvalues become 0-basedrange.start.line/range.start.character - missing locations safely fall back to line
0, character0
Declaration and locate payloads become navigation items that preserve
name, kind, file, line, and column, with additional 0-based
position fields for editor consumers.
src/cli-runner.mjs is the only subprocess layer. It uses Node built-ins,
honors the facade process PCCX_IDE_PYTHON executable when set, otherwise
prefers python and falls back to python3, sets PYTHONPATH=src, runs
from the repository root, and passes arguments as arrays instead of shell
strings. It only exposes helpers for known pccx_ide_cli JSON flows:
problems from-check <file> --format jsonproblems from-xsim-log <log> --format jsondeclarations <path> --format jsonlocate <path> <name> --kind <kind> --format json
src/live-adapter.mjs calls those known flows and translates successful
JSON payloads through the same adapter functions used by the checked
example path. Failures return structured ok, exitCode, stdout,
stderr, and error fields for callers to surface.
Checked-example remains the default. Live workspace behavior requires
both pccxSystemVerilog.mode=liveWorkspace and
pccxSystemVerilog.liveWorkspace.enabled=true; setting only one of those
values is not enough. Live workspace commands do not silently fall back
to checked examples, do not start background workspace scanning, do not
add file watchers, do not check on save, and do not run arbitrary shell
commands.
The live workspace command shape is limited to known facade argument
arrays. pccxSystemVerilog.publishLiveWorkspaceDiagnostics maps to the
known diagnostics facade flow for the configured default source, and
pccxSystemVerilog.showLiveWorkspaceNavigation maps to the known locate
flow for the configured navigation root, module, and kind. The older
runDiagnosticsLive and runNavigationLive command IDs remain
experimental opt-in aliases for now. A controlled tiny fixture workspace
lives at test/fixtures/live-workspace; the opt-in runtime smoke uses
that fixture only and does not scan a user workspace. The runtime smoke
now covers live diagnostics and live navigation against that fixture; live
navigation returns Location-style data and avoids QuickPick dialogs in the
smoke path.
bin/pccx-vscode-prototype.mjs is a local command facade for the same
prototype translation layer. It emits JSON only and requires callers to
choose an explicit mode:
node editors/vscode-prototype/bin/pccx-vscode-prototype.mjs diagnostics \
--mode example --source check-missing-endmodule
node editors/vscode-prototype/bin/pccx-vscode-prototype.mjs diagnostics \
--mode live --from-check fixtures/missing_endmodule.sv
node editors/vscode-prototype/bin/pccx-vscode-prototype.mjs navigation \
--mode example --source declarations
node editors/vscode-prototype/bin/pccx-vscode-prototype.mjs navigation \
--mode live --locate fixtures/modules pkg_defs --kind packageThe facade supports checked-example mode and live CLI mode for known flows only. It does not silently fall back between modes, does not use shell interpolation, and does not accept arbitrary command strings.
package.json, src/extension.cjs, and src/extension.mjs define a
minimal experimental local
VS Code extension scaffold. The package is private, has version
0.0.0, and intentionally has no publisher, runtime dependencies,
bundler, vsce, or marketplace publishing script. The only npm
dependency is the exact dev dependency @vscode/test-electron@2.5.2 for
the guarded local Extension Host smoke. src/extension.cjs is only the
VS Code manifest wrapper; the implementation stays in src/extension.mjs.
The contributed commands are:
pccxSystemVerilog.publishCheckedExampleDiagnosticspccxSystemVerilog.showCheckedExampleNavigationpccxSystemVerilog.publishLiveWorkspaceDiagnosticspccxSystemVerilog.showLiveWorkspaceNavigationpccxSystemVerilog.showDiagnosticsExamplepccxSystemVerilog.showNavigationExamplepccxSystemVerilog.runDiagnosticsLivepccxSystemVerilog.runNavigationLivepccxSystemVerilog.showWorkflowBoundaryStatuspccxSystemVerilog.buildWorkflowContextBundlepccxSystemVerilog.proposeValidationCommandpccxSystemVerilog.runApprovedValidationCommandpccxSystemVerilog.showRecentValidationResultspccxSystemVerilog.showValidationCacheStatuspccxSystemVerilog.clearValidationResultCachepccxSystemVerilog.showPatchProposalPreviewpccxSystemVerilog.clearPatchProposalPreviewpccxSystemVerilog.showLocalWorkflowStatuspccxSystemVerilog.showContextBundleAuditpccxSystemVerilog.showPccxLabBackendStatuspccxSystemVerilog.showDiagnosticsHandoffSummary
The contributed color themes are:
pccx SystemVerilog Lightpccx SystemVerilog Dark
Light/dark maintenance expectations are documented in
docs/theme-consistency.md.
The extension icon is assets/logo/aperture-mark-128.png, with source
SVG logo assets retained under assets/logo/. The copied-asset notice is
tracked in assets/PCCX_UI_NOTICE.md.
The prototype-only settings are:
pccxSystemVerilog.mode, defaultcheckedExamplepccxSystemVerilog.liveWorkspace.enabled, defaultfalsepccxSystemVerilog.pccxLab.command, defaultpccx_ide_clipccxSystemVerilog.workflowBoundary.enabled, defaultfalsepccxSystemVerilog.workflowBoundary.backend, defaultnonepccxSystemVerilog.validationRunner.enabled, defaultfalsepccxSystemVerilog.validationRunner.mode, defaultdisabledpccxSystemVerilog.validationRunner.defaultWorkingDirectory, defaultrepo-rootpccxSystemVerilog.validationRunner.maxOutputLines, default120pccxSystemVerilog.validationRunner.timeoutMs, default30000pccxSystemVerilog.pythonPath, defaultpython3pccxSystemVerilog.defaultSource, defaultfixtures/missing_endmodule.svpccxSystemVerilog.defaultLog, defaultfixtures/xsim/mixed.logpccxSystemVerilog.defaultNavigationRoot, defaultfixtures/modulespccxSystemVerilog.defaultModule, defaultsimple_modpccxSystemVerilog.defaultDeclarationKind, defaultmodule
The default diagnostics publishing command is
pccxSystemVerilog.publishCheckedExampleDiagnostics. It is experimental
and always uses the checked check-missing-endmodule example through the
facade boundary. The checked-example navigation command is
pccxSystemVerilog.showCheckedExampleNavigation. It is experimental,
command-first navigation, and always uses
navigation --mode example --source declarations through the facade
boundary. It maps the checked declaration records into VS Code
Uri/Range/Location-style records and returns them to callers; it
has no LSP provider yet. The explicit example commands always build
checked-example facade arguments, and the explicit live commands always
build known live facade arguments. Live diagnostics uses
--from-check <defaultSource>. Live navigation uses
--locate <defaultNavigationRoot> <defaultModule> --kind <defaultDeclarationKind>.
Live mode remains separate and explicit; the extension does not silently
fall back between live and checked-example modes.
The command handlers are thin wrappers around the local facade. They
normalize the prototype-only settings, build known facade argument arrays,
and run bin/pccx-vscode-prototype.mjs; they do not call pccx_ide_cli
directly from the extension entry point, do not invoke raw shell command
strings, and do not accept arbitrary command execution. Live mode calls
only known facade flows. Live paths are still prototype-only and are
passed to known facade flows as argument-array entries.
pccxSystemVerilog.showPccxLabBackendStatus prepares a command palette
status surface for future pccx-lab integration. It returns the configured
pccxSystemVerilog.pccxLab.command value, marks the integration as a
placeholder/status-only boundary, lists future controlled operations such
as diagnostics, index, locate, declarations, xsim-log analysis, and
validation summary, lists required future safety properties such as fixed
args, no shell interpolation, explicit user approval, bounded output, and
context bundle summary, and does not execute pccx-lab.
src/diagnostics-handoff-consumer.mjs is a read-only adapter for the
launcher diagnostics handoff JSON shape. It validates the checked
pccx.diagnosticsHandoff.v0 fixture as data and returns a deterministic
summary for future UI use. It does not invoke pccx-llm-launcher, does
not invoke pccx-lab, does not run the pccx-lab validator command, does
not spawn shell commands, and does not implement MCP or LSP. The boundary
is documented in
docs/diagnostics-handoff-consumer.md.
src/diagnostics-handoff-status-surface.mjs and
pccxSystemVerilog.showDiagnosticsHandoffSummary expose that existing
consumer summary as a small local status surface. The command consumes
adapter output as data, writes a deterministic summary to the prototype
output channel, and returns JSON for tests or future UI code. It does not
read raw handoff JSON in the UI layer, does not invoke launcher or
pccx-lab, does not run the pccx-lab validator command, and does not add
provider, runtime, MCP, LSP, telemetry, upload, or marketplace behavior.
src/runtime-readiness-consumer.mjs is a read-only adapter for the
launcher runtime readiness JSON shape. It validates the checked
pccx.runtimeReadiness.v0 Gemma 3N E4B plus KV260 fixture as data and
returns a deterministic bounded summary. The current consumed answer is
blocked_not_yet_evidence_backed: timing, implementation, bitstream,
KV260 smoke, runtime evidence, and measured throughput remain unavailable
or blocked, while throughput is target-only.
src/runtime-readiness-status-surface.mjs exposes that consumer summary
as local status data. The context bundle can include the same summary
when a readiness status surface or consumer summary is supplied. It
records the readiness/evidence states, target model/device, timing,
bitstream, implementation, KV260 smoke, runtime evidence, throughput,
bounded blockers, and read-only safety flags. Missing or invalid
readiness data stays unavailable or invalid context. This path does not
execute launcher, pccx-lab, FPGA repository access, KV260 runtime, model
weight loading, provider calls, MCP, LSP, marketplace, telemetry, upload,
or write-back behavior. The boundary notes are tracked in
docs/runtime-readiness-consumer.md.
src/device-session-status-consumer.mjs is a read-only adapter for the
launcher device/session status JSON shape. It validates the checked
pccx.deviceSessionStatus.v0 Gemma 3N E4B plus KV260 fixture as data and
returns a deterministic bounded summary. The current consumed answer is
device_session_status_placeholder_blocked: connection, discovery,
authentication, model load, session activity, log stream, diagnostics,
and runtime readiness remain placeholder, inactive, not configured, or
blocked status data.
src/device-session-status-surface.mjs exposes that consumer summary as
local status data. The context bundle can include the same summary when a
device/session status surface or consumer summary is supplied. It records
target model/device, connection state, discovery state, authentication
state, runtime state, model load state, session state, log stream state,
diagnostics state, readiness state, status-panel rows, counts, pccx-lab
diagnostics placeholder state, and read-only safety flags. Missing or
invalid status data stays unavailable or invalid context. This path does
not execute launcher, pccx-lab, validator, serial, network, SSH, hardware,
KV260 runtime, model weight loading, provider calls, MCP, LSP,
marketplace, telemetry, upload, or write-back behavior.
src/command-handlers.mjs is the experimental local command-handler
scaffold. It maps command ID -> normalized prototype settings -> known
facade argument array -> facade JSON result -> testable UI action model.
Diagnostics facade payloads become { kind: "diagnostics", diagnostics, summary } actions, and navigation facade payloads become
{ kind: "navigation", items, summary } actions. Tests use injected and
mocked VS Code-like dependencies such as runFacade, updateDiagnostics,
and showNavigationItems for static coverage.
src/definition-provider.mjs is the first experimental VS Code-native
provider smoke. It registers a minimal DefinitionProvider for
SystemVerilog-like file documents and reuses the same checked-example
navigation facade boundary used by
pccxSystemVerilog.showCheckedExampleNavigation. The provider returns
VS Code Location results mapped from
navigation --mode example --source declarations; it does not implement
LSP, does not scan the live workspace by default, and does not silently
switch modes. It also does not call provider/runtimes, pccx-llm-launcher, or
chat services. Semantic cursor and symbol resolution are not complete
in this phase, so the provider may ignore the cursor position and return
the checked-example declaration location. Live navigation remains an
explicit and separate command path.
src/presenter.mjs is the experimental local presenter scaffold. It
consumes command-handler UI actions and maps diagnostics/navigation
actions to mocked VS Code-like APIs. Diagnostics presentation groups
records by file for a DiagnosticCollection-like dependency, and
navigation presentation creates deterministic QuickPick-like items.
The opt-in Extension Host runtime smoke additionally verifies that the
checked-example diagnostics command publishes at least one real VS Code
diagnostic with URI, range, severity, message, and source fields through
a DiagnosticCollection, and that the checked-example navigation
command returns at least one Location-style record with URI, range,
symbol, target kind, and source fields. The same opt-in smoke opens the
controlled fixture workspace and executes vscode.executeDefinitionProvider
to verify that the experimental VS Code-native DefinitionProvider
returns at least one Location with sane URI and range fields. A guarded
local-only Extension Host runtime smoke exists at
scripts/vscode-extension-host-smoke.sh, but it exits 2 by default and
only runs when PCCX_RUN_EXTENSION_HOST_SMOKE=1 is set. The runtime
smoke loads the local extension package, verifies activation/command
registration, confirms live workspace commands fail clearly while
disabled, runs live diagnostics against the controlled fixture only, and
executes live navigation against the same fixture without QuickPick
blocking. It also executes the checked-example diagnostics/navigation
command paths plus the provider-boundary smoke. It checks the workflow boundary status
command, selected-symbol context bundle command, validation command
proposal, disabled approved validation runner behavior, one explicit
allowlisted validation run, validation summary handoff into the context
bundle, local validation-result cache commands, and pccx-lab
backend status command without provider/runtime calls. It does not
package the extension, add an LSP provider, or install through a
marketplace flow. Extension Host gates are
tracked in
docs/EXTENSION_HOST_READINESS.md.
src/workflow-boundary.mjs models a future local workflow
mode as proposals only. pccxSystemVerilog.showWorkflowBoundaryStatus
returns the local status, configured backend, and proposal boundaries.
Allowed proposal kinds are explainDiagnostics, proposePatch,
proposeValidationCommand, summarizeLog, askForMoreContext, and
openRelatedSymbol. Direct writeFile, commit, push, merge,
release, tag, changeRuleset, accessSecrets, and accessStaging
actions are disallowed. User approval remains required before any patch,
validation command, or commit is executed outside this proposal boundary.
src/context-bundle.mjs is a token-saving context bundle contract for
future SystemVerilog workflow boundary experiments.
pccxSystemVerilog.buildWorkflowContextBundle returns a bounded JSON object
for the active editor state without calling a provider. It prefers the
current file path, selected range, bounded lexical selected-symbol
context, active diagnostics near the selection, recent navigation
references, recent command status, current mode/configuration, and small
bounded snippets only for explicit selections. It can also include the
latest approved validation runner cache summary and a small bounded
recent validation history: proposal ID, status, allowlist label, exit
code, duration/timestamps, working-directory kind, command kind, bounded
stdout/stderr summaries, truncation/redaction flags, failure hints, and
safety metadata. It does not include full logs, raw shell command
strings, raw absolute private paths, build artifacts, or bulk file
content. The bundle can also include the diagnostics handoff summary
section from src/diagnostics-handoff-status-surface.mjs as read-only
adapter data. That section carries counts, descriptor references,
transport kinds, and safety flags only; missing or invalid handoff data is
reported as unavailable/invalid context and does not trigger launcher,
pccx-lab, validator, shell, provider, runtime, MCP, LSP, telemetry,
upload, or write-back behavior. The selected-symbol
context extracts simple SystemVerilog-like lexical cues such as the symbol
text, current line, and nearby module/package/interface/parameter/function
or task declaration; it is not full semantic analysis. The bundle
references files by path/range instead of including whole workspaces,
excludes dependency caches, test runtime directories, lockfiles,
agent instruction files, binary-like content, and internal instruction
paths, and redacts secret-like assignment lines. This is a
JSON contract only: no provider/runtime calls, no
pccx-llm-launcher runtime calls yet, no MCP server implementation, no
direct file modification, and no stable API claim.
The boundary notes are tracked in
docs/LIVE_WORKSPACE_BOUNDARY.md.
src/patch-proposal-contract.mjs defines a provider-free patch proposal
contract for future user-reviewed edits. The contract accepts only
repository-relative paths, bounded hunk previews, bounded rationale and
validation plan text, explicit risk level, and requiresUserReview=true.
It rejects private paths, secret-like assignments, shell commands,
build artifacts, model files, raw provider output, unknown command
fields, and auto-apply flags. It does not apply patches, write files,
execute validation, call pccx-lab, call pccx-llm-launcher, call provider/runtime services
provider, implement MCP, implement LSP, package the extension, create a
release, or create a tag. The contract notes are tracked in
docs/patch-proposal-contract.md.
pccxSystemVerilog.showPatchProposalPreview previews checked patch
proposals through VS Code-native output without applying changes, and
pccxSystemVerilog.clearPatchProposalPreview clears only the in-memory
preview state.
src/validation-patch-handoff.mjs maps failed or blocked validation
summaries into bounded patch proposal context seeds. Passing validation
summaries produce no seed. The helper carries proposal ID, status,
bounded failure summary, related diagnostics, candidate file paths, and a
suggested approved validation plan without full logs, private paths,
build artifacts, shell commands, patch creation, or patch
application. The handoff notes are tracked in
docs/validation-patch-handoff.md.
src/pccx-lab-command-descriptor.mjs defines a data-only pccx-lab command
descriptor contract. The checked descriptor is labStatus with
executionState: "future", fixed empty args, explicit approval required,
and bounded output policy. The contract rejects raw command strings,
unsafe args, private paths, secrets, and output policies that do not redact
or drop private paths. It does not execute pccx-lab. The boundary notes
are tracked in
docs/pccx-lab-command-boundary.md.
src/launcher-status-contract.mjs defines a status-only launcher
integration contract for future pccx-llm-launcher work. The default
status is fixture-only and future-state, uses a deterministic timestamp,
and rejects secrets, private paths, model artifacts, board logs, and board
performance claims. It does not call the launcher or communicate with a
device. The boundary notes are tracked in
docs/launcher-integration-boundary.md.
src/local-workflow-status.mjs summarizes local prototype state for
pccxSystemVerilog.showLocalWorkflowStatus: extension mode, live workspace
gate, validation runner state, recent validation cache status, pccx-lab
descriptor state, launcher fixture state, and a bounded context item count.
It uses local/fixture data only and does not execute pccx-lab, call the
launcher, call providers, implement MCP, implement LSP, or package the
extension.
src/context-bundle-audit.mjs reports approximate context bundle size,
diagnostic/snippet/validation summary counts, redaction/truncation flags,
and excluded categories for pccxSystemVerilog.showContextBundleAudit.
The audit is local-only, summary-only, and does not upload context or call
providers.
pccxSystemVerilog.proposeValidationCommand returns allowlisted
validation command proposals as JSON data. The proposal includes
allowlisted proposal IDs, argument-array templates, reasons, risk levels, and
explicit user approval requirements. It can also include experimental
local diagnostics handoff preflight context derived from the normalized
context-bundle diagnosticsHandoff section. That context reports
available, unavailable, or invalid handoff status and bounded notes for UI
display. It does not parse raw handoff JSON in the proposal layer, spawn
a process, call pccx-lab, call provider/runtime services, write files, or run git
operations.
pccxSystemVerilog.auditValidationProposalPreflight is a review-only
preflight audit between proposal display and the approved runner handoff.
It accepts a proposal ID or checked proposal-shaped data, re-resolves the
existing proposal allowlist, and returns bounded JSON/text explaining
whether the proposal is eligible for the existing approved runner path.
It checks for missing or unknown IDs, malformed command shape, raw shell
strings, launcher commands, pccx-lab commands, pccx-lab diagnostics
handoff validator invocation, provider/runtime/KV260/MCP/LSP/marketplace
execution wording, and diagnostics handoff data appearing as execution
input. The audit does not execute commands and does not broaden the
runner allowlist.
pccxSystemVerilog.runApprovedValidationCommand is a separate approved
validation runner boundary. It is disabled by default; execution requires
pccxSystemVerilog.validationRunner.enabled=true and
pccxSystemVerilog.validationRunner.mode=allowlisted. The command
accepts proposal IDs only, not raw command strings, and re-resolves those
IDs through the internal allowlist and preflight audit before execution.
Initial runnable IDs
are vscodeAdapterSmoke, editorBridgeSmoke, exampleDriftCheck, and
pytestBaseline. extensionHostSmokeOptIn remains proposal-only from
inside the runner. The runner uses fixed executable and argument arrays
with shell=false, enforces a timeout, bounds stdout/stderr summaries,
and returns JSON with safety metadata. The runner does not add a UI
approval dialog in this prototype; callers should invoke it only after a
user-approved validation proposal. It does not execute destructive
commands, git write operations, release/tag/settings/secrets commands,
patch proposals, provider/runtime calls, pccx-llm-launcher runtime calls, MCP
server operations, or pccx-lab commands.
Approved validation summaries are cached in memory only and kept brief.
The cache stores summary-only, redacted entries for recent runner results;
it does not persist to disk and does not store full stdout/stderr logs,
secrets, tokens, private home paths, raw command strings, artifact blobs,
model paths, or pccx-lab outputs. pccxSystemVerilog.showRecentValidationResults
shows the small recent cache through VS Code-native surfaces, and
pccxSystemVerilog.showValidationCacheStatus reports the cache count,
max size, latest status, and redaction/truncation flags through a
summary-only validation output channel.
pccxSystemVerilog.clearValidationResultCache clears the in-memory cache.
This cache boundary does not add provider/runtime calls, MCP, LSP, marketplace
packaging, pccx-llm-launcher calls, real pccx-lab execution, releases, or
tags.
src/presentation-boundary.mjs defines the first theme-neutral
presentation boundary for editor-facing records. Diagnostics and command
output carry semantic fields such as file, range, severity, message, and
source; they do not carry editor colors or style constants. The VS Code
path uses native DiagnosticSeverity and DiagnosticCollection APIs.
The current policy is host theme first. Future UI or webview surfaces should use host theme tokens or explicit user-provided theme tokens. VS Code, Xcode, and JetBrains are future presentation preset families, not implemented skins and not completion claims. This is not a completed custom theme system, and the current work is not a custom theme engine.
This scaffold is not LSP, not a full IDE replacement, not a stable ABI/API, and has no marketplace packaging or published extension. CI does not run the real Extension Host runtime smoke yet.
Now:
- checked-example diagnostics, navigation, and DefinitionProvider smoke
- explicit live workspace boundary with controlled fixture diagnostics
- fixture-backed live navigation smoke
- workflow boundary status command and bounded context bundle command
- selected-symbol context
- validation command proposal
- validation proposal preflight audit
- patch proposal contract
- disabled-by-default approved validation runner boundary
- recent validation summary and cache status command
- pccx-lab backend status command
- diagnostics handoff summary status command
- runtime readiness consumer and context status data
- device/session status consumer and context status data
Next:
- selected-symbol to declaration context through live navigation
- diagnostics-aware context builder
- patch proposal format
- pccx-lab command palette execution with allowlisted commands
Later:
- pccx-llm-launcher local workflow backend behind a reviewed contract
- MCP controlled tool boundary
- richer editor UI/panels
- optional theme presets through host/user theme tokens
- Inspect checked-example or explicit live workspace diagnostics and navigation.
- Build a selected-symbol workflow context bundle for the active editor state.
- Propose a validation command as data with
pccxSystemVerilog.proposeValidationCommand. - Audit the proposal handoff with
pccxSystemVerilog.auditValidationProposalPreflight. - User approves an allowlisted validation proposal ID.
- Run
pccxSystemVerilog.runApprovedValidationCommandonly after the runner is explicitly enabled. - Inspect the bounded validation cache status and feed the summary back into the context bundle.
- Future local workflow mode can propose a patch or next validation step, but does not execute either directly.
node editors/vscode-prototype/test/adapter.test.mjs
node editors/vscode-prototype/test/cli-runner.test.mjs
node editors/vscode-prototype/test/facade.test.mjs
node editors/vscode-prototype/test/extension-manifest.test.mjs
node editors/vscode-prototype/test/extension-config.test.mjs
node editors/vscode-prototype/test/context-bundle.test.mjs
node editors/vscode-prototype/test/selected-symbol-context.test.mjs
node editors/vscode-prototype/test/workflow-boundary.test.mjs
node editors/vscode-prototype/test/validation-proposals.test.mjs
node editors/vscode-prototype/test/validation-proposal-preflight-audit.test.mjs
node editors/vscode-prototype/test/patch-proposal-contract.test.mjs
node editors/vscode-prototype/test/patch-proposal-preview.test.mjs
node editors/vscode-prototype/test/validation-patch-handoff.test.mjs
node editors/vscode-prototype/test/pccx-lab-command-descriptor.test.mjs
node editors/vscode-prototype/test/launcher-status-contract.test.mjs
node editors/vscode-prototype/test/diagnostics-handoff-consumer.test.mjs
node editors/vscode-prototype/test/diagnostics-handoff-status-surface.test.mjs
node editors/vscode-prototype/test/runtime-readiness-consumer.test.mjs
node editors/vscode-prototype/test/runtime-readiness-status-surface.test.mjs
node editors/vscode-prototype/test/device-session-status-consumer.test.mjs
node editors/vscode-prototype/test/device-session-status-surface.test.mjs
node editors/vscode-prototype/test/local-workflow-status.test.mjs
node editors/vscode-prototype/test/context-bundle-audit.test.mjs
node editors/vscode-prototype/test/validation-result-summary.test.mjs
node editors/vscode-prototype/test/validation-result-cache.test.mjs
node editors/vscode-prototype/test/approved-validation-runner.test.mjs
node editors/vscode-prototype/test/static-boundary.test.mjs
node editors/vscode-prototype/test/extension-entrypoint.test.mjs
node editors/vscode-prototype/test/command-handlers.test.mjs
node editors/vscode-prototype/test/presenter.test.mjs
node editors/vscode-prototype/test/presentation-boundary.test.mjs
node editors/vscode-prototype/test/extension-host-readiness.test.mjs
bash scripts/vscode-adapter-smoke.shscripts/vscode-extension-host-smoke.sh is intentionally guarded. By
default it exits with a clear not-enabled message and does not download
VS Code or Electron. The enabled local path uses pinned
@vscode/test-electron@2.5.2 and VS Code 1.90.2; the first enabled run
downloads that VS Code build into editors/vscode-prototype/.vscode-test.
# Expected exit 2 unless the local runtime smoke is explicitly enabled.
bash scripts/vscode-extension-host-smoke.sh
# Opt-in local Extension Host runtime smoke.
npm ci --prefix editors/vscode-prototype
PCCX_RUN_EXTENSION_HOST_SMOKE=1 bash scripts/vscode-extension-host-smoke.shThe adapter can also print translated examples:
node editors/vscode-prototype/src/adapter.mjs diagnostics \
docs/examples/editor-bridge/problems-xsim-mixed.example.json
node editors/vscode-prototype/src/adapter.mjs navigation \
docs/examples/editor-bridge/declarations.example.json