@mrciphersmith/keryx 0.2.80 → 0.2.81
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/cli.js +8058 -3466
- package/package.json +20 -6
- package/src/gdgraph/affected.test.ts +33 -0
- package/src/gdgraph/build.ts +54 -17
- package/src/gdgraph/fallback.test.ts +1 -1
- package/src/gdgraph/import-kind.test.ts +342 -22
- package/src/gdgraph/query.ts +14 -1
- package/src/gdgraph/service.test.ts +31 -1
- package/src/gdgraph/service.ts +33 -1
- package/src/gdgraph/staleness.test.ts +208 -0
- package/src/gdgraph/staleness.ts +195 -13
- package/src/gdgraph/symbols-capability.test.ts +98 -1
- package/src/gdgraph/symbols-capability.ts +105 -0
- package/src/gdgraph/treesitter/adapter.test.ts +104 -0
- package/src/gdgraph/treesitter/adapter.ts +146 -6
- package/src/gdgraph/treesitter/real-grammar-fixture.test.ts +71 -0
- package/src/gdgraph/types.ts +27 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +9 -6
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +9 -6
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +9 -6
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +9 -6
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +9 -6
- package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +2 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/orchestrator-prompt.md +2 -2
|
@@ -10,7 +10,7 @@ triggers:
|
|
|
10
10
|
- "Implement issue task"
|
|
11
11
|
metadata:
|
|
12
12
|
author: "MrCipherSmith"
|
|
13
|
-
version: "1.3.
|
|
13
|
+
version: "1.3.1"
|
|
14
14
|
category: "implementation"
|
|
15
15
|
agent_worthy: true
|
|
16
16
|
compatible_harnesses: "claude,cursor,codex,zed,opencode"
|
|
@@ -23,7 +23,7 @@ license: "MIT"
|
|
|
23
23
|
|
|
24
24
|
Receives a single atomic task (JSON task object from `issue-analyzer`) and implements it end-to-end. Designed to run autonomously as a sub-agent — no user interaction required. Commits its changes to a shared feature branch managed by the orchestrator.
|
|
25
25
|
|
|
26
|
-
**Input:** JSON task object + workspace context (branch, codebase path, issue number)
|
|
26
|
+
**Input:** JSON task object + workspace context (branch, codebase path, optional real issue number)
|
|
27
27
|
**Output:** JSON result object with implementation status, files modified, verification results
|
|
28
28
|
|
|
29
29
|
## When to Use
|
|
@@ -86,10 +86,12 @@ TASK: (from JSON object passed by orchestrator)
|
|
|
86
86
|
WORKSPACE:
|
|
87
87
|
codebase_path: absolute path to the repository
|
|
88
88
|
branch: feature branch to work on (already checked out by orchestrator)
|
|
89
|
-
issue_number: GitHub issue number
|
|
89
|
+
issue_number: Optional real GitHub issue number; omit for description-based tasks
|
|
90
90
|
issue_title: issue title (for commit messages)
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
+
For a description-based task, omit `issue_number` and issue references in commit messages. Never substitute a flow ID or fabricate a GitHub issue. A supplied issue number must remain a positive integer.
|
|
94
|
+
|
|
93
95
|
**1.3 For fix tasks (dispatched from review loop):**
|
|
94
96
|
|
|
95
97
|
```
|
|
@@ -120,7 +122,7 @@ The refusals are the contract's, not a checklist you run by eye
|
|
|
120
122
|
| `task_type` outside `ui_component\|store_logic\|service_api\|refactoring\|fix\|mixed` | `task.task_type.enum` |
|
|
121
123
|
| A `task_id` that is not `task-<n>` | `task.task_id.pattern` |
|
|
122
124
|
| Empty `target_files` or empty `acceptance_criteria` | `minItems: 1` on both |
|
|
123
|
-
| Missing `codebase_path` / `branch`
|
|
125
|
+
| Missing `codebase_path` / `branch` | `workspace.required` |
|
|
124
126
|
| `skip_confirmation` anything but `true` | `automation.skip_confirmation.const` |
|
|
125
127
|
| `max_self_fix_attempts` above 3 | `automation.max_self_fix_attempts.maximum` |
|
|
126
128
|
| Any field the contract does not declare | `additionalProperties: false` |
|
|
@@ -315,7 +317,7 @@ Execute the change plan. Write production-quality code.
|
|
|
315
317
|
|
|
316
318
|
**4.5 Commit after implementation:**
|
|
317
319
|
|
|
318
|
-
|
|
320
|
+
When auto-commit is enabled, create a conventional commit with the changes. Include the `refs #<issue_number>` line below only when a positive real issue number was supplied; otherwise omit that entire line:
|
|
319
321
|
```bash
|
|
320
322
|
git add <modified files>
|
|
321
323
|
git commit -m "<type>(<scope>): <description>
|
|
@@ -399,6 +401,7 @@ said. Report the block instead, naming what repeated.
|
|
|
399
401
|
**Never run `git reset --hard`, `git clean`, or any unscoped revert.** You do not own the worktree. `job-orchestrator` dispatches implementers in PARALLEL WAVES sharing a single worktree, so an unscoped reset destroys a wave-mate's uncommitted work — work that is not yours, cannot be recovered, and whose loss is invisible to you because the other agent's failure surfaces somewhere else entirely. If you cannot identify which files are yours, leave the tree exactly as it is and say so in the report: a dirty tree is recoverable, a destroyed one is not.
|
|
400
402
|
|
|
401
403
|
**5.5 Re-commit fixes if any:**
|
|
404
|
+
When auto-commit is enabled, use the template below. Include `refs #<issue_number>` only for a supplied positive real issue number; otherwise omit that entire line.
|
|
402
405
|
```bash
|
|
403
406
|
git add <fixed files>
|
|
404
407
|
git commit -m "fix(<scope>): resolve lint/type/test issues
|
|
@@ -530,7 +533,7 @@ second copy of a schema is how that happens.
|
|
|
530
533
|
5. **DO** use project path aliases (`@components`, `@utils`, etc.) for imports.
|
|
531
534
|
6. **DO** wrap React components with `observer()` when they access MobX stores.
|
|
532
535
|
7. **DO** use `runInAction()` after every `await` in MobX actions.
|
|
533
|
-
8. **DO**
|
|
536
|
+
8. **DO** use conventional commit format when auto-commit is enabled. Reference only a supplied real issue number; omit the issue reference when absent.
|
|
534
537
|
9. **DO** verify your work before reporting.
|
|
535
538
|
10. **DO** make `STATUS: <TOKEN>` the first line of your final message, and put no
|
|
536
539
|
JSON in the response body. The full JSON result is the file Phase 6.1 writes
|
|
@@ -10,7 +10,7 @@ triggers:
|
|
|
10
10
|
- "Implement issue task"
|
|
11
11
|
metadata:
|
|
12
12
|
author: "MrCipherSmith"
|
|
13
|
-
version: "1.3.
|
|
13
|
+
version: "1.3.1"
|
|
14
14
|
category: "implementation"
|
|
15
15
|
agent_worthy: true
|
|
16
16
|
compatible_harnesses: "claude,cursor,codex,zed,opencode"
|
|
@@ -23,7 +23,7 @@ license: "MIT"
|
|
|
23
23
|
|
|
24
24
|
Receives a single atomic task (JSON task object from `issue-analyzer`) and implements it end-to-end. Designed to run autonomously as a sub-agent — no user interaction required. Commits its changes to a shared feature branch managed by the orchestrator.
|
|
25
25
|
|
|
26
|
-
**Input:** JSON task object + workspace context (branch, codebase path, issue number)
|
|
26
|
+
**Input:** JSON task object + workspace context (branch, codebase path, optional real issue number)
|
|
27
27
|
**Output:** JSON result object with implementation status, files modified, verification results
|
|
28
28
|
|
|
29
29
|
## When to Use
|
|
@@ -86,10 +86,12 @@ TASK: (from JSON object passed by orchestrator)
|
|
|
86
86
|
WORKSPACE:
|
|
87
87
|
codebase_path: absolute path to the repository
|
|
88
88
|
branch: feature branch to work on (already checked out by orchestrator)
|
|
89
|
-
issue_number: GitHub issue number
|
|
89
|
+
issue_number: Optional real GitHub issue number; omit for description-based tasks
|
|
90
90
|
issue_title: issue title (for commit messages)
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
+
For a description-based task, omit `issue_number` and issue references in commit messages. Never substitute a flow ID or fabricate a GitHub issue. A supplied issue number must remain a positive integer.
|
|
94
|
+
|
|
93
95
|
**1.3 For fix tasks (dispatched from review loop):**
|
|
94
96
|
|
|
95
97
|
```
|
|
@@ -120,7 +122,7 @@ The refusals are the contract's, not a checklist you run by eye
|
|
|
120
122
|
| `task_type` outside `ui_component\|store_logic\|service_api\|refactoring\|fix\|mixed` | `task.task_type.enum` |
|
|
121
123
|
| A `task_id` that is not `task-<n>` | `task.task_id.pattern` |
|
|
122
124
|
| Empty `target_files` or empty `acceptance_criteria` | `minItems: 1` on both |
|
|
123
|
-
| Missing `codebase_path` / `branch`
|
|
125
|
+
| Missing `codebase_path` / `branch` | `workspace.required` |
|
|
124
126
|
| `skip_confirmation` anything but `true` | `automation.skip_confirmation.const` |
|
|
125
127
|
| `max_self_fix_attempts` above 3 | `automation.max_self_fix_attempts.maximum` |
|
|
126
128
|
| Any field the contract does not declare | `additionalProperties: false` |
|
|
@@ -315,7 +317,7 @@ Execute the change plan. Write production-quality code.
|
|
|
315
317
|
|
|
316
318
|
**4.5 Commit after implementation:**
|
|
317
319
|
|
|
318
|
-
|
|
320
|
+
When auto-commit is enabled, create a conventional commit with the changes. Include the `refs #<issue_number>` line below only when a positive real issue number was supplied; otherwise omit that entire line:
|
|
319
321
|
```bash
|
|
320
322
|
git add <modified files>
|
|
321
323
|
git commit -m "<type>(<scope>): <description>
|
|
@@ -399,6 +401,7 @@ said. Report the block instead, naming what repeated.
|
|
|
399
401
|
**Never run `git reset --hard`, `git clean`, or any unscoped revert.** You do not own the worktree. `job-orchestrator` dispatches implementers in PARALLEL WAVES sharing a single worktree, so an unscoped reset destroys a wave-mate's uncommitted work — work that is not yours, cannot be recovered, and whose loss is invisible to you because the other agent's failure surfaces somewhere else entirely. If you cannot identify which files are yours, leave the tree exactly as it is and say so in the report: a dirty tree is recoverable, a destroyed one is not.
|
|
400
402
|
|
|
401
403
|
**5.5 Re-commit fixes if any:**
|
|
404
|
+
When auto-commit is enabled, use the template below. Include `refs #<issue_number>` only for a supplied positive real issue number; otherwise omit that entire line.
|
|
402
405
|
```bash
|
|
403
406
|
git add <fixed files>
|
|
404
407
|
git commit -m "fix(<scope>): resolve lint/type/test issues
|
|
@@ -530,7 +533,7 @@ second copy of a schema is how that happens.
|
|
|
530
533
|
5. **DO** use project path aliases (`@components`, `@utils`, etc.) for imports.
|
|
531
534
|
6. **DO** wrap React components with `observer()` when they access MobX stores.
|
|
532
535
|
7. **DO** use `runInAction()` after every `await` in MobX actions.
|
|
533
|
-
8. **DO**
|
|
536
|
+
8. **DO** use conventional commit format when auto-commit is enabled. Reference only a supplied real issue number; omit the issue reference when absent.
|
|
534
537
|
9. **DO** verify your work before reporting.
|
|
535
538
|
10. **DO** make `STATUS: <TOKEN>` the first line of your final message, and put no
|
|
536
539
|
JSON in the response body. The full JSON result is the file Phase 6.1 writes
|
|
@@ -10,7 +10,7 @@ triggers:
|
|
|
10
10
|
- "Implement issue task"
|
|
11
11
|
metadata:
|
|
12
12
|
author: "MrCipherSmith"
|
|
13
|
-
version: "1.3.
|
|
13
|
+
version: "1.3.1"
|
|
14
14
|
category: "implementation"
|
|
15
15
|
agent_worthy: true
|
|
16
16
|
compatible_harnesses: "claude,cursor,codex,zed,opencode"
|
|
@@ -23,7 +23,7 @@ license: "MIT"
|
|
|
23
23
|
|
|
24
24
|
Receives a single atomic task (JSON task object from `issue-analyzer`) and implements it end-to-end. Designed to run autonomously as a sub-agent — no user interaction required. Commits its changes to a shared feature branch managed by the orchestrator.
|
|
25
25
|
|
|
26
|
-
**Input:** JSON task object + workspace context (branch, codebase path, issue number)
|
|
26
|
+
**Input:** JSON task object + workspace context (branch, codebase path, optional real issue number)
|
|
27
27
|
**Output:** JSON result object with implementation status, files modified, verification results
|
|
28
28
|
|
|
29
29
|
## When to Use
|
|
@@ -86,10 +86,12 @@ TASK: (from JSON object passed by orchestrator)
|
|
|
86
86
|
WORKSPACE:
|
|
87
87
|
codebase_path: absolute path to the repository
|
|
88
88
|
branch: feature branch to work on (already checked out by orchestrator)
|
|
89
|
-
issue_number: GitHub issue number
|
|
89
|
+
issue_number: Optional real GitHub issue number; omit for description-based tasks
|
|
90
90
|
issue_title: issue title (for commit messages)
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
+
For a description-based task, omit `issue_number` and issue references in commit messages. Never substitute a flow ID or fabricate a GitHub issue. A supplied issue number must remain a positive integer.
|
|
94
|
+
|
|
93
95
|
**1.3 For fix tasks (dispatched from review loop):**
|
|
94
96
|
|
|
95
97
|
```
|
|
@@ -120,7 +122,7 @@ The refusals are the contract's, not a checklist you run by eye
|
|
|
120
122
|
| `task_type` outside `ui_component\|store_logic\|service_api\|refactoring\|fix\|mixed` | `task.task_type.enum` |
|
|
121
123
|
| A `task_id` that is not `task-<n>` | `task.task_id.pattern` |
|
|
122
124
|
| Empty `target_files` or empty `acceptance_criteria` | `minItems: 1` on both |
|
|
123
|
-
| Missing `codebase_path` / `branch`
|
|
125
|
+
| Missing `codebase_path` / `branch` | `workspace.required` |
|
|
124
126
|
| `skip_confirmation` anything but `true` | `automation.skip_confirmation.const` |
|
|
125
127
|
| `max_self_fix_attempts` above 3 | `automation.max_self_fix_attempts.maximum` |
|
|
126
128
|
| Any field the contract does not declare | `additionalProperties: false` |
|
|
@@ -315,7 +317,7 @@ Execute the change plan. Write production-quality code.
|
|
|
315
317
|
|
|
316
318
|
**4.5 Commit after implementation:**
|
|
317
319
|
|
|
318
|
-
|
|
320
|
+
When auto-commit is enabled, create a conventional commit with the changes. Include the `refs #<issue_number>` line below only when a positive real issue number was supplied; otherwise omit that entire line:
|
|
319
321
|
```bash
|
|
320
322
|
git add <modified files>
|
|
321
323
|
git commit -m "<type>(<scope>): <description>
|
|
@@ -399,6 +401,7 @@ said. Report the block instead, naming what repeated.
|
|
|
399
401
|
**Never run `git reset --hard`, `git clean`, or any unscoped revert.** You do not own the worktree. `job-orchestrator` dispatches implementers in PARALLEL WAVES sharing a single worktree, so an unscoped reset destroys a wave-mate's uncommitted work — work that is not yours, cannot be recovered, and whose loss is invisible to you because the other agent's failure surfaces somewhere else entirely. If you cannot identify which files are yours, leave the tree exactly as it is and say so in the report: a dirty tree is recoverable, a destroyed one is not.
|
|
400
402
|
|
|
401
403
|
**5.5 Re-commit fixes if any:**
|
|
404
|
+
When auto-commit is enabled, use the template below. Include `refs #<issue_number>` only for a supplied positive real issue number; otherwise omit that entire line.
|
|
402
405
|
```bash
|
|
403
406
|
git add <fixed files>
|
|
404
407
|
git commit -m "fix(<scope>): resolve lint/type/test issues
|
|
@@ -530,7 +533,7 @@ second copy of a schema is how that happens.
|
|
|
530
533
|
5. **DO** use project path aliases (`@components`, `@utils`, etc.) for imports.
|
|
531
534
|
6. **DO** wrap React components with `observer()` when they access MobX stores.
|
|
532
535
|
7. **DO** use `runInAction()` after every `await` in MobX actions.
|
|
533
|
-
8. **DO**
|
|
536
|
+
8. **DO** use conventional commit format when auto-commit is enabled. Reference only a supplied real issue number; omit the issue reference when absent.
|
|
534
537
|
9. **DO** verify your work before reporting.
|
|
535
538
|
10. **DO** make `STATUS: <TOKEN>` the first line of your final message, and put no
|
|
536
539
|
JSON in the response body. The full JSON result is the file Phase 6.1 writes
|
package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json
CHANGED
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"type": "object",
|
|
106
106
|
"description": "Workspace context managed by the orchestrator.",
|
|
107
107
|
"additionalProperties": false,
|
|
108
|
-
"required": ["codebase_path", "branch"
|
|
108
|
+
"required": ["codebase_path", "branch"],
|
|
109
109
|
"properties": {
|
|
110
110
|
"codebase_path": {
|
|
111
111
|
"type": "string",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"issue_number": {
|
|
121
121
|
"type": "integer",
|
|
122
122
|
"minimum": 1,
|
|
123
|
-
"description": "GitHub issue number for commit references"
|
|
123
|
+
"description": "Optional real GitHub issue number for commit references; omit for description-based tasks and flows"
|
|
124
124
|
},
|
|
125
125
|
"issue_title": {
|
|
126
126
|
"type": "string",
|
|
@@ -47,7 +47,7 @@ TASK:
|
|
|
47
47
|
WORKSPACE:
|
|
48
48
|
codebase_path → absolute path to project repo (worktree path)
|
|
49
49
|
branch → feature branch name (already checked out in worktree)
|
|
50
|
-
issue_number → GitHub issue number
|
|
50
|
+
issue_number → Optional real GitHub issue number; omit for description-based tasks
|
|
51
51
|
issue_title → GitHub issue title
|
|
52
52
|
|
|
53
53
|
JOB_CONTEXT (optional):
|
|
@@ -68,7 +68,7 @@ the rule. Do not dispatch a request that does not validate. The schema is
|
|
|
68
68
|
`input-contract.schema.json` in this folder, registered in
|
|
69
69
|
`src/gdskills/contracts.ts`; it is what refuses an empty `target_files`, a
|
|
70
70
|
`task_type` outside the enum, a `task_id` that is not `task-<n>`, a missing
|
|
71
|
-
`codebase_path`/`branch
|
|
71
|
+
`codebase_path`/`branch`, `skip_confirmation` other than `true`,
|
|
72
72
|
`max_self_fix_attempts` above 3, and any undeclared field.
|
|
73
73
|
|
|
74
74
|
One check the schema cannot make, because it is a fact about the machine:
|