@jenga-ai/agent 4.0.0 → 4.1.1
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/README.md +32 -1
- package/lib/skill-allow-list.json +1 -1
- package/package.json +1 -1
- package/project/app/api/scripts/capture-snapshot.js +12 -7
- package/project/app/ui/dist/assets/{index-C3oiuli_.js → index-DX2pfTAW.js} +16 -16
- package/project/app/ui/dist/index.html +1 -1
- package/scripts/verify-postinstall-reconcile.sh +33 -7
- package/skills/index/scripts/board_index.py +29 -1
- package/skills/j-do/SKILL.md +28 -15
- package/skills/j-doc/scripts/resolve_last_update.py +27 -1
- package/skills/j-todo/scripts/add_trivial_task.sh +12 -1
- package/skills/j-wtf/SKILL.md +1 -1
- package/skills/jenga/SKILL.md +49 -14
- package/skills/jenga/scripts/enrich-nl-prompt.sh +225 -0
- package/skills/jenga/scripts/load-nl-catalog.js +1 -1
- package/skills/jenga/scripts/match-playbook.sh +3 -2
- package/skills/jenga/scripts/run-playbook-step.sh +3 -2
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Jenga AI
|
|
2
|
-
###
|
|
2
|
+
### The AI framework for serious projects.
|
|
3
3
|
|
|
4
4
|
Jenga AI is an agentic software engineering framework for AI-assisted development: it splits work across three role-bounded agents — a Scrum Master that plans, a Developer that implements in an isolated git worktree, and a Tester that runs your test suite and owns the board status. Work survives session boundaries as Epics, Stories, and Tasks on a Markdown board your agent reads at the start of every session.
|
|
5
5
|
|
|
@@ -29,6 +29,37 @@ You've had this happen: Claude wrote the feature, said it worked, and the sessio
|
|
|
29
29
|
|
|
30
30
|
Jenga AI solves each of these with structure: persistent engineering context maintained via board state, strict agent roles, typed inter-agent contracts, and session-end hooks that carry that context between sessions.
|
|
31
31
|
|
|
32
|
+
### Documentation
|
|
33
|
+
|
|
34
|
+
Start here, then go deeper as you need it:
|
|
35
|
+
|
|
36
|
+
| Guide | What it covers |
|
|
37
|
+
|---|---|
|
|
38
|
+
| [Intro Guide](project/.wiki/intro-guide.md) | Start here. The philosophy, how to think about the system, and a first-15-minutes walkthrough for a new project or an existing codebase. Also on the [docs site](https://samwelmunga.github.io/jenga-npm/getting-started.html). |
|
|
39
|
+
|
|
40
|
+
**Core concepts** — the three pillars, in the order they build on each other:
|
|
41
|
+
|
|
42
|
+
| Concept | What it covers |
|
|
43
|
+
|---|---|
|
|
44
|
+
| [Role Separation](project/.wiki/concepts/role-separation.md) | Why Jenga AI uses three distinct agents instead of one. |
|
|
45
|
+
| [Board Hierarchy](project/.wiki/concepts/board-hierarchy.md) | Why work is structured as Epics → Stories → Tasks, and how to use that hierarchy well. |
|
|
46
|
+
| [Session Continuity](project/.wiki/concepts/session-continuity.md) | Why AI sessions losing context is the core problem — and how Jenga AI solves it structurally. |
|
|
47
|
+
|
|
48
|
+
**How-to guides** — day-to-day working patterns:
|
|
49
|
+
|
|
50
|
+
| Guide | What it covers |
|
|
51
|
+
|---|---|
|
|
52
|
+
| [Your First Feature](project/.wiki/concepts/first-feature.md) | Building a feature end-to-end, from idea to verified, committed code. |
|
|
53
|
+
| [Capturing Mid-Flow Ideas](project/.wiki/concepts/mid-flow-capture.md) | Handling a new thought, tangent, or feature idea without derailing your current work. |
|
|
54
|
+
| [Working Across Sessions](project/.wiki/concepts/multi-session-work.md) | Picking up a project after a break — without losing momentum or context. |
|
|
55
|
+
| [Parallel Tasks](project/.wiki/concepts/parallel-tasks.md) | Running multiple tasks simultaneously with `j.dooo`, or automating board-wide parallel execution with `j.jenga`. |
|
|
56
|
+
|
|
57
|
+
**Full reference:**
|
|
58
|
+
|
|
59
|
+
| Reference | What it covers |
|
|
60
|
+
|---|---|
|
|
61
|
+
| [Documentation Reference](project/.wiki/documentation.md) | Every skill, every agent, MCP tools, hooks, and the inter-agent communication contract. Also on the [docs site](https://samwelmunga.github.io/jenga-npm/reference.html). |
|
|
62
|
+
|
|
32
63
|
---
|
|
33
64
|
|
|
34
65
|
## How Jenga AI's Agentic Workflow Works
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jenga-ai/agent",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "An agentic development workflow for Claude Code, Copilot, and Codex — with a persistent Epic/Story/Task board, an isolated git worktree per task, and a separate tester agent that runs your test suite before anything is marked done.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
*
|
|
5
5
|
* E47_S04_T02 — capture step for `j.dashboard --snapshot`.
|
|
6
6
|
*
|
|
7
|
-
* Calls the dashboard API's `/v1/board`, `/v1/history`, `/v1/architecture`,
|
|
8
|
-
* exactly once each and writes their combined JSON
|
|
7
|
+
* Calls the dashboard API's `/v1/board`, `/v1/history`, `/v1/architecture`, `/v1/health`,
|
|
8
|
+
* `/v1/documentation`, and `/v1/rapports` routes exactly once each and writes their combined JSON
|
|
9
|
+
* to a single artifact, consumable by the
|
|
9
10
|
* bundling/inlining step in `E47_S04_T03` (implemented) and, for `/v1/health` specifically, by
|
|
10
11
|
* `E47_S06_T02`'s snapshot `<title>` rewrite in `../../ui/scripts/build-snapshot-html.cjs`, which
|
|
11
12
|
* needs the captured project name to bake into the exported HTML's title at build time.
|
|
@@ -44,10 +45,12 @@
|
|
|
44
45
|
* "captured_at": "<ISO 8601 UTC timestamp>",
|
|
45
46
|
* "project_root": "<absolute, realpath'd project root this snapshot was captured against>",
|
|
46
47
|
* "routes": {
|
|
47
|
-
* "board":
|
|
48
|
-
* "history": <full API envelope from GET /v1/history,
|
|
49
|
-
* "architecture": <full API envelope from GET /v1/architecture,
|
|
50
|
-
* "health": <full API envelope from GET /v1/health,
|
|
48
|
+
* "board": <full API envelope from GET /v1/board, i.e. { data, meta, error }>,
|
|
49
|
+
* "history": <full API envelope from GET /v1/history, i.e. { data, meta, error }>,
|
|
50
|
+
* "architecture": <full API envelope from GET /v1/architecture, i.e. { data, meta, error }>,
|
|
51
|
+
* "health": <full API envelope from GET /v1/health, i.e. { data, meta, error }>,
|
|
52
|
+
* "documentation": <full API envelope from GET /v1/documentation, i.e. { data, meta, error }>,
|
|
53
|
+
* "rapports": <full API envelope from GET /v1/rapports, i.e. { data, meta, error }>
|
|
51
54
|
* }
|
|
52
55
|
* }
|
|
53
56
|
* Each `routes.<name>` value is the *full* envelope exactly as the route returned it (see
|
|
@@ -92,12 +95,14 @@ const path = require('path');
|
|
|
92
95
|
const http = require('http');
|
|
93
96
|
const fs = require('fs');
|
|
94
97
|
|
|
95
|
-
const ROUTES = ['/v1/board', '/v1/history', '/v1/architecture', '/v1/health'];
|
|
98
|
+
const ROUTES = ['/v1/board', '/v1/history', '/v1/architecture', '/v1/health', '/v1/documentation', '/v1/rapports'];
|
|
96
99
|
const ROUTE_KEYS = {
|
|
97
100
|
'/v1/board': 'board',
|
|
98
101
|
'/v1/history': 'history',
|
|
99
102
|
'/v1/architecture': 'architecture',
|
|
100
103
|
'/v1/health': 'health',
|
|
104
|
+
'/v1/documentation': 'documentation',
|
|
105
|
+
'/v1/rapports': 'rapports',
|
|
101
106
|
};
|
|
102
107
|
|
|
103
108
|
function printUsage() {
|