juno-code 1.0.47 → 1.0.50

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.
Files changed (60) hide show
  1. package/README.md +455 -205
  2. package/dist/bin/cli.d.mts +17 -0
  3. package/dist/bin/cli.d.ts +17 -0
  4. package/dist/bin/cli.js +6456 -17604
  5. package/dist/bin/cli.js.map +1 -1
  6. package/dist/bin/cli.mjs +6443 -17589
  7. package/dist/bin/cli.mjs.map +1 -1
  8. package/dist/bin/feedback-collector.d.mts +2 -0
  9. package/dist/bin/feedback-collector.d.ts +2 -0
  10. package/dist/bin/feedback-collector.js.map +1 -1
  11. package/dist/bin/feedback-collector.mjs.map +1 -1
  12. package/dist/index.d.mts +2133 -0
  13. package/dist/index.d.ts +2133 -0
  14. package/dist/index.js +3916 -14711
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +3914 -14516
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/templates/extensions/pi/juno-skill-preprocessor.ts +239 -0
  19. package/dist/templates/scripts/__pycache__/github.cpython-313.pyc +0 -0
  20. package/dist/templates/scripts/__pycache__/parallel_runner.cpython-313.pyc +0 -0
  21. package/dist/templates/scripts/__pycache__/slack_respond.cpython-313.pyc +0 -0
  22. package/dist/templates/scripts/install_requirements.sh +41 -3
  23. package/dist/templates/scripts/kanban.sh +22 -4
  24. package/dist/templates/scripts/parallel_runner.sh +2242 -0
  25. package/dist/templates/services/README.md +61 -1
  26. package/dist/templates/services/__pycache__/claude.cpython-313.pyc +0 -0
  27. package/dist/templates/services/__pycache__/codex.cpython-313.pyc +0 -0
  28. package/dist/templates/services/__pycache__/pi.cpython-313.pyc +0 -0
  29. package/dist/templates/services/claude.py +132 -33
  30. package/dist/templates/services/codex.py +179 -66
  31. package/dist/templates/services/gemini.py +117 -27
  32. package/dist/templates/services/pi.py +2796 -0
  33. package/dist/templates/skills/claude/kanban-workflow/SKILL.md +138 -0
  34. package/dist/templates/skills/claude/plan-kanban-tasks/SKILL.md +15 -8
  35. package/dist/templates/skills/claude/ralph-loop/SKILL.md +18 -22
  36. package/dist/templates/skills/claude/ralph-loop/references/first_check.md +15 -14
  37. package/dist/templates/skills/claude/ralph-loop/references/implement.md +17 -17
  38. package/dist/templates/skills/claude/ralph-loop/scripts/kanban.sh +22 -4
  39. package/dist/templates/skills/claude/understand-project/SKILL.md +15 -8
  40. package/dist/templates/skills/codex/kanban-workflow/SKILL.md +139 -0
  41. package/dist/templates/skills/codex/plan-kanban-tasks/SKILL.md +32 -0
  42. package/dist/templates/skills/codex/ralph-loop/SKILL.md +18 -22
  43. package/dist/templates/skills/codex/ralph-loop/references/first_check.md +15 -14
  44. package/dist/templates/skills/codex/ralph-loop/references/implement.md +17 -17
  45. package/dist/templates/skills/codex/ralph-loop/scripts/kanban.sh +22 -4
  46. package/dist/templates/skills/codex/understand-project/SKILL.md +46 -0
  47. package/dist/templates/skills/pi/.gitkeep +0 -0
  48. package/dist/templates/skills/pi/kanban-workflow/SKILL.md +139 -0
  49. package/dist/templates/skills/pi/plan-kanban-tasks/SKILL.md +32 -0
  50. package/dist/templates/skills/pi/ralph-loop/SKILL.md +43 -0
  51. package/dist/templates/skills/pi/ralph-loop/references/first_check.md +21 -0
  52. package/dist/templates/skills/pi/ralph-loop/references/implement.md +99 -0
  53. package/dist/templates/skills/pi/understand-project/SKILL.md +46 -0
  54. package/package.json +26 -46
  55. package/dist/templates/scripts/__pycache__/attachment_downloader.cpython-38.pyc +0 -0
  56. package/dist/templates/scripts/__pycache__/github.cpython-38.pyc +0 -0
  57. package/dist/templates/scripts/__pycache__/slack_fetch.cpython-38.pyc +0 -0
  58. package/dist/templates/scripts/__pycache__/slack_state.cpython-38.pyc +0 -0
  59. package/dist/templates/services/__pycache__/claude.cpython-38.pyc +0 -0
  60. package/dist/templates/services/__pycache__/codex.cpython-38.pyc +0 -0
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: understand-project
3
+ description: Understand current project and create/update specs under @.juno_task/specs/* , it allows you understand dependencies. and prepare for implementation. Use when user explicitly ask you, or when asking for understand the project, first see how it works and then do [main task] with respect to [constraints]
4
+ argument-hint: "[Main Task] [Constraints] [Ultimate Goal]"
5
+ enable-shell-directives: true
6
+ ---
7
+
8
+ ## Main Task
9
+
10
+ !`jq -r '.mainTask' ./.juno_task/config.json`
11
+
12
+ $1
13
+
14
+ ### Task 1
15
+
16
+ Ultrathink !
17
+ First task is to study @.juno_task/plan.md (it may be incorrect) and is to use up to 500 subagents to study existing project
18
+ and study what is needed to achieve the main task.
19
+ From that create/update a @.juno_task/plan.md which is a bullet point list sorted in priority of the items which have yet to be implemeneted. Think extra hard.
20
+ Study @.juno_task/plan.md to determine starting point for research and keep it up to date with items considered complete/incomplete using subagents.
21
+
22
+ ### Task 2
23
+
24
+ Second Task is to understand the task, create a spec for process to follow, plan to execute, scripts to create, virtual enviroment that we need, things that we need to be aware of, how to test the scripts and follow progress.
25
+ Think hard and plan/create spec for every step of this task
26
+ and for each part create a seperate .md file under @.juno_task/specs/\*
27
+
28
+ ## ULTIMATE Goal
29
+
30
+ We want to achieve the main Task with respect to the Constraints section
31
+ Consider missing steps and plan. If the step is missing then author the specification at @.juno_task/specs/FILENAME.md (do NOT assume that it does not exist, search before creating). The naming of the module should be GenZ named and not conflict with another module name. If you create a new step then document the plan to implement in @.juno_task/plan.md
32
+
33
+ ### @.juno_task/specs/ file format.
34
+
35
+ - github flavored markdown
36
+ - GenZ module names and without conflict to another module name.
37
+ - Start with Priority in Codebase, Example: P0-core-module.md
38
+ - the goal is when we run `ls` command in the specs folder we could understand what are the cornerstone of the project with one glance.
39
+
40
+ ### Constraints
41
+
42
+ $2
43
+
44
+ ---
45
+
46
+ $ARGUMENTS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juno-code",
3
- "version": "1.0.47",
3
+ "version": "1.0.50",
4
4
  "description": "Ralph Wiggum meet Kanban! Ralph style execution for [Claude Code, Codex, Gemini, Cursor]. One task per iteration, automatic progress tracking, and git commits. Set it and let it run.",
5
5
  "keywords": [
6
6
  "Ralph",
@@ -31,7 +31,8 @@
31
31
  },
32
32
  "bin": {
33
33
  "juno-code": "./dist/bin/juno-code.sh",
34
- "juno-collect-feedback": "./dist/bin/feedback-collector.mjs"
34
+ "yy": "./dist/bin/juno-code.sh",
35
+ "feedback-juno-code": "./dist/bin/feedback-collector.mjs"
35
36
  },
36
37
  "files": [
37
38
  "dist",
@@ -40,94 +41,73 @@
40
41
  ],
41
42
  "scripts": {
42
43
  "dev": "tsx src/bin/cli.ts",
43
- "build": "tsup && npm run build:copy-templates && npm run build:copy-services && npm run build:copy-skills && npm run build:copy-wrapper",
44
+ "build": "tsup && npm run build:copy-templates && npm run build:copy-services && npm run build:copy-skills && npm run build:copy-extensions && npm run build:copy-wrapper",
44
45
  "build:copy-templates": "node -e \"const fs = require('fs-extra'); const path = require('path'); fs.copySync('src/templates/scripts', 'dist/templates/scripts', { recursive: true }); fs.readdirSync('dist/templates/scripts').filter(f => f.endsWith('.sh')).forEach(f => fs.chmodSync(path.join('dist/templates/scripts', f), 0o755));\"",
45
- "build:copy-services": "node -e \"const fs = require('fs-extra'); const path = require('path'); const src = 'src/templates/services'; const dest = 'dist/templates/services'; fs.copySync(src, dest, { recursive: true }); const required = ['codex.py','claude.py','gemini.py']; const missing = required.filter(file => !fs.existsSync(path.join(dest, file))); if (missing.length) { throw new Error('Missing required service scripts in dist: ' + missing.join(', ')); } required.forEach(file => fs.chmodSync(path.join(dest, file), 0o755));\"",
46
- "build:copy-skills": "node -e \"const fs = require('fs-extra'); const src = 'src/templates/skills'; const dest = 'dist/templates/skills'; fs.copySync(src, dest, { recursive: true });\"",
46
+ "build:copy-services": "node -e \"const fs = require('fs-extra'); const path = require('path'); const src = 'src/templates/services'; const dest = 'dist/templates/services'; fs.copySync(src, dest, { recursive: true }); const required = ['codex.py','claude.py','gemini.py','pi.py']; const missing = required.filter(file => !fs.existsSync(path.join(dest, file))); if (missing.length) { throw new Error('Missing required service scripts in dist: ' + missing.join(', ')); } required.forEach(file => fs.chmodSync(path.join(dest, file), 0o755));\"",
47
+ "build:copy-skills": "node -e \"const fs = require('fs-extra'); const src = 'src/templates/skills'; const dest = 'dist/templates/skills'; fs.copySync(src, dest, { recursive: true, dereference: true });\"",
48
+ "build:copy-extensions": "node -e \"const fs = require('fs-extra'); const src = 'src/templates/extensions'; const dest = 'dist/templates/extensions'; if (fs.existsSync(src)) { fs.copySync(src, dest, { recursive: true }); }\"",
47
49
  "build:copy-wrapper": "node -e \"const fs = require('fs-extra'); fs.copySync('src/bin/juno-code.sh', 'dist/bin/juno-code.sh'); fs.chmodSync('dist/bin/juno-code.sh', 0o755);\"",
48
50
  "build:watch": "tsup --watch",
49
- "test": "vitest",
50
- "test:tui": "RUN_TUI=1 vitest -c ./vitest.tui.config.ts run",
51
- "test:tui:preserve": "PRESERVE_TMP=1 RUN_TUI=1 vitest -c ./vitest.tui.config.ts run",
52
- "test:feedback": "RUN_TUI=1 vitest -c ./vitest.tui.config.ts run src/cli/__tests__/feedback-command-tui-execution.test.ts",
51
+ "test": "vitest run -c ./vitest.fast.config.ts",
52
+ "test:full": "vitest run",
53
53
  "test:binary": "vitest run src/cli/__tests__/binary-execution-interactive.test.ts",
54
- "help:test:tui": "bash ./scripts/test-usage.sh tui",
55
54
  "help:test:binary": "bash ./scripts/test-usage.sh binary",
56
55
  "test:unit": "vitest run src/__tests__/unit",
57
56
  "test:integration": "vitest run src/__tests__/integration",
58
57
  "test:e2e": "vitest run src/__tests__/e2e",
59
- "test:coverage": "vitest run --coverage",
60
- "test:watch": "vitest",
61
- "lint": "eslint src --ext .ts,.tsx",
62
- "lint:fix": "eslint src --ext .ts,.tsx --fix",
63
- "format": "prettier --write src/**/*.{ts,tsx,json,md}",
64
- "format:check": "prettier --check src/**/*.{ts,tsx,json,md}",
58
+ "test:coverage": "bash scripts/run-coverage.sh",
59
+ "test:coverage:ts": "vitest run --coverage",
60
+ "test:coverage:python": "python -m pytest test_pi_service/ test_codex_streaming/ test_claude_service/ test_slack_integration/ test_github_integration/ test_attachments/ --cov=src/templates/services --cov=src/templates/scripts --cov-report=lcov:coverage/python-lcov.info --cov-report=term-missing -q",
61
+ "test:watch": "vitest -c ./vitest.fast.config.ts",
62
+ "test:python": "python -m pytest test_pi_service/ test_codex_streaming/ test_claude_service/ test_slack_integration/ test_github_integration/ test_attachments/ -q",
63
+ "lint": "eslint src --ext .ts",
64
+ "lint:fix": "eslint src --ext .ts --fix",
65
+ "format": "prettier --write \"src/**/*.{ts,md}\"",
66
+ "format:check": "prettier --check \"src/**/*.{ts,md}\"",
65
67
  "typecheck": "tsc --noEmit",
66
68
  "clean": "rimraf dist",
67
69
  "prepack": "npm run clean && npm run build",
68
70
  "cli": "tsx src/bin/cli.ts",
69
71
  "completion:install": "tsx src/bin/cli.ts --install-completion",
70
- "docs:api": "typedoc src/index.ts",
71
- "release": "semantic-release",
72
+ "build:exp": "npm run build && bash scripts/install-exp.sh install",
73
+ "uninstall:exp": "bash scripts/install-exp.sh uninstall",
72
74
  "deploy": "bash scripts/publish-all.sh patch",
73
75
  "deploy:minor": "bash scripts/publish-all.sh minor",
74
76
  "deploy:major": "bash scripts/publish-all.sh major",
75
77
  "deploy:dry-run": "bash scripts/publish-all.sh patch --dry-run"
76
78
  },
77
79
  "dependencies": {
78
- "@modelcontextprotocol/sdk": "^1.20.0",
79
80
  "chalk": "^5.3.0",
80
81
  "cli-table3": "^0.6.5",
81
82
  "commander": "^11.1.0",
82
83
  "execa": "^8.0.1",
83
- "fast-glob": "^3.3.2",
84
- "file-type": "^18.7.0",
85
84
  "fs-extra": "^11.1.1",
86
- "fuse.js": "^6.6.2",
87
- "glob": "^10.4.5",
88
- "handlebars": "^4.7.8",
89
- "ink": "^4.4.1",
90
- "js-yaml": "^4.1.0",
91
- "juno-code": "file:develop_package",
92
- "react": "^18.2.0",
85
+ "glob": "^13.0.6",
86
+ "js-yaml": "^4.1.1",
93
87
  "semver": "^7.5.4",
88
+ "strip-ansi": "^7.1.2",
94
89
  "supports-color": "^9.4.0",
95
90
  "uuid": "^9.0.1",
96
91
  "which": "^4.0.0",
97
92
  "zod": "^3.22.4"
98
93
  },
99
94
  "devDependencies": {
100
- "@faker-js/faker": "^8.3.1",
101
95
  "@testing-library/jest-dom": "^6.1.5",
102
- "@testing-library/react": "^14.1.2",
103
- "@testing-library/user-event": "^14.5.1",
104
96
  "@types/fs-extra": "^11.0.4",
105
97
  "@types/js-yaml": "^4.0.9",
106
98
  "@types/node": "^20.10.0",
107
- "@types/react": "^18.2.45",
108
99
  "@types/semver": "^7.5.6",
109
- "@types/tmp": "^0.2.6",
110
100
  "@types/uuid": "^9.0.7",
111
101
  "@typescript-eslint/eslint-plugin": "^6.14.0",
112
102
  "@typescript-eslint/parser": "^6.14.0",
113
103
  "@vitest/coverage-v8": "^1.0.4",
114
104
  "eslint": "^8.55.0",
115
105
  "eslint-config-prettier": "^9.1.0",
116
- "eslint-plugin-react": "^7.33.2",
117
- "eslint-plugin-react-hooks": "^4.6.0",
118
- "happy-dom": "^12.10.3",
119
- "ink-testing-library": "^3.0.0",
120
- "memfs": "^4.6.0",
121
- "msw": "^2.0.11",
122
- "node-pty": "^1.0.0",
123
106
  "prettier": "^3.1.1",
124
- "rimraf": "^5.0.5",
125
- "semantic-release": "^22.0.12",
126
- "strip-ansi": "^7.1.2",
127
- "tmp": "^0.2.1",
128
- "tsup": "^8.0.1",
107
+ "rimraf": "^6.1.3",
108
+ "sucrase": "^3.35.1",
109
+ "tsup": "^8.5.1",
129
110
  "tsx": "^4.6.2",
130
- "typedoc": "^0.25.4",
131
111
  "typescript": "^5.3.3",
132
112
  "vitest": "^1.0.4"
133
113
  },