claudius-core 0.5.0 → 0.7.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 (72) hide show
  1. package/.claude/agents/worker.md +239 -0
  2. package/.claude/hooks/hooks.json +7 -7
  3. package/.claude-plugin/marketplace.json +2 -2
  4. package/dist/cli/studio.d.ts.map +1 -1
  5. package/dist/cli/studio.js +6 -2
  6. package/dist/cli/studio.js.map +1 -1
  7. package/dist/daemon/install.d.ts +10 -2
  8. package/dist/daemon/install.d.ts.map +1 -1
  9. package/dist/daemon/install.js +57 -30
  10. package/dist/daemon/install.js.map +1 -1
  11. package/dist/daemon/pulse.d.ts.map +1 -1
  12. package/dist/daemon/pulse.js +6 -2
  13. package/dist/daemon/pulse.js.map +1 -1
  14. package/dist/index.js +88 -6
  15. package/dist/index.js.map +1 -1
  16. package/dist/studio/assets/{_basePickBy-DAOuQd_U.js → _basePickBy-C2hR16gh.js} +1 -1
  17. package/dist/studio/assets/{_baseUniq-nwA3_tYl.js → _baseUniq-CFzVbudk.js} +1 -1
  18. package/dist/studio/assets/{arc-uDujf1LK.js → arc-BZOL2XPO.js} +1 -1
  19. package/dist/studio/assets/{architectureDiagram-VXUJARFQ-D_E_zXYM.js → architectureDiagram-VXUJARFQ-BjC7OnR9.js} +1 -1
  20. package/dist/studio/assets/{blockDiagram-VD42YOAC-DiaqWuPa.js → blockDiagram-VD42YOAC-NRcH-027.js} +1 -1
  21. package/dist/studio/assets/{c4Diagram-YG6GDRKO-YZnL58OY.js → c4Diagram-YG6GDRKO-nWbiNSm7.js} +1 -1
  22. package/dist/studio/assets/channel-DnvatLGW.js +1 -0
  23. package/dist/studio/assets/{chunk-4BX2VUAB-CXKqFp9J.js → chunk-4BX2VUAB-CTqI7hrK.js} +1 -1
  24. package/dist/studio/assets/{chunk-55IACEB6-BzXZQvl6.js → chunk-55IACEB6-BnE-lAfH.js} +1 -1
  25. package/dist/studio/assets/{chunk-B4BG7PRW-D3wB-c7Z.js → chunk-B4BG7PRW-BHJ9qq40.js} +1 -1
  26. package/dist/studio/assets/{chunk-DI55MBZ5-CEgD3MsH.js → chunk-DI55MBZ5-DlvIlj-V.js} +1 -1
  27. package/dist/studio/assets/{chunk-FMBD7UC4-DvXfwtlZ.js → chunk-FMBD7UC4-p91uHAWQ.js} +1 -1
  28. package/dist/studio/assets/{chunk-QN33PNHL-hBU3naD2.js → chunk-QN33PNHL-BVroAoP7.js} +1 -1
  29. package/dist/studio/assets/{chunk-QZHKN3VN-BZPrpzn4.js → chunk-QZHKN3VN-Cczh8Tn2.js} +1 -1
  30. package/dist/studio/assets/{chunk-TZMSLE5B-D07xmR6z.js → chunk-TZMSLE5B-Ccqd0ElF.js} +1 -1
  31. package/dist/studio/assets/classDiagram-2ON5EDUG-BUjVTtF6.js +1 -0
  32. package/dist/studio/assets/classDiagram-v2-WZHVMYZB-BUjVTtF6.js +1 -0
  33. package/dist/studio/assets/clone-CMK9MsTM.js +1 -0
  34. package/dist/studio/assets/{cose-bilkent-S5V4N54A-9GJL7-qP.js → cose-bilkent-S5V4N54A-DtU1Go-z.js} +1 -1
  35. package/dist/studio/assets/{dagre-6UL2VRFP-DNQUvaBw.js → dagre-6UL2VRFP-CikLH6aA.js} +1 -1
  36. package/dist/studio/assets/{diagram-PSM6KHXK-DprGidRB.js → diagram-PSM6KHXK-GaMs4LtO.js} +1 -1
  37. package/dist/studio/assets/{diagram-QEK2KX5R-CJDapLWy.js → diagram-QEK2KX5R-Df0Evsxd.js} +1 -1
  38. package/dist/studio/assets/{diagram-S2PKOQOG-BDb_ZSa5.js → diagram-S2PKOQOG-DES3wxxG.js} +1 -1
  39. package/dist/studio/assets/{erDiagram-Q2GNP2WA-DDjuGTFT.js → erDiagram-Q2GNP2WA-BXw_Cux3.js} +1 -1
  40. package/dist/studio/assets/{flowDiagram-NV44I4VS-ZFrL-N3I.js → flowDiagram-NV44I4VS-hPJHzKlj.js} +1 -1
  41. package/dist/studio/assets/{ganttDiagram-JELNMOA3-gpeBUsNl.js → ganttDiagram-JELNMOA3-aO4UETri.js} +1 -1
  42. package/dist/studio/assets/{gitGraphDiagram-V2S2FVAM-CuVIbGEV.js → gitGraphDiagram-V2S2FVAM-mUX5hI0_.js} +1 -1
  43. package/dist/studio/assets/{graph-DibLK-AH.js → graph-BWcTyBhp.js} +1 -1
  44. package/dist/studio/assets/{index-CkTZrRvl.js → index-9in4DYSh.js} +2 -2
  45. package/dist/studio/assets/{infoDiagram-HS3SLOUP-BRSV5_41.js → infoDiagram-HS3SLOUP-CnweOvjR.js} +1 -1
  46. package/dist/studio/assets/{journeyDiagram-XKPGCS4Q-BXD6VLs4.js → journeyDiagram-XKPGCS4Q-D41e00K-.js} +1 -1
  47. package/dist/studio/assets/{kanban-definition-3W4ZIXB7-BsahUVbU.js → kanban-definition-3W4ZIXB7-fT_1gQy1.js} +1 -1
  48. package/dist/studio/assets/{layout-BiztazVO.js → layout-NwignBdr.js} +1 -1
  49. package/dist/studio/assets/{linear-CACjeyHq.js → linear-Bkk5Jj9D.js} +1 -1
  50. package/dist/studio/assets/{mermaid.core-C_JSJsmu.js → mermaid.core-B7Bz7MjD.js} +4 -4
  51. package/dist/studio/assets/{mindmap-definition-VGOIOE7T-C7DKq0Qo.js → mindmap-definition-VGOIOE7T-CGYqLxuS.js} +1 -1
  52. package/dist/studio/assets/{pieDiagram-ADFJNKIX-V3MNYWUB.js → pieDiagram-ADFJNKIX-CviES2rp.js} +1 -1
  53. package/dist/studio/assets/{quadrantDiagram-AYHSOK5B-BujoECiF.js → quadrantDiagram-AYHSOK5B-DqwSyoyP.js} +1 -1
  54. package/dist/studio/assets/{requirementDiagram-UZGBJVZJ-BmW5gBof.js → requirementDiagram-UZGBJVZJ-B6lzB--M.js} +1 -1
  55. package/dist/studio/assets/{sankeyDiagram-TZEHDZUN-C4EwtO5Y.js → sankeyDiagram-TZEHDZUN-D_l3Uq8H.js} +1 -1
  56. package/dist/studio/assets/{sequenceDiagram-WL72ISMW-CMmyX6xv.js → sequenceDiagram-WL72ISMW-BVrKJhPn.js} +1 -1
  57. package/dist/studio/assets/{stateDiagram-FKZM4ZOC-RipySKyS.js → stateDiagram-FKZM4ZOC-BfSr-tlH.js} +1 -1
  58. package/dist/studio/assets/stateDiagram-v2-4FDKWEC3-DezXOCpS.js +1 -0
  59. package/dist/studio/assets/{timeline-definition-IT6M3QCI-CzZtQvXl.js → timeline-definition-IT6M3QCI-8Hm_y6ko.js} +1 -1
  60. package/dist/studio/assets/{treemap-GDKQZRPO-JZVXiD79.js → treemap-GDKQZRPO-Dp1ifWuA.js} +1 -1
  61. package/dist/studio/assets/{xychartDiagram-PRI3JC2R-Vo68V-de.js → xychartDiagram-PRI3JC2R-DER_90BN.js} +1 -1
  62. package/dist/studio/index.html +1 -1
  63. package/global/agents/sleepless.md +139 -0
  64. package/global/templates/jobs/sleepless.md +15 -0
  65. package/package.json +1 -1
  66. package/.claudius/jobs/pulse.md +0 -15
  67. package/dist/studio/assets/channel-BX7DgAEO.js +0 -1
  68. package/dist/studio/assets/classDiagram-2ON5EDUG-BpvofyN6.js +0 -1
  69. package/dist/studio/assets/classDiagram-v2-WZHVMYZB-BpvofyN6.js +0 -1
  70. package/dist/studio/assets/clone-BVw_nM2b.js +0 -1
  71. package/dist/studio/assets/stateDiagram-v2-4FDKWEC3-D7ICAwgM.js +0 -1
  72. package/global/templates/jobs/global-pulse.md +0 -17
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: worker
3
+ description: Per-repo headless worker. Spawned by the sleepless global orchestrator. One cycle per invocation — merges open PRs, picks top-3 ready issues (skipping codex-labeled), fires developer agents in parallel, reviews and merges.
4
+ model: sonnet
5
+ memory: user
6
+ ---
7
+
8
+ # Worker — Per-Repo Headless Worker
9
+
10
+ You are spawned by the global sleepless orchestrator to do one cycle of work in this repo.
11
+ Merge open PRs, pick up to 3 ready issues, develop in parallel, review, merge, then exit.
12
+
13
+ ## Pre-flight: Global Halt Check
14
+
15
+ Before doing anything else, check for the global halt file. The sleepless agent passes the
16
+ global dir path in the prompt — look for `<global-dir>/.claudius/HALT`. If it exists, exit
17
+ immediately with `WORKER_HALTED`.
18
+
19
+ If the global dir path was not provided, check `../.claudius/HALT` (the parent dir convention
20
+ for repos managed from a sibling-level global orchestrator).
21
+
22
+ ```bash
23
+ # Example (adapt path from prompt):
24
+ test -f ../.claudius/HALT && echo "HALTED" && exit 0 || true
25
+ ```
26
+
27
+ ## Startup: Recover Stale Claims
28
+
29
+ Check for issues labeled `in-progress` (with OR without the `claude` label) that have no open
30
+ PR — stale claims from a crashed prior run. Restore them:
31
+
32
+ ```bash
33
+ gh issue list --label in-progress --state open --json number,title --limit 20
34
+ ```
35
+
36
+ For each in-progress issue, check if an open PR references it:
37
+ ```bash
38
+ gh pr list --search "Closes #<N> in:body" --state open --json number --limit 1
39
+ ```
40
+
41
+ If no open PR found → stale claim → restore to ready:
42
+ ```bash
43
+ gh issue edit <N> --remove-label "in-progress,claude" --add-label "ready"
44
+ ```
45
+
46
+ ## Guard Checks
47
+
48
+ Exit `WORKER_OK` immediately if any fail:
49
+
50
+ ```bash
51
+ date
52
+ cat .claudius/config.yaml # read activeHours, budgetCapUsd, maxIssuesPerDay, goals
53
+ tail -20 .claudius/job-runs.jsonl
54
+ ```
55
+
56
+ - Outside `activeHours` (respect timezone in config) → exit `WORKER_OK`
57
+ - Last 3 job-runs all `success:false` → exit `WORKER_OK` (avoid compounding failures)
58
+ - Budget already > 80% of `budgetCapUsd` → exit `WORKER_OK`
59
+
60
+ ## Step 1: Merge Open PRs
61
+
62
+ Before picking new work, merge any open XS/S/M PRs with passing CI:
63
+
64
+ ```bash
65
+ gh pr list --json number,title,headRefName,statusCheckRollup --limit 20
66
+ bash .claude/scripts/merge-pr.sh <N>
67
+ gh issue close <issue-N> --comment "Closed by PR #<N>."
68
+ ```
69
+
70
+ ## Step 2: Pick Top-3 Issues
71
+
72
+ ```bash
73
+ gh issue list --label ready --state open --json number,title,labels,body --limit 10
74
+ ```
75
+
76
+ **Filter out any issue carrying the `codex` label** — those are Codex territory. Do not claim them.
77
+
78
+ If no ready issues after filtering → exit `WORKER_OK`.
79
+
80
+ Select up to 3 highest-priority `ready` issues (without `codex` label) aligned with configured
81
+ `goals`. Prefer smaller scope.
82
+
83
+ Issues are filtered and scored with dependency awareness:
84
+ - **Codex issues excluded** — any issue with the `codex` label is skipped entirely
85
+ - **Blocked issues excluded** — any issue with open `blocked-by` relationships is removed from
86
+ candidates
87
+ - **Cluster momentum** — issues in partially-complete clusters get +15 priority boost
88
+ - **Standard scoring** — label priorities, scope size, goal alignment
89
+
90
+ **Claim atomically** (add both `in-progress` and `claude` labels):
91
+ ```bash
92
+ gh issue edit <N> --add-label "in-progress,claude" --remove-label "ready"
93
+ gh issue view <N> # read full body + acceptance criteria
94
+ ```
95
+
96
+ ## Step 3: Develop in Parallel
97
+
98
+ Each developer runs in its own isolated worktree. Do NOT derive or provide branch names.
99
+
100
+ Spawn one developer agent per issue using the `Agent` tool **concurrently**
101
+ (all in one tool call message).
102
+
103
+ For each issue, use `subagent_type: "developer"`. Each developer prompt must include:
104
+ - Full issue body and all acceptance criteria
105
+ - Issue number for commit message format (`type(scope): description (#N)`)
106
+ - Constraint: implement only what the issue asks, no scope creep
107
+ - Instruction: use your current branch (the worktree branch), do NOT create a new branch.
108
+ Implement, commit, push with `git push -u origin HEAD`, then report the branch name you
109
+ pushed. Do not create the PR (worker creates PRs).
110
+
111
+ Wait for all developer agents to complete before proceeding.
112
+
113
+ **On developer failure for an issue:**
114
+ ```bash
115
+ gh issue edit <N> --remove-label "in-progress,claude" --add-label "ready"
116
+ gh issue comment <N> --body "Worker: developer failed. Restored to ready queue."
117
+ ```
118
+ Remove it from the active set and continue with the rest.
119
+
120
+ ## Step 4: Validate & Create PRs
121
+
122
+ For each successful developer result, **validate before creating the PR**.
123
+
124
+ **Pre-PR validation** — check the developer's branch in its worktree:
125
+ ```bash
126
+ cd <worktree-path>
127
+ bun run lint 2>&1 | tail -5
128
+ bun run build 2>&1 | tail -5
129
+ ```
130
+ If lint or build fails: re-spawn the developer with the errors and ask it to fix them.
131
+ Only create the PR once validation passes. Never create a PR with known lint/build failures.
132
+
133
+ ```bash
134
+ gh pr create \
135
+ --head <branch-from-developer-output> \
136
+ --title "type(scope): description (#N)" \
137
+ --body "$(cat <<'EOF'
138
+ ## Summary
139
+ - <bullet from developer output>
140
+
141
+ ## Closes
142
+ Closes #N
143
+
144
+ ## Test Plan
145
+ - [ ] <scenario>
146
+ EOF
147
+ )"
148
+ ```
149
+
150
+ After each `gh pr create`, send a Slack notification (best-effort — never block on failure):
151
+ ```bash
152
+ SLACK_CHANNEL=$(bun -e "
153
+ import { parse } from 'yaml';
154
+ import { readFileSync } from 'fs';
155
+ const c = parse(readFileSync('.claudius/config.yaml', 'utf8'));
156
+ process.stdout.write(c.slack?.channel ?? '');
157
+ " 2>/dev/null)
158
+ if [ -n "$SLACK_CHANNEL" ]; then
159
+ PR_TITLE=$(gh pr view $PR_NUMBER --json title --jq '.title')
160
+ PR_URL=$(gh pr view $PR_NUMBER --json url --jq '.url')
161
+ THREAD_REF=$(bun .claude/scripts/slack.ts send \
162
+ --channel "$SLACK_CHANNEL" \
163
+ --text "🔍 *PR #$PR_NUMBER ready for review* — $PR_TITLE $PR_URL") \
164
+ && gh pr comment $PR_NUMBER --body "<!-- slack-thread: $THREAD_REF -->" \
165
+ || true
166
+ fi
167
+ ```
168
+
169
+ ## Step 5: Review in Parallel
170
+
171
+ Spawn one reviewer agent per PR using the `Agent` tool **concurrently** (all in one message).
172
+
173
+ For each PR, use `subagent_type: "reviewer"`. Each reviewer prompt must include:
174
+ - PR number to review
175
+ - Issue number for AC verification
176
+ - Return structured verdict: `approve` / `request-changes` / `block`
177
+
178
+ Wait for all reviewer agents to complete.
179
+
180
+ **On `approve`:** proceed to merge (Step 6).
181
+
182
+ **On `request-changes`:** re-spawn the developer for that issue with reviewer feedback
183
+ (max 1 retry). After retry: push, update PR, re-spawn reviewer. If still `request-changes`
184
+ → treat as `block`.
185
+
186
+ **On `block`:** restore labels, comment with reviewer's reason, skip to next.
187
+ ```bash
188
+ gh issue edit <N> --remove-label "in-progress,claude" --add-label "ready"
189
+ gh issue comment <N> --body "Worker: reviewer blocked. Reason: <reason>."
190
+ ```
191
+
192
+ ## Step 6: Merge & Record
193
+
194
+ For each approved PR:
195
+ ```bash
196
+ bash .claude/scripts/merge-pr.sh <PR-number>
197
+ gh issue close <N> --comment "Closed by PR #<M>."
198
+ ```
199
+
200
+ After each merge, reply in the PR's Slack thread (best-effort):
201
+ ```bash
202
+ THREAD_REF=$(gh pr view $PR_NUMBER --json comments \
203
+ --jq '[.comments[].body | select(startswith("<!-- slack-thread:"))] | first' \
204
+ | sed 's/<!-- slack-thread: //;s/ -->//')
205
+ if [ -n "$THREAD_REF" ] && [ "$THREAD_REF" != "null" ]; then
206
+ bun .claude/scripts/slack.ts reply \
207
+ --thread "$THREAD_REF" \
208
+ --text "✅ Merged PR #$PR_NUMBER" 2>/dev/null || true
209
+ fi
210
+ ```
211
+
212
+ Append one line per merged issue to `.claude/memory/pulse.md` under `## Recent Build Outcomes`:
213
+ ```
214
+ - 2026-03-03: built #N → PR#M merged (Xs)
215
+ ```
216
+
217
+ ---
218
+
219
+ ## Step 7: Cleanup
220
+
221
+ After all merges, remove stale agent sub-worktrees (best-effort):
222
+ ```bash
223
+ git worktree list --porcelain | grep '^worktree' | grep 'agent-' | awk '{print $2}' | while read p; do
224
+ git worktree remove --force "$p" 2>/dev/null && echo "Removed $p" || true
225
+ done
226
+ ```
227
+
228
+ Exit with `WORKER_OK`.
229
+
230
+ ---
231
+
232
+ ## Headless Execution Notes
233
+
234
+ - Never use `EnterPlanMode`, `ExitPlanMode`, or `AskUserQuestion` — no human present
235
+ - Never provide branch names to developers — they run in isolated worktrees
236
+ - Skip any issue with the `codex` label — that's Codex territory
237
+ - Always restore both `in-progress` AND `claude` labels on failure/block
238
+ - Exit with `WORKER_OK` when the cycle completes (0 or up to 3 issues processed)
239
+ - On unrecoverable error per issue: restore labels, comment, continue — never abort the whole run
@@ -6,7 +6,7 @@
6
6
  "hooks": [
7
7
  {
8
8
  "type": "command",
9
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/guardian.ts"
9
+ "command": "npx tsx .claude/hooks/guardian.ts"
10
10
  }
11
11
  ]
12
12
  },
@@ -15,11 +15,11 @@
15
15
  "hooks": [
16
16
  {
17
17
  "type": "command",
18
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/guardian.ts"
18
+ "command": "npx tsx .claude/hooks/guardian.ts"
19
19
  },
20
20
  {
21
21
  "type": "command",
22
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/worktree-path-guard.ts"
22
+ "command": "npx tsx .claude/hooks/worktree-path-guard.ts"
23
23
  }
24
24
  ]
25
25
  }
@@ -29,7 +29,7 @@
29
29
  "hooks": [
30
30
  {
31
31
  "type": "command",
32
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/context-inject.ts"
32
+ "command": "npx tsx .claude/hooks/context-inject.ts"
33
33
  }
34
34
  ]
35
35
  }
@@ -39,11 +39,11 @@
39
39
  "hooks": [
40
40
  {
41
41
  "type": "command",
42
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/continue-or-stop.ts"
42
+ "command": "npx tsx .claude/hooks/continue-or-stop.ts"
43
43
  },
44
44
  {
45
45
  "type": "command",
46
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/learner.ts",
46
+ "command": "npx tsx .claude/hooks/learner.ts",
47
47
  "async": true
48
48
  }
49
49
  ]
@@ -55,7 +55,7 @@
55
55
  "hooks": [
56
56
  {
57
57
  "type": "command",
58
- "command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/cost-watch.ts",
58
+ "command": "npx tsx .claude/hooks/cost-watch.ts",
59
59
  "async": true
60
60
  }
61
61
  ]
@@ -21,10 +21,10 @@
21
21
  "name": "claudius",
22
22
  "source": "./",
23
23
  "description": "Autonomous orchestration layer for Claude Code — agents, skills, hooks, and heartbeat daemon for round-the-clock development",
24
- "version": "0.5.0",
24
+ "version": "0.7.0",
25
25
  "strict": true,
26
26
  "category": "development"
27
27
  }
28
28
  ],
29
- "version": "0.5.0"
29
+ "version": "0.7.0"
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../src/cli/studio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;CACb;AA4DD;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC,YAAY,CAAC,CA+EvB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E/D;AAED,wBAAgB,aAAa,IAAI,IAAI,CA2CpC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7D"}
1
+ {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../src/cli/studio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;CACb;AA4DD;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC,YAAY,CAAC,CA+EvB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF/D;AAED,wBAAgB,aAAa,IAAI,IAAI,CA2CpC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7D"}
@@ -155,10 +155,14 @@ export async function cmdStudioUp(args) {
155
155
  const port = handle.port;
156
156
  // Try slim
157
157
  const { isSlimInstalled, startSlimDomain } = await import("../daemon/slim.js");
158
- const { projectSlug } = await import("../daemon/install.js");
159
158
  let slimHandle = null;
160
159
  let url = `http://localhost:${port}`;
161
- const domainName = `${projectSlug(projectDir)}-studio`;
160
+ const repoName = projectDir.replace(/\/+$/, "").split("/").pop() ?? "project";
161
+ const safeRepoName = repoName
162
+ .toLowerCase()
163
+ .replace(/[^a-z0-9]+/g, "-")
164
+ .replace(/^-|-$/g, "") || "project";
165
+ const domainName = `${safeRepoName}-studio`;
162
166
  let domain = "";
163
167
  if (config.studio?.slimEnabled !== false && isSlimInstalled()) {
164
168
  slimHandle = startSlimDomain(domainName, port);
@@ -1 +1 @@
1
- {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../src/cli/studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../src/cli/studio.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,16 @@
9
9
  * unique), appends the first 6 hex chars of a SHA-1 of the full path.
10
10
  */
11
11
  export declare function projectSlug(dir: string): string;
12
- export declare function installDaemon(): void;
13
- export declare function uninstallDaemon(): void;
12
+ export type DaemonType = "jobs" | "sleepless";
13
+ /**
14
+ * Derives the launchd label for a given daemon type and project directory.
15
+ *
16
+ * - sleepless (global orchestrator): `com.claudius.sleepless` — fixed, no path suffix
17
+ * - jobs (per-repo scheduled jobs): `com.claudius.jobs.<repo-name>` — last path segment only
18
+ */
19
+ export declare function daemonLabel(type: DaemonType, projectDir: string): string;
20
+ export declare function installDaemon(type?: DaemonType): void;
21
+ export declare function uninstallDaemon(type?: DaemonType): void;
14
22
  /**
15
23
  * Returns the command arguments needed to run `claudius`.
16
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAc/C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAgBpC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAatC;AAsJD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B3D"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAc/C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQxE;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE,UAAmB,GAAG,IAAI,CAgB7D;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,UAAmB,GAAG,IAAI,CAa/D;AAkJD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CA4C3D"}
@@ -28,41 +28,57 @@ export function projectSlug(dir) {
28
28
  // the suffix when the base is suspiciously short.
29
29
  return base;
30
30
  }
31
- export function installDaemon() {
31
+ /**
32
+ * Derives the launchd label for a given daemon type and project directory.
33
+ *
34
+ * - sleepless (global orchestrator): `com.claudius.sleepless` — fixed, no path suffix
35
+ * - jobs (per-repo scheduled jobs): `com.claudius.jobs.<repo-name>` — last path segment only
36
+ */
37
+ export function daemonLabel(type, projectDir) {
38
+ if (type === "sleepless")
39
+ return "com.claudius.sleepless";
40
+ const repoName = projectDir.replace(/\/+$/, "").split("/").pop() ?? "project";
41
+ const safe = repoName
42
+ .toLowerCase()
43
+ .replace(/[^a-z0-9]+/g, "-")
44
+ .replace(/^-|-$/g, "");
45
+ return `com.claudius.jobs.${safe}`;
46
+ }
47
+ export function installDaemon(type = "jobs") {
32
48
  const currentPlatform = os.platform();
33
49
  const projectDir = process.cwd();
34
50
  switch (currentPlatform) {
35
51
  case "darwin":
36
- installLaunchd(projectDir);
52
+ installLaunchd(projectDir, type);
37
53
  break;
38
54
  case "linux":
39
- installSystemd(projectDir);
55
+ installSystemd(projectDir, type);
40
56
  break;
41
57
  default:
42
58
  console.error(`Unsupported platform: ${currentPlatform}. Use \`claudius daemon start\` for manual execution.`);
43
59
  }
44
60
  }
45
- export function uninstallDaemon() {
61
+ export function uninstallDaemon(type = "jobs") {
46
62
  const currentPlatform = os.platform();
47
63
  const projectDir = process.cwd();
48
64
  switch (currentPlatform) {
49
65
  case "darwin":
50
- uninstallLaunchd(projectDir);
66
+ uninstallLaunchd(projectDir, type);
51
67
  break;
52
68
  case "linux":
53
- uninstallSystemd(projectDir);
69
+ uninstallSystemd(projectDir, type);
54
70
  break;
55
71
  default:
56
72
  console.error(`Unsupported platform: ${currentPlatform}`);
57
73
  }
58
74
  }
59
- function installLaunchd(projectDir) {
60
- const slug = projectSlug(projectDir);
61
- const label = `com.claudius.pulse.${slug}`;
75
+ function installLaunchd(projectDir, type) {
76
+ const label = daemonLabel(type, projectDir);
62
77
  const plistDir = resolve(os.homedir(), "Library/LaunchAgents");
63
78
  const plistPath = resolve(plistDir, `${label}.plist`);
79
+ const startCmd = type === "sleepless" ? "sleepless" : "daemon";
64
80
  const binaryArgs = findBinaryArgs(projectDir);
65
- const programArgs = [...binaryArgs, "daemon", "start"]
81
+ const programArgs = [...binaryArgs, startCmd, "start"]
66
82
  .map((a) => `\t\t<string>${a}</string>`)
67
83
  .join("\n");
68
84
  // Use the full login PATH so claude, node, bun, npx are all reachable
@@ -114,9 +130,8 @@ ${programArgs}
114
130
  console.log(` launchctl load ${plistPath}`);
115
131
  }
116
132
  }
117
- function uninstallLaunchd(projectDir) {
118
- const slug = projectSlug(projectDir);
119
- const label = `com.claudius.pulse.${slug}`;
133
+ function uninstallLaunchd(projectDir, type) {
134
+ const label = daemonLabel(type, projectDir);
120
135
  const plistPath = resolve(os.homedir(), "Library/LaunchAgents", `${label}.plist`);
121
136
  if (!fs.existsSync(plistPath)) {
122
137
  console.log("No launchd service found.");
@@ -131,13 +146,14 @@ function uninstallLaunchd(projectDir) {
131
146
  cp.execSync(`rm ${plistPath}`, { stdio: "pipe" });
132
147
  console.log("Uninstalled launchd service.");
133
148
  }
134
- function installSystemd(projectDir) {
135
- const slug = projectSlug(projectDir);
136
- const serviceName = `claudius-pulse-${slug}.service`;
149
+ function installSystemd(projectDir, type) {
150
+ const label = daemonLabel(type, projectDir);
151
+ const serviceName = `${label.replace(/\./g, "-")}.service`;
137
152
  const unitDir = resolve(os.homedir(), ".config/systemd/user");
138
153
  const unitPath = resolve(unitDir, serviceName);
154
+ const startCmd = type === "sleepless" ? "sleepless" : "daemon";
139
155
  const binaryArgs = findBinaryArgs(projectDir);
140
- const execStart = [...binaryArgs, "daemon", "start"].join(" ");
156
+ const execStart = [...binaryArgs, startCmd, "start"].join(" ");
141
157
  const envPath = process.env.PATH || "/usr/local/bin:/usr/bin:/bin";
142
158
  const unit = `[Unit]
143
159
  Description=${DESCRIPTION}
@@ -160,15 +176,11 @@ WantedBy=default.target
160
176
  fs.writeFileSync(unitPath, unit);
161
177
  try {
162
178
  cp.execSync("systemctl --user daemon-reload", { stdio: "pipe" });
163
- cp.execSync(`systemctl --user enable ${serviceName}`, {
164
- stdio: "pipe",
165
- });
166
- cp.execSync(`systemctl --user start ${serviceName}`, {
167
- stdio: "pipe",
168
- });
179
+ cp.execSync(`systemctl --user enable ${serviceName}`, { stdio: "pipe" });
180
+ cp.execSync(`systemctl --user start ${serviceName}`, { stdio: "pipe" });
169
181
  console.log(`Installed: ${unitPath}`);
170
- console.log("Pulse will start on login and restart on crash.");
171
- console.log(`Check status: systemctl --user status claudius-pulse-${slug}`);
182
+ console.log("Will start on login and restart on crash.");
183
+ console.log(`Check status: systemctl --user status ${serviceName}`);
172
184
  }
173
185
  catch {
174
186
  console.error("Failed to enable systemd service. Enable manually:");
@@ -176,9 +188,9 @@ WantedBy=default.target
176
188
  console.log(` systemctl --user enable --now ${serviceName}`);
177
189
  }
178
190
  }
179
- function uninstallSystemd(projectDir) {
180
- const slug = projectSlug(projectDir);
181
- const serviceName = `claudius-pulse-${slug}.service`;
191
+ function uninstallSystemd(projectDir, type) {
192
+ const label = daemonLabel(type, projectDir);
193
+ const serviceName = `${label.replace(/\./g, "-")}.service`;
182
194
  try {
183
195
  cp.execSync(`systemctl --user stop ${serviceName} 2>/dev/null; systemctl --user disable ${serviceName} 2>/dev/null`, { stdio: "pipe" });
184
196
  }
@@ -222,7 +234,22 @@ export function findBinaryArgs(projectDir) {
222
234
  const localBin = resolve(projectDir, "node_modules/.bin/claudius");
223
235
  if (fs.existsSync(localBin))
224
236
  return [localBin];
225
- // 3. Global install
237
+ // 3. Sibling claudius repo — common in global orchestration dirs where claudius
238
+ // is cloned alongside managed repos (e.g. ~/Projects/claudius/dist/index.js)
239
+ const siblingDist = resolve(projectDir, "claudius/dist/index.js");
240
+ if (fs.existsSync(siblingDist)) {
241
+ try {
242
+ const node = cp
243
+ .execSync("which node", { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] })
244
+ .trim();
245
+ if (node)
246
+ return [node, siblingDist];
247
+ }
248
+ catch {
249
+ // fall through
250
+ }
251
+ }
252
+ // 4. Global install
226
253
  try {
227
254
  const bin = cp
228
255
  .execSync("which claudius", { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] })
@@ -233,7 +260,7 @@ export function findBinaryArgs(projectDir) {
233
260
  catch {
234
261
  // fall through
235
262
  }
236
- // 4. Fallback
263
+ // 5. Fallback
237
264
  return ["npx", "claudius-core"];
238
265
  }
239
266
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pulse.d.ts","sourceRoot":"","sources":["../../src/daemon/pulse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,cAAc,CAAC;AAI/D,OAAO,EACN,KAAK,MAAM,EAOX,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;CAC9C;AAED,qBAAa,WAAW;IAOtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAPnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,aAAa,CAAS;gBAGrB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM;IAK3B,6CAA6C;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B,IAAI,IAAI,IAAI;IAKZ,yDAAyD;IACzD,WAAW,IAAI,MAAM;IAkCrB,qEAAqE;IACrE,SAAS,IAAI,iBAAiB;IA8I9B,kCAAkC;IAClC,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;YAgBR,WAAW;IAuCzB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,KAAK;CAGb"}
1
+ {"version":3,"file":"pulse.d.ts","sourceRoot":"","sources":["../../src/daemon/pulse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,cAAc,CAAC;AAI/D,OAAO,EACN,KAAK,MAAM,EAOX,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;CAC9C;AAED,qBAAa,WAAW;IAOtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAPnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,aAAa,CAAS;gBAGrB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM;IAK3B,6CAA6C;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B,IAAI,IAAI,IAAI;IAKZ,yDAAyD;IACzD,WAAW,IAAI,MAAM;IAkCrB,qEAAqE;IACrE,SAAS,IAAI,iBAAiB;IA8I9B,kCAAkC;IAClC,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;YAgBR,WAAW;IA4CzB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,KAAK;CAGb"}
@@ -275,14 +275,18 @@ export class PulseEngine {
275
275
  return;
276
276
  try {
277
277
  const { startStudioServer } = await import("../cli/studio.js");
278
- const { projectSlug } = await import("./install.js");
279
278
  const { startSlimDomain, isSlimInstalled } = await import("./slim.js");
280
279
  this.studioHandle = await startStudioServer(this.projectDir, {
281
280
  port: this.config.studio.port || undefined,
282
281
  });
283
282
  const port = this.studioHandle.port;
284
283
  let url = `http://localhost:${port}`;
285
- const domainName = `${projectSlug(this.projectDir)}-studio`;
284
+ const repoName = this.projectDir.replace(/\/+$/, "").split("/").pop() ?? "project";
285
+ const safeRepoName = repoName
286
+ .toLowerCase()
287
+ .replace(/[^a-z0-9]+/g, "-")
288
+ .replace(/^-|-$/g, "") || "project";
289
+ const domainName = `${safeRepoName}-studio`;
286
290
  let domain = "";
287
291
  if (this.config.studio.slimEnabled !== false && isSlimInstalled()) {
288
292
  this.slimHandle = startSlimDomain(domainName, port);