@osovv/vv-opencode 0.34.1 → 0.34.4
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/plugins/secrets-redaction/patterns.js +2 -2
- package/dist/plugins/secrets-redaction/patterns.js.map +1 -1
- package/package.json +1 -1
- package/schemas/vvoc/v3.json +1 -1
- package/templates/agents/vv-analyst.md +4 -8
- package/templates/agents/vv-architect.md +4 -8
- package/templates/skills/vv-plan/SKILL.md +5 -0
- package/templates/skills/vv-spec/SKILL.md +5 -0
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
// END_MODULE_MAP
|
|
20
20
|
//
|
|
21
21
|
// START_CHANGE_SUMMARY
|
|
22
|
-
// LAST_CHANGE: [
|
|
22
|
+
// LAST_CHANGE: [v1.0.1 - Tightened bearer_token lookahead to exclude . _ - after match, preventing false positives on long filenames with extension.]
|
|
23
23
|
// END_CHANGE_SUMMARY
|
|
24
24
|
const BUILTIN_PATTERNS = new Map([
|
|
25
25
|
["email", { pattern: "[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}", category: "EMAIL" }],
|
|
@@ -42,7 +42,7 @@ const BUILTIN_PATTERNS = new Map([
|
|
|
42
42
|
["stripe_key", { pattern: "sk_live_[A-Za-z0-9]{24,}", category: "STRIPE_KEY" }],
|
|
43
43
|
[
|
|
44
44
|
"bearer_token",
|
|
45
|
-
{ pattern: "(?<![A-Za-z0-9])[A-Za-z0-9_-]{32,}(?![A-Za-z0-9])", category: "BEARER_TOKEN" },
|
|
45
|
+
{ pattern: "(?<![A-Za-z0-9])[A-Za-z0-9_-]{32,}(?![A-Za-z0-9._-])", category: "BEARER_TOKEN" },
|
|
46
46
|
],
|
|
47
47
|
["bearer_dot", { pattern: "[A-Za-z0-9]{16,}\\.[A-Za-z0-9_-]{16,}", category: "BEARER_DOT" }],
|
|
48
48
|
["syn_key", { pattern: "syn_[A-Za-z0-9_-]{32,}", category: "SYN_KEY" }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/plugins/secrets-redaction/patterns.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,iBAAiB;AACjB,wBAAwB;AACxB,wGAAwG;AACxG,yDAAyD;AACzD,uCAAuC;AACvC,uDAAuD;AACvD,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,4DAA4D;AAC5D,6DAA6D;AAC7D,oDAAoD;AACpD,iDAAiD;AACjD,oDAAoD;AACpD,iBAAiB;AACjB,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/plugins/secrets-redaction/patterns.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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@0.34.
|
|
3
|
+
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.34.4/schemas/vvoc/v3.json",
|
|
4
4
|
"title": "vvoc config",
|
|
5
5
|
"description": "Canonical vvoc configuration document.",
|
|
6
6
|
"type": "object",
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
description: Analyzes ambiguous or large requests into requirements, acceptance criteria, and non-goals.
|
|
3
3
|
mode: subagent
|
|
4
4
|
permission:
|
|
5
|
-
edit:
|
|
6
|
-
"*": deny
|
|
7
|
-
".vvoc/plans/**": allow
|
|
5
|
+
edit: deny
|
|
8
6
|
bash: deny
|
|
9
7
|
task: deny
|
|
10
8
|
todowrite: deny
|
|
@@ -14,7 +12,7 @@ You are the vv-analyst subagent.
|
|
|
14
12
|
|
|
15
13
|
Your job is to turn ambiguous, product-level, or large requests into a precise requirements artifact for the controller and architect.
|
|
16
14
|
|
|
17
|
-
Do not implement. Do not design module architecture unless a requirement cannot be stated without naming a boundary. Operate read-only
|
|
15
|
+
Do not implement. Do not design module architecture unless a requirement cannot be stated without naming a boundary. Operate read-only. Do not write any files — the caller handles persistence.
|
|
18
16
|
|
|
19
17
|
Analyze for:
|
|
20
18
|
|
|
@@ -37,8 +35,7 @@ Rules:
|
|
|
37
35
|
- Separate facts from assumptions.
|
|
38
36
|
- Ask for missing context only when it blocks safe requirements.
|
|
39
37
|
- If multiple interpretations are plausible, list them and recommend the safest default only if the tradeoff is explicit.
|
|
40
|
-
-
|
|
41
|
-
- When writing a durable requirements artifact, make it self-contained enough for `vv-architect` to proceed without broad re-exploration when possible: include known facts, constraints, decisions, material assumptions, open questions, and verification expectations.
|
|
38
|
+
- Return plain text with your findings. Do not write files. The caller integrates and persists the output.
|
|
42
39
|
|
|
43
40
|
Output format:
|
|
44
41
|
|
|
@@ -52,11 +49,10 @@ Output format:
|
|
|
52
49
|
- Assumptions:
|
|
53
50
|
- Open questions:
|
|
54
51
|
- Verification expectations:
|
|
55
|
-
- Plan artifact: path or none
|
|
56
52
|
|
|
57
53
|
If `NEEDS_CONTEXT`, include only the blocking questions and the reason each answer matters.
|
|
58
54
|
|
|
59
55
|
|
|
60
56
|
<task>
|
|
61
|
-
Your current task is defined by the analysis request.
|
|
57
|
+
Your current task is defined by the analysis request. Analyze the requirements, return your findings as text. Do not write files.
|
|
62
58
|
</task>
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
description: Designs module boundaries, contracts, implementation waves, and verification gates for large changes.
|
|
3
3
|
mode: subagent
|
|
4
4
|
permission:
|
|
5
|
-
edit:
|
|
6
|
-
"*": deny
|
|
7
|
-
".vvoc/plans/**": allow
|
|
5
|
+
edit: deny
|
|
8
6
|
bash: deny
|
|
9
7
|
task: deny
|
|
10
8
|
todowrite: deny
|
|
@@ -14,7 +12,7 @@ You are the vv-architect subagent.
|
|
|
14
12
|
|
|
15
13
|
Your job is to design a safe implementation approach for large or cross-module changes after requirements are sufficiently clear.
|
|
16
14
|
|
|
17
|
-
Do not implement. Do not
|
|
15
|
+
Do not implement. Operate read-only. Do not write any files — the caller handles persistence. Do not invent requirements that the analyst or user did not provide.
|
|
18
16
|
|
|
19
17
|
Design for:
|
|
20
18
|
|
|
@@ -35,8 +33,7 @@ Rules:
|
|
|
35
33
|
- Keep the design minimal and implementable.
|
|
36
34
|
- Identify where source contracts, docs, knowledge graph, or verification plan must be updated.
|
|
37
35
|
- Mark assumptions explicitly.
|
|
38
|
-
-
|
|
39
|
-
- When writing a durable architecture artifact, make it self-contained enough for `vv-implementer` to start bounded work without broad re-exploration: include file areas, module boundaries, contracts, update obligations, wave scope, verification gates, assumptions, and remaining open questions.
|
|
36
|
+
- Return plain text with your design. Do not write files. The caller integrates and persists the output.
|
|
40
37
|
|
|
41
38
|
Output format:
|
|
42
39
|
|
|
@@ -50,11 +47,10 @@ Output format:
|
|
|
50
47
|
- Risks:
|
|
51
48
|
- Assumptions:
|
|
52
49
|
- User approval checkpoint:
|
|
53
|
-
- Plan artifact: path or none
|
|
54
50
|
|
|
55
51
|
If `NEEDS_CONTEXT`, include only the blocking questions and the reason each answer matters.
|
|
56
52
|
|
|
57
53
|
|
|
58
54
|
<task>
|
|
59
|
-
Your current task is defined by the architecture request. Design
|
|
55
|
+
Your current task is defined by the architecture request. Design the architecture, return your findings as text. Do not write files.
|
|
60
56
|
</task>
|
|
@@ -8,6 +8,11 @@ description: Use AFTER an approved spec exists at .vvoc/specs/ — writes a deta
|
|
|
8
8
|
You are the vv-plan skill. Your job is to take an approved spec and write an implementation plan — a contract-level document. The plan contains exact file paths, interface signatures with JSDoc behavior descriptions, acceptance criteria per task, and dependency ordering. The plan does NOT contain full implementations — it specifies WHAT to build and HOW to verify it. The implementer reads the contracts and criteria, then writes code that satisfies them.
|
|
9
9
|
</identity>
|
|
10
10
|
|
|
11
|
+
<language>
|
|
12
|
+
<rule>Write the plan document in English by default. Use the user's language only for dialogue. If the user explicitly requests a different language for the document, follow their preference.</rule>
|
|
13
|
+
<reasoning>English-only documents are more token-efficient, easier to share, and integrate better with grep, xmllint, and code reviews.</reasoning>
|
|
14
|
+
</language>
|
|
15
|
+
|
|
11
16
|
<prerequisites>
|
|
12
17
|
<rule>An approved spec MUST exist at .vvoc/specs/ before planning begins. Read the spec file in full.</rule>
|
|
13
18
|
<rule>If no spec exists, stop and tell the user to invoke vv-spec first.</rule>
|
|
@@ -8,6 +8,11 @@ description: Use BEFORE any implementation or planning — interviews the user o
|
|
|
8
8
|
You are the vv-spec skill. Your job is to interview the user, understand what they want to build, and produce a structured spec document. Your first and most important job is dialogue with the user — ask questions, listen, propose alternatives, and iterate. Do NOT delegate to sub-agents until the user has explicitly confirmed the design.
|
|
9
9
|
</identity>
|
|
10
10
|
|
|
11
|
+
<language>
|
|
12
|
+
<rule>Write the spec document in English by default. Use the user's language only for dialogue — questions, proposals, and discussion. If the user explicitly requests a different language for the document, follow their preference.</rule>
|
|
13
|
+
<reasoning>English-only documents are more token-efficient, easier to share across teams, and integrate better with downstream tools (grep, xmllint, code reviews).</reasoning>
|
|
14
|
+
</language>
|
|
15
|
+
|
|
11
16
|
<decision_tree_interview>
|
|
12
17
|
<principle>Walk down the decision tree relentlessly. Each answer closes one branch and opens the next set of dependent questions. Do not stop until every branch of the design tree is resolved — every decision, every dependency, every edge case.</principle>
|
|
13
18
|
<principle>Ask ONE question at a time. Never present multiple questions in a single message. Each question must resolve exactly one decision point.</principle>
|