@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.
Files changed (2) hide show
  1. package/dist/index.js +81 -25
  2. 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, status updates, and sign-offs (e.g. "Jedi has completed..." not "Claude has completed...").
9303
- End each response with a brief signature line: \`\u2014 Jedi\`
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("### \u2694\uFE0F Jedi")
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
- function formatJediComment(response) {
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
- `### \u2694\uFE0F Jedi`,
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
- `### \u2694\uFE0F Jedi`,
11197
+ `<h3>${emoji} Jedi <sup>${command} \xB7 failed</sup></h3>`,
11198
+ ``,
11199
+ `---`,
11178
11200
  ``,
11179
- `**${command} failed.** ${summary}`
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 = formatJediComment("_Thinking..._");
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
- `## Presentation`,
11445
- `Follow the planning workflow in your spec. When presenting the plan:`,
11446
- `1. Start with a brief summary of the approach`,
11447
- `2. Include the FULL plan in a collapsible details block using this format:`,
11448
- ` <details>`,
11449
- ` <summary>View full plan</summary>`,
11450
- ` `,
11451
- ` [full plan content here as markdown]`,
11452
- ` `,
11453
- ` </details>`,
11454
- `3. After the plan, suggest 3-5 optional additions the user might want (e.g. "Would you also like testing? linting? state management?"). These are NOT part of the plan.`,
11455
- `4. Ask for feedback. The user will respond via another GitHub comment.`
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: anthropics/claude-code-action@v1",
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.21",
11715
+ version: "0.1.23",
11660
11716
  description: "JDI - Context-efficient AI development framework for Claude Code",
11661
11717
  type: "module",
11662
11718
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benzotti/jedi",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "JDI - Context-efficient AI development framework for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {