@claude-collective/cli 0.6.0 → 0.8.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/CHANGELOG.md +65 -0
- package/dist/{chunk-D4IQAT27.js → chunk-3HBTELJN.js} +2 -2
- package/dist/{chunk-6ESUJMM7.js → chunk-3ZCB5K33.js} +3 -3
- package/dist/chunk-66UDJBF6.js +96 -0
- package/dist/chunk-66UDJBF6.js.map +1 -0
- package/dist/chunk-6LS7XO3H.js +31 -0
- package/dist/chunk-6LS7XO3H.js.map +1 -0
- package/dist/{chunk-SJYG4EJZ.js → chunk-A3J6IAXK.js} +7 -7
- package/dist/{chunk-SJYG4EJZ.js.map → chunk-A3J6IAXK.js.map} +1 -1
- package/dist/chunk-A65SBAAJ.js +69 -0
- package/dist/chunk-A65SBAAJ.js.map +1 -0
- package/dist/chunk-ALEPJ6YN.js +80 -0
- package/dist/chunk-ALEPJ6YN.js.map +1 -0
- package/dist/{chunk-367K3JB3.js → chunk-C4ZTIYFR.js} +3 -3
- package/dist/{chunk-FKU7VSUD.js → chunk-CIY5UBRB.js} +2 -2
- package/dist/{chunk-6WEQADPL.js → chunk-DKGL77IY.js} +4 -4
- package/dist/chunk-ED73HCW2.js +315 -0
- package/dist/chunk-ED73HCW2.js.map +1 -0
- package/dist/{chunk-URDV4OCP.js → chunk-FNOYEXUE.js} +5 -5
- package/dist/{chunk-OSQDDJXX.js → chunk-G2FBJOZG.js} +2 -7
- package/dist/chunk-G2FBJOZG.js.map +1 -0
- package/dist/chunk-HNDT5QRB.js +120 -0
- package/dist/chunk-HNDT5QRB.js.map +1 -0
- package/dist/chunk-K7PTOVX4.js +158 -0
- package/dist/chunk-K7PTOVX4.js.map +1 -0
- package/dist/{chunk-AU7XVCLO.js → chunk-LQTST4WY.js} +2 -2
- package/dist/chunk-LVKRVFYR.js +54 -0
- package/dist/chunk-LVKRVFYR.js.map +1 -0
- package/dist/{chunk-ZSKHDU5P.js → chunk-NGBFJJ7Q.js} +2 -2
- package/dist/{chunk-UNHCZRO4.js → chunk-OLBOTK3O.js} +2 -2
- package/dist/chunk-PPNTD5LO.js +330 -0
- package/dist/chunk-PPNTD5LO.js.map +1 -0
- package/dist/{chunk-UFWNMW3G.js → chunk-Q2LH2DAB.js} +5 -5
- package/dist/{chunk-AZP2AA5M.js → chunk-Q6DR5QUH.js} +206 -84
- package/dist/chunk-Q6DR5QUH.js.map +1 -0
- package/dist/{chunk-JMQGWQZU.js → chunk-QGGSLMO3.js} +3 -3
- package/dist/chunk-QGGSLMO3.js.map +1 -0
- package/dist/{chunk-J2Y4A3LP.js → chunk-SEBPPFUW.js} +2 -2
- package/dist/chunk-SEBPPFUW.js.map +1 -0
- package/dist/chunk-UOWHJ6BE.js +83 -0
- package/dist/chunk-UOWHJ6BE.js.map +1 -0
- package/dist/{chunk-ZDQIUHAM.js → chunk-XKEG3SCV.js} +13 -16
- package/dist/chunk-XKEG3SCV.js.map +1 -0
- package/dist/chunk-XY3XDVMI.js +15599 -0
- package/dist/chunk-XY3XDVMI.js.map +1 -0
- package/dist/chunk-Y3V43XCU.js +76 -0
- package/dist/chunk-Y3V43XCU.js.map +1 -0
- package/dist/{chunk-TFV6Z7F7.js → chunk-YKXBGCFD.js} +4 -4
- package/dist/commands/build/marketplace.js +11 -52
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +11 -49
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +7 -7
- package/dist/commands/compile.js +10 -10
- package/dist/commands/diff.js +4 -4
- package/dist/commands/doctor.js +4 -4
- package/dist/commands/edit.js +24 -23
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +2 -2
- package/dist/commands/info.js +4 -4
- package/dist/commands/init.js +20 -19
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +4 -4
- package/dist/commands/new/agent.js +2 -2
- package/dist/commands/new/skill.js +1 -1
- package/dist/commands/outdated.js +4 -4
- package/dist/commands/search.js +4 -4
- package/dist/commands/test-imports.js +9 -9
- package/dist/commands/uninstall.js +15 -8
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +12 -12
- package/dist/commands/validate.js +2 -2
- package/dist/commands/version/bump.js +2 -2
- package/dist/commands/version/index.js +2 -2
- package/dist/commands/version/set.js +1 -1
- package/dist/commands/version/show.js +2 -2
- package/dist/components/wizard/category-grid.js +9 -0
- package/dist/components/wizard/category-grid.test.js +728 -0
- package/dist/components/wizard/category-grid.test.js.map +1 -0
- package/dist/components/wizard/section-progress.js +9 -0
- package/dist/components/wizard/section-progress.test.js +281 -0
- package/dist/components/wizard/section-progress.test.js.map +1 -0
- package/dist/components/wizard/step-approach.js +3 -3
- package/dist/components/wizard/step-build.js +15 -0
- package/dist/components/wizard/step-build.test.js +729 -0
- package/dist/components/wizard/step-build.test.js.map +1 -0
- package/dist/components/wizard/step-confirm.js +1 -4
- package/dist/components/wizard/step-refine.js +9 -0
- package/dist/components/wizard/step-refine.js.map +1 -0
- package/dist/components/wizard/step-refine.test.js +235 -0
- package/dist/components/wizard/step-refine.test.js.map +1 -0
- package/dist/components/wizard/step-stack-options.js +11 -0
- package/dist/components/wizard/step-stack-options.js.map +1 -0
- package/dist/components/wizard/step-stack.js +3 -3
- package/dist/components/wizard/wizard-tabs.js +11 -0
- package/dist/components/wizard/wizard-tabs.js.map +1 -0
- package/dist/components/wizard/wizard.js +12 -11
- package/dist/stores/wizard-store.js +2 -2
- package/dist/stores/wizard-store.test.js +249 -15835
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6OY6ZYQF.js +0 -93
- package/dist/chunk-6OY6ZYQF.js.map +0 -1
- package/dist/chunk-AZP2AA5M.js.map +0 -1
- package/dist/chunk-J2Y4A3LP.js.map +0 -1
- package/dist/chunk-JMQGWQZU.js.map +0 -1
- package/dist/chunk-JY4RO76L.js +0 -73
- package/dist/chunk-JY4RO76L.js.map +0 -1
- package/dist/chunk-OSQDDJXX.js.map +0 -1
- package/dist/chunk-TD643KB3.js +0 -245
- package/dist/chunk-TD643KB3.js.map +0 -1
- package/dist/chunk-TGOHJCQ4.js +0 -83
- package/dist/chunk-TGOHJCQ4.js.map +0 -1
- package/dist/chunk-YI6JVSFO.js +0 -43
- package/dist/chunk-YI6JVSFO.js.map +0 -1
- package/dist/chunk-YNSNRR5D.js +0 -184
- package/dist/chunk-YNSNRR5D.js.map +0 -1
- package/dist/chunk-Z6DLWTBY.js +0 -46
- package/dist/chunk-Z6DLWTBY.js.map +0 -1
- package/dist/chunk-ZDQIUHAM.js.map +0 -1
- package/dist/components/wizard/selection-header.js +0 -11
- package/dist/components/wizard/step-category.js +0 -12
- package/dist/components/wizard/step-subcategory.js +0 -13
- /package/dist/{chunk-D4IQAT27.js.map → chunk-3HBTELJN.js.map} +0 -0
- /package/dist/{chunk-6ESUJMM7.js.map → chunk-3ZCB5K33.js.map} +0 -0
- /package/dist/{chunk-367K3JB3.js.map → chunk-C4ZTIYFR.js.map} +0 -0
- /package/dist/{chunk-FKU7VSUD.js.map → chunk-CIY5UBRB.js.map} +0 -0
- /package/dist/{chunk-6WEQADPL.js.map → chunk-DKGL77IY.js.map} +0 -0
- /package/dist/{chunk-URDV4OCP.js.map → chunk-FNOYEXUE.js.map} +0 -0
- /package/dist/{chunk-AU7XVCLO.js.map → chunk-LQTST4WY.js.map} +0 -0
- /package/dist/{chunk-ZSKHDU5P.js.map → chunk-NGBFJJ7Q.js.map} +0 -0
- /package/dist/{chunk-UNHCZRO4.js.map → chunk-OLBOTK3O.js.map} +0 -0
- /package/dist/{chunk-UFWNMW3G.js.map → chunk-Q2LH2DAB.js.map} +0 -0
- /package/dist/{chunk-TFV6Z7F7.js.map → chunk-YKXBGCFD.js.map} +0 -0
- /package/dist/components/wizard/{selection-header.js.map → category-grid.js.map} +0 -0
- /package/dist/components/wizard/{step-category.js.map → section-progress.js.map} +0 -0
- /package/dist/components/wizard/{step-subcategory.js.map → step-build.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,71 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.8.0] - 2026-02-02
|
|
9
|
+
|
|
10
|
+
### Breaking Changes
|
|
11
|
+
|
|
12
|
+
- **Skill IDs normalized to kebab-case** - Skill IDs changed from path-based format with author suffix (e.g., `web/framework/react (@vince)`) to simple kebab-case (e.g., `web-framework-react`). Consumer configs and any code referencing old skill IDs must be updated.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **Meta-stack** - New stack for meta-level development with 5 agents (skill-summoner, agent-summoner, documentor, pattern-scout, web-pattern-critique) mapped to methodology and research skills.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- `skill_aliases` in skills-matrix.yaml now map to normalized kebab-case IDs
|
|
21
|
+
- `DEFAULT_PRESELECTED_SKILLS` updated to use new ID format
|
|
22
|
+
- Simplified `skill-copier.ts`, `skill-plugin-compiler.ts`, `marketplace-generator.ts` - removed path parsing logic
|
|
23
|
+
|
|
24
|
+
### Removed
|
|
25
|
+
|
|
26
|
+
- `normalizeSkillId()` function - no longer needed since frontmatter contains canonical IDs
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- **Uninstall command terminal state** - Added proper `exit()` calls to restore terminal after confirmation
|
|
31
|
+
|
|
32
|
+
[0.8.0]: https://github.com/claude-collective/cli/releases/tag/v0.8.0
|
|
33
|
+
|
|
34
|
+
## [0.7.0] - 2026-02-02
|
|
35
|
+
|
|
36
|
+
### Breaking Changes
|
|
37
|
+
|
|
38
|
+
- **Wizard flow redesigned** - New 5-step flow: Approach → Stack → Build → Refine → Confirm. The old category → subcategory linear flow is replaced with domain-based grid selection.
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- **Domain-based navigation** - Categories now have a `domain` field (web, api, cli, mobile, shared) for filtering in the Build step
|
|
43
|
+
- **CategoryGrid component** - 2D grid selection with keyboard navigation (arrows, vim keys h/j/k/l), visual states (selected, recommended, discouraged, disabled)
|
|
44
|
+
- **WizardTabs component** - Horizontal 5-step progress indicator with completed/current/pending/skipped states
|
|
45
|
+
- **SectionProgress component** - Sub-step progress for multi-domain flows
|
|
46
|
+
- **StepBuild component** - Grid-based technology selection per domain, replaces linear category/subcategory flow
|
|
47
|
+
- **StepRefine component** - Skill source selection (verified skills, customize coming soon)
|
|
48
|
+
- **StepStackOptions component** - Options after stack selection (continue defaults or customize)
|
|
49
|
+
- **CLI domain support** - New `cli` category in skills-matrix with framework, prompts, testing subcategories
|
|
50
|
+
- **Wizard store v2** - Complete rewrite with history-based navigation, domain selections, grid focus state
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
|
|
54
|
+
- `wizard.tsx` - Complete rewrite as orchestrator for new 5-step flow
|
|
55
|
+
- `step-approach.tsx` - Updated for v2 store
|
|
56
|
+
- `step-stack.tsx` - Now dual-purpose: stack selection (stack path) or domain selection (scratch path)
|
|
57
|
+
- `step-confirm.tsx` - Updated to show domain breakdown, technology/skill counts
|
|
58
|
+
- `wizard-store.ts` - Migrated to v2 state shape with approach, selectedDomains, domainSelections, stackAction, focusedRow/Col
|
|
59
|
+
|
|
60
|
+
### Removed
|
|
61
|
+
|
|
62
|
+
- `step-category.tsx` - Replaced by StepBuild with CategoryGrid
|
|
63
|
+
- `step-subcategory.tsx` - Replaced by StepBuild with CategoryGrid
|
|
64
|
+
- `selection-header.tsx` - No longer needed
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
|
|
68
|
+
- **Skill resolution for stack defaults** - Selecting a stack with "Continue with defaults" now correctly includes all stack skills (was only including methodology skills)
|
|
69
|
+
- **Display names in Build step** - Technologies now show clean names ("React") instead of full IDs ("React (@vince)")
|
|
70
|
+
|
|
71
|
+
[0.7.0]: https://github.com/claude-collective/cli/releases/tag/v0.7.0
|
|
72
|
+
|
|
8
73
|
## [0.6.0] - 2026-02-01
|
|
9
74
|
|
|
10
75
|
### Breaking Changes
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
PLUGINS_SUBDIR,
|
|
5
5
|
PLUGIN_MANIFEST_DIR,
|
|
6
6
|
PLUGIN_MANIFEST_FILE
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-A3J6IAXK.js";
|
|
8
8
|
import {
|
|
9
9
|
verbose
|
|
10
10
|
} from "./chunk-TOPAIL5W.js";
|
|
@@ -111,4 +111,4 @@ export {
|
|
|
111
111
|
readPluginManifest,
|
|
112
112
|
getPluginSkillIds
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-3HBTELJN.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-MYAVQ23U.js";
|
|
5
5
|
import {
|
|
6
6
|
getCollectivePluginDir
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3HBTELJN.js";
|
|
8
8
|
import {
|
|
9
9
|
CLAUDE_DIR
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-A3J6IAXK.js";
|
|
11
11
|
import {
|
|
12
12
|
directoryExists,
|
|
13
13
|
fileExists
|
|
@@ -51,4 +51,4 @@ async function detectInstallation(projectDir = process.cwd()) {
|
|
|
51
51
|
export {
|
|
52
52
|
detectInstallation
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-3ZCB5K33.js.map
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-DHET7RCE.js";
|
|
5
|
+
|
|
6
|
+
// node_modules/ink-testing-library/build/index.js
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
import { EventEmitter } from "events";
|
|
9
|
+
import { render as inkRender } from "ink";
|
|
10
|
+
var Stdout = class extends EventEmitter {
|
|
11
|
+
get columns() {
|
|
12
|
+
return 100;
|
|
13
|
+
}
|
|
14
|
+
frames = [];
|
|
15
|
+
_lastFrame;
|
|
16
|
+
write = (frame) => {
|
|
17
|
+
this.frames.push(frame);
|
|
18
|
+
this._lastFrame = frame;
|
|
19
|
+
};
|
|
20
|
+
lastFrame = () => this._lastFrame;
|
|
21
|
+
};
|
|
22
|
+
var Stderr = class extends EventEmitter {
|
|
23
|
+
frames = [];
|
|
24
|
+
_lastFrame;
|
|
25
|
+
write = (frame) => {
|
|
26
|
+
this.frames.push(frame);
|
|
27
|
+
this._lastFrame = frame;
|
|
28
|
+
};
|
|
29
|
+
lastFrame = () => this._lastFrame;
|
|
30
|
+
};
|
|
31
|
+
var Stdin = class extends EventEmitter {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
33
|
+
isTTY = true;
|
|
34
|
+
data = null;
|
|
35
|
+
// eslint-disable-line @typescript-eslint/ban-types
|
|
36
|
+
constructor(options = {}) {
|
|
37
|
+
super();
|
|
38
|
+
this.isTTY = options.isTTY ?? true;
|
|
39
|
+
}
|
|
40
|
+
write = (data) => {
|
|
41
|
+
this.data = data;
|
|
42
|
+
this.emit("readable");
|
|
43
|
+
this.emit("data", data);
|
|
44
|
+
};
|
|
45
|
+
setEncoding() {
|
|
46
|
+
}
|
|
47
|
+
setRawMode() {
|
|
48
|
+
}
|
|
49
|
+
resume() {
|
|
50
|
+
}
|
|
51
|
+
pause() {
|
|
52
|
+
}
|
|
53
|
+
ref() {
|
|
54
|
+
}
|
|
55
|
+
unref() {
|
|
56
|
+
}
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
58
|
+
read = () => {
|
|
59
|
+
const { data } = this;
|
|
60
|
+
this.data = null;
|
|
61
|
+
return data;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
var instances = [];
|
|
65
|
+
var render = (tree) => {
|
|
66
|
+
const stdout = new Stdout();
|
|
67
|
+
const stderr = new Stderr();
|
|
68
|
+
const stdin = new Stdin();
|
|
69
|
+
const instance = inkRender(tree, {
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
71
|
+
stdout,
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
73
|
+
stderr,
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
75
|
+
stdin,
|
|
76
|
+
debug: true,
|
|
77
|
+
exitOnCtrlC: false,
|
|
78
|
+
patchConsole: false
|
|
79
|
+
});
|
|
80
|
+
instances.push(instance);
|
|
81
|
+
return {
|
|
82
|
+
rerender: instance.rerender,
|
|
83
|
+
unmount: instance.unmount,
|
|
84
|
+
cleanup: instance.cleanup,
|
|
85
|
+
stdout,
|
|
86
|
+
stderr,
|
|
87
|
+
stdin,
|
|
88
|
+
frames: stdout.frames,
|
|
89
|
+
lastFrame: stdout.lastFrame
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export {
|
|
94
|
+
render
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=chunk-66UDJBF6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/ink-testing-library/source/index.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;SAAQ,oBAAmB;AAC3B,SAAQ,UAAU,iBAA8C;AAGhE,IAAM,SAAN,cAAqB,aAAY;EAChC,IAAI,UAAO;AACV,WAAO;EACR;EAES,SAAmB,CAAA;EACpB;EAER,QAAQ,CAAC,UAAiB;AACzB,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa;EACnB;EAEA,YAAY,MAAM,KAAK;;AAGxB,IAAM,SAAN,cAAqB,aAAY;EACvB,SAAmB,CAAA;EACpB;EAER,QAAQ,CAAC,UAAiB;AACzB,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa;EACnB;EAEA,YAAY,MAAM,KAAK;;AAGxB,IAAM,QAAN,cAAoB,aAAY;;EAE/B,QAAQ;EACR,OAAsB;;EACtB,YAAY,UAA6B,CAAA,GAAE;AAC1C,UAAK;AACL,SAAK,QAAQ,QAAQ,SAAS;EAC/B;EAEA,QAAQ,CAAC,SAAgB;AACxB,SAAK,OAAO;AACZ,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,QAAQ,IAAI;EACvB;EAEA,cAAW;EAEX;EAEA,aAAU;EAEV;EAEA,SAAM;EAEN;EAEA,QAAK;EAEL;EAEA,MAAG;EAEH;EAEA,QAAK;EAEL;;EAGA,OAA4B,MAAK;AAChC,UAAM,EAAC,KAAI,IAAI;AACf,SAAK,OAAO;AACZ,WAAO;EACR;;AAcD,IAAM,YAA2B,CAAA;AAE1B,IAAM,SAAS,CAAC,SAAgC;AACtD,QAAM,SAAS,IAAI,OAAM;AACzB,QAAM,SAAS,IAAI,OAAM;AACzB,QAAM,QAAQ,IAAI,MAAK;AAEvB,QAAM,WAAW,UAAU,MAAM;;IAEhC;;IAEA;;IAEA;IACA,OAAO;IACP,aAAa;IACb,cAAc;GACd;AAED,YAAU,KAAK,QAAQ;AAEvB,SAAO;IACN,UAAU,SAAS;IACnB,SAAS,SAAS;IAClB,SAAS,SAAS;IAClB;IACA;IACA;IACA,QAAQ,OAAO;IACf,WAAW,OAAO;;AAEpB;","names":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-DHET7RCE.js";
|
|
5
|
+
|
|
6
|
+
// src/cli-v2/lib/__tests__/test-constants.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
var ARROW_UP = "\x1B[A";
|
|
9
|
+
var ARROW_DOWN = "\x1B[B";
|
|
10
|
+
var ARROW_LEFT = "\x1B[D";
|
|
11
|
+
var ARROW_RIGHT = "\x1B[C";
|
|
12
|
+
var ENTER = "\r";
|
|
13
|
+
var ESCAPE = "\x1B";
|
|
14
|
+
var TAB = " ";
|
|
15
|
+
var INPUT_DELAY_MS = 50;
|
|
16
|
+
var RENDER_DELAY_MS = 100;
|
|
17
|
+
var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
ARROW_UP,
|
|
21
|
+
ARROW_DOWN,
|
|
22
|
+
ARROW_LEFT,
|
|
23
|
+
ARROW_RIGHT,
|
|
24
|
+
ENTER,
|
|
25
|
+
ESCAPE,
|
|
26
|
+
TAB,
|
|
27
|
+
INPUT_DELAY_MS,
|
|
28
|
+
RENDER_DELAY_MS,
|
|
29
|
+
delay
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=chunk-6LS7XO3H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli-v2/lib/__tests__/test-constants.ts"],"sourcesContent":["/**\n * Shared test constants for CLI tests.\n *\n * Contains keyboard escape sequences and timing constants for ink-testing-library tests.\n */\n\n// =============================================================================\n// Keyboard Escape Sequences\n// =============================================================================\n\n/** Arrow Up key escape sequence */\nexport const ARROW_UP = \"\\x1B[A\";\n\n/** Arrow Down key escape sequence */\nexport const ARROW_DOWN = \"\\x1B[B\";\n\n/** Arrow Left key escape sequence */\nexport const ARROW_LEFT = \"\\x1B[D\";\n\n/** Arrow Right key escape sequence */\nexport const ARROW_RIGHT = \"\\x1B[C\";\n\n/** Enter key */\nexport const ENTER = \"\\r\";\n\n/** Escape key */\nexport const ESCAPE = \"\\x1B\";\n\n/** Ctrl+C key */\nexport const CTRL_C = \"\\x03\";\n\n/** Tab key */\nexport const TAB = \"\\t\";\n\n/** Backspace key */\nexport const BACKSPACE = \"\\x7F\";\n\n/** Letter Y for ConfirmInput */\nexport const KEY_Y = \"y\";\n\n/** Letter N for ConfirmInput */\nexport const KEY_N = \"n\";\n\n// =============================================================================\n// Timing Constants\n// =============================================================================\n\n/** Delay after keyboard input to allow terminal to process (ms) */\nexport const INPUT_DELAY_MS = 50;\n\n/** Delay for render/rerender operations (ms) */\nexport const RENDER_DELAY_MS = 100;\n\n/** Delay for complex multi-step operations (ms) */\nexport const OPERATION_DELAY_MS = 150;\n\n// =============================================================================\n// Test Utilities\n// =============================================================================\n\n/**\n * Create a delay promise for async tests.\n *\n * @param ms - Milliseconds to wait\n * @returns Promise that resolves after the delay\n */\nexport const delay = (ms: number): Promise<void> =>\n new Promise((resolve) => setTimeout(resolve, ms));\n"],"mappings":";;;;;;AAAA;AAWO,IAAM,WAAW;AAGjB,IAAM,aAAa;AAGnB,IAAM,aAAa;AAGnB,IAAM,cAAc;AAGpB,IAAM,QAAQ;AAGd,IAAM,SAAS;AAMf,IAAM,MAAM;AAgBZ,IAAM,iBAAiB;AAGvB,IAAM,kBAAkB;AAexB,IAAM,QAAQ,CAAC,OACpB,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;","names":[]}
|
|
@@ -31,12 +31,12 @@ var DIRS = {
|
|
|
31
31
|
var DEFAULT_VERSION = "1.0.0";
|
|
32
32
|
var DEFAULT_DISPLAY_VERSION = "0.0.0";
|
|
33
33
|
var DEFAULT_PRESELECTED_SKILLS = [
|
|
34
|
-
"meta
|
|
35
|
-
"meta
|
|
36
|
-
"meta
|
|
37
|
-
"meta
|
|
38
|
-
"meta
|
|
39
|
-
"meta
|
|
34
|
+
"meta-methodology-anti-over-engineering",
|
|
35
|
+
"meta-methodology-context-management",
|
|
36
|
+
"meta-methodology-improvement-protocol",
|
|
37
|
+
"meta-methodology-investigation-requirements",
|
|
38
|
+
"meta-methodology-success-criteria",
|
|
39
|
+
"meta-methodology-write-verification"
|
|
40
40
|
];
|
|
41
41
|
|
|
42
42
|
export {
|
|
@@ -54,4 +54,4 @@ export {
|
|
|
54
54
|
DEFAULT_DISPLAY_VERSION,
|
|
55
55
|
DEFAULT_PRESELECTED_SKILLS
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=chunk-
|
|
57
|
+
//# sourceMappingURL=chunk-A3J6IAXK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli-v2/consts.ts"],"sourcesContent":["import path from \"path\";\nimport os from \"os\";\nimport { fileURLToPath } from \"url\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// After tsup build, dist/ is flat, so we go up one level from dist/ to get CLI root\n// In development (src/cli-v2/consts.ts), we go up two levels\nconst isInDist = __dirname.includes(\"/dist\");\nexport const CLI_ROOT = isInDist\n ? path.resolve(__dirname, \"..\")\n : path.resolve(__dirname, \"../..\");\nexport const PROJECT_ROOT = CLI_ROOT;\n\nexport const OUTPUT_DIR = \".claude\";\nexport const GITHUB_REPO = \"claude-collective/skills\";\nexport const DEFAULT_MATRIX_PATH = \"src/config/skills-matrix.yaml\";\n\nexport const PLUGIN_NAME = \"claude-collective\";\n\nexport const CLAUDE_DIR = \".claude\";\nexport const PLUGINS_SUBDIR = \"plugins\";\nexport const PLUGIN_MANIFEST_DIR = \".claude-plugin\";\nexport const PLUGIN_MANIFEST_FILE = \"plugin.json\";\n\nexport const CACHE_DIR = path.join(os.homedir(), \".cache\", \"claude-collective\");\n\nexport const SKILLS_MATRIX_PATH = \"config/skills-matrix.yaml\";\nexport const SKILLS_DIR_PATH = \"src/skills\";\nexport const LOCAL_SKILLS_PATH = \".claude/skills\";\n\nexport const DIRS = {\n agents: \"src/agents\",\n skills: \"src/skills\",\n stacks: \"src/stacks\",\n templates: \"src/agents/_templates\",\n commands: \"src/commands\",\n} as const;\n\nexport const DEFAULT_VERSION = \"1.0.0\";\n\n/** Uses \"0.0.0\" to clearly indicate \"no version was explicitly set\" */\nexport const DEFAULT_DISPLAY_VERSION = \"0.0.0\";\n\n/**\n * Skills that are preselected by default in the wizard.\n * These are foundational methodology skills that apply to all projects.\n */\nexport const DEFAULT_PRESELECTED_SKILLS = [\n \"meta
|
|
1
|
+
{"version":3,"sources":["../src/cli-v2/consts.ts"],"sourcesContent":["import path from \"path\";\nimport os from \"os\";\nimport { fileURLToPath } from \"url\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// After tsup build, dist/ is flat, so we go up one level from dist/ to get CLI root\n// In development (src/cli-v2/consts.ts), we go up two levels\nconst isInDist = __dirname.includes(\"/dist\");\nexport const CLI_ROOT = isInDist\n ? path.resolve(__dirname, \"..\")\n : path.resolve(__dirname, \"../..\");\nexport const PROJECT_ROOT = CLI_ROOT;\n\nexport const OUTPUT_DIR = \".claude\";\nexport const GITHUB_REPO = \"claude-collective/skills\";\nexport const DEFAULT_MATRIX_PATH = \"src/config/skills-matrix.yaml\";\n\nexport const PLUGIN_NAME = \"claude-collective\";\n\nexport const CLAUDE_DIR = \".claude\";\nexport const PLUGINS_SUBDIR = \"plugins\";\nexport const PLUGIN_MANIFEST_DIR = \".claude-plugin\";\nexport const PLUGIN_MANIFEST_FILE = \"plugin.json\";\n\nexport const CACHE_DIR = path.join(os.homedir(), \".cache\", \"claude-collective\");\n\nexport const SKILLS_MATRIX_PATH = \"config/skills-matrix.yaml\";\nexport const SKILLS_DIR_PATH = \"src/skills\";\nexport const LOCAL_SKILLS_PATH = \".claude/skills\";\n\nexport const DIRS = {\n agents: \"src/agents\",\n skills: \"src/skills\",\n stacks: \"src/stacks\",\n templates: \"src/agents/_templates\",\n commands: \"src/commands\",\n} as const;\n\nexport const DEFAULT_VERSION = \"1.0.0\";\n\n/** Uses \"0.0.0\" to clearly indicate \"no version was explicitly set\" */\nexport const DEFAULT_DISPLAY_VERSION = \"0.0.0\";\n\n/**\n * Skills that are preselected by default in the wizard.\n * These are foundational methodology skills that apply to all projects.\n *\n * Note: Skill IDs are in normalized kebab-case format (no author suffix, slashes replaced with dashes).\n */\nexport const DEFAULT_PRESELECTED_SKILLS = [\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-context-management\",\n \"meta-methodology-improvement-protocol\",\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-success-criteria\",\n \"meta-methodology-write-verification\",\n] as const;\n"],"mappings":";;;;;;AAAA;AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAE9B,IAAM,aAAa,cAAc,YAAY,GAAG;AAChD,IAAM,YAAY,KAAK,QAAQ,UAAU;AAIzC,IAAM,WAAW,UAAU,SAAS,OAAO;AACpC,IAAM,WAAW,WACpB,KAAK,QAAQ,WAAW,IAAI,IAC5B,KAAK,QAAQ,WAAW,OAAO;AAC5B,IAAM,eAAe;AAQrB,IAAM,aAAa;AACnB,IAAM,iBAAiB;AACvB,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAE7B,IAAM,YAAY,KAAK,KAAK,GAAG,QAAQ,GAAG,UAAU,mBAAmB;AAEvE,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAE1B,IAAM,OAAO;AAAA,EAClB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,UAAU;AACZ;AAEO,IAAM,kBAAkB;AAGxB,IAAM,0BAA0B;AAQhC,IAAM,6BAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
useWizardStore
|
|
4
|
+
} from "./chunk-K7PTOVX4.js";
|
|
5
|
+
import {
|
|
6
|
+
init_esm_shims
|
|
7
|
+
} from "./chunk-DHET7RCE.js";
|
|
8
|
+
|
|
9
|
+
// src/cli-v2/components/wizard/step-stack-options.tsx
|
|
10
|
+
init_esm_shims();
|
|
11
|
+
import { Box, Text } from "ink";
|
|
12
|
+
import { Select } from "@inkjs/ui";
|
|
13
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
+
var BACK_VALUE = "_back";
|
|
15
|
+
var DEFAULTS_VALUE = "defaults";
|
|
16
|
+
var CUSTOMIZE_VALUE = "customize";
|
|
17
|
+
var StepStackOptions = ({
|
|
18
|
+
stackName,
|
|
19
|
+
technologyCount
|
|
20
|
+
}) => {
|
|
21
|
+
const { setStep, setStackAction, goBack } = useWizardStore();
|
|
22
|
+
const options = [
|
|
23
|
+
{ value: BACK_VALUE, label: "\u2190 Back" },
|
|
24
|
+
{
|
|
25
|
+
value: DEFAULTS_VALUE,
|
|
26
|
+
label: `Continue with defaults (${technologyCount} technologies)`
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
value: CUSTOMIZE_VALUE,
|
|
30
|
+
label: "Customize technologies"
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
const handleSelect = (value) => {
|
|
34
|
+
if (value === BACK_VALUE) {
|
|
35
|
+
goBack();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (value === DEFAULTS_VALUE) {
|
|
39
|
+
setStackAction("defaults");
|
|
40
|
+
setStep("refine");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (value === CUSTOMIZE_VALUE) {
|
|
44
|
+
setStackAction("customize");
|
|
45
|
+
setStep("build");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
50
|
+
/* @__PURE__ */ jsxs(Text, { bold: true, children: [
|
|
51
|
+
"You selected: ",
|
|
52
|
+
/* @__PURE__ */ jsx(Text, { color: "cyan", children: stackName })
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
55
|
+
/* @__PURE__ */ jsx(Text, { children: "What would you like to do?" }),
|
|
56
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Select, { options, onChange: handleSelect }) }),
|
|
57
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
58
|
+
"\u2191",
|
|
59
|
+
"/",
|
|
60
|
+
"\u2193",
|
|
61
|
+
" navigate ENTER select ESC back"
|
|
62
|
+
] }) })
|
|
63
|
+
] });
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
StepStackOptions
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=chunk-A65SBAAJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli-v2/components/wizard/step-stack-options.tsx"],"sourcesContent":["/**\n * StepStackOptions component - Options after stack selection.\n *\n * After selecting a pre-built stack, user can:\n * 1. Continue with defaults -> goes to refine step\n * 2. Customize technologies -> goes to build step (pre-populated)\n *\n * Keyboard: Enter to select, Escape to go back\n */\nimport React from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport { Select } from \"@inkjs/ui\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\n\n// =============================================================================\n// Constants\n// =============================================================================\n\nconst BACK_VALUE = \"_back\";\nconst DEFAULTS_VALUE = \"defaults\";\nconst CUSTOMIZE_VALUE = \"customize\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface StepStackOptionsProps {\n /** Stack name for display */\n stackName: string;\n /** Number of technologies in the stack */\n technologyCount: number;\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport const StepStackOptions: React.FC<StepStackOptionsProps> = ({\n stackName,\n technologyCount,\n}) => {\n const { setStep, setStackAction, goBack } = useWizardStore();\n\n const options = [\n { value: BACK_VALUE, label: \"\\u2190 Back\" },\n {\n value: DEFAULTS_VALUE,\n label: `Continue with defaults (${technologyCount} technologies)`,\n },\n {\n value: CUSTOMIZE_VALUE,\n label: \"Customize technologies\",\n },\n ];\n\n const handleSelect = (value: string) => {\n if (value === BACK_VALUE) {\n goBack();\n return;\n }\n\n if (value === DEFAULTS_VALUE) {\n setStackAction(\"defaults\");\n setStep(\"refine\");\n return;\n }\n\n if (value === CUSTOMIZE_VALUE) {\n setStackAction(\"customize\");\n setStep(\"build\");\n return;\n }\n };\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>\n You selected: <Text color=\"cyan\">{stackName}</Text>\n </Text>\n <Text> </Text>\n <Text>What would you like to do?</Text>\n <Box marginTop={1}>\n <Select options={options} onChange={handleSelect} />\n </Box>\n <Box marginTop={1}>\n <Text dimColor>\n {\"\\u2191\"}/{\"\\u2193\"} navigate ENTER select ESC back\n </Text>\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AAUA,SAAS,KAAK,YAAsB;AACpC,SAAS,cAAc;AAiEjB,SACgB,KADhB;AA1DN,IAAM,aAAa;AACnB,IAAM,iBAAiB;AACvB,IAAM,kBAAkB;AAiBjB,IAAM,mBAAoD,CAAC;AAAA,EAChE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,SAAS,gBAAgB,OAAO,IAAI,eAAe;AAE3D,QAAM,UAAU;AAAA,IACd,EAAE,OAAO,YAAY,OAAO,cAAc;AAAA,IAC1C;AAAA,MACE,OAAO;AAAA,MACP,OAAO,2BAA2B,eAAe;AAAA,IACnD;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,UAAU,YAAY;AACxB,aAAO;AACP;AAAA,IACF;AAEA,QAAI,UAAU,gBAAgB;AAC5B,qBAAe,UAAU;AACzB,cAAQ,QAAQ;AAChB;AAAA,IACF;AAEA,QAAI,UAAU,iBAAiB;AAC7B,qBAAe,WAAW;AAC1B,cAAQ,OAAO;AACf;AAAA,IACF;AAAA,EACF;AAEA,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,yBAAC,QAAK,MAAI,MAAC;AAAA;AAAA,MACK,oBAAC,QAAK,OAAM,QAAQ,qBAAU;AAAA,OAC9C;AAAA,IACA,oBAAC,QAAK,eAAC;AAAA,IACP,oBAAC,QAAK,wCAA0B;AAAA,IAChC,oBAAC,OAAI,WAAW,GACd,8BAAC,UAAO,SAAkB,UAAU,cAAc,GACpD;AAAA,IACA,oBAAC,OAAI,WAAW,GACd,+BAAC,QAAK,UAAQ,MACX;AAAA;AAAA,MAAS;AAAA,MAAE;AAAA,MAAS;AAAA,OACvB,GACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-DHET7RCE.js";
|
|
5
|
+
|
|
6
|
+
// src/cli-v2/components/wizard/wizard-tabs.tsx
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
import { Box, Text } from "ink";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
var WIZARD_STEPS = [
|
|
11
|
+
{ id: "approach", label: "Approach", number: 1 },
|
|
12
|
+
{ id: "stack", label: "Stack", number: 2 },
|
|
13
|
+
{ id: "build", label: "Build", number: 3 },
|
|
14
|
+
{ id: "refine", label: "Refine", number: 4 },
|
|
15
|
+
{ id: "confirm", label: "Confirm", number: 5 }
|
|
16
|
+
];
|
|
17
|
+
var getStepState = (stepId, currentStep, completedSteps, skippedSteps) => {
|
|
18
|
+
if (completedSteps.includes(stepId)) return "completed";
|
|
19
|
+
if (stepId === currentStep) return "current";
|
|
20
|
+
if (skippedSteps.includes(stepId)) return "skipped";
|
|
21
|
+
return "pending";
|
|
22
|
+
};
|
|
23
|
+
var getStatusSymbol = (state) => {
|
|
24
|
+
switch (state) {
|
|
25
|
+
case "completed":
|
|
26
|
+
return "\u2713";
|
|
27
|
+
case "current":
|
|
28
|
+
return "\u25CF";
|
|
29
|
+
case "pending":
|
|
30
|
+
return "\u25CB";
|
|
31
|
+
case "skipped":
|
|
32
|
+
return "\u25CB";
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var getStatusColor = (state) => {
|
|
36
|
+
switch (state) {
|
|
37
|
+
case "completed":
|
|
38
|
+
return "green";
|
|
39
|
+
case "current":
|
|
40
|
+
return "cyan";
|
|
41
|
+
case "pending":
|
|
42
|
+
return void 0;
|
|
43
|
+
// default white
|
|
44
|
+
case "skipped":
|
|
45
|
+
return "gray";
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var WizardTabs = ({
|
|
49
|
+
steps,
|
|
50
|
+
currentStep,
|
|
51
|
+
completedSteps,
|
|
52
|
+
skippedSteps = []
|
|
53
|
+
}) => {
|
|
54
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "row", justifyContent: "space-around", marginBottom: 1, children: steps.map((step) => {
|
|
55
|
+
const state = getStepState(
|
|
56
|
+
step.id,
|
|
57
|
+
currentStep,
|
|
58
|
+
completedSteps,
|
|
59
|
+
skippedSteps
|
|
60
|
+
);
|
|
61
|
+
const symbol = getStatusSymbol(state);
|
|
62
|
+
const color = getStatusColor(state);
|
|
63
|
+
const dimmed = state === "skipped";
|
|
64
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", alignItems: "center", children: [
|
|
65
|
+
/* @__PURE__ */ jsxs(Text, { dimColor: dimmed, color: dimmed ? "gray" : void 0, children: [
|
|
66
|
+
"[",
|
|
67
|
+
step.number,
|
|
68
|
+
"] ",
|
|
69
|
+
step.label
|
|
70
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ jsx(Text, { color, dimColor: dimmed, children: symbol })
|
|
72
|
+
] }, step.id);
|
|
73
|
+
}) });
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
WIZARD_STEPS,
|
|
78
|
+
WizardTabs
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=chunk-ALEPJ6YN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli-v2/components/wizard/wizard-tabs.tsx"],"sourcesContent":["/**\n * WizardTabs component - horizontal progress indicator for wizard steps.\n *\n * Displays all 5 wizard steps with visual indicators:\n * - Completed: green checkmark (✓)\n * - Current: cyan dot (●)\n * - Pending: white circle (○)\n * - Skipped: dimmed circle (○)\n */\nimport React from \"react\";\nimport { Box, Text } from \"ink\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface WizardTabStep {\n id: string;\n label: string;\n number: number;\n}\n\nexport interface WizardTabsProps {\n /** All wizard steps in order */\n steps: WizardTabStep[];\n /** Current active step ID */\n currentStep: string;\n /** IDs of completed steps */\n completedSteps: string[];\n /** IDs of skipped/inapplicable steps (shown dimmed) */\n skippedSteps?: string[];\n}\n\n// =============================================================================\n// Constants\n// =============================================================================\n\n/** Default wizard steps */\nexport const WIZARD_STEPS: WizardTabStep[] = [\n { id: \"approach\", label: \"Approach\", number: 1 },\n { id: \"stack\", label: \"Stack\", number: 2 },\n { id: \"build\", label: \"Build\", number: 3 },\n { id: \"refine\", label: \"Refine\", number: 4 },\n { id: \"confirm\", label: \"Confirm\", number: 5 },\n];\n\n// =============================================================================\n// Step State Helpers\n// =============================================================================\n\ntype StepState = \"completed\" | \"current\" | \"pending\" | \"skipped\";\n\nconst getStepState = (\n stepId: string,\n currentStep: string,\n completedSteps: string[],\n skippedSteps: string[],\n): StepState => {\n if (completedSteps.includes(stepId)) return \"completed\";\n if (stepId === currentStep) return \"current\";\n if (skippedSteps.includes(stepId)) return \"skipped\";\n return \"pending\";\n};\n\nconst getStatusSymbol = (state: StepState): string => {\n switch (state) {\n case \"completed\":\n return \"✓\";\n case \"current\":\n return \"●\";\n case \"pending\":\n return \"○\";\n case \"skipped\":\n return \"○\";\n }\n};\n\nconst getStatusColor = (state: StepState): string | undefined => {\n switch (state) {\n case \"completed\":\n return \"green\";\n case \"current\":\n return \"cyan\";\n case \"pending\":\n return undefined; // default white\n case \"skipped\":\n return \"gray\";\n }\n};\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport const WizardTabs: React.FC<WizardTabsProps> = ({\n steps,\n currentStep,\n completedSteps,\n skippedSteps = [],\n}) => {\n return (\n <Box flexDirection=\"row\" justifyContent=\"space-around\" marginBottom={1}>\n {steps.map((step) => {\n const state = getStepState(\n step.id,\n currentStep,\n completedSteps,\n skippedSteps,\n );\n const symbol = getStatusSymbol(state);\n const color = getStatusColor(state);\n const dimmed = state === \"skipped\";\n\n return (\n <Box key={step.id} flexDirection=\"column\" alignItems=\"center\">\n <Text dimColor={dimmed} color={dimmed ? \"gray\" : undefined}>\n [{step.number}] {step.label}\n </Text>\n <Text color={color} dimColor={dimmed}>\n {symbol}\n </Text>\n </Box>\n );\n })}\n </Box>\n );\n};\n"],"mappings":";;;;;;AAAA;AAUA,SAAS,KAAK,YAAY;AAyGd,SAGA,KAHA;AA7EL,IAAM,eAAgC;AAAA,EAC3C,EAAE,IAAI,YAAY,OAAO,YAAY,QAAQ,EAAE;AAAA,EAC/C,EAAE,IAAI,SAAS,OAAO,SAAS,QAAQ,EAAE;AAAA,EACzC,EAAE,IAAI,SAAS,OAAO,SAAS,QAAQ,EAAE;AAAA,EACzC,EAAE,IAAI,UAAU,OAAO,UAAU,QAAQ,EAAE;AAAA,EAC3C,EAAE,IAAI,WAAW,OAAO,WAAW,QAAQ,EAAE;AAC/C;AAQA,IAAM,eAAe,CACnB,QACA,aACA,gBACA,iBACc;AACd,MAAI,eAAe,SAAS,MAAM,EAAG,QAAO;AAC5C,MAAI,WAAW,YAAa,QAAO;AACnC,MAAI,aAAa,SAAS,MAAM,EAAG,QAAO;AAC1C,SAAO;AACT;AAEA,IAAM,kBAAkB,CAAC,UAA6B;AACpD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,IAAM,iBAAiB,CAAC,UAAyC;AAC/D,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAMO,IAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAC;AAClB,MAAM;AACJ,SACE,oBAAC,OAAI,eAAc,OAAM,gBAAe,gBAAe,cAAc,GAClE,gBAAM,IAAI,CAAC,SAAS;AACnB,UAAM,QAAQ;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,UAAM,SAAS,gBAAgB,KAAK;AACpC,UAAM,QAAQ,eAAe,KAAK;AAClC,UAAM,SAAS,UAAU;AAEzB,WACE,qBAAC,OAAkB,eAAc,UAAS,YAAW,UACnD;AAAA,2BAAC,QAAK,UAAU,QAAQ,OAAO,SAAS,SAAS,QAAW;AAAA;AAAA,QACxD,KAAK;AAAA,QAAO;AAAA,QAAG,KAAK;AAAA,SACxB;AAAA,MACA,oBAAC,QAAK,OAAc,UAAU,QAC3B,kBACH;AAAA,SANQ,KAAK,EAOf;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
fetchFromSource
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NGBFJJ7Q.js";
|
|
5
5
|
import {
|
|
6
6
|
CLAUDE_DIR,
|
|
7
7
|
DIRS,
|
|
8
8
|
PROJECT_ROOT
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-A3J6IAXK.js";
|
|
10
10
|
import {
|
|
11
11
|
verbose
|
|
12
12
|
} from "./chunk-TOPAIL5W.js";
|
|
@@ -81,4 +81,4 @@ async function fetchAgentDefinitionsFromRemote(source, options = {}) {
|
|
|
81
81
|
export {
|
|
82
82
|
getAgentDefinitions
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=chunk-
|
|
84
|
+
//# sourceMappingURL=chunk-C4ZTIYFR.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
PROJECT_ROOT
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-A3J6IAXK.js";
|
|
5
5
|
import {
|
|
6
6
|
directoryExists,
|
|
7
7
|
fileExists,
|
|
@@ -450,4 +450,4 @@ export {
|
|
|
450
450
|
validateAllPlugins,
|
|
451
451
|
printPluginValidationResult
|
|
452
452
|
};
|
|
453
|
-
//# sourceMappingURL=chunk-
|
|
453
|
+
//# sourceMappingURL=chunk-CIY5UBRB.js.map
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
mergeMatrixWithSkills,
|
|
7
7
|
parseFrontmatter,
|
|
8
8
|
resolveAgentConfigToSkills
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QGGSLMO3.js";
|
|
10
10
|
import {
|
|
11
11
|
fetchFromSource
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NGBFJJ7Q.js";
|
|
13
13
|
import {
|
|
14
14
|
isLocalSource,
|
|
15
15
|
resolveSource
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
PROJECT_ROOT,
|
|
20
20
|
SKILLS_DIR_PATH,
|
|
21
21
|
SKILLS_MATRIX_PATH
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-A3J6IAXK.js";
|
|
23
23
|
import {
|
|
24
24
|
verbose
|
|
25
25
|
} from "./chunk-TOPAIL5W.js";
|
|
@@ -304,4 +304,4 @@ export {
|
|
|
304
304
|
discoverLocalSkills,
|
|
305
305
|
loadSkillsMatrixFromSource
|
|
306
306
|
};
|
|
307
|
-
//# sourceMappingURL=chunk-
|
|
307
|
+
//# sourceMappingURL=chunk-DKGL77IY.js.map
|