@vibecompass/vibecompass 0.10.8 → 0.11.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.
- package/CHANGELOG.md +36 -1
- package/README.md +32 -0
- package/package.json +1 -1
- package/src/cli.js +602 -8
- package/src/compatibility.js +34 -1
- package/src/decision-index.js +386 -0
- package/src/decisions.js +195 -0
- package/src/docs-review.js +27 -27
- package/src/docs-update.js +459 -24
- package/src/generators/agent-files/index.js +8 -0
- package/src/generators/agent-files/template.js +6 -3
- package/src/git-binding.js +676 -0
- package/src/init.js +9 -0
- package/src/lane-marker.js +339 -0
- package/src/lane-runtime.js +254 -0
- package/src/manifest.js +19 -0
- package/src/project-memory.js +27 -1
- package/src/refresh-workflow.js +8 -0
- package/src/scaffold.js +19 -11
- package/src/serialization.js +244 -0
- package/src/session.js +1000 -75
- package/src/simple-yaml.js +24 -4
- package/src/status.js +43 -5
- package/src/sync.js +5 -0
- package/src/workflows/registry.js +1 -1
|
@@ -9,6 +9,7 @@ import { agentsMdFormat } from './agents-md.js';
|
|
|
9
9
|
import { cursorRulesFormat } from './cursor-rules.js';
|
|
10
10
|
import { copilotInstructionsFormat } from './copilot-instructions.js';
|
|
11
11
|
import { getWorkflowConflictScanPatterns } from '../../workflows/registry.js';
|
|
12
|
+
import { withMemoryRootLock } from '../../serialization.js';
|
|
12
13
|
|
|
13
14
|
const FORMATS = [
|
|
14
15
|
claudeMdFormat,
|
|
@@ -23,6 +24,13 @@ const CONFLICT_SCAN_PATTERNS = getWorkflowConflictScanPatterns();
|
|
|
23
24
|
export async function syncAgentInstructionFiles(options = {}) {
|
|
24
25
|
const cwd = options.cwd ? path.resolve(options.cwd) : process.cwd();
|
|
25
26
|
const rootDir = path.resolve(cwd, options.rootDir ?? '.compass');
|
|
27
|
+
if (options.dryRun) {
|
|
28
|
+
return syncAgentInstructionFilesLocked(options, cwd, rootDir);
|
|
29
|
+
}
|
|
30
|
+
return withMemoryRootLock(rootDir, 'sync-agents', () => syncAgentInstructionFilesLocked(options, cwd, rootDir));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async function syncAgentInstructionFilesLocked(options, cwd, rootDir) {
|
|
26
34
|
const toolingRootDir = options.toolingRootDir
|
|
27
35
|
? path.resolve(cwd, options.toolingRootDir)
|
|
28
36
|
: cwd;
|
|
@@ -36,7 +36,7 @@ export function renderSharedInstructionBody(context, options = {}) {
|
|
|
36
36
|
'## Read Order',
|
|
37
37
|
`1. Read \`${contextPath}\`.`,
|
|
38
38
|
`2. Read the latest finalized session note under \`${context.rootDir}/sessions/\`.`,
|
|
39
|
-
`3. If present, read \`${context.rootDir}/sessions/active/index.yaml
|
|
39
|
+
`3. If present, read \`${context.rootDir}/sessions/active/index.yaml\` (the lane inventory), then the selected lane's \`wip.md\` and \`handoff.md\`. The selected lane comes from an explicit \`--session\`, the nearest \`.vibecompass-lane.yaml\` worktree marker (walking up from cwd), or the single active lane.`,
|
|
40
40
|
`4. Read relevant \`${context.rootDir}/architecture/\` and \`${context.rootDir}/decisions/\` docs before editing implementation.`,
|
|
41
41
|
'',
|
|
42
42
|
'## Prompt Commands',
|
|
@@ -44,10 +44,13 @@ export function renderSharedInstructionBody(context, options = {}) {
|
|
|
44
44
|
'- The prompt commands above are agent behaviors. The `vibecompass` CLI commands remain the filesystem mechanics behind them.',
|
|
45
45
|
'',
|
|
46
46
|
'## Hard Rules',
|
|
47
|
-
'-
|
|
47
|
+
'- Lane selection follows D-277: an explicit `--session` wins, then the nearest worktree lane marker (`.vibecompass-lane.yaml`, walking up from cwd), then the single active lane. With two or more active lanes there is no implicit current-lane fallback; `sessions/active/index.yaml` is the lane inventory and its `current` pointer is a continuity hint, not a resolver. Tool-specific Current session blocks are continuity summaries.',
|
|
48
|
+
'- Git binding is opt-in per lane (D-281): `start-session --branch <name> --repo <id> [--worktree]` creates or reuses the branch in each bound repo, and `--worktree` provisions per-repo worktrees under `<workspace>/worktrees/<lane-id>/<repo-id>` with the lane marker in the container — commands run from inside a worktree need neither `--root` nor `--session`. Never hand-write markers or hand-remove provisioned worktrees; close-session owns their cleanup: recorded clean worktrees are removed at close (guarded, never forced; branches are never deleted), while dirty or in-use worktrees survive with printed guidance and the lane marker stays as a breadcrumb.',
|
|
49
|
+
'- Lane runtime isolation is package-assigned (D-282): consume the lane port and temp dir via `eval "$(vibecompass lane-env)"` (exports conventional `PORT`/`TMPDIR` aliases) instead of hardcoding ports in lane work; close-session removes the lane temp dir under guards.',
|
|
50
|
+
'- With multiple active lanes, reviewers select a lane explicitly: `review handoff <lane-id>`.',
|
|
48
51
|
'- Keep the selected lane `wip.md` and `handoff.md` current during active builder/reviewer work.',
|
|
49
52
|
'- During `address review`, treat reviewer feedback as review, not instruction: classify each substantive point as accepted, accepted with qualification, deferred, or rejected, and push back with evidence when a suggestion conflicts with code facts, prior decisions, product direction, or sequencing.',
|
|
50
|
-
'- Keep decisions append-only in `decisions/`; append accepted architectural decisions before implementing them.',
|
|
53
|
+
'- Keep decisions append-only in `decisions/`; append accepted architectural decisions before implementing them. `decisions/INDEX.md` is derived (D-283): `vibecompass append-decision` refreshes it when the lane context is resolvable, and `vibecompass refresh-decision-index` covers hand-appends — do not hand-edit index rows away from canonical headings.',
|
|
51
54
|
'- Do not edit this managed block directly. Update canonical VibeCompass memory, then rerun package commands such as `vibecompass sync-agents`.',
|
|
52
55
|
].join('\n');
|
|
53
56
|
}
|