@kleber.mottajr/juninho 1.0.0-alpha.2 → 1.0.0-alpha.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5F"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD5F"}
package/dist/installer.js CHANGED
@@ -26,19 +26,19 @@ async function runSetup(projectDir, options = {}) {
26
26
  console.log("[juninho] ✓ Directories created");
27
27
  // Step 2: Write agents
28
28
  (0, agents_js_1.writeAgents)(projectDir);
29
- console.log("[juninho] ✓ Agents created (7)");
29
+ console.log("[juninho] ✓ Agents created (9)");
30
30
  // Step 3: Write skills
31
31
  (0, skills_js_1.writeSkills)(projectDir);
32
32
  console.log("[juninho] ✓ Skills created (5)");
33
33
  // Step 4: Write plugins
34
34
  (0, plugins_js_1.writePlugins)(projectDir);
35
- console.log("[juninho] ✓ Plugins created (10)");
35
+ console.log("[juninho] ✓ Plugins created (11)");
36
36
  // Step 5: Write tools
37
37
  (0, tools_js_1.writeTools)(projectDir);
38
38
  console.log("[juninho] ✓ Tools created (4)");
39
39
  // Step 6: Write commands
40
40
  (0, commands_js_1.writeCommands)(projectDir);
41
- console.log("[juninho] ✓ Commands created (7)");
41
+ console.log("[juninho] ✓ Commands created (13)");
42
42
  // Step 7: Write state files
43
43
  (0, state_js_1.writeState)(projectDir);
44
44
  console.log("[juninho] ✓ State files created");
@@ -48,12 +48,55 @@ async function runSetup(projectDir, options = {}) {
48
48
  // Step 9: Patch opencode.json
49
49
  (0, docs_js_1.patchOpencodeJson)(projectDir);
50
50
  console.log("[juninho] ✓ opencode.json patched");
51
- // Step 10: Write marker
51
+ // Step 10: Install pre-commit hook (outer validation loop)
52
+ writePreCommitHook(projectDir);
53
+ // Step 11: Write marker
52
54
  (0, fs_1.writeFileSync)(marker, new Date().toISOString());
53
55
  console.log("");
54
56
  console.log("[juninho] ✓ Framework installed successfully!");
55
57
  console.log("[juninho] Open OpenCode — /plan, /spec and /implement are ready.");
56
- console.log("[juninho] Agents available: @planner, @spec-writer, @implementer, @validator, @reviewer, @unify");
58
+ console.log("[juninho] Agents: @planner, @spec-writer, @implementer, @validator, @reviewer, @unify, @explore, @librarian");
59
+ }
60
+ function writePreCommitHook(projectDir) {
61
+ const gitHooksDir = path_1.default.join(projectDir, ".git", "hooks");
62
+ if (!(0, fs_1.existsSync)(gitHooksDir)) {
63
+ // Not a git repo or hooks dir doesn't exist — skip silently
64
+ return;
65
+ }
66
+ const hookPath = path_1.default.join(gitHooksDir, "pre-commit");
67
+ if ((0, fs_1.existsSync)(hookPath)) {
68
+ const existing = (0, fs_1.readFileSync)(hookPath, "utf-8");
69
+ if (!existing.includes("installed by juninho")) {
70
+ // Preserve existing hook — do not overwrite
71
+ console.log("[juninho] ⚠ pre-commit hook already exists — skipping (not installed by juninho)");
72
+ return;
73
+ }
74
+ }
75
+ const hookContent = `#!/bin/sh
76
+ # Deterministic outer validation loop — installed by juninho
77
+ # Runs typecheck + lint + tests before every commit.
78
+ # Do not bypass with --no-verify.
79
+ set -e
80
+
81
+ echo "[pre-commit] Running typecheck..."
82
+ npx tsc --noEmit 2>&1 || { echo "[pre-commit] FAIL: TypeScript errors"; exit 1; }
83
+
84
+ echo "[pre-commit] Running lint..."
85
+ npx eslint . --max-warnings=0 2>&1 || { echo "[pre-commit] FAIL: Lint errors"; exit 1; }
86
+
87
+ echo "[pre-commit] Running tests..."
88
+ npx jest --passWithNoTests 2>&1 || { echo "[pre-commit] FAIL: Tests failed"; exit 1; }
89
+
90
+ echo "[pre-commit] All checks passed"
91
+ `;
92
+ (0, fs_1.writeFileSync)(hookPath, hookContent);
93
+ try {
94
+ (0, fs_1.chmodSync)(hookPath, 0o755);
95
+ console.log("[juninho] ✓ pre-commit hook installed");
96
+ }
97
+ catch {
98
+ console.log("[juninho] ✓ pre-commit hook written (chmod not supported on this platform — make it executable manually)");
99
+ }
57
100
  }
58
101
  function createDirectories(projectDir) {
59
102
  const dirs = [
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUpD"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAYpD"}