guardian-framework 0.1.17 → 0.1.19

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/cli.js CHANGED
@@ -1335,7 +1335,7 @@ __export(exports_package, {
1335
1335
  bin: () => bin,
1336
1336
  author: () => author
1337
1337
  });
1338
- var name = "guardian-framework", version = "0.1.17", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
1338
+ var name = "guardian-framework", version = "0.1.19", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
1339
1339
  var init_package = __esm(() => {
1340
1340
  exports = {
1341
1341
  ".": {
package/dist/exports.js CHANGED
@@ -995,7 +995,7 @@ __export(exports_package, {
995
995
  bin: () => bin,
996
996
  author: () => author
997
997
  });
998
- var name = "guardian-framework", version = "0.1.17", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
998
+ var name = "guardian-framework", version = "0.1.19", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
999
999
  var init_package = __esm(() => {
1000
1000
  exports = {
1001
1001
  ".": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "guardian-framework",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "Token-optimized agentic framework scaffolder with pi-first architecture",
5
5
  "type": "module",
6
6
  "main": "dist/exports.js",
@@ -1656,6 +1656,51 @@ export default function (pi: ExtensionAPI) {
1656
1656
  results.push(`✅ ${mod.name} — already completed, skipped`);
1657
1657
  continue;
1658
1658
  }
1659
+
1660
+ // Check if issues already exist for this module (session restart)
1661
+ const issuesDir = join(ctx.cwd, ".pi/issues");
1662
+ const freezePath = join(issuesDir, "issue-contract-freeze.md");
1663
+ if (existsSync(freezePath)) {
1664
+ // Issues exist — reconstruct pipeline without re-creating
1665
+ const existingIssues: string[] = [];
1666
+ if (existsSync(issuesDir)) {
1667
+ const files = readdirSync(issuesDir);
1668
+ for (const f of files) {
1669
+ if (f.endsWith(".md") && !f.startsWith(".")) {
1670
+ existingIssues.push(f.replace(/\.md$/, ""));
1671
+ }
1672
+ }
1673
+ }
1674
+ const pipelineFile = join(ctx.cwd, ".pi/.guardian-pipeline-state.json");
1675
+ if (!existsSync(pipelineFile) && existingIssues.length > 0) {
1676
+ const pipelineId = `PL-${String(Math.floor(Math.random() * 10000)).padStart(4, "0")}`;
1677
+ const pipelineState = {
1678
+ id: pipelineId,
1679
+ name: mod.name,
1680
+ items: existingIssues,
1681
+ steps: [
1682
+ { name: "implement", prompt: ".pi/prompts/issue-implementation-series.md", acceptance: { type: "validator", validators: ["ci"] } },
1683
+ { name: "validate", acceptance: { type: "validator", validators: ["ci", "tests", "security"] } },
1684
+ { name: "create-mr", prompt: ".pi/prompts/issue-closeout.md", acceptance: { type: "none" } },
1685
+ { name: "merge", prompt: ".pi/prompts/issue-merge.md", acceptance: { type: "validator", validators: ["ci", "canonical"] } },
1686
+ ],
1687
+ currentItemIndex: 0,
1688
+ currentStepIndex: 0,
1689
+ status: "running",
1690
+ retryCount: 0,
1691
+ results: [],
1692
+ mergeOnValid: true,
1693
+ createdAt: new Date().toISOString(),
1694
+ updatedAt: new Date().toISOString(),
1695
+ };
1696
+ const pipelineDir = dirname(pipelineFile);
1697
+ if (!existsSync(pipelineDir)) mkdirSync(pipelineDir, { recursive: true });
1698
+ writeFileSync(pipelineFile, JSON.stringify(pipelineState, null, 2));
1699
+ }
1700
+ results.push(`📋 ${mod.name} — ${existingIssues.length} issues found (pipeline resumed)`);
1701
+ continue;
1702
+ }
1703
+
1659
1704
  // Check if module has planned components BEFORE calling startEpic
1660
1705
  // (startEpic silently falls back to wrong module if no planned components)
1661
1706
  const matchedFile = findModuleByName(ctx.cwd, mod.name);
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-07-03T05:56:51Z",
2
+ "timestamp": "2026-07-03T07:05:05Z",
3
3
  "mode": "all",
4
4
  "stages_run": [],
5
5
  "summary": {
@@ -8,7 +8,7 @@
8
8
  "failed": 1,
9
9
  "skipped": 12
10
10
  },
11
- "duration_seconds": 1,
11
+ "duration_seconds": 0,
12
12
  "results": [
13
13
  {
14
14
  "name": "check_mr_traceability.sh",
@@ -68,7 +68,7 @@
68
68
  "name": "secret_scan",
69
69
  "status": "pass",
70
70
  "message": "",
71
- "duration": 1
71
+ "duration": 0
72
72
  },
73
73
  {
74
74
  "name": "dependency_audit",
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: go-enterprise-codegen
3
+ description: Full reference for Go enterprise code generation with DDD + Clean Architecture. Covers module structure, domain entities, error handling, service layer, repository pattern, HTTP handlers, testing, and anti-patterns. Loaded on-demand via agents/go-codegen.md skill.
4
+ ---
5
+
1
6
  # Go Enterprise Code Generation — DDD + Clean Architecture
2
7
 
3
8
  > Canonical skill for generating production-grade Go code following Clean Architecture with DDD.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: java-spring-enterprise-codegen
3
+ description: Full reference for Java/Spring Boot enterprise code generation with DDD + Clean Architecture. Covers module structure, JPA entities, REST controllers, service layer, exception handling, MockMvc testing, and anti-patterns. Loaded on-demand via agents/java-codegen.md skill.
4
+ ---
5
+
1
6
  # Java/Spring Boot Enterprise Code Generation — DDD + Clean Architecture
2
7
 
3
8
  > Canonical skill for generating production-grade Java code with Spring Boot following Clean Architecture with DDD.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: python-enterprise-codegen
3
+ description: Full reference for Python enterprise code generation with DDD + Clean Architecture. Covers module structure, dataclass entities, FastAPI controllers, error handling, SQLAlchemy repositories, testing, and anti-patterns. Loaded on-demand via agents/python-codegen.md skill.
4
+ ---
5
+
1
6
  # Python Enterprise Code Generation — DDD + Clean Architecture
2
7
 
3
8
  > Canonical skill for generating production-grade Python code following Clean Architecture with DDD.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: rust-enterprise-codegen
3
+ description: Full reference for Rust enterprise code generation with DDD + Clean Architecture. 17 sections covering module structure, tactical patterns, error handling, async, testing, and anti-patterns. Loaded on-demand — never inline. Use via agents/rust-codegen.md skill.
4
+ ---
5
+
1
6
  # Rust Enterprise Code Generation — DDD + Clean Architecture
2
7
 
3
8
  > Canonical skill for generating production-grade Rust code.
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: typescript-enterprise-codegen
3
+ description: Full reference for TypeScript enterprise code generation with DDD + Clean Architecture. Covers module structure, domain entities, error classes, Express/Fastify controllers, TypeORM repositories, testing, and anti-patterns. Loaded on-demand via agents/typescript-codegen.md skill.
4
+ ---
5
+
1
6
  # TypeScript/Node.js Enterprise Code Generation — DDD + Clean Architecture
2
7
 
3
8
  > Canonical skill for generating production-grade TypeScript code following Clean Architecture with DDD.