@benzotti/jedi 0.1.12 → 0.1.14

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/action/action.yml CHANGED
@@ -17,7 +17,7 @@ inputs:
17
17
  trigger_phrase:
18
18
  description: 'The trigger phrase to look for in comments'
19
19
  required: false
20
- default: '@jedi'
20
+ default: 'Hey Jedi'
21
21
  jedi_version:
22
22
  description: 'Version of @benzotti/jedi to install for init'
23
23
  required: false
@@ -9,12 +9,12 @@
9
9
  # - Set CLICKUP_API_TOKEN secret for ClickUp ticket integration
10
10
  # - Run `npx @benzotti/jedi init` locally to customise framework files
11
11
  #
12
- # Usage: Comment on any issue or PR with @jedi followed by a command:
13
- # @jedi plan <description> — Create an implementation plan
14
- # @jedi quick <description> — Make a small, focused change
15
- # @jedi review — Review the current PR
16
- # @jedi feedback — Address PR review comments
17
- # @jedi do <clickup-ticket-url> — Full flow: plan + implement from ticket
12
+ # Usage: Comment on any issue or PR with "Hey Jedi" followed by a command:
13
+ # Hey Jedi plan <description> — Create an implementation plan
14
+ # Hey Jedi quick <description> — Make a small, focused change
15
+ # Hey Jedi review — Review the current PR
16
+ # Hey Jedi feedback — Address PR review comments
17
+ # Hey Jedi do <clickup-ticket-url> — Full flow: plan + implement from ticket
18
18
  #
19
19
  # Conversation: Jedi supports back-and-forth iteration. After Jedi responds,
20
20
  # reply with feedback to refine, or say "approved" to finalise.
@@ -39,11 +39,11 @@ permissions:
39
39
  id-token: write
40
40
 
41
41
  jobs:
42
- # ── Triggered by @jedi comments on issues/PRs ──
42
+ # ── Triggered by "Hey Jedi" comments on issues/PRs ──
43
43
  jedi:
44
44
  if: >-
45
45
  (github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment')
46
- && contains(github.event.comment.body, '@jedi')
46
+ && contains(github.event.comment.body, 'Hey Jedi')
47
47
  runs-on: ubuntu-latest
48
48
  steps:
49
49
  - uses: actions/checkout@v4
@@ -94,7 +94,7 @@ jobs:
94
94
  uses: anthropics/claude-code-action@v1
95
95
  with:
96
96
  anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
97
- trigger_phrase: '@jedi'
97
+ trigger_phrase: 'Hey Jedi'
98
98
  bot_name: 'jedi[bot]'
99
99
  env:
100
100
  CLICKUP_API_TOKEN: ${{ secrets.CLICKUP_API_TOKEN }}
package/dist/index.js CHANGED
@@ -9250,7 +9250,7 @@ async function copyFrameworkFiles(cwd, projectType, force, ci = false) {
9250
9250
  const frameworkDest = join2(cwd, ".jdi", "framework");
9251
9251
  const glob = new Bun.Glob("**/*");
9252
9252
  for await (const file of glob.scan({ cwd: frameworkDir })) {
9253
- if (file.startsWith("adapters/") || file.startsWith("commands/"))
9253
+ if (file.startsWith("adapters/"))
9254
9254
  continue;
9255
9255
  const src2 = join2(frameworkDir, file);
9256
9256
  const dest = join2(frameworkDest, file);
@@ -9366,6 +9366,8 @@ Recognise natural language JDI intents and invoke the matching skill via the Ski
9366
9366
 
9367
9367
  Extract flags from context: "in a worktree" \u2192 \`--worktree\`, "lightweight" \u2192 \`--worktree-lightweight\`, "single agent" \u2192 \`--single\`, "use teams" \u2192 \`--team\`. If the intent is unclear, ask. Never guess.
9368
9368
 
9369
+ Planning and implementation are separate gates \u2014 NEVER auto-proceed to implementation after plan approval.
9370
+
9369
9371
  ## Iterative Refinement
9370
9372
 
9371
9373
  After \`/jdi:create-plan\` or \`/jdi:implement-plan\` completes, the conversation continues naturally \u2014 no new command invocation needed. When the user provides feedback (e.g. "change task 2", "move this to a helper", "add error handling"), apply the changes directly, update state, and present the updated summary. When the user approves (e.g. "approved", "looks good", "lgtm"), finalise the review state. The conversation IS the feedback loop.
@@ -9388,6 +9390,8 @@ Recognise natural language JDI intents and invoke the matching skill via the Ski
9388
9390
 
9389
9391
  Extract flags from context: "in a worktree" \u2192 \`--worktree\`, "lightweight" \u2192 \`--worktree-lightweight\`, "single agent" \u2192 \`--single\`, "use teams" \u2192 \`--team\`. If the intent is unclear, ask. Never guess.
9390
9392
 
9393
+ Planning and implementation are separate gates \u2014 NEVER auto-proceed to implementation after plan approval.
9394
+
9391
9395
  ## Iterative Refinement
9392
9396
 
9393
9397
  After \`/jdi:create-plan\` or \`/jdi:implement-plan\` completes, the conversation continues naturally \u2014 no new command invocation needed. When the user provides feedback (e.g. "change task 2", "move this to a helper", "add error handling"), apply the changes directly, update state, and present the updated summary. When the user approves (e.g. "approved", "looks good", "lgtm"), finalise the review state. The conversation IS the feedback loop.
@@ -11093,7 +11097,7 @@ function buildConversationContext(thread, currentCommentId) {
11093
11097
  for (const comment of thread) {
11094
11098
  if (comment.id === currentCommentId)
11095
11099
  break;
11096
- if (comment.body.includes("@jedi")) {
11100
+ if (/hey\s+jedi/i.test(comment.body)) {
11097
11101
  inJediConversation = true;
11098
11102
  jediSegments.push(comment);
11099
11103
  } else if (inJediConversation) {
@@ -11143,7 +11147,7 @@ function formatResultComment(command, success, summary) {
11143
11147
 
11144
11148
  // src/commands/action.ts
11145
11149
  function parseComment(comment, isFollowUp) {
11146
- const match = comment.match(/@jedi\s+(.+)/is);
11150
+ const match = comment.match(/hey\s+jedi\s+(.+)/is);
11147
11151
  if (!match) {
11148
11152
  if (isFollowUp) {
11149
11153
  return {
@@ -11205,12 +11209,12 @@ function parseComment(comment, isFollowUp) {
11205
11209
  var actionCommand = defineCommand({
11206
11210
  meta: {
11207
11211
  name: "action",
11208
- description: "GitHub Action entry point \u2014 parse @jedi comment and run workflow"
11212
+ description: "GitHub Action entry point \u2014 parse 'Hey Jedi' comment and run workflow"
11209
11213
  },
11210
11214
  args: {
11211
11215
  comment: {
11212
11216
  type: "positional",
11213
- description: "The raw comment body containing @jedi mention",
11217
+ description: "The raw comment body containing 'Hey Jedi' mention",
11214
11218
  required: true
11215
11219
  },
11216
11220
  "comment-id": {
@@ -11248,7 +11252,7 @@ var actionCommand = defineCommand({
11248
11252
  }
11249
11253
  const intent = parseComment(args.comment, isFollowUp);
11250
11254
  if (!intent) {
11251
- consola.error("Could not parse @jedi intent from comment");
11255
+ consola.error("Could not parse 'Hey Jedi' intent from comment");
11252
11256
  process.exit(1);
11253
11257
  }
11254
11258
  consola.info(`Parsed intent: ${intent.isFeedback ? "feedback on previous" : intent.command}${intent.fullFlow ? " (full flow)" : ""}`);
@@ -11487,7 +11491,7 @@ var setupActionCommand = defineCommand({
11487
11491
  "Jedi GitHub Action Setup",
11488
11492
  "",
11489
11493
  "Uses: anthropics/claude-code-action@v1",
11490
- "Trigger: @jedi in issue/PR comments",
11494
+ "Trigger: 'Hey Jedi' in issue/PR comments",
11491
11495
  "",
11492
11496
  "Required secrets (set via GitHub UI or CLI):",
11493
11497
  "",
@@ -11499,11 +11503,11 @@ var setupActionCommand = defineCommand({
11499
11503
  "",
11500
11504
  "Usage: Comment on any issue or PR with:",
11501
11505
  "",
11502
- " @jedi plan <description>",
11503
- " @jedi quick <small fix>",
11504
- " @jedi do <clickup-ticket-url>",
11505
- " @jedi review",
11506
- " @jedi feedback",
11506
+ " Hey Jedi plan <description>",
11507
+ " Hey Jedi quick <small fix>",
11508
+ " Hey Jedi do <clickup-ticket-url>",
11509
+ " Hey Jedi review",
11510
+ " Hey Jedi feedback",
11507
11511
  "",
11508
11512
  "Conversation: Reply to Jedi with feedback to iterate,",
11509
11513
  "or say 'approved' to finalise."
@@ -11514,7 +11518,7 @@ var setupActionCommand = defineCommand({
11514
11518
  // package.json
11515
11519
  var package_default = {
11516
11520
  name: "@benzotti/jedi",
11517
- version: "0.1.12",
11521
+ version: "0.1.14",
11518
11522
  description: "JDI - Context-efficient AI development framework for Claude Code",
11519
11523
  type: "module",
11520
11524
  bin: {
@@ -27,6 +27,6 @@ Create an implementation plan using a single planner agent (includes research).
27
27
  9. **Present summary** (name, objective, task table, files) then ask: _"Provide feedback to refine, or say **approved** to finalise."_
28
28
  10. **Review loop**: approval → update state to `"approved"`, confirm. Feedback → revise plan in-place, increment revision, re-present summary. Repeat until approved. This is natural conversation — no separate command needed.
29
29
 
30
- Agent base (read FIRST for cache): ./components/meta/AgentBase.md | Agent spec: ./agents/jdi-planner.md
30
+ Agent base (read FIRST for cache): .jdi/framework/components/meta/AgentBase.md | Agent spec: .jdi/framework/agents/jdi-planner.md
31
31
 
32
32
  Feature to plan: $ARGUMENTS
@@ -26,8 +26,8 @@ Execute a PLAN.md with complexity-based routing.
26
26
  11. **Present summary** (tasks completed, files changed, verification results, deviations) then ask: _"Provide feedback to adjust, or say **approved** to finalise."_
27
27
  12. **Review loop**: approval → update state to `"complete"`, suggest commit/PR. Feedback → apply code changes, run tests, increment revision, re-present. Repeat until approved. Natural conversation — no separate command needed.
28
28
 
29
- Agent base (read FIRST for cache): ./components/meta/AgentBase.md | Agent specs: ./agents/jdi-backend.md, ./agents/jdi-frontend.md
30
- Orchestration: ./components/meta/AgentTeamsOrchestration.md | Routing: ./components/meta/ComplexityRouter.md
29
+ Agent base (read FIRST for cache): .jdi/framework/components/meta/AgentBase.md | Agent specs: .jdi/framework/agents/jdi-backend.md, .jdi/framework/agents/jdi-frontend.md
30
+ Orchestration: .jdi/framework/components/meta/AgentTeamsOrchestration.md | Routing: .jdi/framework/components/meta/ComplexityRouter.md
31
31
 
32
32
  When spawning agents, detect project type and include a `## Project Context` block (type, tech stack, quality gates, working directory) in the spawn prompt. This saves agents 2-3 discovery tool calls.
33
33
 
@@ -27,6 +27,6 @@ Remove a git worktree and clean up all associated resources.
27
27
  7. **Update state**: set `worktree.active: false`, clear `worktree.path`, `worktree.branch` in `.jdi/config/state.yaml`
28
28
  8. **Report**: what was removed
29
29
 
30
- Reference: ./hooks/jdi-worktree-cleanup.md
30
+ Reference: .jdi/framework/hooks/jdi-worktree-cleanup.md
31
31
 
32
32
  Worktree to remove: $ARGUMENTS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benzotti/jedi",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "JDI - Context-efficient AI development framework for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {