@osovv/vv-opencode 1.1.0 → 1.1.2
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/CHANGELOG.md +16 -0
- package/README.md +26 -11
- package/dist/commands/doctor.js +11 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +14 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +6 -3
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/launch.d.ts +1 -0
- package/dist/commands/launch.js +20 -8
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/status.js +12 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.js +6 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/lib/config-layers.d.ts +6 -0
- package/dist/lib/config-layers.js +65 -3
- package/dist/lib/config-layers.js.map +1 -1
- package/dist/lib/opencode.d.ts +34 -1
- package/dist/lib/opencode.js +249 -12
- package/dist/lib/opencode.js.map +1 -1
- package/dist/lib/plugin-toggle-config.d.ts +1 -1
- package/dist/lib/plugin-toggle-config.js +2 -0
- package/dist/lib/plugin-toggle-config.js.map +1 -1
- package/dist/tui/context/analyze.d.ts +4 -0
- package/dist/tui/context/analyze.js +256 -0
- package/dist/tui/context/analyze.js.map +1 -0
- package/dist/tui/context/collect.d.ts +3 -0
- package/dist/tui/context/collect.js +94 -0
- package/dist/tui/context/collect.js.map +1 -0
- package/dist/tui/context/estimate.d.ts +2 -0
- package/dist/tui/context/estimate.js +49 -0
- package/dist/tui/context/estimate.js.map +1 -0
- package/dist/tui/context/plugin.d.ts +10 -0
- package/dist/tui/context/plugin.js +91 -0
- package/dist/tui/context/plugin.js.map +1 -0
- package/dist/tui/context/types.d.ts +61 -0
- package/dist/tui/context/types.js +25 -0
- package/dist/tui/context/types.js.map +1 -0
- package/dist/tui/context/view.d.ts +3 -0
- package/dist/tui/context/view.js +45 -0
- package/dist/tui/context/view.js.map +1 -0
- package/dist/tui.d.ts +7 -0
- package/dist/tui.js +27 -0
- package/dist/tui.js.map +1 -0
- package/package.json +18 -5
- package/schemas/vvoc/v3.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// FILE: src/tui/context/types.ts
|
|
2
|
+
// VERSION: 1.0.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Define bounded input and output shapes for the context TUI collector, analyzer, and view.
|
|
5
|
+
// SCOPE: Context categories, model metadata, MCP status summaries, warnings, and analysis input/output types.
|
|
6
|
+
// DEPENDS: [@opencode-ai/sdk/v2]
|
|
7
|
+
// LINKS: [M-PLUGIN-CONTEXT-TUI, V-M-PLUGIN-CONTEXT-TUI]
|
|
8
|
+
// ROLE: TYPES
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// ContextSkill - Observable skill catalog entry.
|
|
14
|
+
// ContextMcpServer - MCP name/status snapshot exposed by the TUI state.
|
|
15
|
+
// ContextModel - Current provider/model metadata and limits.
|
|
16
|
+
// ContextAnalysisInput - Raw bounded data accepted by the pure analyzer.
|
|
17
|
+
// ContextCategory - One estimated context category row.
|
|
18
|
+
// ContextAnalysis - Measured usage, estimated categories, warnings, and metadata rendered by the dialog.
|
|
19
|
+
// END_MODULE_MAP
|
|
20
|
+
//
|
|
21
|
+
// START_CHANGE_SUMMARY
|
|
22
|
+
// LAST_CHANGE: [C-CONTEXT-TUI-PLUGIN - Added shared context-inspection domain types.]
|
|
23
|
+
// END_CHANGE_SUMMARY
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tui/context/types.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,iBAAiB;AACjB,wBAAwB;AACxB,uGAAuG;AACvG,gHAAgH;AAChH,mCAAmC;AACnC,0DAA0D;AAC1D,gBAAgB;AAChB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,mDAAmD;AACnD,0EAA0E;AAC1E,+DAA+D;AAC/D,2EAA2E;AAC3E,0DAA0D;AAC1D,2GAA2G;AAC3G,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,wFAAwF;AACxF,qBAAqB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
|
|
2
|
+
// START_BLOCK_CONTEXT_DIALOG
|
|
3
|
+
export function openContextDialog(api, analysis) {
|
|
4
|
+
const Dialog = api.ui.Dialog;
|
|
5
|
+
const theme = api.theme.current;
|
|
6
|
+
api.ui.dialog.setSize("xlarge");
|
|
7
|
+
api.ui.dialog.replace(() => (_jsx(Dialog, { size: "xlarge", onClose: () => api.ui.dialog.clear(), children: _jsxs("box", { flexDirection: "column", gap: 1, paddingLeft: 1, paddingRight: 1, children: [_jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: theme.text, children: "Context usage" }), _jsx("text", { fg: theme.textMuted, children: formatModel(analysis) })] }), _jsx(UsageSummary, { analysis: analysis, primary: theme.primary, muted: theme.textMuted }), _jsxs("box", { flexDirection: "column", children: [_jsx("text", { fg: theme.text, children: "Approximate breakdown" }), analysis.categories.map((category) => (_jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: category.source === "provider-residual" ? theme.warning : theme.textMuted, children: category.source === "estimated" ? `~ ${category.label}` : category.label }), _jsx("text", { fg: theme.text, children: formatTokens(category.estimatedTokens) })] })))] }), _jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: theme.textMuted, children: "Active messages" }), _jsxs("text", { fg: theme.text, children: [analysis.activeMessageCount, analysis.compacted ? " (after compaction)" : ""] })] }), _jsx(McpSummary, { analysis: analysis, text: theme.text, muted: theme.textMuted }), analysis.estimationDriftTokens > 0 ? (_jsxs("text", { fg: theme.warning, children: ["Estimate drift: +", formatTokens(analysis.estimationDriftTokens), " above provider usage"] })) : null, analysis.warnings.slice(0, 3).map((warning) => (_jsxs("text", { fg: theme.warning, children: ["Warning: ", warning] }))), _jsx("text", { fg: theme.textMuted, children: "Measured = latest provider usage. ~ = local estimate. MCP tools without source metadata are grouped." })] }) })));
|
|
8
|
+
}
|
|
9
|
+
// END_BLOCK_CONTEXT_DIALOG
|
|
10
|
+
function UsageSummary(props) {
|
|
11
|
+
const measured = props.analysis.measured;
|
|
12
|
+
if (!measured) {
|
|
13
|
+
return (_jsx("text", { fg: props.muted, children: "Provider usage is not available until the session has an assistant turn." }));
|
|
14
|
+
}
|
|
15
|
+
const percent = measured.percentUsed;
|
|
16
|
+
return (_jsxs("box", { flexDirection: "column", children: [_jsxs("text", { fg: props.primary, children: [renderUsageBar(percent), " ", formatTokens(measured.usedTokens), measured.contextLimit ? ` / ${formatTokens(measured.contextLimit)}` : "", percent === undefined ? "" : ` (${percent.toFixed(1)}%)`] }), _jsxs("text", { fg: props.muted, children: ["input ", formatTokens(measured.inputTokens), " \u00B7 cache read", " ", formatTokens(measured.cacheReadTokens), " \u00B7 output ", formatTokens(measured.outputTokens), measured.remainingTokens === undefined
|
|
17
|
+
? ""
|
|
18
|
+
: ` · remaining ${formatTokens(measured.remainingTokens)}`] })] }));
|
|
19
|
+
}
|
|
20
|
+
function McpSummary(props) {
|
|
21
|
+
if (props.analysis.mcpServers.length === 0) {
|
|
22
|
+
return _jsx("text", { fg: props.muted, children: "MCP servers: none reported" });
|
|
23
|
+
}
|
|
24
|
+
return (_jsxs("box", { flexDirection: "column", children: [_jsx("text", { fg: props.text, children: "MCP servers" }), props.analysis.mcpServers.map((server) => (_jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: props.muted, children: server.name }), _jsx("text", { fg: props.text, children: server.status })] })))] }));
|
|
25
|
+
}
|
|
26
|
+
function formatModel(analysis) {
|
|
27
|
+
if (!analysis.model)
|
|
28
|
+
return analysis.agent ?? "unknown model";
|
|
29
|
+
const model = `${analysis.model.providerID}/${analysis.model.modelID}`;
|
|
30
|
+
return analysis.agent ? `${analysis.agent} · ${model}` : model;
|
|
31
|
+
}
|
|
32
|
+
function formatTokens(tokens) {
|
|
33
|
+
if (tokens >= 1_000_000)
|
|
34
|
+
return `${(tokens / 1_000_000).toFixed(2)}m`;
|
|
35
|
+
if (tokens >= 1_000)
|
|
36
|
+
return `${(tokens / 1_000).toFixed(tokens >= 100_000 ? 0 : 1)}k`;
|
|
37
|
+
return String(tokens);
|
|
38
|
+
}
|
|
39
|
+
function renderUsageBar(percent) {
|
|
40
|
+
const width = 28;
|
|
41
|
+
const normalized = percent === undefined ? 0 : Math.min(100, Math.max(0, percent));
|
|
42
|
+
const filled = Math.round((normalized / 100) * width);
|
|
43
|
+
return `[${"█".repeat(filled)}${"░".repeat(width - filled)}]`;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/tui/context/view.tsx"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts
ADDED
package/dist/tui.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// FILE: src/tui.tsx
|
|
2
|
+
// VERSION: 1.0.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Publish the default @osovv/vv-opencode/tui module containing the managed context inspector.
|
|
5
|
+
// SCOPE: Stable TUI package entrypoint and module identity only.
|
|
6
|
+
// DEPENDS: [@opencode-ai/plugin/tui, src/tui/context/plugin.ts]
|
|
7
|
+
// LINKS: [M-PLUGIN-CONTEXT-TUI, V-M-PLUGIN-CONTEXT-TUI]
|
|
8
|
+
// ROLE: BARREL
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - OpenCode TUI plugin module registering the /context inspector.
|
|
14
|
+
// ContextTuiPlugin - Named TUI plugin factory for direct consumers and tests.
|
|
15
|
+
// END_MODULE_MAP
|
|
16
|
+
//
|
|
17
|
+
// START_CHANGE_SUMMARY
|
|
18
|
+
// LAST_CHANGE: [C-CONTEXT-TUI-PLUGIN - Added the public TUI package subpath.]
|
|
19
|
+
// END_CHANGE_SUMMARY
|
|
20
|
+
import { ContextTuiPlugin } from "./tui/context/plugin.js";
|
|
21
|
+
export { ContextTuiPlugin };
|
|
22
|
+
const plugin = {
|
|
23
|
+
id: "vvoc-context",
|
|
24
|
+
tui: ContextTuiPlugin,
|
|
25
|
+
};
|
|
26
|
+
export default plugin;
|
|
27
|
+
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,iBAAiB;AACjB,wBAAwB;AACxB,yGAAyG;AACzG,mEAAmE;AACnE,kEAAkE;AAClE,0DAA0D;AAC1D,iBAAiB;AACjB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,6EAA6E;AAC7E,gFAAgF;AAChF,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,gFAAgF;AAChF,qBAAqB;AAGrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,MAAM,GAAqC;IAC/C,EAAE,EAAE,cAAc;IAClB,GAAG,EAAE,gBAAgB;CACtB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osovv/vv-opencode",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "A curated, opinionated set of OpenCode plugins for spec-first, review-driven, safer agentic development.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"types": "./dist/index.d.ts",
|
|
43
43
|
"import": "./dist/index.js"
|
|
44
44
|
},
|
|
45
|
+
"./tui": {
|
|
46
|
+
"types": "./dist/tui.d.ts",
|
|
47
|
+
"import": "./dist/tui.js"
|
|
48
|
+
},
|
|
45
49
|
"./plugins/guardian": {
|
|
46
50
|
"types": "./dist/plugins/guardian/index.d.ts",
|
|
47
51
|
"import": "./dist/plugins/guardian/index.js"
|
|
@@ -76,21 +80,24 @@
|
|
|
76
80
|
"fmt:check": "oxfmt --check src",
|
|
77
81
|
"test": "bun test",
|
|
78
82
|
"check": "bun run typecheck && bun run lint && bun run fmt:check && bun test",
|
|
79
|
-
"pack:check": "bun run build && bun -e \"const root = await import('./dist/index.js'); if (!('GuardianPlugin' in root)) throw new Error('dist root export missing GuardianPlugin'); if (!('HashlineEditPlugin' in root)) throw new Error('dist root export missing HashlineEditPlugin'); if (!('ModelRolesPlugin' in root)) throw new Error('dist root export missing ModelRolesPlugin'); if (!('SystemContextInjectionPlugin' in root)) throw new Error('dist root export missing SystemContextInjectionPlugin'); if (!('WorkflowPlugin' in root)) throw new Error('dist root export missing WorkflowPlugin'); if (!('SecretsRedactionPlugin' in root)) throw new Error('dist root export missing SecretsRedactionPlugin'); await import('./dist/plugins/guardian/index.js'); await import('./dist/plugins/hashline-edit/index.js'); await import('./dist/plugins/model-roles/index.js'); await import('./dist/plugins/system-context-injection/index.js'); await import('./dist/plugins/workflow/index.js'); await import('./dist/plugins/secrets-redaction/index.js')\" && npm pack --dry-run",
|
|
83
|
+
"pack:check": "bun run build && bun -e \"const root = await import('./dist/index.js'); if (!('GuardianPlugin' in root)) throw new Error('dist root export missing GuardianPlugin'); if (!('HashlineEditPlugin' in root)) throw new Error('dist root export missing HashlineEditPlugin'); if (!('ModelRolesPlugin' in root)) throw new Error('dist root export missing ModelRolesPlugin'); if (!('SystemContextInjectionPlugin' in root)) throw new Error('dist root export missing SystemContextInjectionPlugin'); if (!('WorkflowPlugin' in root)) throw new Error('dist root export missing WorkflowPlugin'); if (!('SecretsRedactionPlugin' in root)) throw new Error('dist root export missing SecretsRedactionPlugin'); const tui = await import('./dist/tui.js'); if (!tui.default || typeof tui.default.tui !== 'function') throw new Error('dist TUI export missing default tui module'); await import('./dist/plugins/guardian/index.js'); await import('./dist/plugins/hashline-edit/index.js'); await import('./dist/plugins/model-roles/index.js'); await import('./dist/plugins/system-context-injection/index.js'); await import('./dist/plugins/workflow/index.js'); await import('./dist/plugins/secrets-redaction/index.js')\" && npm pack --dry-run",
|
|
80
84
|
"release:check": "bun scripts/release-check.ts",
|
|
81
85
|
"release:bump": "bun scripts/release-bump.ts",
|
|
82
86
|
"prepare": "lefthook install --force"
|
|
83
87
|
},
|
|
84
88
|
"dependencies": {
|
|
85
89
|
"@clack/prompts": "^1.2.0",
|
|
86
|
-
"@opencode-ai/plugin": "1.
|
|
87
|
-
"@opencode-ai/sdk": "1.
|
|
90
|
+
"@opencode-ai/plugin": "1.18.2",
|
|
91
|
+
"@opencode-ai/sdk": "1.18.2",
|
|
88
92
|
"ajv": "^8.17.1",
|
|
89
93
|
"citty": "0.2.2",
|
|
90
94
|
"jsonc-parser": "3.3.1"
|
|
91
95
|
},
|
|
92
96
|
"devDependencies": {
|
|
93
97
|
"@types/node": "22.13.9",
|
|
98
|
+
"@opentui/core": "0.4.3",
|
|
99
|
+
"@opentui/keymap": "0.4.3",
|
|
100
|
+
"@opentui/solid": "0.4.3",
|
|
94
101
|
"bun-types": "1.3.11",
|
|
95
102
|
"lefthook": "2.1.5",
|
|
96
103
|
"oxfmt": "0.43.0",
|
|
@@ -100,8 +107,14 @@
|
|
|
100
107
|
"@commitlint/cli": "^19.0.0",
|
|
101
108
|
"@commitlint/config-conventional": "^19.0.0"
|
|
102
109
|
},
|
|
110
|
+
"peerDependencies": {
|
|
111
|
+
"@opentui/core": ">=0.4.3",
|
|
112
|
+
"@opentui/keymap": ">=0.4.3",
|
|
113
|
+
"@opentui/solid": ">=0.4.3"
|
|
114
|
+
},
|
|
103
115
|
"engines": {
|
|
104
|
-
"bun": ">=1.3.8"
|
|
116
|
+
"bun": ">=1.3.8",
|
|
117
|
+
"opencode": ">=1.18.2"
|
|
105
118
|
},
|
|
106
119
|
"packageManager": "bun@1.3.8",
|
|
107
120
|
"repository": {
|
package/schemas/vvoc/v3.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@1.1.
|
|
3
|
+
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@1.1.2/schemas/vvoc/v3.json",
|
|
4
4
|
"title": "vvoc config",
|
|
5
5
|
"description": "Canonical vvoc configuration document.",
|
|
6
6
|
"type": "object",
|