project-iris 0.1.1 → 0.2.0
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/extensions/iris-dashboard-0.0.1.vsix +0 -0
- package/flows/aidlc/agents/inception-agent.md +7 -7
- package/flows/aidlc/skills/construction/bolt-replan.md +2 -2
- package/flows/aidlc/skills/construction/bolt-status.md +2 -2
- package/flows/aidlc/skills/master/analyze-context.md +2 -2
- package/flows/aidlc/skills/master/answer-question.md +2 -2
- package/flows/aidlc/skills/master/explain-flow.md +2 -2
- package/flows/aidlc/skills/master/project-init.md +3 -3
- package/flows/aidlc/skills/master/route-request.md +2 -2
- package/flows/aidlc/skills/operations/verify.md +2 -2
- package/lib/installer.js +71 -0
- package/package.json +2 -1
|
Binary file
|
|
@@ -116,25 +116,25 @@ Only stop at designated checkpoints (1-5 above).
|
|
|
116
116
|
## Artifacts Created
|
|
117
117
|
|
|
118
118
|
- **Requirements** → `{intent}/requirements.md`
|
|
119
|
-
Template:
|
|
119
|
+
Template: `.iris/aidlc/templates/inception/requirements-template.md`
|
|
120
120
|
|
|
121
121
|
- **Risks** → `{intent}/risks.md`
|
|
122
|
-
Template:
|
|
122
|
+
Template: `.iris/aidlc/templates/inception/risks-template.md`
|
|
123
123
|
|
|
124
124
|
- **System Context** → `{intent}/system-context.md`
|
|
125
|
-
Template:
|
|
125
|
+
Template: `.iris/aidlc/templates/inception/system-context-template.md`
|
|
126
126
|
|
|
127
127
|
- **Units** → `{intent}/units.md`
|
|
128
|
-
Template:
|
|
128
|
+
Template: `.iris/aidlc/templates/inception/units-template.md`
|
|
129
129
|
|
|
130
130
|
- **Unit Brief** → `{intent}/units/{unit}/unit-brief.md`
|
|
131
|
-
Template:
|
|
131
|
+
Template: `.iris/aidlc/templates/inception/unit-brief-template.md`
|
|
132
132
|
|
|
133
133
|
- **Stories** → `{intent}/units/{unit}/stories/`
|
|
134
|
-
Template:
|
|
134
|
+
Template: `.iris/aidlc/templates/inception/stories-template.md`
|
|
135
135
|
|
|
136
136
|
- **Bolt Instances** → `memory-bank/bolts/bolt-{unit}-{N}/bolt.md`
|
|
137
|
-
Template:
|
|
137
|
+
Template: `.iris/aidlc/templates/construction/bolt-template.md`
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -355,8 +355,8 @@ After splitting 002-auth-service:
|
|
|
355
355
|
|
|
356
356
|
After replanning:
|
|
357
357
|
|
|
358
|
-
- → **Bolt Start** (`.iris/skills/construction/bolt-start.md`) - continue execution
|
|
359
|
-
- → **Bolt Status** (`.iris/skills/construction/bolt-status.md`) - verify changes
|
|
358
|
+
- → **Bolt Start** (`.iris/aidlc/skills/construction/bolt-start.md`) - continue execution
|
|
359
|
+
- → **Bolt Status** (`.iris/aidlc/skills/construction/bolt-status.md`) - verify changes
|
|
360
360
|
- → **Inception Agent** - if major scope change requires new stories
|
|
361
361
|
|
|
362
362
|
---
|
|
@@ -195,8 +195,8 @@ All {n} stories implemented and tested.
|
|
|
195
195
|
|
|
196
196
|
After viewing status:
|
|
197
197
|
|
|
198
|
-
- → **Bolt Start** (`.iris/skills/construction/bolt-start.md`) - continue the bolt
|
|
199
|
-
- → **Bolt List** (`.iris/skills/construction/bolt-list.md`) - view other bolts
|
|
198
|
+
- → **Bolt Start** (`.iris/aidlc/skills/construction/bolt-start.md`) - continue the bolt
|
|
199
|
+
- → **Bolt List** (`.iris/aidlc/skills/construction/bolt-list.md`) - view other bolts
|
|
200
200
|
- → **Operations Agent** - if all bolts for unit are complete
|
|
201
201
|
|
|
202
202
|
---
|
|
@@ -254,8 +254,8 @@ Provide a structured analysis:
|
|
|
254
254
|
|
|
255
255
|
After analysis, either:
|
|
256
256
|
|
|
257
|
-
- → **Route Request** (`.iris/skills/master/route-request.md`) - to direct user to specialist agent
|
|
258
|
-
- → **Answer Question** (`.iris/skills/master/answer-question.md`) - if user has questions about state
|
|
257
|
+
- → **Route Request** (`.iris/aidlc/skills/master/route-request.md`) - to direct user to specialist agent
|
|
258
|
+
- → **Answer Question** (`.iris/aidlc/skills/master/answer-question.md`) - if user has questions about state
|
|
259
259
|
|
|
260
260
|
---
|
|
261
261
|
|
|
@@ -150,8 +150,8 @@ I couldn't find information about "{topic}" in the memory bank.
|
|
|
150
150
|
|
|
151
151
|
After answering:
|
|
152
152
|
|
|
153
|
-
- → **Route Request** (`.iris/skills/master/route-request.md`) - if user wants to take action
|
|
154
|
-
- → **Analyze Context** (`.iris/skills/master/analyze-context.md`) - if user wants overall status
|
|
153
|
+
- → **Route Request** (`.iris/aidlc/skills/master/route-request.md`) - if user wants to take action
|
|
154
|
+
- → **Analyze Context** (`.iris/aidlc/skills/master/analyze-context.md`) - if user wants overall status
|
|
155
155
|
- → Stay in Q&A mode if user has more questions
|
|
156
156
|
|
|
157
157
|
---
|
|
@@ -168,8 +168,8 @@ Provide a tailored explanation based on the user's question:
|
|
|
168
168
|
|
|
169
169
|
After explanation:
|
|
170
170
|
|
|
171
|
-
- → **Route Request** (`.iris/skills/master/route-request.md`) - if user wants to proceed
|
|
172
|
-
- → **Answer Question** (`.iris/skills/master/answer-question.md`) - if user has more questions
|
|
171
|
+
- → **Route Request** (`.iris/aidlc/skills/master/route-request.md`) - if user wants to proceed
|
|
172
|
+
- → **Answer Question** (`.iris/aidlc/skills/master/answer-question.md`) - if user has more questions
|
|
173
173
|
|
|
174
174
|
---
|
|
175
175
|
|
|
@@ -196,7 +196,7 @@ Before creating new standards, check if any exist:
|
|
|
196
196
|
|
|
197
197
|
For each required/recommended standard:
|
|
198
198
|
|
|
199
|
-
1. **Load the facilitation guide** from
|
|
199
|
+
1. **Load the facilitation guide** from `.iris/aidlc/templates/standards/{standard}.guide.md`
|
|
200
200
|
2. **Follow the guide's discovery process** - don't invent your own questions
|
|
201
201
|
3. **Adapt to user expertise** - be concise with experts, explanatory with newcomers
|
|
202
202
|
4. **Confirm before saving** - summarize choices, get approval
|
|
@@ -389,8 +389,8 @@ If trying to create a standard before its dependency:
|
|
|
389
389
|
|
|
390
390
|
After project initialization:
|
|
391
391
|
|
|
392
|
-
- → **Inception Agent** (`.iris/agents/inception-agent.md`) - to create first intent
|
|
393
|
-
- → **Analyze Context** (`.iris/skills/master/analyze-context.md`) - if user wants to see project state
|
|
392
|
+
- → **Inception Agent** (`.iris/aidlc/agents/inception-agent.md`) - to create first intent
|
|
393
|
+
- → **Analyze Context** (`.iris/aidlc/skills/master/analyze-context.md`) - if user wants to see project state
|
|
394
394
|
- → **Project Init** again - to add optional standards later
|
|
395
395
|
|
|
396
396
|
---
|
|
@@ -136,8 +136,8 @@ After routing:
|
|
|
136
136
|
|
|
137
137
|
If user declines routing:
|
|
138
138
|
|
|
139
|
-
- → **Answer Question** (`.iris/skills/master/answer-question.md`) - clarify their needs
|
|
140
|
-
- → **Explain Flow** (`.iris/skills/master/explain-flow.md`) - explain the methodology
|
|
139
|
+
- → **Answer Question** (`.iris/aidlc/skills/master/answer-question.md`) - clarify their needs
|
|
140
|
+
- → **Explain Flow** (`.iris/aidlc/skills/master/explain-flow.md`) - explain the methodology
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
@@ -234,8 +234,8 @@ On failure:
|
|
|
234
234
|
|
|
235
235
|
After verification:
|
|
236
236
|
|
|
237
|
-
- → **Monitor** (`.iris/skills/operations/monitor.md`) - if verified and final environment
|
|
238
|
-
- → **Deploy** (`.iris/skills/operations/deploy.md`) - to next environment if verified
|
|
237
|
+
- → **Monitor** (`.iris/aidlc/skills/operations/monitor.md`) - if verified and final environment
|
|
238
|
+
- → **Deploy** (`.iris/aidlc/skills/operations/deploy.md`) - to next environment if verified
|
|
239
239
|
- → **Rollback** - if verification fails (deploy previous version)
|
|
240
240
|
|
|
241
241
|
---
|
package/lib/installer.js
CHANGED
|
@@ -2,6 +2,7 @@ const fs = require('fs-extra');
|
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const prompts = require('prompts');
|
|
4
4
|
const yaml = require('js-yaml');
|
|
5
|
+
const { execSync } = require('child_process');
|
|
5
6
|
const CLIUtils = require('./cli-utils');
|
|
6
7
|
const InstallerFactory = require('./InstallerFactory');
|
|
7
8
|
const { FLOWS } = require('./constants');
|
|
@@ -67,6 +68,73 @@ async function detectTools() {
|
|
|
67
68
|
return detected;
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
// VS Code-based tools that can use the iris Dashboard extension
|
|
72
|
+
const VSCODE_TOOLS = ['claude', 'cursor', 'copilot', 'windsurf', 'cline', 'roo', 'antigravity'];
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Install VS Code extension if any VS Code-based tool is selected
|
|
76
|
+
* @param {string[]} selectedToolKeys - Selected tool keys
|
|
77
|
+
* @returns {boolean} Whether extension was installed
|
|
78
|
+
*/
|
|
79
|
+
async function installVSCodeExtension(selectedToolKeys) {
|
|
80
|
+
// Check if any VS Code-based tool is selected
|
|
81
|
+
const hasVSCodeTool = selectedToolKeys.some(key => VSCODE_TOOLS.includes(key));
|
|
82
|
+
if (!hasVSCodeTool) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const extensionPath = path.join(__dirname, '..', 'extensions', 'iris-dashboard-0.0.1.vsix');
|
|
87
|
+
|
|
88
|
+
// Check if extension file exists
|
|
89
|
+
if (!await fs.pathExists(extensionPath)) {
|
|
90
|
+
console.log(theme.dim(' VS Code extension not found, skipping...'));
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
console.log(theme.dim(' Installing iris Dashboard VS Code extension...'));
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
// Try 'code' command first (VS Code), then 'cursor' for Cursor
|
|
98
|
+
let installed = false;
|
|
99
|
+
|
|
100
|
+
// Try VS Code
|
|
101
|
+
try {
|
|
102
|
+
execSync(`code --install-extension "${extensionPath}" --force`, {
|
|
103
|
+
stdio: 'pipe',
|
|
104
|
+
timeout: 30000
|
|
105
|
+
});
|
|
106
|
+
installed = true;
|
|
107
|
+
CLIUtils.displayStatus('', 'Installed iris Dashboard extension for VS Code', 'success');
|
|
108
|
+
} catch {
|
|
109
|
+
// VS Code not available or failed
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Try Cursor if selected
|
|
113
|
+
if (selectedToolKeys.includes('cursor')) {
|
|
114
|
+
try {
|
|
115
|
+
execSync(`cursor --install-extension "${extensionPath}" --force`, {
|
|
116
|
+
stdio: 'pipe',
|
|
117
|
+
timeout: 30000
|
|
118
|
+
});
|
|
119
|
+
installed = true;
|
|
120
|
+
CLIUtils.displayStatus('', 'Installed iris Dashboard extension for Cursor', 'success');
|
|
121
|
+
} catch {
|
|
122
|
+
// Cursor not available or failed
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (!installed) {
|
|
127
|
+
console.log(theme.dim(' Could not auto-install extension. Install manually:'));
|
|
128
|
+
console.log(theme.dim(` code --install-extension "${extensionPath}"`));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return installed;
|
|
132
|
+
} catch (error) {
|
|
133
|
+
console.log(theme.dim(` Extension install skipped: ${error.message}`));
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
70
138
|
async function install() {
|
|
71
139
|
// Initialize analytics (respects opt-out env vars)
|
|
72
140
|
analytics.init();
|
|
@@ -153,6 +221,9 @@ async function install() {
|
|
|
153
221
|
try {
|
|
154
222
|
const filesCreated = await installFlow(selectedFlow, selectedToolKeys);
|
|
155
223
|
|
|
224
|
+
// Install VS Code extension if applicable
|
|
225
|
+
await installVSCodeExtension(selectedToolKeys);
|
|
226
|
+
|
|
156
227
|
// Track successful installation for each tool
|
|
157
228
|
const durationMs = Date.now() - installStartTime;
|
|
158
229
|
for (const toolKey of selectedToolKeys) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "project-iris",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
|
|
5
5
|
"main": "lib/installer.js",
|
|
6
6
|
"bin": {
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
36
|
"bin/",
|
|
37
|
+
"extensions/",
|
|
37
38
|
"flows/",
|
|
38
39
|
"lib/",
|
|
39
40
|
"scripts/",
|