@benzotti/jedi 0.1.21 → 0.1.23
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/index.js +81 -25
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9299,8 +9299,9 @@ You are Jedi, an AI development framework that uses specialised agents to plan,
|
|
|
9299
9299
|
## Identity
|
|
9300
9300
|
|
|
9301
9301
|
You are **Jedi**, not Claude. Always refer to yourself as "Jedi" in your responses.
|
|
9302
|
-
Use "Jedi" in summaries
|
|
9303
|
-
|
|
9302
|
+
Use "Jedi" in summaries and status updates (e.g. "Jedi has completed..." not "Claude has completed...").
|
|
9303
|
+
Do not add a signature line \u2014 the response is already branded by the Jedi CLI.
|
|
9304
|
+
Never include meta-commentary about agent activation (e.g. "You are now active as jdi-planner" or "Plan created as requested"). Just give the response directly.
|
|
9304
9305
|
|
|
9305
9306
|
## Framework
|
|
9306
9307
|
|
|
@@ -9324,6 +9325,13 @@ Check \`.jdi/persistence/codebase-index.md\` for an indexed representation of th
|
|
|
9324
9325
|
If it exists, use it for faster navigation. If it doesn't, consider generating one
|
|
9325
9326
|
and saving it to \`.jdi/persistence/codebase-index.md\` for future runs.
|
|
9326
9327
|
|
|
9328
|
+
## Scope Discipline
|
|
9329
|
+
|
|
9330
|
+
Only do what was explicitly requested. Do not add extras, tooling, or features the user did not ask for.
|
|
9331
|
+
If something is ambiguous, ask \u2014 do not guess.
|
|
9332
|
+
NEVER use time estimates (minutes, hours, etc). Use S/M/L t-shirt sizing for all task and plan sizing.
|
|
9333
|
+
Follow response templates exactly as instructed in the prompt \u2014 do not improvise the layout or structure.
|
|
9334
|
+
|
|
9327
9335
|
## Workflow Routing
|
|
9328
9336
|
|
|
9329
9337
|
Based on the user's request, follow the appropriate workflow:
|
|
@@ -11123,7 +11131,7 @@ async function fetchCommentThread(repo, issueNumber) {
|
|
|
11123
11131
|
author: parsed.author,
|
|
11124
11132
|
body: parsed.body,
|
|
11125
11133
|
createdAt: parsed.createdAt,
|
|
11126
|
-
isJedi: parsed.body.includes("
|
|
11134
|
+
isJedi: parsed.body.includes("Jedi <sup>")
|
|
11127
11135
|
});
|
|
11128
11136
|
} catch {}
|
|
11129
11137
|
}
|
|
@@ -11164,19 +11172,33 @@ function buildConversationContext(thread, currentCommentId) {
|
|
|
11164
11172
|
return { history: lines.join(`
|
|
11165
11173
|
`), previousJediRuns, isFollowUp };
|
|
11166
11174
|
}
|
|
11167
|
-
|
|
11175
|
+
var COMMAND_EMOJI = {
|
|
11176
|
+
plan: "\uD83D\uDD2E",
|
|
11177
|
+
implement: "\u25B6",
|
|
11178
|
+
quick: "\u26A1",
|
|
11179
|
+
review: "\uD83D\uDCA0",
|
|
11180
|
+
feedback: "\uD83C\uDF00",
|
|
11181
|
+
ping: "\uD83D\uDD39"
|
|
11182
|
+
};
|
|
11183
|
+
function formatJediComment(command, response) {
|
|
11184
|
+
const emoji = COMMAND_EMOJI[command] ?? "\u25C8";
|
|
11168
11185
|
return [
|
|
11169
|
-
|
|
11186
|
+
`<h3>${emoji} Jedi <sup>${command}</sup></h3>`,
|
|
11187
|
+
``,
|
|
11188
|
+
`---`,
|
|
11170
11189
|
``,
|
|
11171
11190
|
response
|
|
11172
11191
|
].join(`
|
|
11173
11192
|
`);
|
|
11174
11193
|
}
|
|
11175
11194
|
function formatErrorComment(command, summary) {
|
|
11195
|
+
const emoji = COMMAND_EMOJI[command] ?? "\u25C8";
|
|
11176
11196
|
return [
|
|
11177
|
-
|
|
11197
|
+
`<h3>${emoji} Jedi <sup>${command} \xB7 failed</sup></h3>`,
|
|
11198
|
+
``,
|
|
11199
|
+
`---`,
|
|
11178
11200
|
``,
|
|
11179
|
-
|
|
11201
|
+
summary
|
|
11180
11202
|
].join(`
|
|
11181
11203
|
`);
|
|
11182
11204
|
}
|
|
@@ -11298,9 +11320,14 @@ var actionCommand = defineCommand({
|
|
|
11298
11320
|
if (repo && commentId) {
|
|
11299
11321
|
await reactToComment(repo, commentId, "eyes").catch(() => {});
|
|
11300
11322
|
}
|
|
11323
|
+
const commandLabel = intent.isFeedback ? "feedback" : intent.command;
|
|
11301
11324
|
let placeholderCommentId = null;
|
|
11302
11325
|
if (repo && issueNumber) {
|
|
11303
|
-
const thinkingBody =
|
|
11326
|
+
const thinkingBody = `<h3>\uD83E\uDDE0 Jedi <sup>thinking</sup></h3>
|
|
11327
|
+
|
|
11328
|
+
---
|
|
11329
|
+
|
|
11330
|
+
_Working on it..._`;
|
|
11304
11331
|
placeholderCommentId = await postGitHubComment(repo, issueNumber, thinkingBody).catch(() => null);
|
|
11305
11332
|
}
|
|
11306
11333
|
if (intent.command === "ping") {
|
|
@@ -11330,7 +11357,7 @@ var actionCommand = defineCommand({
|
|
|
11330
11357
|
`| Version | \`${version}\` |`
|
|
11331
11358
|
].join(`
|
|
11332
11359
|
`);
|
|
11333
|
-
const finalBody = formatJediComment(statusBody);
|
|
11360
|
+
const finalBody = formatJediComment("ping", statusBody);
|
|
11334
11361
|
if (repo && placeholderCommentId) {
|
|
11335
11362
|
await updateGitHubComment(repo, placeholderCommentId, finalBody).catch((err) => {
|
|
11336
11363
|
consola.error("Failed to update ping comment:", err);
|
|
@@ -11437,22 +11464,51 @@ Use the ClickUp ticket above as the primary requirements source.` : ``,
|
|
|
11437
11464
|
`## Scope Rules`,
|
|
11438
11465
|
`IMPORTANT: Only plan what was explicitly requested. Do NOT add extras like testing, linting, formatting, CI, or tooling unless the user asked for them.`,
|
|
11439
11466
|
`If something is ambiguous, ask \u2014 do not guess.`,
|
|
11467
|
+
`NEVER use time estimates (minutes, hours, etc). Use t-shirt sizes: S, M, L. This is mandatory.`,
|
|
11440
11468
|
``,
|
|
11441
11469
|
`## Learnings`,
|
|
11442
11470
|
`Before planning, read .jdi/persistence/learnings.md and .jdi/framework/learnings/ if they exist. Apply any team preferences found.`,
|
|
11443
11471
|
``,
|
|
11444
|
-
`##
|
|
11445
|
-
`Follow the planning workflow in your spec.
|
|
11446
|
-
|
|
11447
|
-
`2
|
|
11448
|
-
|
|
11449
|
-
|
|
11450
|
-
|
|
11451
|
-
|
|
11452
|
-
|
|
11453
|
-
|
|
11454
|
-
|
|
11455
|
-
|
|
11472
|
+
`## Response Format`,
|
|
11473
|
+
`Follow the planning workflow in your spec to write plan files. Then respond with EXACTLY this structure (no deviations, no meta-commentary like "You are now active as..." or "Plan created"):`,
|
|
11474
|
+
``,
|
|
11475
|
+
`1-2 sentence summary of the approach.`,
|
|
11476
|
+
``,
|
|
11477
|
+
`<details>`,
|
|
11478
|
+
`<summary>View full plan</summary>`,
|
|
11479
|
+
``,
|
|
11480
|
+
`## {Plan Name}`,
|
|
11481
|
+
``,
|
|
11482
|
+
`**Overall size:** {S|M|L}`,
|
|
11483
|
+
``,
|
|
11484
|
+
`### Tasks`,
|
|
11485
|
+
``,
|
|
11486
|
+
`| Task | Name | Size | Type | Wave |`,
|
|
11487
|
+
`|------|------|------|------|------|`,
|
|
11488
|
+
`| T1 | {name} | {S|M|L} | auto | 1 |`,
|
|
11489
|
+
``,
|
|
11490
|
+
`### T1 \u2014 {Task Name}`,
|
|
11491
|
+
`**Objective:** {what this achieves}`,
|
|
11492
|
+
``,
|
|
11493
|
+
`**Steps:**`,
|
|
11494
|
+
`1. {step}`,
|
|
11495
|
+
``,
|
|
11496
|
+
`**Done when:** {completion criterion}`,
|
|
11497
|
+
``,
|
|
11498
|
+
`---`,
|
|
11499
|
+
`(repeat for each task)`,
|
|
11500
|
+
``,
|
|
11501
|
+
`### Verification`,
|
|
11502
|
+
`- [ ] {check 1}`,
|
|
11503
|
+
`- [ ] {check 2}`,
|
|
11504
|
+
``,
|
|
11505
|
+
`</details>`,
|
|
11506
|
+
``,
|
|
11507
|
+
`**Optional additions** \u2014 not included in this plan:`,
|
|
11508
|
+
`1. {suggestion}`,
|
|
11509
|
+
`2. {suggestion}`,
|
|
11510
|
+
``,
|
|
11511
|
+
`Any changes before implementation?`
|
|
11456
11512
|
].join(`
|
|
11457
11513
|
`);
|
|
11458
11514
|
break;
|
|
@@ -11570,11 +11626,11 @@ Use the ClickUp ticket above as the primary requirements source.` : ``,
|
|
|
11570
11626
|
const actionLabel = intent.isFeedback ? "feedback" : intent.command;
|
|
11571
11627
|
let commentBody;
|
|
11572
11628
|
if (success && fullResponse) {
|
|
11573
|
-
commentBody = formatJediComment(fullResponse);
|
|
11629
|
+
commentBody = formatJediComment(actionLabel, fullResponse);
|
|
11574
11630
|
} else if (!success) {
|
|
11575
11631
|
commentBody = formatErrorComment(actionLabel, "Check workflow logs for details.");
|
|
11576
11632
|
} else {
|
|
11577
|
-
commentBody = formatJediComment(`Executed \`${actionLabel}\` successfully.`);
|
|
11633
|
+
commentBody = formatJediComment(actionLabel, `Executed \`${actionLabel}\` successfully.`);
|
|
11578
11634
|
}
|
|
11579
11635
|
if (placeholderCommentId) {
|
|
11580
11636
|
await updateGitHubComment(repo, placeholderCommentId, commentBody).catch((err) => {
|
|
@@ -11627,7 +11683,7 @@ var setupActionCommand = defineCommand({
|
|
|
11627
11683
|
consola.box([
|
|
11628
11684
|
"Jedi GitHub Action Setup",
|
|
11629
11685
|
"",
|
|
11630
|
-
"Uses:
|
|
11686
|
+
"Uses: Jedi CLI via Claude Code",
|
|
11631
11687
|
"Trigger: 'Hey Jedi' in issue/PR comments",
|
|
11632
11688
|
"",
|
|
11633
11689
|
"Required secrets (set via GitHub UI or CLI):",
|
|
@@ -11656,7 +11712,7 @@ var setupActionCommand = defineCommand({
|
|
|
11656
11712
|
// package.json
|
|
11657
11713
|
var package_default = {
|
|
11658
11714
|
name: "@benzotti/jedi",
|
|
11659
|
-
version: "0.1.
|
|
11715
|
+
version: "0.1.23",
|
|
11660
11716
|
description: "JDI - Context-efficient AI development framework for Claude Code",
|
|
11661
11717
|
type: "module",
|
|
11662
11718
|
bin: {
|