@wizdear/atlas-code 0.2.5 → 0.2.6
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/README.md +1 -1
- package/dist/agent-factory.d.ts +2 -4
- package/dist/agent-factory.d.ts.map +1 -1
- package/dist/agent-factory.js +9 -12
- package/dist/agent-factory.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +64 -16
- package/dist/cli.js.map +1 -1
- package/dist/discovery.d.ts +0 -2
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +0 -1
- package/dist/discovery.js.map +1 -1
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +23 -64
- package/dist/extension.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/orchestrator.d.ts +0 -2
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +0 -1
- package/dist/orchestrator.js.map +1 -1
- package/dist/pipeline.d.ts +0 -5
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +0 -3
- package/dist/pipeline.js.map +1 -1
- package/dist/planner.d.ts +0 -2
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +0 -6
- package/dist/planner.js.map +1 -1
- package/dist/roles/cicd.d.ts +1 -1
- package/dist/roles/cicd.d.ts.map +1 -1
- package/dist/roles/cicd.js +5 -0
- package/dist/roles/cicd.js.map +1 -1
- package/dist/roles/reviewer.d.ts +1 -1
- package/dist/roles/reviewer.d.ts.map +1 -1
- package/dist/roles/reviewer.js +7 -1
- package/dist/roles/reviewer.js.map +1 -1
- package/dist/roles/standards-enricher.d.ts +1 -1
- package/dist/roles/standards-enricher.d.ts.map +1 -1
- package/dist/roles/standards-enricher.js +8 -0
- package/dist/roles/standards-enricher.js.map +1 -1
- package/dist/roles/tester.d.ts +1 -1
- package/dist/roles/tester.d.ts.map +1 -1
- package/dist/roles/tester.js +7 -0
- package/dist/roles/tester.js.map +1 -1
- package/dist/standards.d.ts +37 -11
- package/dist/standards.d.ts.map +1 -1
- package/dist/standards.js +71 -90
- package/dist/standards.js.map +1 -1
- package/dist/step-executor.d.ts +13 -2
- package/dist/step-executor.d.ts.map +1 -1
- package/dist/step-executor.js +125 -29
- package/dist/step-executor.js.map +1 -1
- package/dist/store.d.ts +0 -10
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +0 -41
- package/dist/store.js.map +1 -1
- package/dist/system-architect.d.ts +0 -2
- package/dist/system-architect.d.ts.map +1 -1
- package/dist/system-architect.js +0 -6
- package/dist/system-architect.js.map +1 -1
- package/package.json +1 -1
package/dist/extension.js
CHANGED
|
@@ -55,6 +55,16 @@ async function gitPush(cwd) {
|
|
|
55
55
|
return false;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
/** Check if the cwd is inside a git repository. */
|
|
59
|
+
async function isGitRepo(cwd) {
|
|
60
|
+
try {
|
|
61
|
+
await execFileAsync("git", ["rev-parse", "--git-dir"], { cwd });
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
58
68
|
/** Check if a local git branch exists. */
|
|
59
69
|
async function branchExists(cwd, branch) {
|
|
60
70
|
try {
|
|
@@ -150,18 +160,17 @@ async function cleanupQmdCollections(cwd) {
|
|
|
150
160
|
}
|
|
151
161
|
}
|
|
152
162
|
}
|
|
153
|
-
/** Initialize QMD
|
|
163
|
+
/** Initialize QMD collection for .vibe/features/. Idempotent. */
|
|
154
164
|
async function initQmdCollections(cwd) {
|
|
155
165
|
if (!(await isQmdInstalled()))
|
|
156
166
|
return;
|
|
157
167
|
const indexName = basename(cwd);
|
|
158
168
|
const env = { ...process.env, QMD_EMBED_MODEL: QMD_EMBED_MODEL_URI };
|
|
159
169
|
const featuresDir = join(cwd, ".vibe", "features");
|
|
160
|
-
const standardsDir = join(cwd, ".vibe", "standards");
|
|
161
170
|
try {
|
|
162
|
-
// Check if
|
|
171
|
+
// Check if collection already exists
|
|
163
172
|
const { stdout } = await execFileAsync("qmd", ["--index", indexName, "collection", "list"], { cwd });
|
|
164
|
-
if (stdout.includes("vibe-artifacts")
|
|
173
|
+
if (stdout.includes("vibe-artifacts"))
|
|
165
174
|
return;
|
|
166
175
|
}
|
|
167
176
|
catch {
|
|
@@ -177,15 +186,6 @@ async function initQmdCollections(cwd) {
|
|
|
177
186
|
"qmd://vibe-artifacts",
|
|
178
187
|
"Feature artifacts: spec, design, review, test-report, diagnosis, impact-report",
|
|
179
188
|
], { cwd });
|
|
180
|
-
await execFileAsync("qmd", ["--index", indexName, "collection", "add", standardsDir, "--name", "vibe-standards", "--mask", "**/*.md"], { cwd });
|
|
181
|
-
await execFileAsync("qmd", [
|
|
182
|
-
"--index",
|
|
183
|
-
indexName,
|
|
184
|
-
"context",
|
|
185
|
-
"add",
|
|
186
|
-
"qmd://vibe-standards",
|
|
187
|
-
"Project coding standards, architecture principles, testing policies",
|
|
188
|
-
], { cwd });
|
|
189
189
|
await execFileAsync("qmd", ["--index", indexName, "embed"], { cwd, env });
|
|
190
190
|
}
|
|
191
191
|
catch {
|
|
@@ -310,15 +310,13 @@ PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
|
|
|
310
310
|
INDEX_NAME=$(basename "$PROJECT_ROOT")
|
|
311
311
|
qmd --index "$INDEX_NAME" status
|
|
312
312
|
\`\`\`
|
|
313
|
-
If no collections exist, initialize
|
|
313
|
+
If no collections exist, initialize the artifacts collection:
|
|
314
314
|
\`\`\`bash
|
|
315
315
|
export QMD_EMBED_MODEL="${QMD_EMBED_MODEL_URI}"
|
|
316
316
|
PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
|
|
317
317
|
INDEX_NAME=$(basename "$PROJECT_ROOT")
|
|
318
318
|
qmd --index "$INDEX_NAME" collection add "$PROJECT_ROOT/.vibe/features" --name vibe-artifacts --mask "**/*.md"
|
|
319
319
|
qmd --index "$INDEX_NAME" context add qmd://vibe-artifacts "Feature artifacts: spec, design, review, test-report, diagnosis, impact-report"
|
|
320
|
-
qmd --index "$INDEX_NAME" collection add "$PROJECT_ROOT/.vibe/standards" --name vibe-standards --mask "**/*.md"
|
|
321
|
-
qmd --index "$INDEX_NAME" context add qmd://vibe-standards "Project coding standards, architecture principles, testing policies"
|
|
322
320
|
qmd --index "$INDEX_NAME" embed
|
|
323
321
|
\`\`\`
|
|
324
322
|
|
|
@@ -331,12 +329,6 @@ export QMD_EMBED_MODEL="${QMD_EMBED_MODEL_URI}"
|
|
|
331
329
|
INDEX_NAME=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
|
|
332
330
|
qmd --index "$INDEX_NAME" search "<keywords>" -c vibe-artifacts -n 5 --min-score 0.3 --json
|
|
333
331
|
\`\`\`
|
|
334
|
-
Search coding standards:
|
|
335
|
-
\`\`\`bash
|
|
336
|
-
export QMD_EMBED_MODEL="${QMD_EMBED_MODEL_URI}"
|
|
337
|
-
INDEX_NAME=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
|
|
338
|
-
qmd --index "$INDEX_NAME" search "<keywords>" -c vibe-standards -n 5 --min-score 0.3 --json
|
|
339
|
-
\`\`\`
|
|
340
332
|
If results are returned, read the referenced files and factor past decisions into current work.
|
|
341
333
|
|
|
342
334
|
### During Review
|
|
@@ -680,35 +672,6 @@ function createAgentProgressHandler(ctx, label, pipelineEditor, projectRoot) {
|
|
|
680
672
|
function createAbortHandle() {
|
|
681
673
|
return { aborted: false };
|
|
682
674
|
}
|
|
683
|
-
// ─── Skill Discovery ─────────────────────────────────────────────────────────
|
|
684
|
-
/**
|
|
685
|
-
* Scans .vibe/skills/ and builds a lightweight index of available skills.
|
|
686
|
-
* Contains only each skill's name, description, and file path.
|
|
687
|
-
* Agents load the full content via the read tool when needed.
|
|
688
|
-
*/
|
|
689
|
-
async function buildAvailableSkillsPrompt(store) {
|
|
690
|
-
const skills = await store.listSkills();
|
|
691
|
-
if (skills.length === 0)
|
|
692
|
-
return "";
|
|
693
|
-
const entries = [];
|
|
694
|
-
for (const skillName of skills) {
|
|
695
|
-
const description = await store.readSkillDescription(skillName);
|
|
696
|
-
if (description) {
|
|
697
|
-
const skillPath = `.vibe/skills/${skillName}/SKILL.md`;
|
|
698
|
-
entries.push(`- **${skillName}** (${skillPath}): ${description}`);
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
if (entries.length === 0)
|
|
702
|
-
return "";
|
|
703
|
-
return [
|
|
704
|
-
"## Available Skills",
|
|
705
|
-
"",
|
|
706
|
-
"The following skills provide specialized instructions for this project.",
|
|
707
|
-
"Use the read tool to load a skill's SKILL.md when your current task matches its description.",
|
|
708
|
-
"",
|
|
709
|
-
...entries,
|
|
710
|
-
].join("\n");
|
|
711
|
-
}
|
|
712
675
|
// ─── Pipeline Editor Helpers ──────────────────────────────────────────────────
|
|
713
676
|
/**
|
|
714
677
|
* Activates the pipeline editor by replacing the default editor with PipelineEditorComponent.
|
|
@@ -1555,13 +1518,14 @@ async function handleInit(store, ctx) {
|
|
|
1555
1518
|
await writeFile(filePath, content, "utf-8");
|
|
1556
1519
|
}
|
|
1557
1520
|
}
|
|
1558
|
-
// Create QMD memory skill template
|
|
1559
|
-
const
|
|
1521
|
+
// Create QMD memory skill template in .pi/skills/ (pi's native skill system)
|
|
1522
|
+
const qmdSkillDir = join(store.getProjectRoot(), ".pi", "skills", "qmd-memory");
|
|
1523
|
+
const qmdSkillPath = join(qmdSkillDir, "SKILL.md");
|
|
1560
1524
|
try {
|
|
1561
1525
|
await access(qmdSkillPath);
|
|
1562
1526
|
}
|
|
1563
1527
|
catch {
|
|
1564
|
-
await mkdir(
|
|
1528
|
+
await mkdir(qmdSkillDir, { recursive: true });
|
|
1565
1529
|
await writeFile(qmdSkillPath, QMD_SKILL_TEMPLATE, "utf-8");
|
|
1566
1530
|
}
|
|
1567
1531
|
// Clean up stale QMD collections and initialize fresh ones if qmd is installed
|
|
@@ -1964,6 +1928,11 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
1964
1928
|
await handleInit(store, ctx);
|
|
1965
1929
|
}
|
|
1966
1930
|
let config = await store.loadConfig();
|
|
1931
|
+
// Auto-init git repository if not present
|
|
1932
|
+
if (!(await isGitRepo(ctx.cwd))) {
|
|
1933
|
+
await execFileAsync("git", ["init"], { cwd: ctx.cwd });
|
|
1934
|
+
vibeMilestone("Initialized git repository");
|
|
1935
|
+
}
|
|
1967
1936
|
// Resolve baseBranch: config > existing orchestration state > prompt user
|
|
1968
1937
|
if (!config.baseBranch) {
|
|
1969
1938
|
const existingOrcState = (await store.hasOrchestrationState()) ? await store.loadOrchestrationState() : undefined;
|
|
@@ -2018,7 +1987,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2018
1987
|
}
|
|
2019
1988
|
}
|
|
2020
1989
|
const getApiKey = (provider) => ctx.modelRegistry.getApiKeyForProvider(provider);
|
|
2021
|
-
const availableSkills = await buildAvailableSkillsPrompt(store);
|
|
2022
1990
|
const requestApproval = async (_step, _fId, summary) => {
|
|
2023
1991
|
_pi.events.emit("vibe:gate", { featureId: _fId, summary });
|
|
2024
1992
|
// Auto-expand messages so the user can review full content before deciding
|
|
@@ -2142,7 +2110,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2142
2110
|
}
|
|
2143
2111
|
},
|
|
2144
2112
|
feedback: discoveryFeedback,
|
|
2145
|
-
availableSkills,
|
|
2146
2113
|
onAgentCreated: (agent) => {
|
|
2147
2114
|
abortHandle.currentAgent = agent;
|
|
2148
2115
|
},
|
|
@@ -2231,7 +2198,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2231
2198
|
vibeAgentResponse(`System design (${lines} lines)`, msg);
|
|
2232
2199
|
},
|
|
2233
2200
|
feedback: systemDesignFeedback,
|
|
2234
|
-
availableSkills,
|
|
2235
2201
|
onAgentCreated: (agent) => {
|
|
2236
2202
|
abortHandle.currentAgent = agent;
|
|
2237
2203
|
},
|
|
@@ -2328,7 +2294,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2328
2294
|
projectRoot: ctx.cwd,
|
|
2329
2295
|
model: ctx.model,
|
|
2330
2296
|
getApiKey,
|
|
2331
|
-
availableSkills,
|
|
2332
2297
|
featureContext: analyzerFeatureContext,
|
|
2333
2298
|
});
|
|
2334
2299
|
abortHandle.currentAgent = analyzerAgent;
|
|
@@ -2393,7 +2358,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2393
2358
|
vibeAgentResponse(`Planner response (${lines} lines)`, msg);
|
|
2394
2359
|
},
|
|
2395
2360
|
feedback: planFeedback,
|
|
2396
|
-
availableSkills,
|
|
2397
2361
|
onAgentCreated: (agent) => {
|
|
2398
2362
|
abortHandle.currentAgent = agent;
|
|
2399
2363
|
},
|
|
@@ -2496,7 +2460,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2496
2460
|
projectRoot: ctx.cwd,
|
|
2497
2461
|
model: ctx.model,
|
|
2498
2462
|
getApiKey,
|
|
2499
|
-
availableSkills,
|
|
2500
2463
|
featureContext: analyzerFeatureContext,
|
|
2501
2464
|
});
|
|
2502
2465
|
abortHandle.currentAgent = analyzerAgent;
|
|
@@ -2544,7 +2507,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2544
2507
|
onAgentCreated: editorCallbacks.onAgentCreated,
|
|
2545
2508
|
onAgentFinished: editorCallbacks.onAgentFinished,
|
|
2546
2509
|
logger,
|
|
2547
|
-
availableSkills,
|
|
2548
2510
|
});
|
|
2549
2511
|
for await (const event of orchestrationGen) {
|
|
2550
2512
|
// Update tool step context for chat messages
|
|
@@ -2649,7 +2611,6 @@ async function handleWorkflow(store, ctx, workflowType, _requirement, options, l
|
|
|
2649
2611
|
singleEditorCallbacks.onAgentFinished();
|
|
2650
2612
|
},
|
|
2651
2613
|
logger,
|
|
2652
|
-
availableSkills,
|
|
2653
2614
|
});
|
|
2654
2615
|
abortHandle.currentRunner = runner;
|
|
2655
2616
|
activePipelines.set(featureId, { pipeline, runner });
|
|
@@ -3120,7 +3081,6 @@ async function handleResume(store, ctx, featureId, logger) {
|
|
|
3120
3081
|
pipelineEditor.setTitle(`Vibe ─ ${WORKFLOW_TITLES[orcState.workflowType] ?? "Resuming"}`);
|
|
3121
3082
|
const resumeToolCtx = { featureId: "", role: "", action: "" };
|
|
3122
3083
|
const resumeOrcCallbacks = createEditorAgentCallbacks(pipelineEditor, ctx.cwd, resumeAbortHandle, resumeToolCtx);
|
|
3123
|
-
const availableSkills = await buildAvailableSkillsPrompt(store);
|
|
3124
3084
|
try {
|
|
3125
3085
|
for await (const event of runOrchestration({
|
|
3126
3086
|
store,
|
|
@@ -3135,7 +3095,6 @@ async function handleResume(store, ctx, featureId, logger) {
|
|
|
3135
3095
|
onAgentCreated: resumeOrcCallbacks.onAgentCreated,
|
|
3136
3096
|
onAgentFinished: resumeOrcCallbacks.onAgentFinished,
|
|
3137
3097
|
logger,
|
|
3138
|
-
availableSkills,
|
|
3139
3098
|
})) {
|
|
3140
3099
|
// Update tool step context for chat messages
|
|
3141
3100
|
if (event.type === "feature_start")
|