@planu/cli 0.64.1 → 0.65.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/dist/config/default-versions.json +58 -0
- package/dist/config/version-defaults.d.ts +11 -0
- package/dist/config/version-defaults.d.ts.map +1 -0
- package/dist/config/version-defaults.js +62 -0
- package/dist/config/version-defaults.js.map +1 -0
- package/dist/config/version-defaults.ts +75 -0
- package/dist/engine/advanced-testing/chaos-generator.d.ts.map +1 -1
- package/dist/engine/advanced-testing/chaos-generator.js +2 -1
- package/dist/engine/advanced-testing/chaos-generator.js.map +1 -1
- package/dist/engine/advanced-testing/mutation-advisor.d.ts.map +1 -1
- package/dist/engine/advanced-testing/mutation-advisor.js +2 -1
- package/dist/engine/advanced-testing/mutation-advisor.js.map +1 -1
- package/dist/engine/doc-generator/per-spec-report/mermaid-renderer.d.ts.map +1 -1
- package/dist/engine/doc-generator/per-spec-report/mermaid-renderer.js +2 -1
- package/dist/engine/doc-generator/per-spec-report/mermaid-renderer.js.map +1 -1
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.d.ts.map +1 -1
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.js +2 -1
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.js.map +1 -1
- package/dist/engine/infrastructure/component-mapper.d.ts.map +1 -1
- package/dist/engine/infrastructure/component-mapper.js +2 -1
- package/dist/engine/infrastructure/component-mapper.js.map +1 -1
- package/dist/engine/infrastructure/docker-compose-generator.d.ts.map +1 -1
- package/dist/engine/infrastructure/docker-compose-generator.js +7 -6
- package/dist/engine/infrastructure/docker-compose-generator.js.map +1 -1
- package/dist/engine/infrastructure/terraform-generator.d.ts.map +1 -1
- package/dist/engine/infrastructure/terraform-generator.js +3 -2
- package/dist/engine/infrastructure/terraform-generator.js.map +1 -1
- package/dist/engine/skill-registry/agentskill-adapter.js +3 -3
- package/dist/engine/skill-registry/agentskill-adapter.js.map +1 -1
- package/dist/tools/create-spec/post-creation.d.ts.map +1 -1
- package/dist/tools/create-spec/post-creation.js +26 -1
- package/dist/tools/create-spec/post-creation.js.map +1 -1
- package/dist/tools/generate-infrastructure.d.ts.map +1 -1
- package/dist/tools/generate-infrastructure.js +6 -1
- package/dist/tools/generate-infrastructure.js.map +1 -1
- package/dist/tools/generate-tests.d.ts.map +1 -1
- package/dist/tools/generate-tests.js +6 -0
- package/dist/tools/generate-tests.js.map +1 -1
- package/dist/tools/suggest-tooling/advanced-testing-catalog.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/advanced-testing-catalog.js +3 -2
- package/dist/tools/suggest-tooling/advanced-testing-catalog.js.map +1 -1
- package/dist/tools/suggest-tooling/build-tool-catalog.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/build-tool-catalog.js +2 -1
- package/dist/tools/suggest-tooling/build-tool-catalog.js.map +1 -1
- package/dist/tools/suggest-tooling/handler.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/handler.js +6 -1
- package/dist/tools/suggest-tooling/handler.js.map +1 -1
- package/dist/tools/suggest-tooling/linting-catalog-extended.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/linting-catalog-extended.js +7 -6
- package/dist/tools/suggest-tooling/linting-catalog-extended.js.map +1 -1
- package/dist/tools/suggest-tooling/resilience-catalog.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/resilience-catalog.js +4 -3
- package/dist/tools/suggest-tooling/resilience-catalog.js.map +1 -1
- package/dist/tools/suggest-tooling/skills-catalog.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/skills-catalog.js +5 -4
- package/dist/tools/suggest-tooling/skills-catalog.js.map +1 -1
- package/dist/types/infrastructure.d.ts +27 -0
- package/dist/types/infrastructure.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config/default-versions.json +58 -0
- package/src/config/version-defaults.ts +75 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"docker": {
|
|
3
|
+
"postgres": { "tag": "15-alpine", "registry": "hub.docker.com", "lastVerified": "2026-03-15" },
|
|
4
|
+
"mysql": { "tag": "8-alpine", "registry": "hub.docker.com", "lastVerified": "2026-03-15" },
|
|
5
|
+
"mariadb": { "tag": "8-alpine", "registry": "hub.docker.com", "lastVerified": "2026-03-15" },
|
|
6
|
+
"mongo": { "tag": "7", "registry": "hub.docker.com", "lastVerified": "2026-03-15" },
|
|
7
|
+
"redis": { "tag": "7-alpine", "registry": "hub.docker.com", "lastVerified": "2026-03-15" },
|
|
8
|
+
"rabbitmq": { "tag": "3-management-alpine", "registry": "hub.docker.com", "lastVerified": "2026-03-15" },
|
|
9
|
+
"minio": { "tag": "latest", "registry": "hub.docker.com", "lastVerified": "2026-03-15" }
|
|
10
|
+
},
|
|
11
|
+
"terraform": {
|
|
12
|
+
"aws-provider": { "version": "~> 5.0", "registry": "registry.terraform.io", "lastVerified": "2026-03-15" },
|
|
13
|
+
"postgres-engine": { "version": "15", "registry": "aws.amazon.com/rds", "lastVerified": "2026-03-15" },
|
|
14
|
+
"redis-param-group": { "version": "redis7", "registry": "aws.amazon.com/elasticache", "lastVerified": "2026-03-15" }
|
|
15
|
+
},
|
|
16
|
+
"npm": {
|
|
17
|
+
"vite": { "version": ">=7.0.0", "registry": "npmjs.com", "lastVerified": "2026-03-15" }
|
|
18
|
+
},
|
|
19
|
+
"jvm": {
|
|
20
|
+
"jqwik": { "version": "1.8.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
21
|
+
"resilience4j-spring-boot3": { "version": "2.2.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
22
|
+
"resilience4j-kotlin": { "version": "2.2.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
23
|
+
"pitest": { "version": "1.15.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
24
|
+
"akka-http": { "version": "10.5.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
25
|
+
"cats-core": { "version": "2.10.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
26
|
+
"turbine": { "version": "1.2.0", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
27
|
+
"compose-multiplatform": { "version": "1.8.0", "registry": "maven-central", "lastVerified": "2026-03-15" }
|
|
28
|
+
},
|
|
29
|
+
"scala": {
|
|
30
|
+
"scalafmt": { "version": "2.5.2", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
31
|
+
"scalafix": { "version": "0.12.1", "registry": "maven-central", "lastVerified": "2026-03-15" },
|
|
32
|
+
"wartremover": { "version": "3.1.6", "registry": "maven-central", "lastVerified": "2026-03-15" }
|
|
33
|
+
},
|
|
34
|
+
"elixir": {
|
|
35
|
+
"credo": { "version": "~> 1.7", "registry": "hex.pm", "lastVerified": "2026-03-15" },
|
|
36
|
+
"dialyxir": { "version": "~> 1.4", "registry": "hex.pm", "lastVerified": "2026-03-15" }
|
|
37
|
+
},
|
|
38
|
+
"dart": {
|
|
39
|
+
"flutter-lints": { "version": "^3.0.0", "registry": "pub.dev", "lastVerified": "2026-03-15" }
|
|
40
|
+
},
|
|
41
|
+
"rust": {
|
|
42
|
+
"tokio-retry": { "version": "0.3", "registry": "crates.io", "lastVerified": "2026-03-15" }
|
|
43
|
+
},
|
|
44
|
+
"cdn": {
|
|
45
|
+
"mermaid": {
|
|
46
|
+
"version": "11",
|
|
47
|
+
"baseUrl": "https://cdn.jsdelivr.net/npm/mermaid@{version}/dist",
|
|
48
|
+
"registry": "npmjs.com",
|
|
49
|
+
"lastVerified": "2026-03-15"
|
|
50
|
+
},
|
|
51
|
+
"litmuschaos": {
|
|
52
|
+
"version": "3.0.0",
|
|
53
|
+
"baseUrl": "https://litmuschaos.github.io/litmus/litmus-operator-v{version}.yaml",
|
|
54
|
+
"registry": "github.com/litmuschaos/litmus",
|
|
55
|
+
"lastVerified": "2026-03-15"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function getDockerTag(service: string): string;
|
|
2
|
+
export declare function getTerraformVersion(resource: string): string;
|
|
3
|
+
export declare function getNpmVersion(pkg: string): string;
|
|
4
|
+
export declare function getJvmVersion(lib: string): string;
|
|
5
|
+
export declare function getScalaVersion(tool: string): string;
|
|
6
|
+
export declare function getElixirVersion(dep: string): string;
|
|
7
|
+
export declare function getDartVersion(pkg: string): string;
|
|
8
|
+
export declare function getRustVersion(crate: string): string;
|
|
9
|
+
export declare function getCdnVersion(name: string): string;
|
|
10
|
+
export declare function getCdnUrl(name: string): string;
|
|
11
|
+
//# sourceMappingURL=version-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-defaults.d.ts","sourceRoot":"","sources":["../../src/config/version-defaults.ts"],"names":[],"mappings":"AAgCA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// config/version-defaults.ts — Central registry loader for default-versions.json
|
|
2
|
+
// All hardcoded versions in the codebase are sourced from this file.
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { join, dirname } from 'node:path';
|
|
6
|
+
const FALLBACK = {
|
|
7
|
+
docker: {},
|
|
8
|
+
terraform: {},
|
|
9
|
+
npm: {},
|
|
10
|
+
jvm: {},
|
|
11
|
+
scala: {},
|
|
12
|
+
elixir: {},
|
|
13
|
+
dart: {},
|
|
14
|
+
rust: {},
|
|
15
|
+
cdn: {},
|
|
16
|
+
};
|
|
17
|
+
function loadDefaults() {
|
|
18
|
+
try {
|
|
19
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const raw = readFileSync(join(dir, 'default-versions.json'), 'utf-8');
|
|
21
|
+
return JSON.parse(raw);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return FALLBACK;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const defaults = loadDefaults();
|
|
28
|
+
export function getDockerTag(service) {
|
|
29
|
+
return defaults.docker[service]?.tag ?? 'latest';
|
|
30
|
+
}
|
|
31
|
+
export function getTerraformVersion(resource) {
|
|
32
|
+
return defaults.terraform[resource]?.version ?? '';
|
|
33
|
+
}
|
|
34
|
+
export function getNpmVersion(pkg) {
|
|
35
|
+
return defaults.npm[pkg]?.version ?? 'latest';
|
|
36
|
+
}
|
|
37
|
+
export function getJvmVersion(lib) {
|
|
38
|
+
return defaults.jvm[lib]?.version ?? '';
|
|
39
|
+
}
|
|
40
|
+
export function getScalaVersion(tool) {
|
|
41
|
+
return defaults.scala[tool]?.version ?? '';
|
|
42
|
+
}
|
|
43
|
+
export function getElixirVersion(dep) {
|
|
44
|
+
return defaults.elixir[dep]?.version ?? '';
|
|
45
|
+
}
|
|
46
|
+
export function getDartVersion(pkg) {
|
|
47
|
+
return defaults.dart[pkg]?.version ?? '';
|
|
48
|
+
}
|
|
49
|
+
export function getRustVersion(crate) {
|
|
50
|
+
return defaults.rust[crate]?.version ?? '';
|
|
51
|
+
}
|
|
52
|
+
export function getCdnVersion(name) {
|
|
53
|
+
return defaults.cdn[name]?.version ?? '';
|
|
54
|
+
}
|
|
55
|
+
export function getCdnUrl(name) {
|
|
56
|
+
const entry = defaults.cdn[name];
|
|
57
|
+
if (!entry) {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
return entry.baseUrl.replace('{version}', entry.version);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=version-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-defaults.js","sourceRoot":"","sources":["../../src/config/version-defaults.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,qEAAqE;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,QAAQ,GAAoB;IAChC,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,EAAE;IACb,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;CACR,CAAC;AAEF,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAoB,YAAY,EAAE,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// config/version-defaults.ts — Central registry loader for default-versions.json
|
|
2
|
+
// All hardcoded versions in the codebase are sourced from this file.
|
|
3
|
+
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { join, dirname } from 'node:path';
|
|
7
|
+
import type { VersionDefaults } from '../types/infrastructure.js';
|
|
8
|
+
|
|
9
|
+
const FALLBACK: VersionDefaults = {
|
|
10
|
+
docker: {},
|
|
11
|
+
terraform: {},
|
|
12
|
+
npm: {},
|
|
13
|
+
jvm: {},
|
|
14
|
+
scala: {},
|
|
15
|
+
elixir: {},
|
|
16
|
+
dart: {},
|
|
17
|
+
rust: {},
|
|
18
|
+
cdn: {},
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function loadDefaults(): VersionDefaults {
|
|
22
|
+
try {
|
|
23
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
24
|
+
const raw = readFileSync(join(dir, 'default-versions.json'), 'utf-8');
|
|
25
|
+
return JSON.parse(raw) as VersionDefaults;
|
|
26
|
+
} catch {
|
|
27
|
+
return FALLBACK;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const defaults: VersionDefaults = loadDefaults();
|
|
32
|
+
|
|
33
|
+
export function getDockerTag(service: string): string {
|
|
34
|
+
return defaults.docker[service]?.tag ?? 'latest';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function getTerraformVersion(resource: string): string {
|
|
38
|
+
return defaults.terraform[resource]?.version ?? '';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function getNpmVersion(pkg: string): string {
|
|
42
|
+
return defaults.npm[pkg]?.version ?? 'latest';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function getJvmVersion(lib: string): string {
|
|
46
|
+
return defaults.jvm[lib]?.version ?? '';
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function getScalaVersion(tool: string): string {
|
|
50
|
+
return defaults.scala[tool]?.version ?? '';
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function getElixirVersion(dep: string): string {
|
|
54
|
+
return defaults.elixir[dep]?.version ?? '';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function getDartVersion(pkg: string): string {
|
|
58
|
+
return defaults.dart[pkg]?.version ?? '';
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function getRustVersion(crate: string): string {
|
|
62
|
+
return defaults.rust[crate]?.version ?? '';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function getCdnVersion(name: string): string {
|
|
66
|
+
return defaults.cdn[name]?.version ?? '';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function getCdnUrl(name: string): string {
|
|
70
|
+
const entry = defaults.cdn[name];
|
|
71
|
+
if (!entry) {
|
|
72
|
+
return '';
|
|
73
|
+
}
|
|
74
|
+
return entry.baseUrl.replace('{version}', entry.version);
|
|
75
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/advanced-testing/chaos-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"chaos-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/advanced-testing/chaos-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAmB5D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAK5D;AAoED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CAQzE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM,CAyCR"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// engine/advanced-testing/chaos-generator.ts — SPEC-049
|
|
2
2
|
// Generates LitmusChaos runbooks and validates Kubernetes project context.
|
|
3
|
+
import { getCdnUrl } from '../../config/version-defaults.js';
|
|
3
4
|
/** File patterns that indicate a Kubernetes project. */
|
|
4
5
|
const K8S_MANIFEST_PATTERNS = [
|
|
5
6
|
'deployment.yaml',
|
|
@@ -112,7 +113,7 @@ export function buildChaosRunbookMarkdown(namespace, experiments) {
|
|
|
112
113
|
'',
|
|
113
114
|
'```bash',
|
|
114
115
|
'# Install LitmusChaos operator',
|
|
115
|
-
|
|
116
|
+
`kubectl apply -f ${getCdnUrl('litmuschaos')}`,
|
|
116
117
|
'',
|
|
117
118
|
'# Verify installation',
|
|
118
119
|
'kubectl get pods -n litmus',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-generator.js","sourceRoot":"","sources":["../../../src/engine/advanced-testing/chaos-generator.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,2EAA2E;
|
|
1
|
+
{"version":3,"file":"chaos-generator.js","sourceRoot":"","sources":["../../../src/engine/advanced-testing/chaos-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-advisor.d.ts","sourceRoot":"","sources":["../../../src/engine/advanced-testing/mutation-advisor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"mutation-advisor.d.ts","sourceRoot":"","sources":["../../../src/engine/advanced-testing/mutation-advisor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAwB9D;AA8ID;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuC3F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// engine/advanced-testing/mutation-advisor.ts — SPEC-049
|
|
2
2
|
// Recommends mutation testing configuration based on project language and coverage.
|
|
3
|
+
import { getJvmVersion } from '../../config/version-defaults.js';
|
|
3
4
|
/** Minimum coverage required before recommending mutation testing. */
|
|
4
5
|
const MIN_COVERAGE_FOR_MUTATION = 90;
|
|
5
6
|
/**
|
|
@@ -82,7 +83,7 @@ function buildPitestConfig(thresholdScore) {
|
|
|
82
83
|
<plugin>
|
|
83
84
|
<groupId>org.pitest</groupId>
|
|
84
85
|
<artifactId>pitest-maven</artifactId>
|
|
85
|
-
<version
|
|
86
|
+
<version>${getJvmVersion('pitest')}</version>
|
|
86
87
|
<configuration>
|
|
87
88
|
<targetClasses>
|
|
88
89
|
<param>com.yourcompany.*</param>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-advisor.js","sourceRoot":"","sources":["../../../src/engine/advanced-testing/mutation-advisor.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,oFAAoF;
|
|
1
|
+
{"version":3,"file":"mutation-advisor.js","sourceRoot":"","sources":["../../../src/engine/advanced-testing/mutation-advisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-renderer.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/per-spec-report/mermaid-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"mermaid-renderer.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/per-spec-report/mermaid-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAMrE;AAcD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getCdnUrl } from '../../../config/version-defaults.js';
|
|
1
2
|
/**
|
|
2
3
|
* Render an array of SpecDiagrams as HTML sections with Mermaid pre blocks.
|
|
3
4
|
* Uses Mermaid.js CDN for client-side rendering with raw code fallback.
|
|
@@ -24,7 +25,7 @@ function renderSingleDiagram(diagram) {
|
|
|
24
25
|
*/
|
|
25
26
|
export function getMermaidScript() {
|
|
26
27
|
return `<script type="module">
|
|
27
|
-
import mermaid from '
|
|
28
|
+
import mermaid from '${getCdnUrl('mermaid')}/mermaid.esm.min.mjs';
|
|
28
29
|
mermaid.initialize({ startOnLoad: true, theme: 'default' });
|
|
29
30
|
</script>
|
|
30
31
|
<noscript><style>.mermaid { white-space: pre; font-family: monospace; background: #f3f4f6; padding: 16px; border-radius: 8px; }</style></noscript>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-renderer.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/per-spec-report/mermaid-renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mermaid-renderer.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/per-spec-report/mermaid-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,2DAA2D,CAAC;IACrE,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAoB;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD,OAAO;QACD,YAAY;4BACQ,WAAW;yBACd,cAAc;OAChC,CAAC;AACR,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;yBACgB,SAAS,CAAC,SAAS,CAAC;;;mJAGsG,CAAC;AACpJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal-html-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-html-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"proposal-html-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-html-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG/E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,aAAuB,EAC9B,IAAI,SAAO,EACX,cAAc,CAAC,EAAE,OAAO,GACvB,MAAM,CA0BR"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Planu — HTML wrapper for project proposal documents
|
|
2
2
|
import { getProposalThemeCSS } from './proposal-themes.js';
|
|
3
|
+
import { getCdnUrl } from '../../../config/version-defaults.js';
|
|
3
4
|
/**
|
|
4
5
|
* Wrap body content in a full self-contained HTML document for the proposal.
|
|
5
6
|
* Includes inline CSS (theme), print styles, and responsive layout.
|
|
@@ -12,7 +13,7 @@ export function wrapProposalHtml(title, bodyContent, theme = 'light', lang = 'en
|
|
|
12
13
|
.replace(/"/g, '"');
|
|
13
14
|
const css = getProposalThemeCSS(theme);
|
|
14
15
|
const mermaidScripts = includeMermaid
|
|
15
|
-
? `\n <script src="
|
|
16
|
+
? `\n <script src="${getCdnUrl('mermaid')}/mermaid.min.js"></script>\n <script>mermaid.initialize({startOnLoad:true, theme:'default'});</script>`
|
|
16
17
|
: '';
|
|
17
18
|
return `<!DOCTYPE html>
|
|
18
19
|
<html lang="${escapeAttr(lang)}">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal-html-wrapper.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-html-wrapper.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"proposal-html-wrapper.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-html-wrapper.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,WAAmB,EACnB,QAAuB,OAAO,EAC9B,IAAI,GAAG,IAAI,EACX,cAAwB;IAExB,MAAM,YAAY,GAAG,KAAK;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,cAAc;QACnC,CAAC,CAAC,oBAAoB,SAAS,CAAC,SAAS,CAAC,yGAAyG;QACnJ,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;cACK,UAAU,CAAC,IAAI,CAAC;;;;;WAKnB,YAAY;WACZ,GAAG,WAAW,cAAc;;;EAGrC,WAAW;;QAEL,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-mapper.d.ts","sourceRoot":"","sources":["../../../src/engine/infrastructure/component-mapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAGf,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"component-mapper.d.ts","sourceRoot":"","sources":["../../../src/engine/infrastructure/component-mapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAGf,MAAM,+BAA+B,CAAC;AAGvC,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AA4ID;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EAAE,EACtB,WAAW,EAAE,MAAM,GAClB,cAAc,EAAE,CAsBlB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// engine/infrastructure/component-mapper.ts — Map InfraSignals to InfraComponents (SPEC-171)
|
|
2
|
+
import { getTerraformVersion } from '../../config/version-defaults.js';
|
|
2
3
|
/** Normalize environment string to a valid key: 'dev' | 'staging' | 'prod'. Defaults to 'dev'. */
|
|
3
4
|
export function resolveEnvironment(environment) {
|
|
4
5
|
return environment in { dev: 1, staging: 1, prod: 1 } ? environment : 'dev';
|
|
@@ -10,7 +11,7 @@ function resolveDatabase(technology) {
|
|
|
10
11
|
kind: 'rds',
|
|
11
12
|
name: 'postgres-db',
|
|
12
13
|
sizeByEnv: { dev: 'db.t3.micro', staging: 'db.t3.small', prod: 'db.t3.medium' },
|
|
13
|
-
properties: { engine: 'postgres', version: '
|
|
14
|
+
properties: { engine: 'postgres', version: getTerraformVersion('postgres-engine') },
|
|
14
15
|
};
|
|
15
16
|
case 'mysql':
|
|
16
17
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-mapper.js","sourceRoot":"","sources":["../../../src/engine/infrastructure/component-mapper.ts"],"names":[],"mappings":"AAAA,6FAA6F;
|
|
1
|
+
{"version":3,"file":"component-mapper.js","sourceRoot":"","sources":["../../../src/engine/infrastructure/component-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-compose-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/infrastructure/docker-compose-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"docker-compose-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/infrastructure/docker-compose-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAgMjF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,WAAW,CAwB/E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// engine/infrastructure/docker-compose-generator.ts — Docker Compose generator (SPEC-171)
|
|
2
|
+
import { getDockerTag } from '../../config/version-defaults.js';
|
|
2
3
|
function renderHeader() {
|
|
3
4
|
return `# docker-compose.yml — Generated by Planu generate_infrastructure (SPEC-171)
|
|
4
5
|
# Local development environment matching production topology.
|
|
@@ -14,7 +15,7 @@ function renderDatabase(component) {
|
|
|
14
15
|
'postgres').toLowerCase();
|
|
15
16
|
if (engine === 'mysql' || engine === 'mariadb') {
|
|
16
17
|
return ` ${component.name}:
|
|
17
|
-
image: ${engine}
|
|
18
|
+
image: ${engine}:${getDockerTag('mysql')}
|
|
18
19
|
restart: unless-stopped
|
|
19
20
|
environment:
|
|
20
21
|
MYSQL_DATABASE: ${dbName}
|
|
@@ -35,7 +36,7 @@ function renderDatabase(component) {
|
|
|
35
36
|
}
|
|
36
37
|
if (engine === 'mongo' || engine === 'mongodb') {
|
|
37
38
|
return ` ${component.name}:
|
|
38
|
-
image: mongo
|
|
39
|
+
image: mongo:${getDockerTag('mongo')}
|
|
39
40
|
restart: unless-stopped
|
|
40
41
|
environment:
|
|
41
42
|
MONGO_INITDB_DATABASE: ${dbName}
|
|
@@ -55,7 +56,7 @@ function renderDatabase(component) {
|
|
|
55
56
|
}
|
|
56
57
|
// Default: postgres
|
|
57
58
|
return ` ${component.name}:
|
|
58
|
-
image: postgres
|
|
59
|
+
image: postgres:${getDockerTag('postgres')}
|
|
59
60
|
restart: unless-stopped
|
|
60
61
|
environment:
|
|
61
62
|
POSTGRES_DB: ${dbName}
|
|
@@ -75,7 +76,7 @@ function renderDatabase(component) {
|
|
|
75
76
|
}
|
|
76
77
|
function renderRedis(component) {
|
|
77
78
|
return ` ${component.name}:
|
|
78
|
-
image: redis
|
|
79
|
+
image: redis:${getDockerTag('redis')}
|
|
79
80
|
restart: unless-stopped
|
|
80
81
|
ports:
|
|
81
82
|
- "6379:6379"
|
|
@@ -92,7 +93,7 @@ function renderRedis(component) {
|
|
|
92
93
|
}
|
|
93
94
|
function renderQueue(component) {
|
|
94
95
|
return ` ${component.name}:
|
|
95
|
-
image: rabbitmq
|
|
96
|
+
image: rabbitmq:${getDockerTag('rabbitmq')}
|
|
96
97
|
restart: unless-stopped
|
|
97
98
|
environment:
|
|
98
99
|
RABBITMQ_DEFAULT_USER: admin
|
|
@@ -112,7 +113,7 @@ function renderQueue(component) {
|
|
|
112
113
|
}
|
|
113
114
|
function renderStorage(component) {
|
|
114
115
|
return ` ${component.name}:
|
|
115
|
-
image: minio/minio
|
|
116
|
+
image: minio/minio:${getDockerTag('minio')}
|
|
116
117
|
restart: unless-stopped
|
|
117
118
|
environment:
|
|
118
119
|
MINIO_ROOT_USER: \${MINIO_USER:-minioadmin}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-compose-generator.js","sourceRoot":"","sources":["../../../src/engine/infrastructure/docker-compose-generator.ts"],"names":[],"mappings":"AAAA,0FAA0F;
|
|
1
|
+
{"version":3,"file":"docker-compose-generator.js","sourceRoot":"","sources":["../../../src/engine/infrastructure/docker-compose-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terraform-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/infrastructure/terraform-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"terraform-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/infrastructure/terraform-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AA2NjF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAmCxF"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// engine/infrastructure/terraform-generator.ts — Terraform HCL generator (SPEC-171)
|
|
2
|
+
import { getTerraformVersion } from '../../config/version-defaults.js';
|
|
2
3
|
function renderProvider(env) {
|
|
3
4
|
return `terraform {
|
|
4
5
|
required_providers {
|
|
5
6
|
aws = {
|
|
6
7
|
source = "hashicorp/aws"
|
|
7
|
-
version = "
|
|
8
|
+
version = "${getTerraformVersion('aws-provider')}"
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
11
|
}
|
|
@@ -31,7 +32,7 @@ function renderRds(component, env) {
|
|
|
31
32
|
resource "aws_db_instance" "${safeName}" {
|
|
32
33
|
identifier = "\${var.environment}-${component.name}"
|
|
33
34
|
engine = "postgres"
|
|
34
|
-
engine_version = "
|
|
35
|
+
engine_version = "${getTerraformVersion('postgres-engine')}"
|
|
35
36
|
instance_class = "${instanceClass}"
|
|
36
37
|
allocated_storage = ${env === 'prod' ? 100 : 20}
|
|
37
38
|
username = "dbadmin"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terraform-generator.js","sourceRoot":"","sources":["../../../src/engine/infrastructure/terraform-generator.ts"],"names":[],"mappings":"AAAA,oFAAoF;
|
|
1
|
+
{"version":3,"file":"terraform-generator.js","sourceRoot":"","sources":["../../../src/engine/infrastructure/terraform-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// engine/skill-registry/agentskill-adapter.ts — SPEC-150: agentskill.sh registry adapter
|
|
2
2
|
// Searches agentskill.sh for installable agent skills.
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// NOTE: The agentskill.sh API contract is not yet publicly documented.
|
|
4
|
+
// This module attempts /api/search and returns [] on any failure,
|
|
5
|
+
// satisfying the unified search interface without blocking the caller.
|
|
6
6
|
const AGENTSKILL_BASE = 'https://agentskill.sh';
|
|
7
7
|
const USER_AGENT = 'Planu/1.0';
|
|
8
8
|
/** Attempt to fetch from agentskill.sh search endpoint (best-effort). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentskill-adapter.js","sourceRoot":"","sources":["../../../src/engine/skill-registry/agentskill-adapter.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,uDAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"agentskill-adapter.js","sourceRoot":"","sources":["../../../src/engine/skill-registry/agentskill-adapter.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,uDAAuD;AACvD,uEAAuE;AACvE,wEAAwE;AACxE,6EAA6E;AAI7E,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B,yEAAyE;AACzE,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,KAAc;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,eAAe,aAAa,CAAC,CAAC;QACrD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACtD,OAAO,EAAE;gBACP,YAAY,EAAE,UAAU;gBACxB,MAAM,EAAE,kBAAkB;aAC3B;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,QAAQ,CAAC,KAAsB;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACrC,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,IAAI,EAAE;QAClD,MAAM,EAAE,YAAY;QACpB,cAAc,EAAE,qCAAqC,IAAI,EAAE;QAC3D,GAAG,EAAE,GAAG,eAAe,WAAW,IAAI,EAAE;QACxC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,KAAc,EACd,KAAc;IAEd,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;IAChC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-creation.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec/post-creation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAMzE,8EAA8E;AAC9E,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CAQxD;AAED,qFAAqF;AACrF,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB7B;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAUvE;
|
|
1
|
+
{"version":3,"file":"post-creation.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec/post-creation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAMzE,8EAA8E;AAC9E,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CAQxD;AAED,qFAAqF;AACrF,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB7B;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAUvE;AA8BD,kHAAkH;AAClH,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAsCnC"}
|
|
@@ -46,6 +46,24 @@ export function fireSpecCreatedHook(projectId, spec) {
|
|
|
46
46
|
void dispatchHookEvent(projectId, buildSpecCreatedPayload(projectId, spec.id, spec.title, spec.type));
|
|
47
47
|
})();
|
|
48
48
|
}
|
|
49
|
+
// === Technology stack pattern matching (version verification) ===
|
|
50
|
+
const TECH_STACK_PATTERNS = [
|
|
51
|
+
/\b(?:node|nodejs|npm|yarn|pnpm|bun)\b/i,
|
|
52
|
+
/\b(?:react|vue|angular|svelte|next|nuxt|remix|astro)\b/i,
|
|
53
|
+
/\b(?:python|pip|poetry|conda|django|flask|fastapi)\b/i,
|
|
54
|
+
/\b(?:java|maven|gradle|spring|quarkus|micronaut)\b/i,
|
|
55
|
+
/\b(?:golang|go\s+module|pkg\.go)\b/i,
|
|
56
|
+
/\b(?:rust|cargo|crates\.io)\b/i,
|
|
57
|
+
/\b(?:docker|kubernetes|k8s|helm|terraform|pulumi)\b/i,
|
|
58
|
+
/\b(?:postgres|mysql|mongodb|redis|elasticsearch|kafka|rabbitmq)\b/i,
|
|
59
|
+
/\b(?:typescript|eslint|webpack|vite|rollup|esbuild)\b/i,
|
|
60
|
+
/\b(?:flutter|dart|pub\.dev|android|kotlin|swift|ios)\b/i,
|
|
61
|
+
/\bv?\d+\.\d+/,
|
|
62
|
+
];
|
|
63
|
+
/** Returns true if description references any known technology or version. */
|
|
64
|
+
function hasTechStackReferences(description) {
|
|
65
|
+
return TECH_STACK_PATTERNS.some((p) => p.test(description));
|
|
66
|
+
}
|
|
49
67
|
// === Template pattern matching ===
|
|
50
68
|
const TEMPLATE_PATTERNS = [
|
|
51
69
|
{ pattern: /\b(?:crud|create\s+read\s+update\s+delete|rest\s+api)\b/i, category: 'crud' },
|
|
@@ -69,7 +87,14 @@ export async function generatePostCreationSuggestions(projectPath, description)
|
|
|
69
87
|
catch {
|
|
70
88
|
// Best-effort: if detection fails, skip suggestion
|
|
71
89
|
}
|
|
72
|
-
// Item 2: Suggest
|
|
90
|
+
// Item 2: Suggest version verification when description references technology stacks
|
|
91
|
+
if (hasTechStackReferences(description)) {
|
|
92
|
+
suggestions.push({
|
|
93
|
+
tool: 'verify_versions',
|
|
94
|
+
reason: 'IMPORTANT: Before approving, verify all technology versions in this spec against official sources (npm registry, GitHub releases, Docker Hub, official docs). Outdated versions can cause security vulnerabilities and compatibility issues.',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Item 3: Suggest templates when description matches known patterns
|
|
73
98
|
for (const { pattern, category } of TEMPLATE_PATTERNS) {
|
|
74
99
|
if (pattern.test(description)) {
|
|
75
100
|
suggestions.push({
|