claudius-core 0.8.0 → 0.9.2
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/.claude/agents/manager.md +13 -3
- package/.claude/agents/worker.md +68 -5
- package/.claude/rules/testing.md +4 -7
- package/.claude/scripts/merge-pr.sh +57 -44
- package/.claude/scripts/project-status.sh +67 -0
- package/.claude/scripts/workpad-upsert.sh +5 -2
- package/.claude/skills/build/SKILL.md +17 -3
- package/.claude-plugin/marketplace.json +2 -2
- package/dist/config-migrations.js +1 -1
- package/dist/config-migrations.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -2
- package/dist/config.js.map +1 -1
- package/dist/daemon/ideation.d.ts.map +1 -1
- package/dist/daemon/ideation.js +11 -48
- package/dist/daemon/ideation.js.map +1 -1
- package/dist/daemon/pulse-state.d.ts +59 -0
- package/dist/daemon/pulse-state.d.ts.map +1 -0
- package/dist/daemon/pulse-state.js +122 -0
- package/dist/daemon/pulse-state.js.map +1 -0
- package/dist/daemon/pulse.js +2 -2
- package/dist/daemon/pulse.js.map +1 -1
- package/dist/lib/github.d.ts +36 -0
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +72 -3
- package/dist/lib/github.js.map +1 -1
- package/dist/studio/assets/{_basePickBy-ppkLJ_A0.js → _basePickBy-DTKKNeX9.js} +1 -1
- package/dist/studio/assets/{_baseUniq-BNpZcOvx.js → _baseUniq-DY6ysp5o.js} +1 -1
- package/dist/studio/assets/{arc-BrT6MHzZ.js → arc-Cy2QeHNO.js} +1 -1
- package/dist/studio/assets/{architectureDiagram-VXUJARFQ-DeQBpKRn.js → architectureDiagram-VXUJARFQ-D2MQHSaG.js} +1 -1
- package/dist/studio/assets/{blockDiagram-VD42YOAC-rNOYA25b.js → blockDiagram-VD42YOAC-Do1dNJrU.js} +1 -1
- package/dist/studio/assets/{c4Diagram-YG6GDRKO-Dwdo20F9.js → c4Diagram-YG6GDRKO-VcgRH2n1.js} +1 -1
- package/dist/studio/assets/channel-q76EBT3W.js +1 -0
- package/dist/studio/assets/{chunk-4BX2VUAB-CRV4CCk0.js → chunk-4BX2VUAB-CkVBwsYG.js} +1 -1
- package/dist/studio/assets/{chunk-55IACEB6-CfKnCPf3.js → chunk-55IACEB6-Djaa2sKP.js} +1 -1
- package/dist/studio/assets/{chunk-B4BG7PRW-DQ3c5Kxh.js → chunk-B4BG7PRW-Biwf9931.js} +1 -1
- package/dist/studio/assets/{chunk-DI55MBZ5-DQLodXlq.js → chunk-DI55MBZ5-PcotdTmK.js} +1 -1
- package/dist/studio/assets/{chunk-FMBD7UC4-_f1jv0C2.js → chunk-FMBD7UC4-BxcM28ip.js} +1 -1
- package/dist/studio/assets/{chunk-QN33PNHL-Bme2ObLI.js → chunk-QN33PNHL-su83dkHq.js} +1 -1
- package/dist/studio/assets/{chunk-QZHKN3VN-CFKx2cCS.js → chunk-QZHKN3VN-CXC633WZ.js} +1 -1
- package/dist/studio/assets/{chunk-TZMSLE5B-CaBI0xPE.js → chunk-TZMSLE5B-0zWkhgbg.js} +1 -1
- package/dist/studio/assets/classDiagram-2ON5EDUG-DbZNbgXY.js +1 -0
- package/dist/studio/assets/classDiagram-v2-WZHVMYZB-DbZNbgXY.js +1 -0
- package/dist/studio/assets/clone-Cp4ZNmLY.js +1 -0
- package/dist/studio/assets/{cose-bilkent-S5V4N54A--skfkbsS.js → cose-bilkent-S5V4N54A-DMQUn4Kn.js} +1 -1
- package/dist/studio/assets/{dagre-6UL2VRFP-BRm0A4ZV.js → dagre-6UL2VRFP-BCrjX16f.js} +1 -1
- package/dist/studio/assets/{diagram-PSM6KHXK-RwkOLofj.js → diagram-PSM6KHXK-B0cHphWd.js} +1 -1
- package/dist/studio/assets/{diagram-QEK2KX5R-BqshW-J9.js → diagram-QEK2KX5R-BBvDN4Uv.js} +1 -1
- package/dist/studio/assets/{diagram-S2PKOQOG-BY11qYne.js → diagram-S2PKOQOG-CEl3flTh.js} +1 -1
- package/dist/studio/assets/{erDiagram-Q2GNP2WA-Dv4JbEZL.js → erDiagram-Q2GNP2WA-DKjjFIwQ.js} +1 -1
- package/dist/studio/assets/{flowDiagram-NV44I4VS-Db4x5BdM.js → flowDiagram-NV44I4VS-BnnKOs8q.js} +1 -1
- package/dist/studio/assets/{ganttDiagram-JELNMOA3-CKrdwoFK.js → ganttDiagram-JELNMOA3-BtcVr8xh.js} +1 -1
- package/dist/studio/assets/{gitGraphDiagram-V2S2FVAM-lFBqZUNS.js → gitGraphDiagram-V2S2FVAM-Cobid_XV.js} +1 -1
- package/dist/studio/assets/{graph-DFT1v2AW.js → graph-Do6IuvE7.js} +1 -1
- package/dist/studio/assets/{index-DqppvsFx.js → index-P-gEEMhX.js} +2 -2
- package/dist/studio/assets/{infoDiagram-HS3SLOUP-CTelq6Gf.js → infoDiagram-HS3SLOUP-CQzNDF01.js} +1 -1
- package/dist/studio/assets/{journeyDiagram-XKPGCS4Q-D60Qdu-x.js → journeyDiagram-XKPGCS4Q-BDWkdVsn.js} +1 -1
- package/dist/studio/assets/{kanban-definition-3W4ZIXB7-oG969VRs.js → kanban-definition-3W4ZIXB7-Rwi_9qIm.js} +1 -1
- package/dist/studio/assets/{layout-BGcdz9Ct.js → layout-s7Ye3uwS.js} +1 -1
- package/dist/studio/assets/{linear-DompHFIT.js → linear-VKXk51SR.js} +1 -1
- package/dist/studio/assets/{mermaid.core-gnmJw_KE.js → mermaid.core-n8jibXOy.js} +4 -4
- package/dist/studio/assets/{mindmap-definition-VGOIOE7T-bwPOwyTv.js → mindmap-definition-VGOIOE7T-0VU8hCXF.js} +1 -1
- package/dist/studio/assets/{pieDiagram-ADFJNKIX-BwIJ6nc_.js → pieDiagram-ADFJNKIX-D5aZDoXC.js} +1 -1
- package/dist/studio/assets/{quadrantDiagram-AYHSOK5B-BbawCM18.js → quadrantDiagram-AYHSOK5B-BlCmM4Qj.js} +1 -1
- package/dist/studio/assets/{requirementDiagram-UZGBJVZJ-BoPBvsx-.js → requirementDiagram-UZGBJVZJ-DWUiTFOB.js} +1 -1
- package/dist/studio/assets/{sankeyDiagram-TZEHDZUN-CGFwCDhb.js → sankeyDiagram-TZEHDZUN-5DOpYn4g.js} +1 -1
- package/dist/studio/assets/{sequenceDiagram-WL72ISMW-C2QyGYTw.js → sequenceDiagram-WL72ISMW-DNyOZZgz.js} +1 -1
- package/dist/studio/assets/{stateDiagram-FKZM4ZOC-Dhm9PrqY.js → stateDiagram-FKZM4ZOC-BKuyFb4H.js} +1 -1
- package/dist/studio/assets/stateDiagram-v2-4FDKWEC3-WOR4RPG7.js +1 -0
- package/dist/studio/assets/{timeline-definition-IT6M3QCI-CXUuwGHs.js → timeline-definition-IT6M3QCI-D_pEYPv6.js} +1 -1
- package/dist/studio/assets/{treemap-GDKQZRPO-BaupP3xn.js → treemap-GDKQZRPO-BF7TAkhx.js} +1 -1
- package/dist/studio/assets/{xychartDiagram-PRI3JC2R-DyBJxjV-.js → xychartDiagram-PRI3JC2R-9k8KhSr3.js} +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/templates/config.yaml +10 -2
- package/dist/templates/templates/config.yaml +2 -2
- package/global/agents/sleepless.md +64 -41
- package/global/scripts/project-sync.sh +161 -0
- package/global/templates/jobs/sleepless.md +1 -1
- package/package.json +2 -2
- package/dist/studio/assets/channel-BRL5Xd9D.js +0 -1
- package/dist/studio/assets/classDiagram-2ON5EDUG-pSS1Rh7l.js +0 -1
- package/dist/studio/assets/classDiagram-v2-WZHVMYZB-pSS1Rh7l.js +0 -1
- package/dist/studio/assets/clone-CmhY5Yaj.js +0 -1
- package/dist/studio/assets/stateDiagram-v2-4FDKWEC3-DIUM30g9.js +0 -1
|
@@ -17,7 +17,7 @@ When asked who you are: "I am the Claudius manager. I route work, coordinate age
|
|
|
17
17
|
2. Decide solo (XS/S) vs team (M+) based on scope
|
|
18
18
|
3. Create feature branch from main — **unless already in a worktree** (see Branch Convention)
|
|
19
19
|
4. For solo: implement directly with TDD
|
|
20
|
-
5. For team: spawn developer via Agent tool, then reviewer
|
|
20
|
+
5. For team: spawn developer via Agent tool, then simplifier (best-effort), then reviewer
|
|
21
21
|
6. **Validate before PR** — `bun test && bun run lint && bun run build` must all pass. Fix failures before creating PR. Never create a PR with known lint or build failures.
|
|
22
22
|
7. Create PR
|
|
23
23
|
8. Update issue checkboxes as criteria are met
|
|
@@ -43,9 +43,19 @@ Use the Agent tool with `subagent_type: "developer"`. Include in the prompt:
|
|
|
43
43
|
- The constraint: only implement what's asked, no scope creep
|
|
44
44
|
- **Reminder: developer must run `bun test`, `bun run lint`, and `bun run build` before pushing**
|
|
45
45
|
|
|
46
|
-
The developer runs in an isolated worktree, implements via TDD, validates (test + lint + build), and returns its output. After it completes, verify the developer reported all three validations passing, then create the PR: `gh pr create`.
|
|
46
|
+
The developer runs in an isolated worktree, implements via TDD, validates (test + lint + build), and returns its output. After it completes, verify the developer reported all three validations passing, then spawn the simplifier (best-effort), then create the PR: `gh pr create`. Only spawn the reviewer after the PR exists.
|
|
47
47
|
|
|
48
|
-
**
|
|
48
|
+
**Simplifier** (for M+ work, after developer completes and before reviewer):
|
|
49
|
+
Use the Agent tool with `subagent_type: "general-purpose"` and `agent: "code-simplifier"`. Include in the prompt:
|
|
50
|
+
- The git diff of all changes so far: output of `git diff main...HEAD`
|
|
51
|
+
- The original issue acceptance criteria
|
|
52
|
+
- Project conventions: contents of CLAUDE.md
|
|
53
|
+
- Instruction: reduce complexity, improve reuse, fix quality issues — without changing behavior or adding new features
|
|
54
|
+
- Constraint: only touch files already changed on this branch (visible in the diff above)
|
|
55
|
+
|
|
56
|
+
The simplifier is **non-blocking**: if it returns no changes, errors, or is unavailable, log the outcome and continue to the reviewer. Never let the simplifier halt the pipeline.
|
|
57
|
+
|
|
58
|
+
**Reviewer** (for M+ work, after simplifier completes and PR is created):
|
|
49
59
|
Use the Agent tool with `subagent_type: "reviewer"`. Include in the prompt:
|
|
50
60
|
- The PR number to review
|
|
51
61
|
- Return structured verdict: approve / request-changes / block
|
package/.claude/agents/worker.md
CHANGED
|
@@ -41,6 +41,7 @@ gh pr list --search "Closes #<N> in:body" --state open --json number --limit 1
|
|
|
41
41
|
If no open PR found → stale claim → restore to ready:
|
|
42
42
|
```bash
|
|
43
43
|
gh issue edit <N> --remove-label "in-progress,claude" --add-label "ready"
|
|
44
|
+
bash .claude/scripts/project-status.sh <N> "Todo" "Queued"
|
|
44
45
|
```
|
|
45
46
|
|
|
46
47
|
## Guard Checks
|
|
@@ -62,11 +63,26 @@ tail -20 .claudius/job-runs.jsonl
|
|
|
62
63
|
Before picking new work, merge any open XS/S/M PRs with passing CI:
|
|
63
64
|
|
|
64
65
|
```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>."
|
|
66
|
+
gh pr list --json number,title,headRefName,statusCheckRollup,mergeable --limit 20
|
|
68
67
|
```
|
|
69
68
|
|
|
69
|
+
For each PR with all checks passing:
|
|
70
|
+
1. **Check mergeability** — if `mergeable` is `CONFLICTING`, try rebasing first:
|
|
71
|
+
```bash
|
|
72
|
+
gh pr view <N> --json mergeable --jq '.mergeable'
|
|
73
|
+
# If CONFLICTING → attempt rebase:
|
|
74
|
+
git fetch origin main
|
|
75
|
+
git checkout <branch>
|
|
76
|
+
git rebase origin/main
|
|
77
|
+
git push --force-with-lease
|
|
78
|
+
# If rebase fails: skip this PR, leave for human or next cycle
|
|
79
|
+
```
|
|
80
|
+
2. **Merge** — only if mergeable:
|
|
81
|
+
```bash
|
|
82
|
+
bash .claude/scripts/merge-pr.sh <N>
|
|
83
|
+
gh issue close <issue-N> --comment "Closed by PR #<N>."
|
|
84
|
+
```
|
|
85
|
+
|
|
70
86
|
## Step 2: Pick Top-3 Issues
|
|
71
87
|
|
|
72
88
|
```bash
|
|
@@ -87,6 +103,21 @@ Issues are filtered and scored with dependency awareness:
|
|
|
87
103
|
- **Cluster momentum** — issues in partially-complete clusters get +15 priority boost
|
|
88
104
|
- **Standard scoring** — label priorities, scope size, goal alignment
|
|
89
105
|
|
|
106
|
+
**Check attempt count before claiming** — read the existing workpad (if any) to get prior attempt count. If at max, move to Blocked instead of claiming:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
MAX_ATTEMPTS=3
|
|
110
|
+
PRIOR_ATTEMPTS=$(gh issue view <N> --json comments \
|
|
111
|
+
--jq '[.comments[].body | select(contains("claudius:workpad"))] | last // ""' 2>/dev/null \
|
|
112
|
+
| grep -o 'Attempts: [0-9]*' | grep -o '[0-9]*' || echo "0")
|
|
113
|
+
if [ "${PRIOR_ATTEMPTS:-0}" -ge "$MAX_ATTEMPTS" ]; then
|
|
114
|
+
gh issue edit <N> --remove-label "ready" --add-label "blocked"
|
|
115
|
+
gh issue comment <N> --body "Claudius: exceeded ${MAX_ATTEMPTS} build attempts. Needs human review before retrying."
|
|
116
|
+
bash .claude/scripts/project-status.sh <N> "Blocked" "Blocked"
|
|
117
|
+
# skip this issue — continue to next candidate
|
|
118
|
+
fi
|
|
119
|
+
```
|
|
120
|
+
|
|
90
121
|
**Claim atomically** (add both `in-progress` and `claude` labels):
|
|
91
122
|
```bash
|
|
92
123
|
gh issue edit <N> --add-label "in-progress,claude" --remove-label "ready"
|
|
@@ -95,10 +126,16 @@ gh issue view <N> # read full body + acceptance criteria
|
|
|
95
126
|
|
|
96
127
|
**Post workpad comment** — after claiming each issue, create (or update) a persistent workpad
|
|
97
128
|
comment using the `<!-- claudius:workpad -->` marker. This gives reviewers a live trace of
|
|
98
|
-
what's happening without reading logs:
|
|
129
|
+
what's happening without reading logs. Pass the incremented attempt count:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
NEW_ATTEMPTS=$(( ${PRIOR_ATTEMPTS:-0} + 1 ))
|
|
133
|
+
bash .claude/scripts/workpad-upsert.sh <N> "🔄 Claimed — reading issue" "TBD" "- [ ] (loading)" "pending" "$NEW_ATTEMPTS"
|
|
134
|
+
```
|
|
99
135
|
|
|
136
|
+
**Update Project #6 → In Progress / Running** (best-effort):
|
|
100
137
|
```bash
|
|
101
|
-
bash .claude/scripts/
|
|
138
|
+
bash .claude/scripts/project-status.sh <N> "In Progress" "Running"
|
|
102
139
|
```
|
|
103
140
|
|
|
104
141
|
## Step 3: Develop in Parallel
|
|
@@ -141,6 +178,7 @@ Wait for all developer agents to complete before proceeding.
|
|
|
141
178
|
```bash
|
|
142
179
|
gh issue edit <N> --remove-label "in-progress,claude" --add-label "ready"
|
|
143
180
|
gh issue comment <N> --body "Worker: developer failed. Restored to ready queue."
|
|
181
|
+
bash .claude/scripts/project-status.sh <N> "Todo" "Queued"
|
|
144
182
|
```
|
|
145
183
|
Remove it from the active set and continue with the rest.
|
|
146
184
|
|
|
@@ -208,6 +246,11 @@ if [ -n "$SLACK_CHANNEL" ]; then
|
|
|
208
246
|
fi
|
|
209
247
|
```
|
|
210
248
|
|
|
249
|
+
**Update Project #6 → Under Review / Review** (best-effort):
|
|
250
|
+
```bash
|
|
251
|
+
bash .claude/scripts/project-status.sh <N> "Under Review" "Review"
|
|
252
|
+
```
|
|
253
|
+
|
|
211
254
|
## Step 5: Review in Parallel
|
|
212
255
|
|
|
213
256
|
Spawn one reviewer agent per PR using the `Agent` tool **concurrently** (all in one message).
|
|
@@ -229,6 +272,7 @@ Wait for all reviewer agents to complete.
|
|
|
229
272
|
```bash
|
|
230
273
|
gh issue edit <N> --remove-label "in-progress,claude" --add-label "ready"
|
|
231
274
|
gh issue comment <N> --body "Worker: reviewer blocked. Reason: <reason>."
|
|
275
|
+
bash .claude/scripts/project-status.sh <N> "Todo" "Queued"
|
|
232
276
|
```
|
|
233
277
|
|
|
234
278
|
## Step 6: Merge & Record
|
|
@@ -239,6 +283,8 @@ bash .claude/scripts/merge-pr.sh <PR-number>
|
|
|
239
283
|
gh issue close <N> --comment "Closed by PR #<M>."
|
|
240
284
|
```
|
|
241
285
|
|
|
286
|
+
Closing the issue removes it from the active Project #6 board — no explicit "Done" status needed.
|
|
287
|
+
|
|
242
288
|
After each merge, reply in the PR's Slack thread (best-effort):
|
|
243
289
|
```bash
|
|
244
290
|
THREAD_REF=$(gh pr view $PR_NUMBER --json comments \
|
|
@@ -267,6 +313,23 @@ git worktree list --porcelain | grep '^worktree' | grep 'agent-' | awk '{print $
|
|
|
267
313
|
done
|
|
268
314
|
```
|
|
269
315
|
|
|
316
|
+
**Remove this repo's active-builds.jsonl entry** — the global dir was passed in the prompt as `Global dir: <path>`. Extract and clean up:
|
|
317
|
+
```bash
|
|
318
|
+
GLOBAL_DIR="<path-from-prompt>" # absolute global dir path from the worker prompt
|
|
319
|
+
REPO_NAME="<this-repo-name>" # the repo name sleepless used in the entry
|
|
320
|
+
node -e "
|
|
321
|
+
const fs = require('fs');
|
|
322
|
+
const path = require('path');
|
|
323
|
+
const file = path.join('$GLOBAL_DIR', '.claudius/active-builds.jsonl');
|
|
324
|
+
if (!fs.existsSync(file)) process.exit(0);
|
|
325
|
+
const lines = fs.readFileSync(file, 'utf8').split('\n').filter(Boolean);
|
|
326
|
+
const kept = lines.filter(l => {
|
|
327
|
+
try { return JSON.parse(l).repo !== '$REPO_NAME'; } catch { return true; }
|
|
328
|
+
});
|
|
329
|
+
fs.writeFileSync(file, kept.join('\n') + (kept.length ? '\n' : ''));
|
|
330
|
+
" 2>/dev/null || true
|
|
331
|
+
```
|
|
332
|
+
|
|
270
333
|
Exit with `WORKER_OK`.
|
|
271
334
|
|
|
272
335
|
---
|
package/.claude/rules/testing.md
CHANGED
|
@@ -25,20 +25,17 @@ Every change that can be tested locally MUST be tested locally before committing
|
|
|
25
25
|
|
|
26
26
|
### dist/ freshness
|
|
27
27
|
|
|
28
|
-
`dist/` is
|
|
28
|
+
`dist/` is gitignored and built at install time via the `prepare` script. Do NOT commit `dist/` — it is a build artifact.
|
|
29
29
|
|
|
30
|
-
**After changing any `src/` file, always
|
|
30
|
+
**After changing any `src/` file, always verify the build succeeds:**
|
|
31
31
|
```bash
|
|
32
|
-
bun run build
|
|
33
|
-
git add dist/
|
|
32
|
+
bun run build
|
|
34
33
|
```
|
|
35
34
|
|
|
36
|
-
If you forget, `npx github:SharadKumar/claudius` will silently run old code — the most dangerous kind of bug.
|
|
37
|
-
|
|
38
35
|
### Anti-patterns
|
|
39
36
|
|
|
40
37
|
- Committing install commands without testing them in the target environment
|
|
41
38
|
- Assuming package managers behave identically (they don't — especially for private repos, workspaces, lockfiles)
|
|
42
39
|
- Shipping a fix for a fix for a fix instead of reverting and getting it right once
|
|
43
40
|
- Trusting `bun run build` as sufficient validation when the change is user-facing
|
|
44
|
-
-
|
|
41
|
+
- Committing `dist/` — it is gitignored and built at install time
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# merge-pr.sh —
|
|
2
|
+
# merge-pr.sh — Worktree-safe PR merge.
|
|
3
3
|
#
|
|
4
4
|
# Usage: bash .claude/scripts/merge-pr.sh <PR-number>
|
|
5
5
|
#
|
|
6
6
|
# Behavior:
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
# 3. Try gh pr merge (happy path — works when main is not checked out elsewhere)
|
|
10
|
-
# 4. On failure, fall back to GitHub API merge + remote branch deletion
|
|
11
|
-
# 5. Sync home branch inline (no external script dependency)
|
|
7
|
+
# - From a worktree: API-only merge. NEVER touches the main checkout.
|
|
8
|
+
# - From the main checkout: gh pr merge with fallback to API merge.
|
|
12
9
|
#
|
|
13
|
-
# Exit codes: 0 = merged
|
|
10
|
+
# Exit codes: 0 = merged, 1 = merge failed
|
|
14
11
|
|
|
15
12
|
set -euo pipefail
|
|
16
13
|
|
|
@@ -20,25 +17,23 @@ if [[ -z "$PR" ]]; then
|
|
|
20
17
|
exit 1
|
|
21
18
|
fi
|
|
22
19
|
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
# Detect context BEFORE any cd
|
|
21
|
+
ORIGINAL_GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
|
|
22
|
+
IN_WORKTREE=false
|
|
23
|
+
if [[ "$ORIGINAL_GIT_DIR" == */.git/worktrees/* ]] || [[ "$ORIGINAL_GIT_DIR" == */worktrees/* ]]; then
|
|
24
|
+
IN_WORKTREE=true
|
|
25
|
+
fi
|
|
28
26
|
|
|
29
|
-
# Get
|
|
27
|
+
# Get PR metadata (works from any context)
|
|
30
28
|
BRANCH=$(gh pr view "$PR" --json headRefName --jq '.headRefName' 2>/dev/null)
|
|
31
29
|
REPO=$(gh repo view --json nameWithOwner --jq '.nameWithOwner' 2>/dev/null)
|
|
32
30
|
|
|
33
31
|
echo "Merging PR #$PR ($BRANCH) in $REPO..."
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
echo "gh pr merge failed (likely worktree conflict) — falling back to API merge..."
|
|
40
|
-
|
|
41
|
-
# API merge
|
|
33
|
+
if $IN_WORKTREE; then
|
|
34
|
+
# --- WORKTREE PATH ---
|
|
35
|
+
# CRITICAL: Never cd to main checkout. Never run git checkout.
|
|
36
|
+
# Use GitHub API only — zero local branch operations.
|
|
42
37
|
TITLE=$(gh pr view "$PR" --json title --jq '.title')
|
|
43
38
|
gh api "repos/$REPO/pulls/$PR/merge" \
|
|
44
39
|
-X PUT \
|
|
@@ -46,34 +41,52 @@ else
|
|
|
46
41
|
-f commit_title="$TITLE" \
|
|
47
42
|
--silent
|
|
48
43
|
|
|
49
|
-
echo "Merged via API."
|
|
44
|
+
echo "Merged via API (worktree-safe)."
|
|
50
45
|
|
|
51
|
-
# Delete remote branch
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
fi
|
|
46
|
+
# Delete remote branch via API (no local git operations)
|
|
47
|
+
gh api "repos/$REPO/git/refs/heads/$BRANCH" -X DELETE --silent 2>/dev/null \
|
|
48
|
+
&& echo "Deleted remote branch: $BRANCH" \
|
|
49
|
+
|| echo "⚠ Could not delete remote branch: $BRANCH"
|
|
56
50
|
|
|
57
|
-
#
|
|
58
|
-
|
|
51
|
+
# Fetch latest main (doesn't change any local branch)
|
|
52
|
+
git fetch origin main 2>/dev/null || true
|
|
59
53
|
|
|
60
|
-
# Inline sync: return to home branch
|
|
61
|
-
# Detect if this script was invoked from a worktree context
|
|
62
|
-
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
|
|
63
|
-
|
|
64
|
-
if [[ "$GIT_DIR" == */.git/worktrees/* ]]; then
|
|
65
|
-
WORKTREE_NAME=$(basename "$GIT_DIR")
|
|
66
|
-
HOME_BRANCH="worktree-$WORKTREE_NAME"
|
|
67
|
-
git checkout "$HOME_BRANCH" 2>/dev/null || true
|
|
68
|
-
echo "Returned to home branch: $HOME_BRANCH"
|
|
69
54
|
else
|
|
70
|
-
#
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
# --- MAIN CHECKOUT PATH ---
|
|
56
|
+
# Save current branch to restore after merge
|
|
57
|
+
SAVED_BRANCH=$(git branch --show-current 2>/dev/null || echo "")
|
|
58
|
+
|
|
59
|
+
# Try gh pr merge (happy path)
|
|
60
|
+
if gh pr merge "$PR" --squash --delete-branch 2>/dev/null; then
|
|
61
|
+
echo "Merged via gh pr merge."
|
|
74
62
|
else
|
|
75
|
-
echo "
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
echo "gh pr merge failed — falling back to API merge..."
|
|
64
|
+
|
|
65
|
+
TITLE=$(gh pr view "$PR" --json title --jq '.title')
|
|
66
|
+
gh api "repos/$REPO/pulls/$PR/merge" \
|
|
67
|
+
-X PUT \
|
|
68
|
+
-f merge_method=squash \
|
|
69
|
+
-f commit_title="$TITLE" \
|
|
70
|
+
--silent
|
|
71
|
+
|
|
72
|
+
echo "Merged via API."
|
|
73
|
+
|
|
74
|
+
# Delete remote branch
|
|
75
|
+
if git ls-remote --exit-code origin "$BRANCH" &>/dev/null; then
|
|
76
|
+
git push origin --delete "$BRANCH" 2>/dev/null \
|
|
77
|
+
&& echo "Deleted remote branch: $BRANCH" \
|
|
78
|
+
|| echo "⚠ Could not delete remote branch: $BRANCH"
|
|
79
|
+
fi
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Sync main
|
|
83
|
+
git checkout main 2>/dev/null || true
|
|
84
|
+
git pull --ff-only origin main 2>/dev/null || {
|
|
85
|
+
echo "⚠ main has diverged — fast-forward not possible."
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# Restore original branch if it still exists and wasn't the merged branch
|
|
89
|
+
if [[ -n "$SAVED_BRANCH" ]] && [[ "$SAVED_BRANCH" != "$BRANCH" ]] && [[ "$SAVED_BRANCH" != "main" ]]; then
|
|
90
|
+
git checkout "$SAVED_BRANCH" 2>/dev/null || true
|
|
78
91
|
fi
|
|
79
92
|
fi
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# project-status.sh — Update Project #6 Status and Execution fields for an issue.
|
|
3
|
+
#
|
|
4
|
+
# Usage: bash .claude/scripts/project-status.sh <issue-number> <status> <execution>
|
|
5
|
+
#
|
|
6
|
+
# Status values: Todo | "In Progress" | "Under Review" | Blocked
|
|
7
|
+
# Execution values: Queued | Running | Review | Blocked
|
|
8
|
+
#
|
|
9
|
+
# Both fields are updated atomically. Missing or invalid values are skipped silently.
|
|
10
|
+
# All operations are best-effort — failures are logged but never fatal.
|
|
11
|
+
|
|
12
|
+
set -euo pipefail
|
|
13
|
+
|
|
14
|
+
ISSUE_NUMBER="${1:?Usage: project-status.sh <issue-number> <status> <execution>}"
|
|
15
|
+
STATUS="${2:?Missing status value}"
|
|
16
|
+
EXECUTION="${3:?Missing execution value}"
|
|
17
|
+
|
|
18
|
+
# --- Project #6 constants ---
|
|
19
|
+
PROJECT_ID="PVT_kwHOAFO-EM4BRTW5"
|
|
20
|
+
STATUS_FIELD="PVTSSF_lAHOAFO-EM4BRTW5zg_K3tE"
|
|
21
|
+
EXECUTION_FIELD="PVTSSF_lAHOAFO-EM4BRTW5zg_Lokk"
|
|
22
|
+
|
|
23
|
+
# Resolve Status option ID
|
|
24
|
+
case "$STATUS" in
|
|
25
|
+
"Todo") STATUS_OPT="6ed537f9" ;;
|
|
26
|
+
"In Progress") STATUS_OPT="0d583361" ;;
|
|
27
|
+
"Under Review") STATUS_OPT="173633ca" ;;
|
|
28
|
+
"Blocked") STATUS_OPT="d239ddb3" ;;
|
|
29
|
+
*) echo "[project-status] Unknown status: $STATUS" >&2; exit 1 ;;
|
|
30
|
+
esac
|
|
31
|
+
|
|
32
|
+
# Resolve Execution option ID
|
|
33
|
+
case "$EXECUTION" in
|
|
34
|
+
"Queued") EXECUTION_OPT="f00eea4e" ;;
|
|
35
|
+
"Running") EXECUTION_OPT="14585208" ;;
|
|
36
|
+
"Review") EXECUTION_OPT="8e0939cc" ;;
|
|
37
|
+
"Blocked") EXECUTION_OPT="65e212b0" ;;
|
|
38
|
+
*) echo "[project-status] Unknown execution: $EXECUTION" >&2; exit 1 ;;
|
|
39
|
+
esac
|
|
40
|
+
|
|
41
|
+
# Get issue URL
|
|
42
|
+
ISSUE_URL=$(gh issue view "$ISSUE_NUMBER" --json url --jq '.url' 2>/dev/null || echo "")
|
|
43
|
+
if [ -z "$ISSUE_URL" ]; then
|
|
44
|
+
echo "[project-status] Could not find issue #$ISSUE_NUMBER" >&2
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Add to project (idempotent) — returns the item ID whether new or existing
|
|
49
|
+
ITEM_ID=$(gh project item-add 6 --owner SharadKumar --url "$ISSUE_URL" --format json --jq '.id' 2>/dev/null || echo "")
|
|
50
|
+
|
|
51
|
+
if [ -z "$ITEM_ID" ]; then
|
|
52
|
+
echo "[project-status] Could not add/find issue #$ISSUE_NUMBER in Project #6" >&2
|
|
53
|
+
exit 0
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# Update both fields
|
|
57
|
+
gh project item-edit --id "$ITEM_ID" \
|
|
58
|
+
--project-id "$PROJECT_ID" \
|
|
59
|
+
--field-id "$STATUS_FIELD" \
|
|
60
|
+
--single-select-option-id "$STATUS_OPT" 2>/dev/null || true
|
|
61
|
+
|
|
62
|
+
gh project item-edit --id "$ITEM_ID" \
|
|
63
|
+
--project-id "$PROJECT_ID" \
|
|
64
|
+
--field-id "$EXECUTION_FIELD" \
|
|
65
|
+
--single-select-option-id "$EXECUTION_OPT" 2>/dev/null || true
|
|
66
|
+
|
|
67
|
+
echo "[project-status] #$ISSUE_NUMBER → Status: $STATUS, Execution: $EXECUTION"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# on a GitHub issue. Idempotent: finds existing workpad comment and patches it in-place.
|
|
4
4
|
#
|
|
5
5
|
# Usage:
|
|
6
|
-
# bash .claude/scripts/workpad-upsert.sh <issue-number> <status> [plan] [acs] [validation]
|
|
6
|
+
# bash .claude/scripts/workpad-upsert.sh <issue-number> <status> [plan] [acs] [validation] [attempts]
|
|
7
7
|
#
|
|
8
8
|
# Arguments:
|
|
9
9
|
# issue-number GitHub issue number (required)
|
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
# plan Plan text (optional, default: "TBD")
|
|
12
12
|
# acs ACs markdown (optional, default: "- [ ] (loading from issue)")
|
|
13
13
|
# validation Validation status (optional, default: "pending")
|
|
14
|
+
# attempts Build attempt count (optional, default: 1)
|
|
14
15
|
#
|
|
15
16
|
# Example:
|
|
16
17
|
# bash .claude/scripts/workpad-upsert.sh 42 "🔄 Claimed — reading issue"
|
|
17
|
-
# bash .claude/scripts/workpad-upsert.sh 42 "✅ Implementation complete" "Added auth middleware" "- [x] Token validated" "bun test: 45/45 pass"
|
|
18
|
+
# bash .claude/scripts/workpad-upsert.sh 42 "✅ Implementation complete" "Added auth middleware" "- [x] Token validated" "bun test: 45/45 pass" 2
|
|
18
19
|
#
|
|
19
20
|
# Run from the repo root (where gh is authenticated).
|
|
20
21
|
set -euo pipefail
|
|
@@ -24,11 +25,13 @@ STATUS="${2:?'status required'}"
|
|
|
24
25
|
PLAN="${3:-TBD}"
|
|
25
26
|
ACS="${4:-- [ ] (loading from issue)}"
|
|
26
27
|
VALIDATION="${5:-pending}"
|
|
28
|
+
ATTEMPTS="${6:-1}"
|
|
27
29
|
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
28
30
|
|
|
29
31
|
BODY="<!-- claudius:workpad -->
|
|
30
32
|
**Workpad** · Updated: ${TIMESTAMP}
|
|
31
33
|
**Status:** ${STATUS}
|
|
34
|
+
**Attempts:** ${ATTEMPTS}
|
|
32
35
|
**Plan:** ${PLAN}
|
|
33
36
|
**ACs:**
|
|
34
37
|
${ACS}
|
|
@@ -105,9 +105,23 @@ Also read: `.claudius/design/tokens.css` for token values, `.claudius/design/com
|
|
|
105
105
|
1. Write failing test from first acceptance criterion
|
|
106
106
|
2. Implement until test passes
|
|
107
107
|
3. Repeat for each AC
|
|
108
|
-
4.
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
4. Invoke `/simplify` on the changed files to reduce complexity before validating (best-effort: if it returns no changes or errors, log and continue)
|
|
109
|
+
5. Run full suite: `bun test`
|
|
110
|
+
|
|
111
|
+
**Team (M+ — >2 files, >100 lines):** Use the Agent tool to spawn developer, simplifier, and reviewer agents in sequence.
|
|
112
|
+
|
|
113
|
+
1. **Spawn builder** — developer agent implements the issue with TDD (full cycle: failing tests → implementation → passing tests)
|
|
114
|
+
2. **Spawn simplifier** — after builder completes, spawn the `code-simplifier` agent (best-effort: if it returns no changes or errors, log and continue to reviewer):
|
|
115
|
+
```
|
|
116
|
+
Agent tool, subagent_type: general-purpose, agent: code-simplifier
|
|
117
|
+
Prompt:
|
|
118
|
+
<git diff of all changes: `git diff main...HEAD`>
|
|
119
|
+
<original issue ACs>
|
|
120
|
+
Project conventions: see CLAUDE.md
|
|
121
|
+
Task: Reduce complexity, improve reuse, fix quality issues — without changing behavior or adding new features.
|
|
122
|
+
Constraint: Only touch files already changed on this branch (visible in the diff above).
|
|
123
|
+
```
|
|
124
|
+
3. **Spawn reviewer** — reviewer agent runs quality gate after simplifier completes (or after simplifier is skipped due to error)
|
|
111
125
|
|
|
112
126
|
### 5. Validate
|
|
113
127
|
|
|
@@ -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.
|
|
24
|
+
"version": "0.9.2",
|
|
25
25
|
"strict": true,
|
|
26
26
|
"category": "development"
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
|
-
"version": "0.
|
|
29
|
+
"version": "0.9.2"
|
|
30
30
|
}
|
|
@@ -26,7 +26,7 @@ const migrations = [
|
|
|
26
26
|
fromVersion: 1,
|
|
27
27
|
toVersion: 2,
|
|
28
28
|
migrate: (_doc) => {
|
|
29
|
-
// owner, slack, pulse.ideation
|
|
29
|
+
// owner, slack, pulse.ideation are added by addMissingKeys
|
|
30
30
|
// This migration handles any structural changes needed
|
|
31
31
|
},
|
|
32
32
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-migrations.js","sourceRoot":"","sources":["../src/config-migrations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAiB,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAgBrD,MAAM,UAAU,GAAgB;IAC/B;QACC,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,uDAAuD;YACvD,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACjD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAChC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;KACD;IACD;QACC,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,
|
|
1
|
+
{"version":3,"file":"config-migrations.js","sourceRoot":"","sources":["../src/config-migrations.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface ClaudiusConfig {
|
|
|
31
31
|
pulse: {
|
|
32
32
|
enabled: boolean;
|
|
33
33
|
intervalMinutes: number;
|
|
34
|
-
timezone
|
|
34
|
+
timezone?: string;
|
|
35
35
|
activeHours: {
|
|
36
36
|
start: string;
|
|
37
37
|
end: string;
|
|
@@ -63,7 +63,7 @@ export interface ClaudiusConfig {
|
|
|
63
63
|
};
|
|
64
64
|
owner: {
|
|
65
65
|
name: string;
|
|
66
|
-
timezone
|
|
66
|
+
timezone?: string;
|
|
67
67
|
slackUserId: string;
|
|
68
68
|
};
|
|
69
69
|
goals: string[];
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,WAAW;IAC3B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,WAAW;IAC3B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACnD,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,cAAc,EAAE,OAAO,CAAC;QACxB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,QAAQ,EAAE;YACT,aAAa,EAAE,MAAM,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC;YACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;YAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;YAChC,kBAAkB,EAAE,MAAM,CAAC;SAC3B,CAAC;KACF,CAAC;IACF,IAAI,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,MAAM,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;IACF,KAAK,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uEAAuE;IACvE,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAyDD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAevD;AAED,wBAAgB,gBAAgB,IAAI,cAAc,CAEjD"}
|
package/dist/config.js
CHANGED
|
@@ -25,7 +25,6 @@ const DEFAULT_CONFIG = {
|
|
|
25
25
|
pulse: {
|
|
26
26
|
enabled: false,
|
|
27
27
|
intervalMinutes: 15,
|
|
28
|
-
timezone: "America/Los_Angeles",
|
|
29
28
|
activeHours: { start: "09:00", end: "22:00" },
|
|
30
29
|
budgetCapUsd: 100,
|
|
31
30
|
maxIssuesPerDay: 5,
|
|
@@ -54,7 +53,6 @@ const DEFAULT_CONFIG = {
|
|
|
54
53
|
},
|
|
55
54
|
owner: {
|
|
56
55
|
name: "",
|
|
57
|
-
timezone: "America/Los_Angeles",
|
|
58
56
|
slackUserId: "",
|
|
59
57
|
},
|
|
60
58
|
goals: [],
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAqExC,MAAM,cAAc,GAAmB;IACtC,aAAa,EAAE,sBAAsB;IACrC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,eAAe;KACtB;IACD,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM;QACrB,WAAW,EAAE,IAAI;KACjB;IACD,QAAQ,EAAE;QACT,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,CAAC;KACd;IACD,KAAK,EAAE;QACN,OAAO,EAAE,KAAK;QACd,eAAe,EAAE,EAAE;QACnB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ideation.d.ts","sourceRoot":"","sources":["../../src/daemon/ideation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"ideation.d.ts","sourceRoot":"","sources":["../../src/daemon/ideation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACrC;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAKD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CA4CnF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAazE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAChB,IAAI,CAqBN;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|