@jakkrichm/create-nexus-devflow 2.8.0 → 2.9.3
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/bin/create-nexus-devflow.d.ts +7 -3
- package/dist/bin/create-nexus-devflow.js +237 -4
- package/dist/bin/create-nexus-devflow.js.map +1 -1
- package/dist/lib/dashboard-page.d.ts +1 -1
- package/dist/lib/dashboard-page.js +76 -0
- package/dist/lib/dashboard-page.js.map +1 -1
- package/dist/lib/doctor.js +40 -0
- package/dist/lib/doctor.js.map +1 -1
- package/dist/lib/project-config.d.ts +1 -1
- package/dist/lib/project-config.js +4 -1
- package/dist/lib/project-config.js.map +1 -1
- package/dist/lib/run-state.d.ts +39 -0
- package/dist/lib/run-state.js +203 -0
- package/dist/lib/run-state.js.map +1 -0
- package/dist/lib/skill-manager.d.ts +73 -0
- package/dist/lib/skill-manager.js +510 -0
- package/dist/lib/skill-manager.js.map +1 -0
- package/dist/lib/status.d.ts +4 -1
- package/dist/lib/status.js +49 -3
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/webview-studio.js +169 -47
- package/dist/lib/webview-studio.js.map +1 -1
- package/package.json +2 -2
- package/template/.agents/skills/adopt/SKILL.md +4 -0
- package/template/.agents/skills/audit/SKILL.md +4 -0
- package/template/.agents/skills/autopilot/SKILL.md +4 -0
- package/template/.agents/skills/check/SKILL.md +4 -0
- package/template/.agents/skills/ci/SKILL.md +4 -0
- package/template/.agents/skills/complete/SKILL.md +7 -1
- package/template/.agents/skills/continuous/SKILL.md +4 -0
- package/template/.agents/skills/debug/SKILL.md +4 -0
- package/template/.agents/skills/devflow/SKILL.md +6 -1
- package/template/.agents/skills/discovery/SKILL.md +10 -1
- package/template/.agents/skills/feature/SKILL.md +4 -0
- package/template/.agents/skills/fix/SKILL.md +4 -0
- package/template/.agents/skills/implement/SKILL.md +4 -0
- package/template/.agents/skills/onboard/SKILL.md +4 -0
- package/template/.agents/skills/overview/SKILL.md +4 -0
- package/template/.agents/skills/prototype/SKILL.md +4 -0
- package/template/.agents/skills/release/SKILL.md +4 -0
- package/template/.agents/skills/rollback/SKILL.md +18 -5
- package/template/.agents/skills/status/SKILL.md +7 -0
- package/template/.agents/skills/tests/SKILL.md +4 -0
- package/template/.claude/skills/adopt/SKILL.md +4 -0
- package/template/.claude/skills/audit/SKILL.md +4 -0
- package/template/.claude/skills/autopilot/SKILL.md +4 -0
- package/template/.claude/skills/check/SKILL.md +4 -0
- package/template/.claude/skills/ci/SKILL.md +4 -0
- package/template/.claude/skills/complete/SKILL.md +7 -1
- package/template/.claude/skills/continuous/SKILL.md +4 -0
- package/template/.claude/skills/debug/SKILL.md +4 -0
- package/template/.claude/skills/devflow/SKILL.md +6 -1
- package/template/.claude/skills/discovery/SKILL.md +10 -1
- package/template/.claude/skills/feature/SKILL.md +4 -0
- package/template/.claude/skills/fix/SKILL.md +4 -0
- package/template/.claude/skills/implement/SKILL.md +4 -0
- package/template/.claude/skills/onboard/SKILL.md +4 -0
- package/template/.claude/skills/overview/SKILL.md +4 -0
- package/template/.claude/skills/prototype/SKILL.md +4 -0
- package/template/.claude/skills/release/SKILL.md +4 -0
- package/template/.claude/skills/rollback/SKILL.md +18 -5
- package/template/.claude/skills/status/SKILL.md +7 -0
- package/template/.claude/skills/tests/SKILL.md +4 -0
- package/template/AGENTS.md +24 -5
- package/template/LICENSE +21 -21
- package/template/devflow/build-plan.md +16 -0
- package/template/devflow/context/ai-interaction.md +25 -0
- package/dist/lib/antigravity-artifacts.d.ts +0 -52
- package/dist/lib/antigravity-artifacts.js +0 -170
- package/dist/lib/antigravity-artifacts.js.map +0 -1
- package/dist/lib/antigravity-hooks.d.ts +0 -31
- package/dist/lib/antigravity-hooks.js +0 -85
- package/dist/lib/antigravity-hooks.js.map +0 -1
- package/dist/lib/antigravity-plugin.d.ts +0 -51
- package/dist/lib/antigravity-plugin.js +0 -179
- package/dist/lib/antigravity-plugin.js.map +0 -1
- package/dist/lib/antigravity-scheduler.d.ts +0 -39
- package/dist/lib/antigravity-scheduler.js +0 -95
- package/dist/lib/antigravity-scheduler.js.map +0 -1
- package/dist/lib/openai-tools.d.ts +0 -34
- package/dist/lib/openai-tools.js +0 -57
- package/dist/lib/openai-tools.js.map +0 -1
- package/dist/lib/visual-subagent.d.ts +0 -32
- package/dist/lib/visual-subagent.js +0 -98
- package/dist/lib/visual-subagent.js.map +0 -1
- package/template/.agents/skills/convert-any-to-md/scripts/__pycache__/convert_any_to_md.cpython-314.pyc +0 -0
- package/template/.claude/skills/convert-any-to-md/scripts/__pycache__/convert_any_to_md.cpython-314.pyc +0 -0
|
@@ -159,3 +159,28 @@ Progress lives in persistent files, not in transient chat history:
|
|
|
159
159
|
- **Lazy Inline Persistence**:
|
|
160
160
|
- Immediately append resolved terms to `devflow/context/glossary.md`.
|
|
161
161
|
- Immediately record major, hard-to-reverse architectural decisions as Architecture Decision Records in `devflow/decisions/ADR-xxx-{slug}.md`.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 10. Third-Party Skill Orchestration & Multi-Skill Delegation Protocol
|
|
166
|
+
|
|
167
|
+
Nexus-DevFlow natively supports extending workflow capabilities with **Third-Party Skills** (installed via `nexus-devflow skill add <repo-or-path>`):
|
|
168
|
+
|
|
169
|
+
### 🧩 1. Discovery & Inventory
|
|
170
|
+
- Core workflow commands and AI agents automatically inspect `.agents/skills/` (and `.claude/skills/`) or run `nexus-devflow skill list` to discover installed third-party capabilities.
|
|
171
|
+
- Installed third-party skills maintain their exact original directory structure, references, assets, scripts, and `SKILL.md`.
|
|
172
|
+
|
|
173
|
+
### 🎯 2. Cross-Command Delegation & Genuine Execution
|
|
174
|
+
- **Verbatim & Original Prompt Fidelity**: When a DevFlow stage requires specialized domain expertise (e.g., editorial diagramming, system mapping, domain modeling, cloud provisioning, UI benchmarking), the AI agent must read the third-party skill's `SKILL.md` (e.g. `.agents/skills/archify/SKILL.md` or `.agents/skills/diagram-design/SKILL.md`) and strictly follow its original instructions, philosophy, style guide gates, and complexity constraints.
|
|
175
|
+
- **Workflow Command Integration Map**:
|
|
176
|
+
- **`/discovery`**: When macro roadmap planning or micro pre-flight exploration involves system architecture, IT landscape, data pipelines, sequence flows, or user journeys, check for `archify` (for interactive system maps, data flows, and sequence traces) or `diagram-design` (for editorial and business layouts).
|
|
177
|
+
- **`/feature` & `/fix`**: In Section 2 (`## 📐 2. Technical Spec & Contracts`), invoke `archify` for interactive component diagrams, state machines, and sequence traces, or `diagram-design` for database ER models.
|
|
178
|
+
- **`/brainstorm` & `/grill`**: Leverage visual trade-off matrices (Quadrant, Radar spider) or domain models (UML class, ER).
|
|
179
|
+
- **`/prototype` & `/report-html`**: Embed standalone HTML/SVG assets seamlessly.
|
|
180
|
+
- **`/devflow`**: Intent router surfaces installed third-party skills (e.g. `/archify`, `/diagram-design`) directly to the user.
|
|
181
|
+
|
|
182
|
+
### 📁 3. Generated Asset Storage Hierarchy
|
|
183
|
+
- **Discovery Stage**: `devflow/discoveries/{id}/diagrams/` (referenced in `discovery.md`).
|
|
184
|
+
- **Active Task Stage**: `devflow/context/{xxx-slug}/diagrams/` (referenced in `spec.md`).
|
|
185
|
+
- **Global / Reference**: `devflow/reference/diagrams/` or `devflow/reference/assets/`.
|
|
186
|
+
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
export interface AntigravityArtifactMetadata {
|
|
2
|
-
Summary: string;
|
|
3
|
-
UserFacing: boolean;
|
|
4
|
-
RequestFeedback: boolean;
|
|
5
|
-
}
|
|
6
|
-
export type AntigravityDiagramType = "dual-track" | "swarm-matrix" | "blast-radius";
|
|
7
|
-
export interface BlastRadiusDiagramOptions {
|
|
8
|
-
targetFile?: string;
|
|
9
|
-
directDependents?: string[];
|
|
10
|
-
transitiveDependents?: string[];
|
|
11
|
-
}
|
|
12
|
-
export interface ImplementationPlanInput {
|
|
13
|
-
title: string;
|
|
14
|
-
runId?: string;
|
|
15
|
-
track?: "fast" | "deep";
|
|
16
|
-
category?: string;
|
|
17
|
-
problemStatement?: string;
|
|
18
|
-
tasks?: Array<{
|
|
19
|
-
id?: string;
|
|
20
|
-
title: string;
|
|
21
|
-
doneWhen?: string;
|
|
22
|
-
role?: string;
|
|
23
|
-
}>;
|
|
24
|
-
verificationPlan?: string[];
|
|
25
|
-
}
|
|
26
|
-
export interface WalkthroughInput {
|
|
27
|
-
title: string;
|
|
28
|
-
runId?: string;
|
|
29
|
-
completedDate?: string;
|
|
30
|
-
changesSummary?: string;
|
|
31
|
-
verificationRows?: Array<{
|
|
32
|
-
lane: string;
|
|
33
|
-
command: string;
|
|
34
|
-
verdict: string;
|
|
35
|
-
details?: string;
|
|
36
|
-
}>;
|
|
37
|
-
slides?: Array<{
|
|
38
|
-
title: string;
|
|
39
|
-
description: string;
|
|
40
|
-
codeSnippet?: string;
|
|
41
|
-
}>;
|
|
42
|
-
}
|
|
43
|
-
export declare function generateMermaidDiagram(type: AntigravityDiagramType, options?: BlastRadiusDiagramOptions): string;
|
|
44
|
-
export declare function generateAntigravityImplementationPlan(input: ImplementationPlanInput, options?: {
|
|
45
|
-
includeMermaid?: boolean;
|
|
46
|
-
}): string;
|
|
47
|
-
export declare function generateAntigravityWalkthrough(input: WalkthroughInput): string;
|
|
48
|
-
export declare function writeAntigravityArtifactFile(projectRoot: string, artifactType: "plan" | "walkthrough", content: string, options?: {
|
|
49
|
-
outPath?: string;
|
|
50
|
-
}): Promise<{
|
|
51
|
-
filePath: string;
|
|
52
|
-
}>;
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
export function generateMermaidDiagram(type, options = {}) {
|
|
4
|
-
if (type === "dual-track") {
|
|
5
|
-
return [
|
|
6
|
-
"```mermaid",
|
|
7
|
-
"graph LR",
|
|
8
|
-
" subgraph FastTrack[\"🏎️ Fast-Track (Blueprint Mode)\"]",
|
|
9
|
-
" direction LR",
|
|
10
|
-
" F1[\"/feature or /fix\"] --> F2[\"/implement\"]",
|
|
11
|
-
" F2 --> F3[\"/check\"]",
|
|
12
|
-
" F3 --> F4[\"/complete\"]",
|
|
13
|
-
" end",
|
|
14
|
-
" subgraph DeepTrack[\"🏗️ Deep-Track (Architect Mode)\"]",
|
|
15
|
-
" direction LR",
|
|
16
|
-
" D0[\"00-explore\"] --> D1[\"10-define\"]",
|
|
17
|
-
" D1 --> D2[\"20-spec\"]",
|
|
18
|
-
" D2 --> D3[\"30-plan\"]",
|
|
19
|
-
" D3 --> D4[\"40-execute\"]",
|
|
20
|
-
" D4 --> D5[\"50-verify\"]",
|
|
21
|
-
" D5 --> D6[\"60-report\"]",
|
|
22
|
-
" D6 --> D7[\"70-deliver\"]",
|
|
23
|
-
" end",
|
|
24
|
-
"```"
|
|
25
|
-
].join("\n");
|
|
26
|
-
}
|
|
27
|
-
if (type === "swarm-matrix") {
|
|
28
|
-
return [
|
|
29
|
-
"```mermaid",
|
|
30
|
-
"graph TD",
|
|
31
|
-
" A[\"👑 Architect Agent<br/>(Discovery & Decomposition)\"] --> C[\"👨💻 Coder Agent<br/>(TDD Implementation)\"]",
|
|
32
|
-
" A --> Q[\"🕵️ QA Verifier Agent<br/>(Multi-lane Proof & Edge Cases)\"]",
|
|
33
|
-
" A --> S[\"🛡️ Security Auditor Agent<br/>(Findings Ledger & AST Scan)\"]",
|
|
34
|
-
" C --> G{\"⚙️ Quality Gatekeeper\"}",
|
|
35
|
-
" Q --> G",
|
|
36
|
-
" S --> G",
|
|
37
|
-
" G -->|All Passed| D[\"🚀 Complete / Deliver\"]",
|
|
38
|
-
"```"
|
|
39
|
-
].join("\n");
|
|
40
|
-
}
|
|
41
|
-
if (type === "blast-radius") {
|
|
42
|
-
const target = options.targetFile || "target-module.ts";
|
|
43
|
-
const directs = options.directDependents?.length
|
|
44
|
-
? options.directDependents
|
|
45
|
-
: ["dependent-a.ts", "dependent-b.ts"];
|
|
46
|
-
const transitives = options.transitiveDependents?.length
|
|
47
|
-
? options.transitiveDependents
|
|
48
|
-
: ["service-root.ts"];
|
|
49
|
-
const lines = [
|
|
50
|
-
"```mermaid",
|
|
51
|
-
"graph TD",
|
|
52
|
-
` T["🎯 Modified Target:<br/>${target}"]`
|
|
53
|
-
];
|
|
54
|
-
directs.forEach((d, i) => {
|
|
55
|
-
lines.push(` T --> D${i}["Direct: ${d}"]`);
|
|
56
|
-
});
|
|
57
|
-
transitives.forEach((t, i) => {
|
|
58
|
-
lines.push(` D0 -.-> TR${i}["Transitive: ${t}"]`);
|
|
59
|
-
});
|
|
60
|
-
lines.push("```");
|
|
61
|
-
return lines.join("\n");
|
|
62
|
-
}
|
|
63
|
-
return "";
|
|
64
|
-
}
|
|
65
|
-
export function generateAntigravityImplementationPlan(input, options = { includeMermaid: true }) {
|
|
66
|
-
const lines = [];
|
|
67
|
-
lines.push(`# Implementation Plan - ${input.title}\n`);
|
|
68
|
-
lines.push(`> [!IMPORTANT]\n> **Run ID**: \`${input.runId || "active-feature"}\` | **Track**: \`${input.track || "fast"}\` | **Category**: \`${input.category || "Feature"}\`\n`);
|
|
69
|
-
if (input.problemStatement) {
|
|
70
|
-
lines.push(`## 🎯 Problem Statement & Intent\n`);
|
|
71
|
-
lines.push(`${input.problemStatement}\n`);
|
|
72
|
-
}
|
|
73
|
-
if (options.includeMermaid !== false) {
|
|
74
|
-
lines.push(`## 🗺️ Workflow Architecture & Delivery Map\n`);
|
|
75
|
-
lines.push(generateMermaidDiagram("dual-track") + "\n");
|
|
76
|
-
}
|
|
77
|
-
lines.push(`## 📋 Proposed Changes & Tasks\n`);
|
|
78
|
-
if (input.tasks && input.tasks.length > 0) {
|
|
79
|
-
for (let i = 0; i < input.tasks.length; i++) {
|
|
80
|
-
const task = input.tasks[i];
|
|
81
|
-
const roleLabel = task.role ? ` \`[Role: ${task.role}]\`` : "";
|
|
82
|
-
lines.push(`### Task ${i + 1}: ${task.title}${roleLabel}`);
|
|
83
|
-
if (task.doneWhen) {
|
|
84
|
-
lines.push(`- **Done When**: ${task.doneWhen}`);
|
|
85
|
-
}
|
|
86
|
-
lines.push("");
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
lines.push(`- [ ] **Task 1: Core Implementation** (Done when acceptance criteria are met)\n`);
|
|
91
|
-
}
|
|
92
|
-
lines.push(`## 🧪 Verification Plan\n`);
|
|
93
|
-
lines.push(`> [!NOTE]\n> Verification will be executed across automated and manual proof lanes.\n`);
|
|
94
|
-
if (input.verificationPlan && input.verificationPlan.length > 0) {
|
|
95
|
-
for (const v of input.verificationPlan) {
|
|
96
|
-
lines.push(`- [ ] ${v}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
lines.push(`- [ ] Automated Typecheck (\`npm run typecheck\`)`);
|
|
101
|
-
lines.push(`- [ ] Unit Test Suite (\`npm test\`)`);
|
|
102
|
-
lines.push(`- [ ] Framework Verification (\`npm run check\`)`);
|
|
103
|
-
}
|
|
104
|
-
lines.push(`\n> [!TIP]\n> Click **Proceed** above to approve this plan and commence autonomous implementation.`);
|
|
105
|
-
return lines.join("\n");
|
|
106
|
-
}
|
|
107
|
-
export function generateAntigravityWalkthrough(input) {
|
|
108
|
-
const lines = [];
|
|
109
|
-
lines.push(`# Walkthrough - ${input.title}\n`);
|
|
110
|
-
lines.push(`> [!NOTE]\n> **Completed**: ${input.completedDate || new Date().toISOString().split("T")[0]} | **Run ID**: \`${input.runId || "active"}\`\n`);
|
|
111
|
-
if (input.changesSummary) {
|
|
112
|
-
lines.push(`## 📦 Changes Summary\n${input.changesSummary}\n`);
|
|
113
|
-
}
|
|
114
|
-
lines.push(`## 🎠 Interactive Delivery Carousel\n`);
|
|
115
|
-
lines.push("````carousel");
|
|
116
|
-
const slides = input.slides?.length
|
|
117
|
-
? input.slides
|
|
118
|
-
: [
|
|
119
|
-
{
|
|
120
|
-
title: "Step 1: Specification & Planning",
|
|
121
|
-
description: "Structured discovery with clear acceptance criteria and living spec in devflow/context/."
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
title: "Step 2: Incremental TDD Implementation",
|
|
125
|
-
description: "Modular, isolated commits following test-driven development discipline."
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
title: "Step 3: Multi-Lane Verification",
|
|
129
|
-
description: "100% test passing, typechecking, and zero P0/P1 blockers in findings ledger."
|
|
130
|
-
}
|
|
131
|
-
];
|
|
132
|
-
for (let i = 0; i < slides.length; i++) {
|
|
133
|
-
const s = slides[i];
|
|
134
|
-
if (i > 0)
|
|
135
|
-
lines.push("<!-- slide -->");
|
|
136
|
-
lines.push(`### ${s.title}`);
|
|
137
|
-
lines.push(`${s.description}\n`);
|
|
138
|
-
if (s.codeSnippet) {
|
|
139
|
-
lines.push("```typescript");
|
|
140
|
-
lines.push(s.codeSnippet);
|
|
141
|
-
lines.push("```\n");
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
lines.push("````\n");
|
|
145
|
-
lines.push(`## 📊 Verification Matrix Evidence\n`);
|
|
146
|
-
lines.push("| Lane | Command | Result | Details |");
|
|
147
|
-
lines.push("| :--- | :--- | :---: | :--- |");
|
|
148
|
-
if (input.verificationRows && input.verificationRows.length > 0) {
|
|
149
|
-
for (const row of input.verificationRows) {
|
|
150
|
-
lines.push(`| **${row.lane}** | \`${row.command}\` | ${row.verdict} | ${row.details || "Clean"} |`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
lines.push("| **Typecheck** | `npm run typecheck` | ✅ PASS | 0 Type errors |");
|
|
155
|
-
lines.push("| **Unit Tests** | `npm test` | ✅ PASS | All test suites passed |");
|
|
156
|
-
lines.push("| **Smoke Test** | `npm run check` | ✅ PASS | Package build verified |");
|
|
157
|
-
}
|
|
158
|
-
return lines.join("\n");
|
|
159
|
-
}
|
|
160
|
-
export async function writeAntigravityArtifactFile(projectRoot, artifactType, content, options = {}) {
|
|
161
|
-
const defaultFilename = artifactType === "plan" ? "implementation_plan.md" : "walkthrough.md";
|
|
162
|
-
const targetRel = options.outPath || defaultFilename;
|
|
163
|
-
const targetAbs = path.isAbsolute(targetRel)
|
|
164
|
-
? targetRel
|
|
165
|
-
: path.join(projectRoot, targetRel);
|
|
166
|
-
await fs.mkdir(path.dirname(targetAbs), { recursive: true });
|
|
167
|
-
await fs.writeFile(targetAbs, content + "\n", "utf8");
|
|
168
|
-
return { filePath: targetAbs };
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=antigravity-artifacts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity-artifacts.js","sourceRoot":"","sources":["../../lib/antigravity-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export interface AntigravityHookItem {
|
|
2
|
-
command: string;
|
|
3
|
-
description?: string;
|
|
4
|
-
}
|
|
5
|
-
export interface AntigravityHooksConfig {
|
|
6
|
-
hooks: {
|
|
7
|
-
"pre-action"?: AntigravityHookItem[];
|
|
8
|
-
"post-action"?: AntigravityHookItem[];
|
|
9
|
-
"pre-complete"?: AntigravityHookItem[];
|
|
10
|
-
"post-complete"?: AntigravityHookItem[];
|
|
11
|
-
[key: string]: AntigravityHookItem[] | undefined;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export interface WriteHooksOptions {
|
|
15
|
-
config?: AntigravityHooksConfig;
|
|
16
|
-
outPath?: string;
|
|
17
|
-
overwrite?: boolean;
|
|
18
|
-
}
|
|
19
|
-
export declare function generateDefaultAntigravityHooksConfig(): AntigravityHooksConfig;
|
|
20
|
-
export declare function readAntigravityHooksFile(projectRoot: string, outPath?: string): Promise<AntigravityHooksConfig | null>;
|
|
21
|
-
export declare function writeAntigravityHooksFile(projectRoot: string, options?: WriteHooksOptions): Promise<{
|
|
22
|
-
filePath: string;
|
|
23
|
-
hookCount: number;
|
|
24
|
-
}>;
|
|
25
|
-
export declare function removeAntigravityHooksFile(projectRoot: string, outPath?: string): Promise<{
|
|
26
|
-
removed: boolean;
|
|
27
|
-
filePath: string;
|
|
28
|
-
}>;
|
|
29
|
-
export declare function formatAntigravityHooksHuman(config: AntigravityHooksConfig | null, options?: {
|
|
30
|
-
color?: boolean;
|
|
31
|
-
}): string;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { createStyle } from "./ui.js";
|
|
4
|
-
export function generateDefaultAntigravityHooksConfig() {
|
|
5
|
-
return {
|
|
6
|
-
hooks: {
|
|
7
|
-
"pre-action": [
|
|
8
|
-
{
|
|
9
|
-
command: "npx @jakkrichm/create-nexus-devflow slice --stage implement --max-tokens 2000",
|
|
10
|
-
description: "Auto JIT context slicing to optimize AI token budget"
|
|
11
|
-
}
|
|
12
|
-
],
|
|
13
|
-
"post-action": [
|
|
14
|
-
{
|
|
15
|
-
command: "npx @jakkrichm/create-nexus-devflow drift",
|
|
16
|
-
description: "Auto detect repository file drift against living spec"
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"pre-complete": [
|
|
20
|
-
{
|
|
21
|
-
command: "npx @jakkrichm/create-nexus-devflow check-gate --strict",
|
|
22
|
-
description: "Hard quality gatekeeper validation before closing run"
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export async function readAntigravityHooksFile(projectRoot, outPath) {
|
|
29
|
-
const targetRel = outPath || path.join(".agents", "hooks.json");
|
|
30
|
-
const targetAbs = path.isAbsolute(targetRel) ? targetRel : path.join(projectRoot, targetRel);
|
|
31
|
-
try {
|
|
32
|
-
const raw = await fs.readFile(targetAbs, "utf8");
|
|
33
|
-
return JSON.parse(raw);
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export async function writeAntigravityHooksFile(projectRoot, options = {}) {
|
|
40
|
-
const targetRel = options.outPath || path.join(".agents", "hooks.json");
|
|
41
|
-
const targetAbs = path.isAbsolute(targetRel) ? targetRel : path.join(projectRoot, targetRel);
|
|
42
|
-
const config = options.config || generateDefaultAntigravityHooksConfig();
|
|
43
|
-
await fs.mkdir(path.dirname(targetAbs), { recursive: true });
|
|
44
|
-
const content = JSON.stringify(config, null, 2);
|
|
45
|
-
await fs.writeFile(targetAbs, content + "\n", "utf8");
|
|
46
|
-
let hookCount = 0;
|
|
47
|
-
for (const list of Object.values(config.hooks)) {
|
|
48
|
-
if (Array.isArray(list)) {
|
|
49
|
-
hookCount += list.length;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return { filePath: targetAbs, hookCount };
|
|
53
|
-
}
|
|
54
|
-
export async function removeAntigravityHooksFile(projectRoot, outPath) {
|
|
55
|
-
const targetRel = outPath || path.join(".agents", "hooks.json");
|
|
56
|
-
const targetAbs = path.isAbsolute(targetRel) ? targetRel : path.join(projectRoot, targetRel);
|
|
57
|
-
try {
|
|
58
|
-
await fs.unlink(targetAbs);
|
|
59
|
-
return { removed: true, filePath: targetAbs };
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
return { removed: false, filePath: targetAbs };
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export function formatAntigravityHooksHuman(config, options = {}) {
|
|
66
|
-
const style = createStyle(options.color);
|
|
67
|
-
if (!config || !config.hooks) {
|
|
68
|
-
return style.dim("No Antigravity action hooks configured in .agents/hooks.json");
|
|
69
|
-
}
|
|
70
|
-
const lines = [];
|
|
71
|
-
lines.push(`[${style.bold(style.cyan("Google Antigravity Lifecycle Action Hooks"))}: .agents/hooks.json]\n`);
|
|
72
|
-
for (const [event, items] of Object.entries(config.hooks)) {
|
|
73
|
-
if (!items || items.length === 0)
|
|
74
|
-
continue;
|
|
75
|
-
lines.push(` ⚡ ${style.bold(style.yellow(event))} (${items.length} hook${items.length > 1 ? "s" : ""}):`);
|
|
76
|
-
for (const item of items) {
|
|
77
|
-
lines.push(` • ${style.green(item.command)}`);
|
|
78
|
-
if (item.description) {
|
|
79
|
-
lines.push(` ${style.dim(item.description)}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return lines.join("\n");
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=antigravity-hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity-hooks.js","sourceRoot":"","sources":["../../lib/antigravity-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export interface AntigravityPluginManifest {
|
|
2
|
-
name: string;
|
|
3
|
-
version: string;
|
|
4
|
-
description: string;
|
|
5
|
-
author: string;
|
|
6
|
-
skills: string[];
|
|
7
|
-
rules: string[];
|
|
8
|
-
mcpConfig?: string;
|
|
9
|
-
hooksConfig?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface AntigravityPluginStatus {
|
|
12
|
-
installed: boolean;
|
|
13
|
-
location: string;
|
|
14
|
-
version?: string;
|
|
15
|
-
skillCount: number;
|
|
16
|
-
hasMcpConfig: boolean;
|
|
17
|
-
hasHooks: boolean;
|
|
18
|
-
}
|
|
19
|
-
export interface BuildPluginOptions {
|
|
20
|
-
outDir?: string;
|
|
21
|
-
global?: boolean;
|
|
22
|
-
version?: string;
|
|
23
|
-
includeSkills?: boolean;
|
|
24
|
-
}
|
|
25
|
-
export declare function resolvePluginRoot(targetDir: string, isGlobal?: boolean): string;
|
|
26
|
-
export declare function generatePluginManifest(skillsList?: string[], version?: string): AntigravityPluginManifest;
|
|
27
|
-
export declare function generatePluginMcpConfig(): object;
|
|
28
|
-
export declare function buildAntigravityPluginBundle(projectRoot: string, options?: BuildPluginOptions): Promise<{
|
|
29
|
-
outDir: string;
|
|
30
|
-
totalSkills: number;
|
|
31
|
-
manifest: AntigravityPluginManifest;
|
|
32
|
-
}>;
|
|
33
|
-
export declare function installPluginBundle(targetDir: string, options?: {
|
|
34
|
-
global?: boolean;
|
|
35
|
-
projectRoot?: string;
|
|
36
|
-
}): Promise<{
|
|
37
|
-
installedPath: string;
|
|
38
|
-
skillCount: number;
|
|
39
|
-
}>;
|
|
40
|
-
export declare function uninstallPluginBundle(targetDir: string, options?: {
|
|
41
|
-
global?: boolean;
|
|
42
|
-
}): Promise<{
|
|
43
|
-
removed: boolean;
|
|
44
|
-
targetPath: string;
|
|
45
|
-
}>;
|
|
46
|
-
export declare function readPluginStatus(targetDir: string, options?: {
|
|
47
|
-
global?: boolean;
|
|
48
|
-
}): Promise<AntigravityPluginStatus>;
|
|
49
|
-
export declare function formatPluginStatusHuman(status: AntigravityPluginStatus, options?: {
|
|
50
|
-
color?: boolean;
|
|
51
|
-
}): string;
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { generateDefaultAntigravityHooksConfig } from "./antigravity-hooks.js";
|
|
5
|
-
import { createStyle } from "./ui.js";
|
|
6
|
-
export function resolvePluginRoot(targetDir, isGlobal = false) {
|
|
7
|
-
if (isGlobal) {
|
|
8
|
-
const homeDir = os.homedir();
|
|
9
|
-
return path.join(homeDir, ".gemini", "config", "plugins", "nexus-devflow");
|
|
10
|
-
}
|
|
11
|
-
return path.join(targetDir, ".agents", "plugins", "nexus-devflow");
|
|
12
|
-
}
|
|
13
|
-
export function generatePluginManifest(skillsList = [], version = "2.1.0") {
|
|
14
|
-
return {
|
|
15
|
-
name: "nexus-devflow",
|
|
16
|
-
version,
|
|
17
|
-
description: "Agentic workflow layer supporting The 3-Pillars Architecture & Dual-Track Delivery Model",
|
|
18
|
-
author: "Jakkrich M. <https://github.com/Jakkrich/nexus-devflow>",
|
|
19
|
-
skills: skillsList,
|
|
20
|
-
rules: ["rules/nexus-devflow.md"],
|
|
21
|
-
mcpConfig: "mcp_config.json",
|
|
22
|
-
hooksConfig: "hooks.json"
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
export function generatePluginMcpConfig() {
|
|
26
|
-
return {
|
|
27
|
-
mcpServers: {
|
|
28
|
-
"nexus-devflow": {
|
|
29
|
-
command: "npx",
|
|
30
|
-
args: ["-y", "@jakkrichm/create-nexus-devflow@latest", "mcp"],
|
|
31
|
-
description: "Nexus-DevFlow 12 Typed Model Context Protocol (MCP) Server Hub"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export async function buildAntigravityPluginBundle(projectRoot, options = {}) {
|
|
37
|
-
const targetPluginDir = options.outDir || resolvePluginRoot(projectRoot, options.global || false);
|
|
38
|
-
await fs.mkdir(targetPluginDir, { recursive: true });
|
|
39
|
-
await fs.mkdir(path.join(targetPluginDir, "skills"), { recursive: true });
|
|
40
|
-
await fs.mkdir(path.join(targetPluginDir, "rules"), { recursive: true });
|
|
41
|
-
// 1. Copy or scan skills from .agents/skills
|
|
42
|
-
const skillsSourceDir = path.join(projectRoot, ".agents", "skills");
|
|
43
|
-
const discoveredSkills = [];
|
|
44
|
-
try {
|
|
45
|
-
const skillEntries = await fs.readdir(skillsSourceDir, { withFileTypes: true });
|
|
46
|
-
for (const entry of skillEntries) {
|
|
47
|
-
if (entry.isDirectory()) {
|
|
48
|
-
const skillName = entry.name;
|
|
49
|
-
discoveredSkills.push(skillName);
|
|
50
|
-
const srcSkillDir = path.join(skillsSourceDir, skillName);
|
|
51
|
-
const destSkillDir = path.join(targetPluginDir, "skills", skillName);
|
|
52
|
-
await fs.mkdir(destSkillDir, { recursive: true });
|
|
53
|
-
// Copy SKILL.md
|
|
54
|
-
const skillMdSrc = path.join(srcSkillDir, "SKILL.md");
|
|
55
|
-
const skillMdDest = path.join(destSkillDir, "SKILL.md");
|
|
56
|
-
try {
|
|
57
|
-
const content = await fs.readFile(skillMdSrc, "utf8");
|
|
58
|
-
await fs.writeFile(skillMdDest, content, "utf8");
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// ignore missing SKILL.md
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// If running in minimal/temp environment, populate core default skills list
|
|
68
|
-
if (discoveredSkills.length === 0) {
|
|
69
|
-
discoveredSkills.push("feature", "implement", "check", "complete", "00-explore", "10-define", "20-spec", "30-plan", "40-execute", "50-verify", "60-report", "70-deliver", "doctor", "devflow", "idea", "audit", "ci", "status");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// 2. Write Manifest (plugin.json)
|
|
73
|
-
const manifest = generatePluginManifest(discoveredSkills, options.version || "2.1.0");
|
|
74
|
-
await fs.writeFile(path.join(targetPluginDir, "plugin.json"), JSON.stringify(manifest, null, 2) + "\n", "utf8");
|
|
75
|
-
// 3. Write MCP Config (mcp_config.json)
|
|
76
|
-
const mcpConfig = generatePluginMcpConfig();
|
|
77
|
-
await fs.writeFile(path.join(targetPluginDir, "mcp_config.json"), JSON.stringify(mcpConfig, null, 2) + "\n", "utf8");
|
|
78
|
-
// 4. Write Hooks Config (hooks.json)
|
|
79
|
-
const hooksConfig = generateDefaultAntigravityHooksConfig();
|
|
80
|
-
await fs.writeFile(path.join(targetPluginDir, "hooks.json"), JSON.stringify(hooksConfig, null, 2) + "\n", "utf8");
|
|
81
|
-
// 5. Write Rules (rules/nexus-devflow.md)
|
|
82
|
-
let rulesContent = "# Nexus-DevFlow Core Workflow Rules\n\n- Follow Fast-Track (/feature -> /implement -> /check -> /complete) for features.\n- Maintain devflow/context/current-feature.md as single living spec.\n";
|
|
83
|
-
try {
|
|
84
|
-
const agentsMdPath = path.join(projectRoot, "AGENTS.md");
|
|
85
|
-
rulesContent = await fs.readFile(agentsMdPath, "utf8");
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
// default rules
|
|
89
|
-
}
|
|
90
|
-
await fs.writeFile(path.join(targetPluginDir, "rules", "nexus-devflow.md"), rulesContent, "utf8");
|
|
91
|
-
// 6. Write README.md
|
|
92
|
-
const readmeContent = `# Nexus-DevFlow Google Antigravity Plugin
|
|
93
|
-
|
|
94
|
-
Version: ${manifest.version}
|
|
95
|
-
|
|
96
|
-
## Included Capabilities
|
|
97
|
-
- **${manifest.skills.length} Specialized Workflow Skills** (in \`skills/\`)
|
|
98
|
-
- **12 Typed MCP Server Tools** (via \`mcp_config.json\`)
|
|
99
|
-
- **Lifecycle Action Hooks** (via \`hooks.json\`)
|
|
100
|
-
- **Core Governance Rules** (via \`rules/nexus-devflow.md\`)
|
|
101
|
-
`;
|
|
102
|
-
await fs.writeFile(path.join(targetPluginDir, "README.md"), readmeContent, "utf8");
|
|
103
|
-
return {
|
|
104
|
-
outDir: targetPluginDir,
|
|
105
|
-
totalSkills: manifest.skills.length,
|
|
106
|
-
manifest
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
export async function installPluginBundle(targetDir, options = {}) {
|
|
110
|
-
const root = options.projectRoot || targetDir;
|
|
111
|
-
const result = await buildAntigravityPluginBundle(root, {
|
|
112
|
-
global: options.global || false
|
|
113
|
-
});
|
|
114
|
-
return {
|
|
115
|
-
installedPath: result.outDir,
|
|
116
|
-
skillCount: result.totalSkills
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
export async function uninstallPluginBundle(targetDir, options = {}) {
|
|
120
|
-
const targetPluginDir = resolvePluginRoot(targetDir, options.global || false);
|
|
121
|
-
try {
|
|
122
|
-
await fs.rm(targetPluginDir, { recursive: true, force: true });
|
|
123
|
-
return { removed: true, targetPath: targetPluginDir };
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
return { removed: false, targetPath: targetPluginDir };
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
export async function readPluginStatus(targetDir, options = {}) {
|
|
130
|
-
const pluginDir = resolvePluginRoot(targetDir, options.global || false);
|
|
131
|
-
try {
|
|
132
|
-
const manifestPath = path.join(pluginDir, "plugin.json");
|
|
133
|
-
const manifestRaw = await fs.readFile(manifestPath, "utf8");
|
|
134
|
-
const manifest = JSON.parse(manifestRaw);
|
|
135
|
-
let hasMcp = false;
|
|
136
|
-
let hasHooks = false;
|
|
137
|
-
try {
|
|
138
|
-
await fs.access(path.join(pluginDir, "mcp_config.json"));
|
|
139
|
-
hasMcp = true;
|
|
140
|
-
}
|
|
141
|
-
catch { /* ignore */ }
|
|
142
|
-
try {
|
|
143
|
-
await fs.access(path.join(pluginDir, "hooks.json"));
|
|
144
|
-
hasHooks = true;
|
|
145
|
-
}
|
|
146
|
-
catch { /* ignore */ }
|
|
147
|
-
return {
|
|
148
|
-
installed: true,
|
|
149
|
-
location: pluginDir,
|
|
150
|
-
version: manifest.version,
|
|
151
|
-
skillCount: manifest.skills?.length || 0,
|
|
152
|
-
hasMcpConfig: hasMcp,
|
|
153
|
-
hasHooks
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
return {
|
|
158
|
-
installed: false,
|
|
159
|
-
location: pluginDir,
|
|
160
|
-
skillCount: 0,
|
|
161
|
-
hasMcpConfig: false,
|
|
162
|
-
hasHooks: false
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
export function formatPluginStatusHuman(status, options = {}) {
|
|
167
|
-
const style = createStyle(options.color);
|
|
168
|
-
if (!status.installed) {
|
|
169
|
-
return `${style.yellow("Nexus-DevFlow Antigravity Plugin is NOT installed")} at:\n ${style.dim(status.location)}\n\nRun ${style.green("nexus-devflow plugin install")} to install in workspace or ${style.green("--global")} for all workspaces.`;
|
|
170
|
-
}
|
|
171
|
-
const lines = [];
|
|
172
|
-
lines.push(style.bold(style.cyan(`[Nexus-DevFlow Google Antigravity Native Plugin v${status.version || "2.1.0"}]`)));
|
|
173
|
-
lines.push(` ${style.dim("Location :")} ${style.bold(status.location)}`);
|
|
174
|
-
lines.push(` ${style.dim("Skills :")} ${style.green(`${status.skillCount} active skills`)}`);
|
|
175
|
-
lines.push(` ${style.dim("MCP Server :")} ${status.hasMcpConfig ? style.green("✔ Configured (mcp_config.json)") : style.red("✖ Missing")}`);
|
|
176
|
-
lines.push(` ${style.dim("Action Hooks:")} ${status.hasHooks ? style.green("✔ Configured (hooks.json)") : style.red("✖ Missing")}`);
|
|
177
|
-
return lines.join("\n");
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=antigravity-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity-plugin.js","sourceRoot":"","sources":["../../lib/antigravity-plugin.ts"],"names":[],"mappings":"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"}
|