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.
@@ -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: `templates/inception/requirements-template.md`
119
+ Template: `.iris/aidlc/templates/inception/requirements-template.md`
120
120
 
121
121
  - **Risks** → `{intent}/risks.md`
122
- Template: `templates/inception/risks-template.md`
122
+ Template: `.iris/aidlc/templates/inception/risks-template.md`
123
123
 
124
124
  - **System Context** → `{intent}/system-context.md`
125
- Template: `templates/inception/system-context-template.md`
125
+ Template: `.iris/aidlc/templates/inception/system-context-template.md`
126
126
 
127
127
  - **Units** → `{intent}/units.md`
128
- Template: `templates/inception/units-template.md`
128
+ Template: `.iris/aidlc/templates/inception/units-template.md`
129
129
 
130
130
  - **Unit Brief** → `{intent}/units/{unit}/unit-brief.md`
131
- Template: `templates/inception/unit-brief-template.md`
131
+ Template: `.iris/aidlc/templates/inception/unit-brief-template.md`
132
132
 
133
133
  - **Stories** → `{intent}/units/{unit}/stories/`
134
- Template: `templates/inception/stories-template.md`
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: `templates/construction/bolt-template.md`
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 `templates/standards/{standard}.guide.md`
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.1.1",
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/",