@jaybeeuu/agent-cortex 1.41.1 → 1.42.0

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 (67) hide show
  1. package/.github/workflows/ci.yml +5 -5
  2. package/CHANGELOG.md +23 -0
  3. package/agents/ralph-plan/agent.md +7 -3
  4. package/agents/ralph-plan.agent.md +7 -3
  5. package/claude-extras/scripts/statusline-command.sh +0 -0
  6. package/docs/ideas/ban-content-assertion-tests.md +3 -1
  7. package/docs/ideas/dedicated-review-tests-skill.md +71 -0
  8. package/docs/ideas/unify-the-ticket-and-task-decomposition-workflows.md +71 -0
  9. package/package.json +5 -2
  10. package/plugin.json +1 -1
  11. package/scripts/install-instructions.sh +0 -0
  12. package/scripts/sync-plugin-version.sh +0 -0
  13. package/skills/engineering/grill-with-docs/SKILL.md +3 -2
  14. package/skills/engineering/improve-codebase-architecture/REFERENCE.md +5 -0
  15. package/skills/engineering/improve-codebase-architecture/SKILL.md +2 -1
  16. package/skills/planning/create-task/SKILL.md +8 -3
  17. package/skills/planning/create-task/scripts/create-chores.ts +4 -1
  18. package/skills/planning/prd-to-tasks/REFERENCE.md +2 -2
  19. package/skills/planning/prd-to-tasks/SKILL.md +9 -4
  20. package/skills/planning/request-refactor-plan/FORMAT.md +5 -0
  21. package/skills/planning/request-refactor-plan/SKILL.md +3 -2
  22. package/skills/planning/spec-to-tickets/REFERENCE.md +82 -0
  23. package/skills/planning/spec-to-tickets/SKILL.md +143 -0
  24. package/skills/planning/write-a-prd/FORMAT.md +6 -0
  25. package/skills/planning/write-a-prd/SKILL.md +9 -6
  26. package/skills/planning/write-a-ticket/EXAMPLES.md +133 -0
  27. package/skills/planning/write-a-ticket/SKILL.md +77 -59
  28. package/skills/productivity/bd-tool/SKILL.md +27 -2
  29. package/skills/productivity/grill-me/SKILL.md +11 -0
  30. package/skills/review/review-security/scripts/install-gitleaks.sh +0 -0
  31. package/skills/workflow/plan/SKILL.md +20 -8
  32. package/skills/workflow/ralph/REFERENCE.md +3 -1
  33. package/skills/workflow/run-pipeline-stage/SKILL.md +6 -1
  34. package/skills/workflow/using-agent-skills/SKILL.md +1 -0
  35. package/test/create-chores.test.mjs +12 -0
  36. package/test/fake-bd.test.mjs +72 -0
  37. package/test/helpers/fake-bd.mjs +26 -6
  38. package/extensions/agent-guardrails/node_modules/.bin/pi +0 -21
  39. package/extensions/agent-guardrails/node_modules/.bin/tsc +0 -21
  40. package/extensions/agent-guardrails/node_modules/.bin/tsserver +0 -21
  41. package/extensions/agent-guardrails/node_modules/.bin/tsx +0 -21
  42. package/extensions/agent-modes/node_modules/.bin/pi +0 -21
  43. package/extensions/agent-modes/node_modules/.bin/tsc +0 -21
  44. package/extensions/agent-modes/node_modules/.bin/tsserver +0 -21
  45. package/extensions/agent-modes/node_modules/.bin/tsx +0 -21
  46. package/extensions/skill-stats/node_modules/.bin/pi +0 -21
  47. package/extensions/skill-stats/node_modules/.bin/tsc +0 -21
  48. package/extensions/skill-stats/node_modules/.bin/tsserver +0 -21
  49. package/extensions/skill-stats/node_modules/.bin/tsx +0 -21
  50. package/extensions/skill-stats/pnpm-lock.yaml +0 -329
  51. package/extensions/subagent/node_modules/.bin/pi +0 -21
  52. package/extensions/subagent/node_modules/.bin/pi-ai +0 -21
  53. package/extensions/subagent/node_modules/.bin/tsc +0 -21
  54. package/extensions/subagent/node_modules/.bin/tsserver +0 -21
  55. package/extensions/subagent/node_modules/.bin/tsx +0 -21
  56. package/skills/planning/create-task/scripts/node_modules/.bin/tsc +0 -21
  57. package/skills/planning/create-task/scripts/node_modules/.bin/tsserver +0 -21
  58. package/skills/planning/create-task/scripts/node_modules/.bin/tsx +0 -21
  59. package/skills/planning/create-task/scripts/pnpm-lock.yaml +0 -342
  60. package/skills/productivity/validate-agent-dir/scripts/node_modules/.bin/tsc +0 -21
  61. package/skills/productivity/validate-agent-dir/scripts/node_modules/.bin/tsserver +0 -21
  62. package/skills/productivity/validate-agent-dir/scripts/node_modules/.bin/tsx +0 -21
  63. package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +0 -329
  64. package/skills/workflow/run-pipeline-stage/scripts/node_modules/.bin/tsc +0 -21
  65. package/skills/workflow/run-pipeline-stage/scripts/node_modules/.bin/tsserver +0 -21
  66. package/skills/workflow/run-pipeline-stage/scripts/node_modules/.bin/tsx +0 -21
  67. package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +0 -342
@@ -47,6 +47,10 @@ Establish what needs to be built through investigation and collaborative design.
47
47
  - Technical constraints and trade-offs
48
48
  - How each change will be verified
49
49
 
50
+ The epic's required sections — `## Success Criteria` for the PRD epic — are the interview's target:
51
+ it is complete only when every required section can be filled from agreed answers. Never invent
52
+ section content; surface assumptions and confirm them with the user.
53
+
50
54
  4. Sketch the major modules that will be built or modified. Look for opportunities to extract deep modules — ones that encapsulate significant behaviour behind a simple, testable interface.
51
55
 
52
56
  5. Draft a PRD using the template from `write-a-prd`. Include:
@@ -60,8 +64,9 @@ Establish what needs to be built through investigation and collaborative design.
60
64
  7. Create an epic bead from the approved PRD:
61
65
  ```bash
62
66
  bd create "<Feature Title> — PRD" --type epic \
63
- --description "<rendered PRD as markdown>" --priority p2
67
+ --description "<rendered PRD as markdown>" --priority p2 --validate
64
68
  bd tag <epic-id> workflow:plan
69
+ bd lint <epic-id>
65
70
  ```
66
71
 
67
72
  #### Phase 1 gate
@@ -70,7 +75,7 @@ Establish what needs to be built through investigation and collaborative design.
70
75
  - [ ] Design decisions resolved through interview
71
76
  - [ ] Modules sketched and reviewed with the user
72
77
  - [ ] PRD drafted and approved by the user
73
- - [ ] Epic bead created from approved PRD
78
+ - [ ] Epic bead created from approved PRD and lints clean (`bd lint <epic-id>`)
74
79
 
75
80
  ### Phase 2 — Break into tasks
76
81
 
@@ -82,13 +87,14 @@ Take the approved PRD and produce a set of epics and tasks using tracer-bullet v
82
87
  - **Title**: short descriptive name
83
88
  - **User stories covered**: which PRD stories this phase addresses
84
89
  - **What to build**: end-to-end behaviour description
85
- - **Acceptance criteria**: verifiable outcomes
90
+ - **Success criteria**: verifiable outcomes — the epic's required `## Success Criteria`
86
91
 
87
92
  10. If the work is small enough for a single epic (one phase, a few tasks), skip epics and proceed directly to Phase 3. A single epic with a few tasks dispatches through ralph more efficiently than creating unnecessary epic hierarchy. If the work has multiple distinct phases, create epics:
88
93
  ```bash
89
94
  bd create "<Phase Title>" --type epic \
90
- --description "<epic body with scope, criteria, dependencies>" --priority <same as parent>
95
+ --description "<epic body with scope, success criteria, dependencies>" --priority <same as parent> --validate
91
96
  bd tag <epic-id> workflow:plan
97
+ bd lint <epic-id>
92
98
  bd dep add <epic-id> <parent-epic-id> --type parent-child
93
99
  ```
94
100
 
@@ -146,8 +152,13 @@ Deliver a handoff bead and instructions for running ralph.
146
152
  - **Multiple independent epics**: create a parent meta-epic that groups them:
147
153
  ```bash
148
154
  bd create "<Feature Title> — Implementation" --type epic \
149
- --description "Meta-epic grouping all phases for execution. See child epics for detail." \
150
- --priority <same>
155
+ --description "Meta-epic grouping all phases for execution. See child epics for detail.
156
+
157
+ ## Success Criteria
158
+
159
+ - [ ] All child epics complete and the feature verified end-to-end." \
160
+ --priority <same> --validate
161
+ bd lint <meta-epic>
151
162
  bd dep add <epic-1> <meta-epic> --type parent-child
152
163
  bd dep add <epic-2> <meta-epic> --type parent-child
153
164
  ```
@@ -187,13 +198,14 @@ Deliver a handoff bead and instructions for running ralph.
187
198
  #### Phase 4 gate
188
199
 
189
200
  - [ ] Handoff bead identified and tagged `workflow:ralph`
201
+ - [ ] Every handoff-path bead lints clean (`bd lint`)
190
202
  - [ ] Bead state pushed with `bd dolt push`
191
203
  - [ ] Handoff summary presented with the exact instruction to give an agent
192
204
 
193
205
  ## Phase-gate checklist
194
206
 
195
- - [ ] Phase 1: PRD drafted and approved, epic bead created
196
- - [ ] Phase 2: Task breakdown approved, epics created (if needed)
207
+ - [ ] Phase 1: PRD drafted and approved, epic bead created and validated
208
+ - [ ] Phase 2: Task breakdown approved, epics created (if needed) and validated
197
209
  - [ ] Phase 3: All tasks created, classified, expanded, tree presented
198
210
  - [ ] Phase 4: Handoff bead prepared, state pushed, summary delivered
199
211
 
@@ -79,7 +79,9 @@ When a verify or review stage fails:
79
79
  ```bash
80
80
  fix_id=$(bd create "[<parent-id>] Fix (round <N>)" --type chore \
81
81
  --priority <same as parent> \
82
- --description "<CHANGES_REQUESTED list or VERIFY_FAILURES list from the triggering REPORT>" -q)
82
+ --description "Requirements: see <parent-id> acceptance criteria (`bd show <parent-id>`).
83
+
84
+ <CHANGES_REQUESTED list or VERIFY_FAILURES list from the triggering REPORT>" -q)
83
85
  bd tag $fix_id stage:fix
84
86
  bd dep add $fix_id <parent-id> --type parent-child # fix-chore is child of parent
85
87
  ```
@@ -61,12 +61,17 @@ On stage failure, create a chore bead whose description carries the feedback so
61
61
 
62
62
  ```bash
63
63
  new_id=$(bd create "[<parent-id>] <title>" --type chore \
64
- --description "<feedback content from REPORT>" --priority <parent-priority> -q)
64
+ --description "Requirements: see <parent-id> acceptance criteria (`bd show <parent-id>`).
65
+
66
+ <feedback content from REPORT>" --priority <parent-priority> -q)
65
67
  bd tag $new_id stage:<next-stage>
66
68
  bd tag $new_id workflow:ralph
67
69
  bd dep add $new_id <parent-id> --type parent-child
68
70
  ```
69
71
 
72
+ Chore beads carry no required sections, so the feedback description must point at the
73
+ parent/requirements bead (`<parent-id>`) rather than restating its acceptance criteria.
74
+
70
75
  | Triggering outcome | Suggested title | Next stage tag | Description content |
71
76
  |---|---|---|---|
72
77
  | `OUTCOME: BLOCKED` from verify | `Fix: verify failures` | `stage:code` | Full BLOCKING_ISSUES list |
@@ -23,6 +23,7 @@ Task arrives
23
23
  ├── Have a rough idea? ─────────────────→ record-idea
24
24
  ├── New feature / PRD needed? ──────────→ write-a-prd
25
25
  ├── PRD approved, need tasks? ──────────→ prd-to-tasks
26
+ ├── Spec approved, need tickets? ───────→ spec-to-tickets
26
27
  ├── Need a single task tracked? ────────→ create-task
27
28
  ├── Need to plan a feature end-to-end? ─→ plan
28
29
  ├── Running beads / task execution? ────→ ralph
@@ -70,4 +70,16 @@ describe("create-chores", () => {
70
70
  ["implementation-type:afk", "stage:code"],
71
71
  );
72
72
  });
73
+
74
+ it("validates the PR gate task but not the stage chores", async () => {
75
+ const { ids, beads } = await createChoresAgainstFakeBd(["implementation-type:afk"]);
76
+
77
+ const gate = beads.find((b) => b.id === ids.featurePrReview);
78
+ assert.equal(gate.type, "task");
79
+ assert.equal(gate.validated, true);
80
+ assert.match(gate.description, /## Acceptance Criteria/);
81
+
82
+ const codeChore = beads.find((b) => b.id === ids.code);
83
+ assert.equal(codeChore.validated, false);
84
+ });
73
85
  });
@@ -0,0 +1,72 @@
1
+ // Tests for the stateful fake `bd` helper's `--validate` model.
2
+ // The fake mirrors `bd create --validate`: a substantive bead whose description lacks the
3
+ // required section(s) for its type is rejected; chores have no requirements.
4
+
5
+ import { describe, it } from "node:test";
6
+ import assert from "node:assert/strict";
7
+ import { execFile } from "node:child_process";
8
+ import { mkdtemp, rm } from "node:fs/promises";
9
+ import { tmpdir } from "node:os";
10
+ import { join } from "node:path";
11
+
12
+ import { makeFakeBd } from "./helpers/fake-bd.mjs";
13
+
14
+ /** Run the fake `bd` binary with the given args. */
15
+ function runFake(bin, state, args) {
16
+ return new Promise((resolve) => {
17
+ execFile(bin, args, { env: { ...process.env, FAKE_BD_STATE: state } }, (error, stdout, stderr) => {
18
+ resolve({ exitCode: error ? error.code ?? 1 : 0, stdout, stderr });
19
+ });
20
+ });
21
+ }
22
+
23
+ /** Create a fresh fake workspace, run `fn`, then remove it. */
24
+ async function withFake(fn) {
25
+ const dir = await mkdtemp(join(tmpdir(), "fake-bd-"));
26
+ try {
27
+ const { bin, state } = await makeFakeBd(dir, { beads: [] });
28
+ await fn(bin, state);
29
+ } finally {
30
+ await rm(dir, { recursive: true, force: true });
31
+ }
32
+ }
33
+
34
+ describe("fake bd --validate", () => {
35
+ it("rejects a section-less task", async () => {
36
+ await withFake(async (bin, state) => {
37
+ const { exitCode, stderr } = await runFake(bin, state, ["create", "empty", "--type", "task", "--validate"]);
38
+ assert.equal(exitCode, 1);
39
+ assert.match(stderr, /Acceptance Criteria/);
40
+ });
41
+ });
42
+
43
+ it("accepts a task carrying ## Acceptance Criteria (case-insensitive)", async () => {
44
+ await withFake(async (bin, state) => {
45
+ const { exitCode } = await runFake(bin, state, [
46
+ "create", "ok", "--type", "task",
47
+ "--description", "## Acceptance criteria\n- [ ] done",
48
+ "--validate",
49
+ ]);
50
+ assert.equal(exitCode, 0);
51
+ });
52
+ });
53
+
54
+ it("requires ## Success Criteria for an epic", async () => {
55
+ await withFake(async (bin, state) => {
56
+ const { exitCode, stderr } = await runFake(bin, state, [
57
+ "create", "ep", "--type", "epic",
58
+ "--description", "## Acceptance Criteria\n- [ ] x",
59
+ "--validate",
60
+ ]);
61
+ assert.equal(exitCode, 1);
62
+ assert.match(stderr, /Success Criteria/);
63
+ });
64
+ });
65
+
66
+ it("does not require sections for a chore", async () => {
67
+ await withFake(async (bin, state) => {
68
+ const { exitCode } = await runFake(bin, state, ["create", "c", "--type", "chore", "--validate"]);
69
+ assert.equal(exitCode, 0);
70
+ });
71
+ });
72
+ });
@@ -1,10 +1,10 @@
1
1
  // Shared test helper: a stateful fake `bd` binary for create-chores.ts.
2
2
  // `bd` is a genuine external system (its real database must never be touched
3
3
  // by tests), so the script is driven against this fake via the BD_PATH
4
- // override. The fake reproduces the one real behaviour the test depends on —
5
- // `bd create --parent` inherits the parent's labels unless
6
- // `--no-inherit-labels` is passed — and records every created bead to a JSON
7
- // state file the test can read back.
4
+ // override. The fake reproduces the real behaviours the tests depend on —
5
+ // `bd create --parent` label inheritance (unless `--no-inherit-labels` is
6
+ // passed) and `bd create --validate` section enforcement — and records every
7
+ // created bead to a JSON state file the test can read back.
8
8
  //
9
9
  // State lives in `state.json` next to the binary; the test seeds it with the
10
10
  // parent bead and reads the children back after the script runs. Written async
@@ -20,7 +20,7 @@ const FAKE_BD_SCRIPT = [
20
20
  "",
21
21
  "const stateFile = process.env.FAKE_BD_STATE;",
22
22
  "const VALUE_FLAGS = new Set(['--type', '--description', '--priority', '--labels', '--parent']);",
23
- "const BOOL_FLAGS = new Set(['--silent', '--no-inherit-labels']);",
23
+ "const BOOL_FLAGS = new Set(['--silent', '--no-inherit-labels', '--validate']);",
24
24
  "",
25
25
  "(async () => {",
26
26
  " const argv = process.argv.slice(2);",
@@ -37,13 +37,33 @@ const FAKE_BD_SCRIPT = [
37
37
  " }",
38
38
  "",
39
39
  " const state = JSON.parse(await fs.readFile(stateFile, 'utf8'));",
40
+ "",
41
+ " // Model `bd create --validate`: reject a substantive bead whose description lacks the",
42
+ " // required section(s) for its type. Chores have no requirements and always pass.",
43
+ " if (bools.has('--validate')) {",
44
+ " const type = flags['--type'] || 'task';",
45
+ " const required = {",
46
+ " task: ['## Acceptance Criteria'],",
47
+ " feature: ['## Acceptance Criteria'],",
48
+ " bug: ['## Steps to Reproduce', '## Acceptance Criteria'],",
49
+ " epic: ['## Success Criteria'],",
50
+ " chore: [],",
51
+ " }[type] || ['## Acceptance Criteria'];",
52
+ " const description = flags['--description'] || '';",
53
+ " const missing = required.filter((section) => !description.toLowerCase().includes(section.toLowerCase()));",
54
+ " if (missing.length > 0) {",
55
+ " console.error('missing required sections for ' + type + ': ' + missing.join(', '));",
56
+ " process.exit(1);",
57
+ " }",
58
+ " }",
59
+ "",
40
60
  " const explicit = (flags['--labels'] || '').split(',').filter(Boolean);",
41
61
  " const parent = state.beads.find((b) => b.id === flags['--parent']);",
42
62
  " const inherited = parent && !bools.has('--no-inherit-labels') ? parent.labels : [];",
43
63
  " const labels = [...new Set([...inherited, ...explicit])];",
44
64
  "",
45
65
  " const id = 'bd-' + state.nextId++;",
46
- " state.beads.push({ id, title, labels, parent: flags['--parent'] ?? null });",
66
+ " state.beads.push({ id, title, labels, parent: flags['--parent'] ?? null, type: flags['--type'] || 'task', description: flags['--description'] || '', validated: bools.has('--validate') });",
47
67
  " await fs.writeFile(stateFile, JSON.stringify(state));",
48
68
  " process.stdout.write(id + '\\n');",
49
69
  "})().catch((err) => {",
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules/@earendil-works/pi-coding-agent/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules/@earendil-works/pi-coding-agent/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../@earendil-works/pi-coding-agent/dist/cli.js" "$@"
19
- else
20
- exec node "$basedir/../@earendil-works/pi-coding-agent/dist/cli.js" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
19
- else
20
- exec node "$basedir/../typescript/bin/tsc" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
19
- else
20
- exec node "$basedir/../typescript/bin/tsserver" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
19
- else
20
- exec node "$basedir/../tsx/dist/cli.mjs" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules/@earendil-works/pi-coding-agent/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules/@earendil-works/pi-coding-agent/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../@earendil-works/pi-coding-agent/dist/cli.js" "$@"
19
- else
20
- exec node "$basedir/../@earendil-works/pi-coding-agent/dist/cli.js" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
19
- else
20
- exec node "$basedir/../typescript/bin/tsc" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
19
- else
20
- exec node "$basedir/../typescript/bin/tsserver" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
19
- else
20
- exec node "$basedir/../tsx/dist/cli.mjs" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules/@earendil-works/pi-coding-agent/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules/@earendil-works/pi-coding-agent/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/@earendil-works+pi-coding-agent@0.78.1_ws@8.21.0_zod@4.4.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../@earendil-works/pi-coding-agent/dist/cli.js" "$@"
19
- else
20
- exec node "$basedir/../@earendil-works/pi-coding-agent/dist/cli.js" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
19
- else
20
- exec node "$basedir/../typescript/bin/tsc" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
19
- else
20
- exec node "$basedir/../typescript/bin/tsserver" "$@"
21
- fi
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/tsx@4.22.4/node_modules:/home/runner/work/agent-cortex/agent-cortex/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
19
- else
20
- exec node "$basedir/../tsx/dist/cli.mjs" "$@"
21
- fi