cyrus-edge-worker 0.2.41 → 0.2.42
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/DefaultSkillsDeployer.d.ts +1 -1
- package/dist/DefaultSkillsDeployer.d.ts.map +1 -1
- package/dist/DefaultSkillsDeployer.js +6 -2
- package/dist/DefaultSkillsDeployer.js.map +1 -1
- package/package.json +16 -17
- package/cyrus-skills-plugin/.claude-plugin/plugin.json +0 -4
- package/dist/cyrus-skills-plugin/cyrus-skills-plugin/.claude-plugin/plugin.json +0 -4
- package/dist/cyrus-skills-plugin/cyrus-skills-plugin/skills/debug/SKILL.md +0 -29
- package/dist/cyrus-skills-plugin/cyrus-skills-plugin/skills/implementation/SKILL.md +0 -17
- package/dist/cyrus-skills-plugin/cyrus-skills-plugin/skills/investigate/SKILL.md +0 -23
- package/dist/cyrus-skills-plugin/cyrus-skills-plugin/skills/summarize/SKILL.md +0 -47
- package/dist/cyrus-skills-plugin/cyrus-skills-plugin/skills/verify-and-ship/SKILL.md +0 -74
|
@@ -18,7 +18,7 @@ export declare class DefaultSkillsDeployer {
|
|
|
18
18
|
private readonly deployedSkillsPath;
|
|
19
19
|
private readonly manifestDir;
|
|
20
20
|
private readonly manifestPath;
|
|
21
|
-
constructor(cyrusHome: string, logger: ILogger);
|
|
21
|
+
constructor(cyrusHome: string, logger: ILogger, bundledSkillsDir?: string);
|
|
22
22
|
/**
|
|
23
23
|
* Ensure default skills are deployed to cyrusHome.
|
|
24
24
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultSkillsDeployer.d.ts","sourceRoot":"","sources":["../src/DefaultSkillsDeployer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAQhC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"DefaultSkillsDeployer.d.ts","sourceRoot":"","sources":["../src/DefaultSkillsDeployer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAQhC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EAChC,gBAAgB,CAAC,EAAE,MAAM;IAiB1B;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;YAoDvB,MAAM;CAQpB"}
|
|
@@ -20,10 +20,14 @@ export class DefaultSkillsDeployer {
|
|
|
20
20
|
deployedSkillsPath;
|
|
21
21
|
manifestDir;
|
|
22
22
|
manifestPath;
|
|
23
|
-
constructor(cyrusHome, logger) {
|
|
23
|
+
constructor(cyrusHome, logger, bundledSkillsDir) {
|
|
24
24
|
this.cyrusHome = cyrusHome;
|
|
25
25
|
this.logger = logger;
|
|
26
|
-
|
|
26
|
+
// Default: skills live alongside the compiled JS in dist/, placed there
|
|
27
|
+
// by the copy-prompts build step. Callers (e.g. tests) can override.
|
|
28
|
+
this.bundledSkillsPath =
|
|
29
|
+
bundledSkillsDir ??
|
|
30
|
+
join(dirname(fileURLToPath(import.meta.url)), "cyrus-skills-plugin", "skills");
|
|
27
31
|
this.deployedPluginPath = join(this.cyrusHome, "cyrus-skills-plugin");
|
|
28
32
|
this.deployedSkillsPath = join(this.deployedPluginPath, "skills");
|
|
29
33
|
this.manifestDir = join(this.deployedPluginPath, ".claude-plugin");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultSkillsDeployer.js","sourceRoot":"","sources":["../src/DefaultSkillsDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAqB;IAQf;IACA;IARD,iBAAiB,CAAS;IAC1B,kBAAkB,CAAS;IAC3B,kBAAkB,CAAS;IAC3B,WAAW,CAAS;IACpB,YAAY,CAAS;IAEtC,YACkB,SAAiB,EACjB,MAAe;
|
|
1
|
+
{"version":3,"file":"DefaultSkillsDeployer.js","sourceRoot":"","sources":["../src/DefaultSkillsDeployer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cyrus-edge-worker",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.42",
|
|
4
4
|
"description": "Unified edge worker for processing Linear issues with Claude",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
"prompt-template-v2.md",
|
|
11
11
|
"prompt-template.md",
|
|
12
12
|
"label-prompt-template.md",
|
|
13
|
-
"prompts"
|
|
14
|
-
"cyrus-skills-plugin"
|
|
13
|
+
"prompts"
|
|
15
14
|
],
|
|
16
15
|
"dependencies": {
|
|
17
16
|
"@linear/sdk": "^64.0.0",
|
|
@@ -22,19 +21,19 @@
|
|
|
22
21
|
"file-type": "^21.3.2",
|
|
23
22
|
"ignore": "^7.0.5",
|
|
24
23
|
"zod": "4.3.6",
|
|
25
|
-
"cyrus-
|
|
26
|
-
"cyrus-
|
|
27
|
-
"cyrus-claude-runner": "0.2.
|
|
28
|
-
"cyrus-
|
|
29
|
-
"cyrus-
|
|
30
|
-
"cyrus-gemini-runner": "0.2.
|
|
31
|
-
"cyrus-
|
|
32
|
-
"cyrus-
|
|
33
|
-
"cyrus-
|
|
34
|
-
"cyrus-
|
|
35
|
-
"cyrus-
|
|
36
|
-
"cyrus-
|
|
37
|
-
"cyrus-
|
|
24
|
+
"cyrus-cloudflare-tunnel-client": "0.2.42",
|
|
25
|
+
"cyrus-codex-runner": "0.2.42",
|
|
26
|
+
"cyrus-claude-runner": "0.2.42",
|
|
27
|
+
"cyrus-core": "0.2.42",
|
|
28
|
+
"cyrus-config-updater": "0.2.42",
|
|
29
|
+
"cyrus-gemini-runner": "0.2.42",
|
|
30
|
+
"cyrus-gitlab-event-transport": "0.2.42",
|
|
31
|
+
"cyrus-github-event-transport": "0.2.42",
|
|
32
|
+
"cyrus-cursor-runner": "0.2.42",
|
|
33
|
+
"cyrus-linear-event-transport": "0.2.42",
|
|
34
|
+
"cyrus-simple-agent-runner": "0.2.42",
|
|
35
|
+
"cyrus-slack-event-transport": "0.2.42",
|
|
36
|
+
"cyrus-mcp-tools": "0.2.42"
|
|
38
37
|
},
|
|
39
38
|
"devDependencies": {
|
|
40
39
|
"@types/node": "^20.0.0",
|
|
@@ -49,7 +48,7 @@
|
|
|
49
48
|
},
|
|
50
49
|
"scripts": {
|
|
51
50
|
"build": "tsc && npm run copy-prompts",
|
|
52
|
-
"copy-prompts": "cp label-prompt-template.md dist/ && cp -r prompts dist/ && cp -rL cyrus-skills-plugin dist/cyrus-skills-plugin",
|
|
51
|
+
"copy-prompts": "cp label-prompt-template.md dist/ && cp -r prompts dist/ && rm -rf dist/cyrus-skills-plugin && cp -rL cyrus-skills-plugin dist/cyrus-skills-plugin",
|
|
53
52
|
"dev": "tsc --watch",
|
|
54
53
|
"test": "vitest",
|
|
55
54
|
"test:run": "vitest run",
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: debug
|
|
3
|
-
description: Full debugging workflow — reproduce the bug with a failing test, perform root cause analysis, then implement a minimal fix.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Debug
|
|
7
|
-
|
|
8
|
-
Debug a reported issue using a structured reproduction-then-fix approach.
|
|
9
|
-
|
|
10
|
-
## Phase 1: Reproduction & Root Cause Analysis
|
|
11
|
-
|
|
12
|
-
1. **Investigate** — Analyze the bug report for key symptoms and error messages
|
|
13
|
-
2. **Trace** — Search the codebase for error occurrence patterns, trace from symptom to source
|
|
14
|
-
3. **Root cause** — Identify the root cause through data flow analysis and edge case checking
|
|
15
|
-
4. **Reproduce** — Create a minimal failing test case that reproduces the exact error
|
|
16
|
-
5. **Document** — Clearly document the root cause and reproduction steps
|
|
17
|
-
|
|
18
|
-
## Phase 2: Fix Implementation
|
|
19
|
-
|
|
20
|
-
1. **Plan** — Analyze the optimal fix approach based on root cause, check for similar fixes in the codebase
|
|
21
|
-
2. **Implement** — Make the minimal, targeted fix that addresses the root cause
|
|
22
|
-
3. **Verify** — Run the failing test to confirm it passes, then run the full test suite to check for regressions
|
|
23
|
-
|
|
24
|
-
## Principles
|
|
25
|
-
|
|
26
|
-
- **Minimal changes** — Fix the bug, nothing more
|
|
27
|
-
- **Targeted** — Only touch affected code paths
|
|
28
|
-
- **Tested** — The fix must make the failing test pass and not break existing tests
|
|
29
|
-
- **No unrelated improvements** — Stay focused on the specific bug
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: implementation
|
|
3
|
-
description: Implement the requested changes. Write production-ready code, follow existing patterns, and run tests to verify your work.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Implementation
|
|
7
|
-
|
|
8
|
-
Implement the requested changes:
|
|
9
|
-
|
|
10
|
-
- Write production-ready code that follows existing patterns and conventions
|
|
11
|
-
- Run tests to verify your implementation works correctly
|
|
12
|
-
- Handle edge cases and error scenarios appropriately
|
|
13
|
-
- Keep changes focused on what was requested — avoid unrelated improvements
|
|
14
|
-
|
|
15
|
-
If tests fail, fix them before moving on to the next phase of the workflow.
|
|
16
|
-
|
|
17
|
-
When implementation is complete, proceed to the verification and shipping phase.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: investigate
|
|
3
|
-
description: Research the codebase to answer questions. Search for relevant files, gather context, and provide clear answers.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Investigate
|
|
7
|
-
|
|
8
|
-
Research the codebase and provide a clear, direct answer to the question.
|
|
9
|
-
|
|
10
|
-
## Approach
|
|
11
|
-
|
|
12
|
-
1. **Search** — Search the codebase for relevant files, functions, and patterns
|
|
13
|
-
2. **Read** — Read necessary files to understand the implementation
|
|
14
|
-
3. **Gather context** — Use tools as needed to collect comprehensive information
|
|
15
|
-
4. **Answer** — Provide a clear, direct answer using your findings
|
|
16
|
-
|
|
17
|
-
## Answer Format
|
|
18
|
-
|
|
19
|
-
- Present in Linear-compatible markdown
|
|
20
|
-
- Use `+++Section Name\n...\n+++` for collapsible sections with detailed information
|
|
21
|
-
- Include code references with file paths and line numbers
|
|
22
|
-
- For @mentions, use the Linear profile URL format from `<assignee>` context (e.g. `https://linear.app/<workspace>/profiles/<username>`)
|
|
23
|
-
- Be complete but concise — answer the question directly without unnecessary preamble
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: summarize
|
|
3
|
-
description: Format a final summary message for Linear. Your output is automatically streamed to the Linear agent session — just format it well, do not post it yourself.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Summarize
|
|
7
|
-
|
|
8
|
-
Format a final summary of the work completed. Your output will be automatically rendered inside Linear — just write it as your response. Do **not** use any tool to post or save it.
|
|
9
|
-
|
|
10
|
-
## Content
|
|
11
|
-
|
|
12
|
-
Cover the following:
|
|
13
|
-
1. **Work Completed** — What was accomplished (1-2 sentences) and key outcome
|
|
14
|
-
2. **Key Details** — Files modified, important changes, PR link if created
|
|
15
|
-
3. **Status** — Completion status and any follow-up needed
|
|
16
|
-
|
|
17
|
-
## Format
|
|
18
|
-
|
|
19
|
-
- Aim for 3-5 paragraphs maximum
|
|
20
|
-
- Use clear, professional language suitable for Linear
|
|
21
|
-
- Use markdown formatting for readability
|
|
22
|
-
- **Collapsible sections**: Wrap "Changes Made" and "Files Modified" in `+++Section Name\n...\n+++`
|
|
23
|
-
- **@mentions**: Use the Linear profile URL format from `<assignee>` context (e.g. `https://linear.app/<workspace>/profiles/<username>`)
|
|
24
|
-
|
|
25
|
-
## Example
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
## Summary
|
|
29
|
-
|
|
30
|
-
[Brief description of what was done]
|
|
31
|
-
|
|
32
|
-
+++Changes Made
|
|
33
|
-
- [Key change 1]
|
|
34
|
-
- [Key change 2]
|
|
35
|
-
+++
|
|
36
|
-
|
|
37
|
-
+++Files Modified
|
|
38
|
-
- [File 1]
|
|
39
|
-
- [File 2]
|
|
40
|
-
+++
|
|
41
|
-
|
|
42
|
-
## Status
|
|
43
|
-
|
|
44
|
-
[Current status and any next steps]
|
|
45
|
-
|
|
46
|
-
[PR link if applicable]
|
|
47
|
-
```
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: verify-and-ship
|
|
3
|
-
description: Run all quality checks (tests, lint, typecheck), fix failures, update the changelog, commit, push, and create/update the pull request or merge request.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Verify and Ship
|
|
7
|
-
|
|
8
|
-
After implementing your changes, follow these steps to verify quality and ship the work.
|
|
9
|
-
|
|
10
|
-
## 1. Acceptance Criteria Validation (CRITICAL)
|
|
11
|
-
|
|
12
|
-
Use the issue tracker `get_issue` tool to fetch the current issue details. Extract ALL acceptance criteria from the issue description and verify each one is satisfied by the implementation. If no explicit criteria exist, validate against the implied requirements from the issue title and description.
|
|
13
|
-
|
|
14
|
-
## 2. Quality Checks
|
|
15
|
-
|
|
16
|
-
Run all applicable quality checks:
|
|
17
|
-
- **Tests** — Run the full test suite. If tests fail, fix the issues and re-run. Retry up to 3 times. If you cannot resolve failures after 3 attempts, proceed and note the failures in your summary.
|
|
18
|
-
- **Linting** — Run linting tools and fix any issues found.
|
|
19
|
-
- **Type checking** — Run TypeScript type checking (if applicable) and fix any errors.
|
|
20
|
-
- **Code review** — Review your changes for quality, consistency, and best practices. Remove any debug code, console.logs, or commented-out sections.
|
|
21
|
-
|
|
22
|
-
## 3. Changelog Update
|
|
23
|
-
|
|
24
|
-
Check if the project has changelog files:
|
|
25
|
-
```bash
|
|
26
|
-
ls -la CHANGELOG.md CHANGELOG.internal.md 2>/dev/null || echo "NO_CHANGELOG"
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
If changelog files exist:
|
|
30
|
-
- Add an entry under `## [Unreleased]` in the appropriate subsection (`### Added`, `### Changed`, `### Fixed`, `### Removed`)
|
|
31
|
-
- Focus on end-user impact — be concise but descriptive
|
|
32
|
-
- Include the Linear issue identifier and PR/MR link (format: `([ISSUE-ID](linear_url), [#NUMBER](PR_OR_MR_URL))`)
|
|
33
|
-
- Follow [Keep a Changelog](https://keepachangelog.com/) format
|
|
34
|
-
|
|
35
|
-
## 4. Commit and Push
|
|
36
|
-
|
|
37
|
-
- Stage all relevant changes (including changelog updates)
|
|
38
|
-
- Commit with clear, descriptive messages following the project's commit conventions
|
|
39
|
-
- Push to the remote repository
|
|
40
|
-
|
|
41
|
-
## 5. Create or Update PR/MR
|
|
42
|
-
|
|
43
|
-
Determine the platform from the repository context (`<github_url>` or `<gitlab_url>` in the issue context). Use the appropriate tool for the platform.
|
|
44
|
-
|
|
45
|
-
### GitHub (when `<github_url>` is present)
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
git push -u origin HEAD
|
|
49
|
-
gh pr view --json url,number 2>/dev/null || gh pr create --draft --base [base_branch from context] --title "[descriptive title]" --body "Work in progress"
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### GitLab (when `<gitlab_url>` is present)
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
git push -u origin HEAD
|
|
56
|
-
glab mr view 2>/dev/null || glab mr create --draft --target-branch [base_branch from context] --title "[descriptive title]" --description "Work in progress"
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### PR/MR Description
|
|
60
|
-
|
|
61
|
-
Update the PR/MR with a comprehensive description:
|
|
62
|
-
- **Assignee attribution**: If `<github_username>` is available in the assignee context, add `Assignee: @username ([Display Name](linear_profile_url))` at the top of the body. If only a linear profile URL is available, use `Assignee: [Display Name](linear_profile_url)`.
|
|
63
|
-
- **Summary** of changes, implementation approach, and testing performed
|
|
64
|
-
- **Link** to the Linear issue
|
|
65
|
-
- **Cyrus marker**: Include `<!-- generated-by-cyrus -->` as a hidden HTML comment at the end of the body
|
|
66
|
-
- **Interaction tip**: Add this at the end (before the marker), using the bot username from `<github_bot_username>` or `<gitlab_bot_username>` in the `<agent_context>` block of the system prompt:
|
|
67
|
-
```
|
|
68
|
-
---
|
|
69
|
-
> **Tip:** I will respond to comments that @ mention @<bot_username> on this PR/MR. You can also submit a review with all your feedback at once, and I will automatically wake up to address each comment.
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Remove any "WIP:" or "Draft:" prefix from the title. Check `<agent_guidance>` — only mark the PR/MR as ready if guidance does NOT specify keeping them as drafts.
|
|
73
|
-
|
|
74
|
-
Verify the PR/MR targets the correct base branch from `<base_branch>` in the issue context.
|