specweave 1.0.445 → 1.0.447
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/src/cli/commands/get.d.ts.map +1 -1
- package/dist/src/cli/commands/get.js +11 -3
- package/dist/src/cli/commands/get.js.map +1 -1
- package/dist/src/cli/commands/plan/plan-orchestrator.js +1 -1
- package/dist/src/cli/helpers/get/clone-repo.d.ts.map +1 -1
- package/dist/src/cli/helpers/get/clone-repo.js +14 -1
- package/dist/src/cli/helpers/get/clone-repo.js.map +1 -1
- package/dist/src/cli/helpers/get/source-parser.d.ts.map +1 -1
- package/dist/src/cli/helpers/get/source-parser.js +20 -9
- package/dist/src/cli/helpers/get/source-parser.js.map +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.js +1 -1
- package/package.json +1 -1
- package/plugins/specweave/commands/framework.md +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GxF"}
|
|
@@ -24,6 +24,7 @@ export async function getCommand(source, options = {}) {
|
|
|
24
24
|
if (!fs.existsSync(configPath)) {
|
|
25
25
|
console.log(chalk.red('\n Not a SpecWeave project. Run `specweave init` first.\n'));
|
|
26
26
|
process.exit(1);
|
|
27
|
+
return;
|
|
27
28
|
}
|
|
28
29
|
let config = {};
|
|
29
30
|
try {
|
|
@@ -32,6 +33,7 @@ export async function getCommand(source, options = {}) {
|
|
|
32
33
|
catch {
|
|
33
34
|
console.log(chalk.red('\n Could not read .specweave/config.json\n'));
|
|
34
35
|
process.exit(1);
|
|
36
|
+
return;
|
|
35
37
|
}
|
|
36
38
|
const isUmbrella = config.umbrella?.enabled === true;
|
|
37
39
|
// Parse source
|
|
@@ -42,6 +44,7 @@ export async function getCommand(source, options = {}) {
|
|
|
42
44
|
catch (err) {
|
|
43
45
|
console.log(chalk.red(`\n ${err instanceof Error ? err.message : String(err)}\n`));
|
|
44
46
|
process.exit(1);
|
|
47
|
+
return;
|
|
45
48
|
}
|
|
46
49
|
// Resolve owner/repo for local paths
|
|
47
50
|
let owner = parsed.owner;
|
|
@@ -51,10 +54,12 @@ export async function getCommand(source, options = {}) {
|
|
|
51
54
|
if (!fs.existsSync(absolutePath)) {
|
|
52
55
|
console.log(chalk.red(`\n Path does not exist: ${absolutePath}\n`));
|
|
53
56
|
process.exit(1);
|
|
57
|
+
return;
|
|
54
58
|
}
|
|
55
59
|
if (!fs.existsSync(path.join(absolutePath, '.git'))) {
|
|
56
60
|
console.log(chalk.red(`\n Not a git repository: ${absolutePath}\n`));
|
|
57
61
|
process.exit(1);
|
|
62
|
+
return;
|
|
58
63
|
}
|
|
59
64
|
// Detect owner/repo from git remote
|
|
60
65
|
const detected = await detectRepository('origin', absolutePath);
|
|
@@ -69,7 +74,7 @@ export async function getCommand(source, options = {}) {
|
|
|
69
74
|
}
|
|
70
75
|
console.log(chalk.blue(`\n Registering local repo: ${absolutePath}\n`));
|
|
71
76
|
if (isUmbrella) {
|
|
72
|
-
const relPath = path.relative(projectRoot, absolutePath);
|
|
77
|
+
const relPath = path.relative(projectRoot, absolutePath).replace(/\\/g, '/');
|
|
73
78
|
await _registerAndInit(projectRoot, owner, repo, relPath, absolutePath, options, false);
|
|
74
79
|
}
|
|
75
80
|
else {
|
|
@@ -78,10 +83,12 @@ export async function getCommand(source, options = {}) {
|
|
|
78
83
|
return;
|
|
79
84
|
}
|
|
80
85
|
// Remote source: determine target directory
|
|
86
|
+
// Use '_unknown' as owner fallback for generic git URLs with no detected org
|
|
87
|
+
const ownerDir = owner || '_unknown';
|
|
81
88
|
const targetDir = isUmbrella
|
|
82
|
-
? path.join(projectRoot, 'repositories',
|
|
89
|
+
? path.join(projectRoot, 'repositories', ownerDir, repo)
|
|
83
90
|
: path.join(projectRoot, repo);
|
|
84
|
-
console.log(chalk.blue(`\n Getting ${owner
|
|
91
|
+
console.log(chalk.blue(`\n Getting ${owner || repo}...\n`));
|
|
85
92
|
// Clone
|
|
86
93
|
try {
|
|
87
94
|
const cloneResult = await cloneRepo(parsed, targetDir, { branch: options.branch });
|
|
@@ -95,6 +102,7 @@ export async function getCommand(source, options = {}) {
|
|
|
95
102
|
catch (err) {
|
|
96
103
|
console.log(chalk.red(`\n Clone failed: ${err instanceof Error ? err.message : String(err)}\n`));
|
|
97
104
|
process.exit(1);
|
|
105
|
+
return;
|
|
98
106
|
}
|
|
99
107
|
// Register + init
|
|
100
108
|
if (isUmbrella) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAW5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,UAAsB,EAAE;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAEvE,qCAAqC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-repo.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/clone-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"clone-repo.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/clone-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA4DtB"}
|
|
@@ -27,9 +27,22 @@ export async function cloneRepo(source, targetDir, options = {}) {
|
|
|
27
27
|
skippedReason: 'already exists',
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
+
// Early check: targetDir exists but is not a git repo
|
|
31
|
+
if (fs.existsSync(targetDir)) {
|
|
32
|
+
throw new Error(`Directory already exists but is not a git repository: ${targetDir}\n` +
|
|
33
|
+
'Remove or rename the directory, then try again.');
|
|
34
|
+
}
|
|
30
35
|
const parentDir = path.dirname(targetDir);
|
|
31
36
|
const repoName = path.basename(targetDir);
|
|
32
|
-
|
|
37
|
+
try {
|
|
38
|
+
await fs.promises.mkdir(parentDir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw new Error(`Cannot create directory ${parentDir}: ${err instanceof Error ? err.message : String(err)}`);
|
|
42
|
+
}
|
|
43
|
+
if (!source.cloneUrl) {
|
|
44
|
+
throw new Error('Cannot clone: no clone URL provided (local sources should not reach cloneRepo)');
|
|
45
|
+
}
|
|
33
46
|
const args = ['clone', source.cloneUrl, repoName];
|
|
34
47
|
if (options.branch) {
|
|
35
48
|
args.push('--branch', options.branch);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-repo.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/clone-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAgBpE,MAAM,mBAAmB,GAAG;IAC1B,+BAA+B;IAC/B,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,8BAA8B;IAC9B,8BAA8B;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAoB,EACpB,SAAiB,EACjB,UAAwB,EAAE;IAE1B,oBAAoB;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,gBAAgB;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"clone-repo.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/clone-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAgBpE,MAAM,mBAAmB,GAAG;IAC1B,+BAA+B;IAC/B,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,8BAA8B;IAC9B,8BAA8B;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAoB,EACpB,SAAiB,EACjB,UAAwB,EAAE;IAE1B,oBAAoB;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,gBAAgB;SAChC,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,yDAAyD,SAAS,IAAI;YACtE,iDAAiD,CAClD,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,QAAQ,MAAM;gBACtD,WAAW;gBACX,0DAA0D;gBAC1D,mDAAmD;gBACnD,iBAAiB,MAAM,CAAC,IAAI,EAAE,EAAE,CACjC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-parser.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/source-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"source-parser.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/source-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAqGxD"}
|
|
@@ -10,20 +10,20 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import * as path from 'path';
|
|
12
12
|
import * as fs from 'fs';
|
|
13
|
+
import * as os from 'os';
|
|
13
14
|
/**
|
|
14
15
|
* Parse <source> argument into a structured ParsedSource.
|
|
15
16
|
* Throws with a descriptive message if the input is unrecognizable.
|
|
16
17
|
*/
|
|
17
18
|
export function parseSource(source) {
|
|
18
19
|
const trimmed = source.trim().replace(/\/+$/, ''); // strip trailing slashes
|
|
19
|
-
// 1.
|
|
20
|
+
// 1. Explicit local path indicators: ./ ../ / ~
|
|
20
21
|
if (trimmed.startsWith('./') ||
|
|
21
22
|
trimmed.startsWith('../') ||
|
|
22
23
|
trimmed.startsWith('/') ||
|
|
23
|
-
trimmed.startsWith('~')
|
|
24
|
-
fs.existsSync(trimmed)) {
|
|
24
|
+
trimmed.startsWith('~')) {
|
|
25
25
|
const resolved = trimmed.startsWith('~')
|
|
26
|
-
? path.join(
|
|
26
|
+
? path.join(os.homedir(), trimmed.slice(1))
|
|
27
27
|
: path.resolve(trimmed);
|
|
28
28
|
return {
|
|
29
29
|
type: 'local',
|
|
@@ -33,7 +33,7 @@ export function parseSource(source) {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
// 2. SSH URL: git@github.com:owner/repo[.git]
|
|
36
|
-
const sshGitHub = trimmed.match(/^git@github\.com:([^/]+)\/(
|
|
36
|
+
const sshGitHub = trimmed.match(/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
37
37
|
if (sshGitHub) {
|
|
38
38
|
return {
|
|
39
39
|
type: 'github',
|
|
@@ -43,7 +43,7 @@ export function parseSource(source) {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
// 3. Generic SSH: git@host:org/repo
|
|
46
|
-
const sshGeneric = trimmed.match(/^git@([^:]+):([^/]+)\/(
|
|
46
|
+
const sshGeneric = trimmed.match(/^git@([^:]+):([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
47
47
|
if (sshGeneric) {
|
|
48
48
|
return {
|
|
49
49
|
type: 'git',
|
|
@@ -53,7 +53,7 @@ export function parseSource(source) {
|
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
55
|
// 4. HTTPS GitHub URL
|
|
56
|
-
const httpsGitHub = trimmed.match(/^https?:\/\/github\.com\/([^/]+)\/(
|
|
56
|
+
const httpsGitHub = trimmed.match(/^https?:\/\/github\.com\/([^/]+)\/([^/?#]+?)(?:\.git)?$/);
|
|
57
57
|
if (httpsGitHub) {
|
|
58
58
|
const owner = httpsGitHub[1];
|
|
59
59
|
const repo = httpsGitHub[2];
|
|
@@ -64,8 +64,8 @@ export function parseSource(source) {
|
|
|
64
64
|
cloneUrl: `https://github.com/${owner}/${repo}.git`,
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
// 5. Generic HTTPS/HTTP git URL
|
|
68
|
-
const httpsGeneric = trimmed.match(/^https?:\/\/([^/]+)\/([^/]+)\/(
|
|
67
|
+
// 5. Generic HTTPS/HTTP git URL — matches exactly host/owner/repo (no nested paths)
|
|
68
|
+
const httpsGeneric = trimmed.match(/^https?:\/\/([^/]+)\/([^/]+)\/([^/?#]+?)(?:\.git)?$/);
|
|
69
69
|
if (httpsGeneric) {
|
|
70
70
|
return {
|
|
71
71
|
type: 'git',
|
|
@@ -75,6 +75,7 @@ export function parseSource(source) {
|
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
// 6. GitHub shorthand: owner/repo (exactly one slash, no protocol)
|
|
78
|
+
// Checked BEFORE fs.existsSync to avoid ambiguity with local dirs named "owner/repo"
|
|
78
79
|
const shorthand = trimmed.match(/^([a-zA-Z0-9_.-]+)\/([a-zA-Z0-9_.-]+)$/);
|
|
79
80
|
if (shorthand) {
|
|
80
81
|
const owner = shorthand[1];
|
|
@@ -86,6 +87,16 @@ export function parseSource(source) {
|
|
|
86
87
|
cloneUrl: `https://github.com/${owner}/${repo}.git`,
|
|
87
88
|
};
|
|
88
89
|
}
|
|
90
|
+
// 7. Bare name fallback: check if it exists as a local path on disk
|
|
91
|
+
if (fs.existsSync(trimmed)) {
|
|
92
|
+
const resolved = path.resolve(trimmed);
|
|
93
|
+
return {
|
|
94
|
+
type: 'local',
|
|
95
|
+
owner: '',
|
|
96
|
+
repo: path.basename(resolved),
|
|
97
|
+
absolutePath: resolved,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
89
100
|
throw new Error(`Cannot parse source: "${source}"\n` +
|
|
90
101
|
'Accepted formats:\n' +
|
|
91
102
|
' owner/repo GitHub shorthand\n' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-parser.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/source-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAgBzB;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAE5E,
|
|
1
|
+
{"version":3,"file":"source-parser.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/source-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ export declare function readPluginAutoLoadConfig(): PluginAutoLoadConfig;
|
|
|
63
63
|
* Note: Release, diagrams, and docs are now merged into CORE sw plugin (v1.0.130+)
|
|
64
64
|
* - sw:npm, sw:release skills are built-in
|
|
65
65
|
* - mermaid, c4, architecture diagram skills are built-in
|
|
66
|
-
* - docs-writer, docs
|
|
66
|
+
* - docs-writer, sync-docs skills are built-in
|
|
67
67
|
*
|
|
68
68
|
* v2.1.0: Domain skills live in vskill marketplace as per-category plugins.
|
|
69
69
|
* Only workflow/integration plugins remain here.
|
|
@@ -112,7 +112,7 @@ export function readPluginAutoLoadConfig() {
|
|
|
112
112
|
* Note: Release, diagrams, and docs are now merged into CORE sw plugin (v1.0.130+)
|
|
113
113
|
* - sw:npm, sw:release skills are built-in
|
|
114
114
|
* - mermaid, c4, architecture diagram skills are built-in
|
|
115
|
-
* - docs-writer, docs
|
|
115
|
+
* - docs-writer, sync-docs skills are built-in
|
|
116
116
|
*
|
|
117
117
|
* v2.1.0: Domain skills live in vskill marketplace as per-category plugins.
|
|
118
118
|
* Only workflow/integration plugins remain here.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.447",
|
|
4
4
|
"description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -347,7 +347,7 @@ Until hooks are fully automated, **YOU MUST**:
|
|
|
347
347
|
### Core vs. Plugin
|
|
348
348
|
|
|
349
349
|
**Core Framework** (always loaded):
|
|
350
|
-
-
|
|
350
|
+
- 7 core skills (increment, plan, context-loader, etc.)
|
|
351
351
|
- 3 core agents (PM, Architect, Tech Lead)
|
|
352
352
|
- 7 core commands (/sw:inc, /sw:do, etc.)
|
|
353
353
|
|
|
@@ -518,7 +518,7 @@ I activate when you ask about:
|
|
|
518
518
|
- **PM agent** - Leading increment creation (auto-invoked by /sw:inc)
|
|
519
519
|
- **Architect agent** - Designing system architecture
|
|
520
520
|
- **Tech Lead agent** - Code review, best practices
|
|
521
|
-
- **
|
|
521
|
+
- **plan** - Regenerating plan.md and tasks.md for existing increments
|
|
522
522
|
- **context-loader** - Explaining context efficiency
|
|
523
523
|
- **diagrams** - Creating C4/Mermaid diagrams
|
|
524
524
|
|