sisyphi 1.1.18 → 1.1.19
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/README.md +195 -75
- package/dist/chunk-36VJ7ZBD.js +1898 -0
- package/dist/chunk-36VJ7ZBD.js.map +1 -0
- package/dist/{chunk-C2XKXERJ.js → chunk-M6Z3KHOH.js} +159 -46
- package/dist/chunk-M6Z3KHOH.js.map +1 -0
- package/dist/chunk-O4ZHSQ5R.js +544 -0
- package/dist/chunk-O4ZHSQ5R.js.map +1 -0
- package/dist/chunk-P2HHTIPM.js +478 -0
- package/dist/chunk-P2HHTIPM.js.map +1 -0
- package/dist/{chunk-TMBAVPHH.js → chunk-PNDCVKBN.js} +73 -1
- package/dist/chunk-PNDCVKBN.js.map +1 -0
- package/dist/chunk-SVGIQ2G4.js +1076 -0
- package/dist/chunk-SVGIQ2G4.js.map +1 -0
- package/dist/cli.js +4405 -892
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +4340 -1990
- package/dist/daemon.js.map +1 -1
- package/dist/{paths-XRDEEJ5R.js → paths-JXFLR5BN.js} +38 -2
- package/dist/single-ask-6G4BIVY2.js +132 -0
- package/dist/single-ask-6G4BIVY2.js.map +1 -0
- package/dist/templates/CLAUDE.md +1 -56
- package/dist/templates/agent-plugin/agents/CLAUDE.md +2 -65
- package/dist/templates/agent-plugin/agents/debug.md +43 -6
- package/dist/templates/agent-plugin/agents/debug.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/explore.md +28 -1
- package/dist/templates/agent-plugin/agents/explore.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/implementor.md +94 -0
- package/dist/templates/agent-plugin/agents/implementor.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/operator.md +43 -1
- package/dist/templates/agent-plugin/agents/operator.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
- package/dist/templates/agent-plugin/agents/plan.md +176 -86
- package/dist/templates/agent-plugin/agents/plan.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/problem/adversarial.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/contrarian.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/first-principles.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/precedent.md +25 -0
- package/dist/templates/agent-plugin/agents/problem/simplifier.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
- package/dist/templates/agent-plugin/agents/problem.md +334 -79
- package/dist/templates/agent-plugin/agents/problem.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
- package/dist/templates/agent-plugin/agents/research-lead/critic.md +61 -0
- package/dist/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
- package/dist/templates/agent-plugin/agents/research-lead.md +184 -0
- package/dist/templates/agent-plugin/agents/research-lead.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
- package/dist/templates/agent-plugin/agents/review/compliance.md +14 -3
- package/dist/templates/agent-plugin/agents/review/efficiency.md +15 -4
- package/dist/templates/agent-plugin/agents/review/quality.md +20 -6
- package/dist/templates/agent-plugin/agents/review/reuse.md +17 -5
- package/dist/templates/agent-plugin/agents/review/security.md +10 -3
- package/dist/templates/agent-plugin/agents/review/tests.md +58 -0
- package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
- package/dist/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
- package/dist/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
- package/dist/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
- package/dist/templates/agent-plugin/agents/review-plan/security.md +5 -2
- package/dist/templates/agent-plugin/agents/review-plan.md +52 -5
- package/dist/templates/agent-plugin/agents/review-plan.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/review.md +89 -16
- package/dist/templates/agent-plugin/agents/review.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/spec/engineer.md +175 -0
- package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
- package/dist/templates/agent-plugin/agents/spec.md +444 -0
- package/dist/templates/agent-plugin/agents/spec.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/test-spec.md +58 -2
- package/dist/templates/agent-plugin/agents/test-spec.settings.json +57 -0
- package/dist/templates/agent-plugin/hooks/CLAUDE.md +9 -57
- package/dist/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
- package/dist/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
- package/dist/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
- package/dist/templates/agent-plugin/hooks/plan-validate.sh +97 -0
- package/dist/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
- package/dist/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
- package/dist/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
- package/dist/templates/agent-plugin/hooks/require-submit.sh +51 -42
- package/dist/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
- package/dist/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
- package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
- package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
- package/dist/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
- package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
- package/dist/templates/agent-suffix.md +7 -4
- package/dist/templates/baleia.lua +42 -0
- package/dist/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
- package/dist/templates/dashboard-claude.md +7 -3
- package/dist/templates/orchestrator-base.md +89 -52
- package/dist/templates/orchestrator-completion.md +47 -24
- package/dist/templates/orchestrator-discovery.md +183 -0
- package/dist/templates/orchestrator-impl.md +47 -18
- package/dist/templates/orchestrator-planning.md +109 -20
- package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
- package/dist/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
- package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
- package/dist/templates/orchestrator-plugin/hooks/hooks.json +0 -10
- package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
- package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
- package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
- package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
- package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
- package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
- package/dist/templates/orchestrator-settings.json +55 -0
- package/dist/templates/orchestrator-validation.md +17 -14
- package/dist/templates/sisyphus-init.lua +30 -0
- package/dist/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
- package/dist/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
- package/dist/templates/termrender-haiku-system.md +82 -0
- package/dist/templates/whip-animation.sh +345 -0
- package/dist/tui.js +3242 -2189
- package/dist/tui.js.map +1 -1
- package/native/SisyphusNotify/main.swift +15 -5
- package/package.json +8 -6
- package/templates/CLAUDE.md +1 -56
- package/templates/agent-plugin/agents/CLAUDE.md +2 -65
- package/templates/agent-plugin/agents/debug.md +43 -6
- package/templates/agent-plugin/agents/debug.settings.json +57 -0
- package/templates/agent-plugin/agents/explore.md +28 -1
- package/templates/agent-plugin/agents/explore.settings.json +57 -0
- package/templates/agent-plugin/agents/implementor.md +94 -0
- package/templates/agent-plugin/agents/implementor.settings.json +57 -0
- package/templates/agent-plugin/agents/operator.md +43 -1
- package/templates/agent-plugin/agents/operator.settings.json +57 -0
- package/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
- package/templates/agent-plugin/agents/plan.md +176 -86
- package/templates/agent-plugin/agents/plan.settings.json +57 -0
- package/templates/agent-plugin/agents/problem/adversarial.md +26 -0
- package/templates/agent-plugin/agents/problem/contrarian.md +26 -0
- package/templates/agent-plugin/agents/problem/first-principles.md +26 -0
- package/templates/agent-plugin/agents/problem/precedent.md +25 -0
- package/templates/agent-plugin/agents/problem/simplifier.md +26 -0
- package/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
- package/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
- package/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
- package/templates/agent-plugin/agents/problem.md +334 -79
- package/templates/agent-plugin/agents/problem.settings.json +57 -0
- package/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
- package/templates/agent-plugin/agents/research-lead/critic.md +61 -0
- package/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
- package/templates/agent-plugin/agents/research-lead.md +184 -0
- package/templates/agent-plugin/agents/research-lead.settings.json +57 -0
- package/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
- package/templates/agent-plugin/agents/review/compliance.md +14 -3
- package/templates/agent-plugin/agents/review/efficiency.md +15 -4
- package/templates/agent-plugin/agents/review/quality.md +20 -6
- package/templates/agent-plugin/agents/review/reuse.md +17 -5
- package/templates/agent-plugin/agents/review/security.md +10 -3
- package/templates/agent-plugin/agents/review/tests.md +58 -0
- package/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
- package/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
- package/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
- package/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
- package/templates/agent-plugin/agents/review-plan/security.md +5 -2
- package/templates/agent-plugin/agents/review-plan.md +52 -5
- package/templates/agent-plugin/agents/review-plan.settings.json +57 -0
- package/templates/agent-plugin/agents/review.md +89 -16
- package/templates/agent-plugin/agents/review.settings.json +57 -0
- package/templates/agent-plugin/agents/spec/engineer.md +175 -0
- package/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
- package/templates/agent-plugin/agents/spec.md +444 -0
- package/templates/agent-plugin/agents/spec.settings.json +57 -0
- package/templates/agent-plugin/agents/test-spec.md +58 -2
- package/templates/agent-plugin/agents/test-spec.settings.json +57 -0
- package/templates/agent-plugin/hooks/CLAUDE.md +9 -57
- package/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
- package/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
- package/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
- package/templates/agent-plugin/hooks/plan-validate.sh +97 -0
- package/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
- package/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
- package/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
- package/templates/agent-plugin/hooks/require-submit.sh +51 -42
- package/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
- package/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
- package/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
- package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
- package/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
- package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
- package/templates/agent-suffix.md +7 -4
- package/templates/baleia.lua +42 -0
- package/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
- package/templates/dashboard-claude.md +7 -3
- package/templates/orchestrator-base.md +89 -52
- package/templates/orchestrator-completion.md +47 -24
- package/templates/orchestrator-discovery.md +183 -0
- package/templates/orchestrator-impl.md +47 -18
- package/templates/orchestrator-planning.md +109 -20
- package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
- package/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
- package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
- package/templates/orchestrator-plugin/hooks/hooks.json +0 -10
- package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
- package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
- package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
- package/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
- package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
- package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
- package/templates/orchestrator-settings.json +55 -0
- package/templates/orchestrator-validation.md +17 -14
- package/templates/sisyphus-init.lua +30 -0
- package/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
- package/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
- package/templates/termrender-haiku-system.md +82 -0
- package/templates/whip-animation.sh +345 -0
- package/dist/chunk-22ZGZTGY.js +0 -67
- package/dist/chunk-22ZGZTGY.js.map +0 -1
- package/dist/chunk-6PJVJEYQ.js +0 -46
- package/dist/chunk-6PJVJEYQ.js.map +0 -1
- package/dist/chunk-C2XKXERJ.js.map +0 -1
- package/dist/chunk-TMBAVPHH.js.map +0 -1
- package/dist/chunk-V36NXMHP.js +0 -299
- package/dist/chunk-V36NXMHP.js.map +0 -1
- package/dist/templates/agent-plugin/agents/design.md +0 -134
- package/dist/templates/agent-plugin/agents/requirements.md +0 -138
- package/dist/templates/begin.md +0 -22
- package/dist/templates/nvim-tutorial.txt +0 -68
- package/dist/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
- package/dist/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
- package/dist/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
- package/dist/templates/orchestrator-strategy.md +0 -238
- package/templates/agent-plugin/agents/design.md +0 -134
- package/templates/agent-plugin/agents/requirements.md +0 -138
- package/templates/begin.md +0 -22
- package/templates/nvim-tutorial.txt +0 -68
- package/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
- package/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
- package/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
- package/templates/orchestrator-strategy.md +0 -238
- /package/dist/{paths-XRDEEJ5R.js.map → paths-JXFLR5BN.js.map} +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-- ~/.config/sisyphus/init.lua
|
|
2
|
+
-- Loaded only when nvim is invoked as `NVIM_APPNAME=sisyphus nvim ...` (compose popup).
|
|
3
|
+
|
|
4
|
+
vim.opt.swapfile = false
|
|
5
|
+
vim.opt.backup = false
|
|
6
|
+
vim.opt.writebackup = false
|
|
7
|
+
vim.opt.undofile = false
|
|
8
|
+
vim.opt.signcolumn = 'no'
|
|
9
|
+
vim.opt.number = false
|
|
10
|
+
vim.opt.relativenumber = false
|
|
11
|
+
vim.opt.wrap = true
|
|
12
|
+
vim.opt.linebreak = true
|
|
13
|
+
|
|
14
|
+
-- Force markdown filetype (compose temp files are .md)
|
|
15
|
+
vim.api.nvim_create_autocmd({ 'BufNewFile', 'BufRead' }, {
|
|
16
|
+
pattern = '*',
|
|
17
|
+
callback = function() vim.bo.filetype = 'markdown' end,
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
-- Enter insert mode automatically when the buffer opens.
|
|
21
|
+
vim.api.nvim_create_autocmd({ 'BufWinEnter' }, {
|
|
22
|
+
pattern = '*',
|
|
23
|
+
callback = function() vim.cmd('startinsert') end,
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
-- :w autosaves and quits. :q without :w cancels.
|
|
27
|
+
vim.api.nvim_create_autocmd('BufWritePost', {
|
|
28
|
+
pattern = '*',
|
|
29
|
+
callback = function() vim.cmd('quit!') end,
|
|
30
|
+
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/tmux-state.sh idle"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"UserPromptSubmit": [
|
|
14
|
+
{
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/tmux-state.sh processing"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"Stop": [
|
|
24
|
+
{
|
|
25
|
+
"hooks": [
|
|
26
|
+
{
|
|
27
|
+
"type": "command",
|
|
28
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/tmux-state.sh stopped"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"SubagentStop": [
|
|
34
|
+
{
|
|
35
|
+
"hooks": [
|
|
36
|
+
{
|
|
37
|
+
"type": "command",
|
|
38
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/tmux-state.sh stopped"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"SessionEnd": [
|
|
44
|
+
{
|
|
45
|
+
"hooks": [
|
|
46
|
+
{
|
|
47
|
+
"type": "command",
|
|
48
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/tmux-state.sh cleanup"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Writes Claude session state to /tmp/claude-tmux-state/<pane_id>
|
|
3
|
+
# Usage: tmux-state.sh <idle|processing|stopped|cleanup>
|
|
4
|
+
|
|
5
|
+
pane_id="${TMUX_PANE}"
|
|
6
|
+
[ -z "$pane_id" ] && exit 0
|
|
7
|
+
|
|
8
|
+
STATE_DIR="/tmp/claude-tmux-state"
|
|
9
|
+
pane_file="${STATE_DIR}/${pane_id#%}"
|
|
10
|
+
|
|
11
|
+
case "$1" in
|
|
12
|
+
idle|processing|stopped)
|
|
13
|
+
mkdir -p "$STATE_DIR"
|
|
14
|
+
echo "$1" > "$pane_file"
|
|
15
|
+
;;
|
|
16
|
+
cleanup)
|
|
17
|
+
rm -f "$pane_file"
|
|
18
|
+
;;
|
|
19
|
+
esac
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Role
|
|
2
|
+
|
|
3
|
+
You generate dense, terminal-width termrender visuals for sisyphus ask questions.
|
|
4
|
+
Your output is exactly one `attach_visual` call with the final markdown.
|
|
5
|
+
Read code or files via `read_file` if needed. Do not speculate about file contents.
|
|
6
|
+
|
|
7
|
+
# Tools
|
|
8
|
+
|
|
9
|
+
**read_file** — `read_file({ path: "relative/path/to/file.ts" })`
|
|
10
|
+
|
|
11
|
+
- Path relative to session cwd. Absolute paths and symlinks rejected.
|
|
12
|
+
- Reads >50 KB truncated with `…[truncated]` marker.
|
|
13
|
+
- Read 0–3 files at most.
|
|
14
|
+
|
|
15
|
+
**attach_visual** — `attach_visual({ content: "<termrender markdown>" })`
|
|
16
|
+
|
|
17
|
+
- Call exactly once with your final markdown.
|
|
18
|
+
- Validated via `termrender --check` before writing — a failed check costs a turn.
|
|
19
|
+
- Do not call it until content is fully composed.
|
|
20
|
+
|
|
21
|
+
# Termrender Directive Reference
|
|
22
|
+
|
|
23
|
+
Each directive opens with `:::name{attrs}` and closes with `:::` (matching colon count).
|
|
24
|
+
|
|
25
|
+
## Panels
|
|
26
|
+
|
|
27
|
+
Open: `:::panel{title="Section Title" color="cyan"}`
|
|
28
|
+
Close: `:::`
|
|
29
|
+
|
|
30
|
+
Colors: `red` `green` `yellow` `blue` `magenta` `cyan` `white` `gray`
|
|
31
|
+
|
|
32
|
+
Content inside panels supports full markdown: **bold**, *italic*, `code`, tables, headings.
|
|
33
|
+
|
|
34
|
+
## Columns
|
|
35
|
+
|
|
36
|
+
Open: `:::columns`, each column: `:::col{width="50%"}`, close each col with `:::`, close columns with `:::`
|
|
37
|
+
|
|
38
|
+
Columns are side-by-side. Widths should sum to ~100%.
|
|
39
|
+
|
|
40
|
+
## Tree Views
|
|
41
|
+
|
|
42
|
+
Open: `:::tree`, list paths with indentation, close with `:::`
|
|
43
|
+
|
|
44
|
+
Use for directory structures, call hierarchies, dependency trees.
|
|
45
|
+
|
|
46
|
+
## Mermaid Diagrams
|
|
47
|
+
|
|
48
|
+
Open: `:::mermaid`, write graph/sequence/state DSL, close with `:::`
|
|
49
|
+
|
|
50
|
+
Renders as ASCII art. Good for flows, decision trees, state machines.
|
|
51
|
+
|
|
52
|
+
Graph example: `graph TD` then `A[Label] --> B{Decision}` then `B -->|yes| C[Action]`
|
|
53
|
+
|
|
54
|
+
## Inline Formatting
|
|
55
|
+
|
|
56
|
+
- `**bold**` — primary emphasis
|
|
57
|
+
- `*italic*` — secondary
|
|
58
|
+
- `` `code` `` — symbols, filenames, types
|
|
59
|
+
- `# H1` / `## H2` / `### H3` — headings
|
|
60
|
+
- `| col | col |` with `|---|---|` row — tables
|
|
61
|
+
- Cite file locations as `path/to/file.ts:42`
|
|
62
|
+
|
|
63
|
+
# Tone
|
|
64
|
+
|
|
65
|
+
- Terminal-width. Dense. Every line earns its place.
|
|
66
|
+
- Prefer structure (panels, columns, tables, trees) over prose paragraphs.
|
|
67
|
+
- No emojis unless the question explicitly requires visual symbols.
|
|
68
|
+
- Labels should be terse: "Input" not "The input to the function".
|
|
69
|
+
|
|
70
|
+
# Process
|
|
71
|
+
|
|
72
|
+
1. Read 0–3 files if the question references specific code or paths.
|
|
73
|
+
2. Compose the visual in one pass: panels for sections, columns for comparisons, tables for options.
|
|
74
|
+
3. Call `attach_visual` once with the complete markdown.
|
|
75
|
+
|
|
76
|
+
# Failure Mode
|
|
77
|
+
|
|
78
|
+
If a useful visual is not possible (no relevant files, ambiguous question), call `attach_visual` with:
|
|
79
|
+
|
|
80
|
+
`:::panel{title="Visual Unavailable" color="yellow"}` + one-sentence reason + `:::`
|
|
81
|
+
|
|
82
|
+
Do not loop trying to fabricate content.
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Generated from scripts/whip-frames.json. Edit the JSON, not this file.
|
|
3
|
+
# Whip crack animation — generated from whip-frames.json.
|
|
4
|
+
# Edit JSON waypoints, regenerate with:
|
|
5
|
+
# python3 scripts/whip-render.py scripts/whip-frames.json --emit bash -o scripts/test-whip-animation.sh
|
|
6
|
+
#
|
|
7
|
+
# Convention: ALL frames use 0.04s. Speed encoded as distance per frame.
|
|
8
|
+
#
|
|
9
|
+
# Arm is shoulder → elbow → hand (two explicit segments). Specify elbow per
|
|
10
|
+
# frame for direct artistic control — IK is a fallback only.
|
|
11
|
+
|
|
12
|
+
HEIGHT=12
|
|
13
|
+
|
|
14
|
+
printf '\033[?25l'
|
|
15
|
+
trap 'printf "\033[?25h"' EXIT
|
|
16
|
+
|
|
17
|
+
frame() {
|
|
18
|
+
printf '\033[2J\033[H'
|
|
19
|
+
local row=1
|
|
20
|
+
for line in "$@"; do
|
|
21
|
+
printf '\033[%d;1H%s' "$row" "$line"
|
|
22
|
+
(( row++ ))
|
|
23
|
+
done
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# F01 REST — hold
|
|
27
|
+
frame \
|
|
28
|
+
"" \
|
|
29
|
+
"" \
|
|
30
|
+
"" \
|
|
31
|
+
"" \
|
|
32
|
+
"" \
|
|
33
|
+
"" \
|
|
34
|
+
"" \
|
|
35
|
+
"[1m⡄[22m" \
|
|
36
|
+
"[1m⠃[22m" \
|
|
37
|
+
"[1m⢀[22m[1m⡠[22m/⢤⡀" \
|
|
38
|
+
"[1m⠋[22m ⠑⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
39
|
+
""
|
|
40
|
+
sleep 0.04
|
|
41
|
+
|
|
42
|
+
# F02 PULL — near-end of whip lifts
|
|
43
|
+
frame \
|
|
44
|
+
"" \
|
|
45
|
+
"" \
|
|
46
|
+
"" \
|
|
47
|
+
"" \
|
|
48
|
+
"" \
|
|
49
|
+
"" \
|
|
50
|
+
"" \
|
|
51
|
+
"[1m⡄[22m" \
|
|
52
|
+
"[1m⠃[22m" \
|
|
53
|
+
"[1m⢀[22m[1m⡠[22m/⠔⠒⠦⠤⣄⣀" \
|
|
54
|
+
"[1m⠋[22m ⠈⠉⠓⠒⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
55
|
+
""
|
|
56
|
+
sleep 0.04
|
|
57
|
+
|
|
58
|
+
# F03 PULL — hand rises 1
|
|
59
|
+
frame \
|
|
60
|
+
"" \
|
|
61
|
+
"" \
|
|
62
|
+
"" \
|
|
63
|
+
"" \
|
|
64
|
+
"" \
|
|
65
|
+
"" \
|
|
66
|
+
"" \
|
|
67
|
+
"[1m⣦[22m" \
|
|
68
|
+
"[1m⡟[22m[1m⢀[22m/⠔⠒⠦⠤⣄⣀⡀" \
|
|
69
|
+
"[1m⣧[22m[1m⠎[22m ⠉⠙⠒⠦⠤⣄⣀" \
|
|
70
|
+
"[1m⠏[22m ⠉⠙⠒⠒⠦⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
71
|
+
""
|
|
72
|
+
sleep 0.04
|
|
73
|
+
|
|
74
|
+
# F04 PULL — whip midbody lifting
|
|
75
|
+
frame \
|
|
76
|
+
"" \
|
|
77
|
+
"" \
|
|
78
|
+
"" \
|
|
79
|
+
"" \
|
|
80
|
+
"" \
|
|
81
|
+
"" \
|
|
82
|
+
"" \
|
|
83
|
+
"[1m⣦[22m ⡤⠤⠤⢤⣀⡀" \
|
|
84
|
+
"[1m⡟[22m[1m⢀[22m/⠜ ⠉⠙⠒⠦⠤⢄⣀⡀" \
|
|
85
|
+
"[1m⣧[22m[1m⠎[22m ⠉⠉⠑⠒⠦⠤⢄⣀⡀" \
|
|
86
|
+
"[1m⠏[22m ⠈⠉⠑⠒⠆" \
|
|
87
|
+
""
|
|
88
|
+
sleep 0.04
|
|
89
|
+
|
|
90
|
+
# F05 PULL — hand row 7
|
|
91
|
+
frame \
|
|
92
|
+
"" \
|
|
93
|
+
"" \
|
|
94
|
+
"" \
|
|
95
|
+
"" \
|
|
96
|
+
"" \
|
|
97
|
+
"" \
|
|
98
|
+
" ⡤⠤⠤⠤⣄⣀" \
|
|
99
|
+
"[1m⣴[22m[1m⢰[22m/⠜ ⠈⠉⠓⠦⢤⣀" \
|
|
100
|
+
"[1m⢿[22m[1m⣼[22m[1m⡇[22m ⠈⠑⠦⣄⡀" \
|
|
101
|
+
"[1m⢸[22m[1m⣿[22m[1m⠃[22m ⠉⠓⠦⠤⣀⣀" \
|
|
102
|
+
"[1m⢸[22m[1m⣿[22m ⠈⠉⠉⠓⠒⠆" \
|
|
103
|
+
" [1m⠛[22m"
|
|
104
|
+
sleep 0.04
|
|
105
|
+
|
|
106
|
+
# F06 PULL — hand row 6
|
|
107
|
+
frame \
|
|
108
|
+
"" \
|
|
109
|
+
"" \
|
|
110
|
+
"" \
|
|
111
|
+
"" \
|
|
112
|
+
"" \
|
|
113
|
+
" ⡤⠤⠤⠤⣄⣀" \
|
|
114
|
+
" [1m⠠[22m/⠜ ⠈⠉⠓⠦⢤⣀" \
|
|
115
|
+
"[1m⢤[22m [1m⣿[22m ⠈⠙⠲⢤⡀" \
|
|
116
|
+
" [1m⢣[22m[1m⢻[22m[1m⡆[22m ⠈⠑⠦⢄⡀" \
|
|
117
|
+
" [1m⢻[22m[1m⡇[22m ⠈⠑⠢⢄⡀" \
|
|
118
|
+
" [1m⠈[22m[1m⠛[22m ⠈⠑⠆" \
|
|
119
|
+
""
|
|
120
|
+
sleep 0.04
|
|
121
|
+
|
|
122
|
+
# F07 PULL — hand row 5
|
|
123
|
+
frame \
|
|
124
|
+
"" \
|
|
125
|
+
"" \
|
|
126
|
+
"" \
|
|
127
|
+
"" \
|
|
128
|
+
" ⡤⠤⠤⠤⣄⣀" \
|
|
129
|
+
" /⠜ ⠈⠉⠓⠦⢤⣀" \
|
|
130
|
+
" [1m⢸[22m[1m⡀[22m ⠈⠙⠲⢤⡀" \
|
|
131
|
+
"[1m⠤[22m[1m⣄[22m [1m⢇[22m ⠈⠑⠦⢄⡀" \
|
|
132
|
+
" [1m⠈[22m[1m⠓[22m[1m⢼[22m[1m⡄[22m ⠈⠑⠢⢄⡀" \
|
|
133
|
+
" ⠈⠑⠆" \
|
|
134
|
+
"" \
|
|
135
|
+
""
|
|
136
|
+
sleep 0.04
|
|
137
|
+
|
|
138
|
+
# F08 PULL — hand holds, whip rising
|
|
139
|
+
frame \
|
|
140
|
+
"" \
|
|
141
|
+
"" \
|
|
142
|
+
"" \
|
|
143
|
+
" ⣀⡠⠤⠤⠤⠤⠤⠤⣄⣀" \
|
|
144
|
+
" ⣠⠔⠚⠉ ⠈⠉⠓⠦⢤⣀" \
|
|
145
|
+
" /⠜⠁ ⠈⠙⠦⣀" \
|
|
146
|
+
" [1m⢸[22m[1m⡀[22m ⠈⢧" \
|
|
147
|
+
"[1m⠤[22m[1m⣄[22m [1m⢇[22m ⡇" \
|
|
148
|
+
" [1m⠈[22m[1m⠓[22m[1m⢼[22m[1m⡄[22m ⡇" \
|
|
149
|
+
" ⠇" \
|
|
150
|
+
"" \
|
|
151
|
+
""
|
|
152
|
+
sleep 0.04
|
|
153
|
+
|
|
154
|
+
# F09 WINDUP — whip arcing up over
|
|
155
|
+
frame \
|
|
156
|
+
"" \
|
|
157
|
+
" ⢀⣠⠤⠤⠤⠤⠤⣄⣀" \
|
|
158
|
+
" ⣠⠔⠊⠁ ⠈⠙⠦⣄" \
|
|
159
|
+
" ⢀⡴⠋ ⠈⢳⡀" \
|
|
160
|
+
" ⣠⠔⠋ ⢧" \
|
|
161
|
+
" /⠜⠁ ⡎" \
|
|
162
|
+
" [1m⢸[22m[1m⡀[22m ⢠⠃" \
|
|
163
|
+
"[1m⠤[22m[1m⣄[22m [1m⢇[22m ⠜" \
|
|
164
|
+
" [1m⠈[22m[1m⠓[22m[1m⢼[22m[1m⡄[22m" \
|
|
165
|
+
"" \
|
|
166
|
+
"" \
|
|
167
|
+
""
|
|
168
|
+
sleep 0.04
|
|
169
|
+
|
|
170
|
+
# F10 WINDUP — whip curling back
|
|
171
|
+
frame \
|
|
172
|
+
" ⣀⡤⠤⢤⡀" \
|
|
173
|
+
" ⣀⡤⠔⠋⠁ ⢧" \
|
|
174
|
+
" ⣠⠔⠋⠁ ⢸" \
|
|
175
|
+
" ⣠⠞⠁ ⡜" \
|
|
176
|
+
" ⢀⠜⠁ ⡼⠁" \
|
|
177
|
+
" [1m⠠[22m/⠔⠁ ⠜⠁" \
|
|
178
|
+
" [1m⣿[22m" \
|
|
179
|
+
"[1m⢤[22m[1m⡀[22m [1m⣿[22m" \
|
|
180
|
+
" [1m⠙[22m[1m⢦[22m[1m⣹[22m[1m⡇[22m" \
|
|
181
|
+
" [1m⠙[22m[1m⠃[22m" \
|
|
182
|
+
"" \
|
|
183
|
+
""
|
|
184
|
+
sleep 0.04
|
|
185
|
+
|
|
186
|
+
# F11 PEAK — whip curled, tip trailing behind
|
|
187
|
+
frame \
|
|
188
|
+
" ⣀⡤⠤⢤⡀" \
|
|
189
|
+
" ⣀⡤⠔⠋⠁ ⡇" \
|
|
190
|
+
" ⣠⣴⠯⠕⠒⠒⠲⠤⠤⠔⠚⠁" \
|
|
191
|
+
" ⢠⠔⠒⠦⠤⠔⣲⠟⠁" \
|
|
192
|
+
" ⠜ ⢀⠜⠁" \
|
|
193
|
+
" [1m⠠[22m/⠔⠁" \
|
|
194
|
+
" [1m⣿[22m" \
|
|
195
|
+
"[1m⢤[22m[1m⡀[22m [1m⣿[22m" \
|
|
196
|
+
" [1m⠙[22m[1m⢦[22m[1m⣹[22m[1m⡇[22m" \
|
|
197
|
+
" [1m⠙[22m[1m⠃[22m" \
|
|
198
|
+
"" \
|
|
199
|
+
""
|
|
200
|
+
sleep 0.04
|
|
201
|
+
|
|
202
|
+
# F12 PEAK — snake-back hold
|
|
203
|
+
frame \
|
|
204
|
+
" ⣀⡤⠤⢤⡀" \
|
|
205
|
+
" ⣀⡤⠔⠋⠁ ⡇" \
|
|
206
|
+
" ⣠⣴⠯⠕⠒⠒⠲⠤⠤⠔⠚⠁" \
|
|
207
|
+
" ⢠⠔⠒⠦⠤⠔⣲⠟⠁" \
|
|
208
|
+
" ⠜ ⢀⠜⠁" \
|
|
209
|
+
" [1m⠠[22m/⠔⠁" \
|
|
210
|
+
" [1m⣿[22m" \
|
|
211
|
+
"[1m⢤[22m[1m⡀[22m [1m⣿[22m" \
|
|
212
|
+
" [1m⠙[22m[1m⢦[22m[1m⣹[22m[1m⡇[22m" \
|
|
213
|
+
" [1m⠙[22m[1m⠃[22m" \
|
|
214
|
+
"" \
|
|
215
|
+
""
|
|
216
|
+
sleep 0.04
|
|
217
|
+
|
|
218
|
+
# F13 SNAP — FAST, hand jumps to crack position
|
|
219
|
+
frame \
|
|
220
|
+
"" \
|
|
221
|
+
"" \
|
|
222
|
+
"" \
|
|
223
|
+
"" \
|
|
224
|
+
"" \
|
|
225
|
+
"" \
|
|
226
|
+
"" \
|
|
227
|
+
"[1m⠤[22m[1m⣄[22m ⢀⣠⠤⠔⠒⠒⠒⠒⠒⠒⠒⠦⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
228
|
+
" [1m⠈[22m[1m⠓[22m[1m⢤[22m[1m⣀[22m[1m⣀[22m[1m⠤[22m[1m⠤[22m/⠔⠊⠁" \
|
|
229
|
+
"" \
|
|
230
|
+
"" \
|
|
231
|
+
""
|
|
232
|
+
sleep 0.04
|
|
233
|
+
|
|
234
|
+
# F14 CRACK
|
|
235
|
+
frame \
|
|
236
|
+
"" \
|
|
237
|
+
"" \
|
|
238
|
+
"" \
|
|
239
|
+
"" \
|
|
240
|
+
"" \
|
|
241
|
+
"" \
|
|
242
|
+
" \\|/" \
|
|
243
|
+
"[1m⠤[22m[1m⣄[22m ⢀⣠⠤⠔⠒⠒⠒⠒⠒⠒⠒⠦⠤⠤⠤⠤-*-" \
|
|
244
|
+
" [1m⠈[22m[1m⠓[22m[1m⢤[22m[1m⣀[22m[1m⣀[22m[1m⠤[22m[1m⠤[22m/⠔⠊⠁ /|\\" \
|
|
245
|
+
"" \
|
|
246
|
+
"" \
|
|
247
|
+
""
|
|
248
|
+
sleep 0.04
|
|
249
|
+
|
|
250
|
+
# F15 SHOCKWAVE
|
|
251
|
+
frame \
|
|
252
|
+
"" \
|
|
253
|
+
"" \
|
|
254
|
+
"" \
|
|
255
|
+
"" \
|
|
256
|
+
"" \
|
|
257
|
+
"" \
|
|
258
|
+
"" \
|
|
259
|
+
"[1m⢤[22m[1m⡀[22m" \
|
|
260
|
+
" [1m⠳[22m[1m⡀[22m [1m⣠[22m/⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄ ',." \
|
|
261
|
+
" [1m⠹[22m[1m⣄[22m[1m⡤[22m[1m⠋[22m . ." \
|
|
262
|
+
" [1m⠉[22m" \
|
|
263
|
+
""
|
|
264
|
+
sleep 0.04
|
|
265
|
+
|
|
266
|
+
# F16 RECOIL
|
|
267
|
+
frame \
|
|
268
|
+
"" \
|
|
269
|
+
"" \
|
|
270
|
+
"" \
|
|
271
|
+
"" \
|
|
272
|
+
"" \
|
|
273
|
+
"" \
|
|
274
|
+
"" \
|
|
275
|
+
"[1m⣴[22m" \
|
|
276
|
+
"[1m⢻[22m[1m⡆[22m" \
|
|
277
|
+
"[1m⢸[22m[1m⡇[22m [1m⣠[22m/⠔⠒⠒⠦⠤⣄⣀" \
|
|
278
|
+
" [1m⣿[22m[1m⣠[22m[1m⠞[22m[1m⠁[22m ⠈⠉⠓⠒⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄ . ." \
|
|
279
|
+
" [1m⠛[22m[1m⠁[22m"
|
|
280
|
+
sleep 0.04
|
|
281
|
+
|
|
282
|
+
# F17 SETTLING
|
|
283
|
+
frame \
|
|
284
|
+
"" \
|
|
285
|
+
"" \
|
|
286
|
+
"" \
|
|
287
|
+
"" \
|
|
288
|
+
"" \
|
|
289
|
+
"" \
|
|
290
|
+
"" \
|
|
291
|
+
"[1m⣦[22m" \
|
|
292
|
+
"[1m⡿[22m" \
|
|
293
|
+
"[1m⡇[22m [1m⣠[22m/⢤⡀" \
|
|
294
|
+
"[1m⣧[22m[1m⠞[22m[1m⠁[22m ⠉⠓⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
295
|
+
"[1m⠁[22m"
|
|
296
|
+
sleep 0.04
|
|
297
|
+
|
|
298
|
+
# F18 near REST
|
|
299
|
+
frame \
|
|
300
|
+
"" \
|
|
301
|
+
"" \
|
|
302
|
+
"" \
|
|
303
|
+
"" \
|
|
304
|
+
"" \
|
|
305
|
+
"" \
|
|
306
|
+
"" \
|
|
307
|
+
"[1m⡄[22m" \
|
|
308
|
+
"[1m⠃[22m" \
|
|
309
|
+
"[1m⢀[22m[1m⡠[22m/⢤" \
|
|
310
|
+
"[1m⠋[22m ⠈⠓⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
311
|
+
""
|
|
312
|
+
sleep 0.04
|
|
313
|
+
|
|
314
|
+
# F19 REST
|
|
315
|
+
frame \
|
|
316
|
+
"" \
|
|
317
|
+
"" \
|
|
318
|
+
"" \
|
|
319
|
+
"" \
|
|
320
|
+
"" \
|
|
321
|
+
"" \
|
|
322
|
+
"" \
|
|
323
|
+
"[1m⡄[22m" \
|
|
324
|
+
"[1m⠃[22m" \
|
|
325
|
+
"[1m⢀[22m[1m⡠[22m/⢤⡀" \
|
|
326
|
+
"[1m⠋[22m ⠑⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
327
|
+
""
|
|
328
|
+
sleep 0.04
|
|
329
|
+
|
|
330
|
+
# F20 REST — hold
|
|
331
|
+
frame \
|
|
332
|
+
"" \
|
|
333
|
+
"" \
|
|
334
|
+
"" \
|
|
335
|
+
"" \
|
|
336
|
+
"" \
|
|
337
|
+
"" \
|
|
338
|
+
"" \
|
|
339
|
+
"[1m⡄[22m" \
|
|
340
|
+
"[1m⠃[22m" \
|
|
341
|
+
"[1m⢀[22m[1m⡠[22m/⢤⡀" \
|
|
342
|
+
"[1m⠋[22m ⠑⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄" \
|
|
343
|
+
""
|
|
344
|
+
sleep 0.04
|
|
345
|
+
|
package/dist/chunk-22ZGZTGY.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
// src/shared/env.ts
|
|
4
|
-
import { resolve } from "path";
|
|
5
|
-
function augmentedPath() {
|
|
6
|
-
const rawPath = process.env["PATH"];
|
|
7
|
-
const basePath = rawPath !== void 0 && rawPath.length > 0 ? rawPath : "/usr/bin:/bin";
|
|
8
|
-
const home = process.env["HOME"];
|
|
9
|
-
const candidates = [
|
|
10
|
-
...home ? [`${home}/.local/bin`] : [],
|
|
11
|
-
// Claude CLI, pipx, user-local installs
|
|
12
|
-
resolve(process.execPath, ".."),
|
|
13
|
-
// Node.js bin dir (ensures node/npm available)
|
|
14
|
-
"/opt/homebrew/bin",
|
|
15
|
-
// Homebrew (Apple Silicon macOS)
|
|
16
|
-
"/opt/homebrew/sbin",
|
|
17
|
-
// Homebrew sbin
|
|
18
|
-
"/usr/local/bin",
|
|
19
|
-
// Homebrew (Intel macOS), manual installs
|
|
20
|
-
"/usr/local/sbin",
|
|
21
|
-
// Manual installs
|
|
22
|
-
"/opt/local/bin",
|
|
23
|
-
// MacPorts
|
|
24
|
-
"/opt/local/sbin",
|
|
25
|
-
// MacPorts
|
|
26
|
-
"/home/linuxbrew/.linuxbrew/bin"
|
|
27
|
-
// Linuxbrew
|
|
28
|
-
];
|
|
29
|
-
const nixProfile = process.env["NIX_PROFILES"];
|
|
30
|
-
if (nixProfile) {
|
|
31
|
-
for (const p of nixProfile.split(" ").reverse()) {
|
|
32
|
-
candidates.push(`${p}/bin`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const existing = new Set(basePath.split(":"));
|
|
36
|
-
const prepend = candidates.filter((dir) => !existing.has(dir));
|
|
37
|
-
return prepend.length > 0 ? `${prepend.join(":")}:${basePath}` : basePath;
|
|
38
|
-
}
|
|
39
|
-
function execEnv() {
|
|
40
|
-
return {
|
|
41
|
-
...process.env,
|
|
42
|
-
PATH: augmentedPath()
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// src/shared/exec.ts
|
|
47
|
-
import { execSync } from "child_process";
|
|
48
|
-
var EXEC_ENV = execEnv();
|
|
49
|
-
function exec(cmd, cwd, timeoutMs = 3e4) {
|
|
50
|
-
return execSync(cmd, { encoding: "utf-8", env: EXEC_ENV, cwd, timeout: timeoutMs }).trim();
|
|
51
|
-
}
|
|
52
|
-
function execSafe(cmd, cwd) {
|
|
53
|
-
try {
|
|
54
|
-
return execSync(cmd, { encoding: "utf-8", env: EXEC_ENV, cwd, stdio: ["pipe", "pipe", "pipe"] }).trim();
|
|
55
|
-
} catch {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export {
|
|
61
|
-
augmentedPath,
|
|
62
|
-
execEnv,
|
|
63
|
-
EXEC_ENV,
|
|
64
|
-
exec,
|
|
65
|
-
execSafe
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=chunk-22ZGZTGY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/env.ts","../src/shared/exec.ts"],"sourcesContent":["import { resolve } from 'node:path';\n\n/**\n * Build a PATH string that includes common binary directories\n * across package managers and platforms.\n *\n * Prepends known directories that exist on the system to the current PATH.\n * This ensures tmux commands can find binaries installed by Homebrew,\n * MacPorts, nix, and other package managers.\n */\nexport function augmentedPath(): string {\n const rawPath = process.env['PATH'];\n const basePath = rawPath !== undefined && rawPath.length > 0 ? rawPath : '/usr/bin:/bin';\n\n // Common binary directories across platforms/package managers.\n // Only prepend ones that aren't already in PATH.\n const home = process.env['HOME'];\n const candidates = [\n ...(home ? [`${home}/.local/bin`] : []), // Claude CLI, pipx, user-local installs\n resolve(process.execPath, '..'), // Node.js bin dir (ensures node/npm available)\n '/opt/homebrew/bin', // Homebrew (Apple Silicon macOS)\n '/opt/homebrew/sbin', // Homebrew sbin\n '/usr/local/bin', // Homebrew (Intel macOS), manual installs\n '/usr/local/sbin', // Manual installs\n '/opt/local/bin', // MacPorts\n '/opt/local/sbin', // MacPorts\n '/home/linuxbrew/.linuxbrew/bin', // Linuxbrew\n ];\n\n // Check for nix profile paths\n const nixProfile = process.env['NIX_PROFILES'];\n if (nixProfile) {\n for (const p of nixProfile.split(' ').reverse()) {\n candidates.push(`${p}/bin`);\n }\n }\n\n const existing = new Set(basePath.split(':'));\n const prepend = candidates.filter(dir => !existing.has(dir));\n\n return prepend.length > 0 ? `${prepend.join(':')}:${basePath}` : basePath;\n}\n\n/**\n * Environment variables for child processes that need access to\n * user-installed binaries (tmux, git, claude, etc.).\n */\nexport function execEnv(): Record<string, string | undefined> {\n return {\n ...process.env,\n PATH: augmentedPath(),\n };\n}\n","import { execSync } from 'node:child_process';\nimport { execEnv } from './env.js';\n\nexport const EXEC_ENV = execEnv();\n\nexport function exec(cmd: string, cwd?: string, timeoutMs: number = 30_000): string {\n return execSync(cmd, { encoding: 'utf-8', env: EXEC_ENV, cwd, timeout: timeoutMs }).trim();\n}\n\nexport function execSafe(cmd: string, cwd?: string): string | null {\n try {\n return execSync(cmd, { encoding: 'utf-8', env: EXEC_ENV, cwd, stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n } catch { return null; }\n}\n"],"mappings":";;;AAAA,SAAS,eAAe;AAUjB,SAAS,gBAAwB;AACtC,QAAM,UAAU,QAAQ,IAAI,MAAM;AAClC,QAAM,WAAW,YAAY,UAAa,QAAQ,SAAS,IAAI,UAAU;AAIzE,QAAM,OAAO,QAAQ,IAAI,MAAM;AAC/B,QAAM,aAAa;AAAA,IACjB,GAAI,OAAO,CAAC,GAAG,IAAI,aAAa,IAAI,CAAC;AAAA;AAAA,IACrC,QAAQ,QAAQ,UAAU,IAAI;AAAA;AAAA,IAC9B;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,EACF;AAGA,QAAM,aAAa,QAAQ,IAAI,cAAc;AAC7C,MAAI,YAAY;AACd,eAAW,KAAK,WAAW,MAAM,GAAG,EAAE,QAAQ,GAAG;AAC/C,iBAAW,KAAK,GAAG,CAAC,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,QAAM,WAAW,IAAI,IAAI,SAAS,MAAM,GAAG,CAAC;AAC5C,QAAM,UAAU,WAAW,OAAO,SAAO,CAAC,SAAS,IAAI,GAAG,CAAC;AAE3D,SAAO,QAAQ,SAAS,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,IAAI,QAAQ,KAAK;AACnE;AAMO,SAAS,UAA8C;AAC5D,SAAO;AAAA,IACL,GAAG,QAAQ;AAAA,IACX,MAAM,cAAc;AAAA,EACtB;AACF;;;ACpDA,SAAS,gBAAgB;AAGlB,IAAM,WAAW,QAAQ;AAEzB,SAAS,KAAK,KAAa,KAAc,YAAoB,KAAgB;AAClF,SAAO,SAAS,KAAK,EAAE,UAAU,SAAS,KAAK,UAAU,KAAK,SAAS,UAAU,CAAC,EAAE,KAAK;AAC3F;AAEO,SAAS,SAAS,KAAa,KAA6B;AACjE,MAAI;AACF,WAAO,SAAS,KAAK,EAAE,UAAU,SAAS,KAAK,UAAU,KAAK,OAAO,CAAC,QAAQ,QAAQ,MAAM,EAAE,CAAC,EAAE,KAAK;AAAA,EACxG,QAAQ;AAAE,WAAO;AAAA,EAAM;AACzB;","names":[]}
|
package/dist/chunk-6PJVJEYQ.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
loadConfig
|
|
4
|
-
} from "./chunk-V36NXMHP.js";
|
|
5
|
-
|
|
6
|
-
// src/daemon/plugins.ts
|
|
7
|
-
import { readFileSync } from "fs";
|
|
8
|
-
import { homedir } from "os";
|
|
9
|
-
import { join } from "path";
|
|
10
|
-
function installedPluginsPath() {
|
|
11
|
-
return join(homedir(), ".claude", "plugins", "installed_plugins.json");
|
|
12
|
-
}
|
|
13
|
-
function resolveInstalledPlugin(name) {
|
|
14
|
-
let data;
|
|
15
|
-
try {
|
|
16
|
-
data = JSON.parse(readFileSync(installedPluginsPath(), "utf-8"));
|
|
17
|
-
} catch {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
const entries = data.plugins?.[name];
|
|
21
|
-
if (!entries || entries.length === 0) return null;
|
|
22
|
-
const userEntry = entries.find((e) => e.scope === "user");
|
|
23
|
-
return (userEntry ?? entries[0]).installPath;
|
|
24
|
-
}
|
|
25
|
-
function resolveRequiredPluginDirs(cwd) {
|
|
26
|
-
const config = loadConfig(cwd);
|
|
27
|
-
const required = config.requiredPlugins;
|
|
28
|
-
if (!required || required.length === 0) return [];
|
|
29
|
-
const dirs = [];
|
|
30
|
-
for (const plugin of required) {
|
|
31
|
-
const key = `${plugin.name}@${plugin.marketplace}`;
|
|
32
|
-
const path = resolveInstalledPlugin(key);
|
|
33
|
-
if (path) {
|
|
34
|
-
dirs.push(path);
|
|
35
|
-
} else {
|
|
36
|
-
console.log(`[sisyphus] Warning: required plugin ${key} not installed \u2014 skipping`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return dirs;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export {
|
|
43
|
-
resolveInstalledPlugin,
|
|
44
|
-
resolveRequiredPluginDirs
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=chunk-6PJVJEYQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/daemon/plugins.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { loadConfig } from '../shared/config.js';\n\ninterface PluginEntry {\n scope: string;\n installPath: string;\n version: string;\n installedAt: string;\n lastUpdated: string;\n}\n\ninterface InstalledPlugins {\n version: number;\n plugins: Record<string, PluginEntry[]>;\n}\n\nfunction installedPluginsPath(): string {\n return join(homedir(), '.claude', 'plugins', 'installed_plugins.json');\n}\n\nexport function resolveInstalledPlugin(name: string): string | null {\n let data: InstalledPlugins;\n try {\n data = JSON.parse(readFileSync(installedPluginsPath(), 'utf-8'));\n } catch {\n return null;\n }\n\n const entries = data.plugins?.[name];\n if (!entries || entries.length === 0) return null;\n\n // Prefer user-scoped entry\n const userEntry = entries.find(e => e.scope === 'user');\n return (userEntry ?? entries[0])!.installPath;\n}\n\nexport function resolveRequiredPluginDirs(cwd: string): string[] {\n const config = loadConfig(cwd);\n const required = config.requiredPlugins;\n if (!required || required.length === 0) return [];\n\n const dirs: string[] = [];\n for (const plugin of required) {\n const key = `${plugin.name}@${plugin.marketplace}`;\n const path = resolveInstalledPlugin(key);\n if (path) {\n dirs.push(path);\n } else {\n console.log(`[sisyphus] Warning: required plugin ${key} not installed — skipping`);\n }\n }\n return dirs;\n}\n"],"mappings":";;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AACxB,SAAS,YAAY;AAgBrB,SAAS,uBAA+B;AACtC,SAAO,KAAK,QAAQ,GAAG,WAAW,WAAW,wBAAwB;AACvE;AAEO,SAAS,uBAAuB,MAA6B;AAClE,MAAI;AACJ,MAAI;AACF,WAAO,KAAK,MAAM,aAAa,qBAAqB,GAAG,OAAO,CAAC;AAAA,EACjE,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,KAAK,UAAU,IAAI;AACnC,MAAI,CAAC,WAAW,QAAQ,WAAW,EAAG,QAAO;AAG7C,QAAM,YAAY,QAAQ,KAAK,OAAK,EAAE,UAAU,MAAM;AACtD,UAAQ,aAAa,QAAQ,CAAC,GAAI;AACpC;AAEO,SAAS,0BAA0B,KAAuB;AAC/D,QAAM,SAAS,WAAW,GAAG;AAC7B,QAAM,WAAW,OAAO;AACxB,MAAI,CAAC,YAAY,SAAS,WAAW,EAAG,QAAO,CAAC;AAEhD,QAAM,OAAiB,CAAC;AACxB,aAAW,UAAU,UAAU;AAC7B,UAAM,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,WAAW;AAChD,UAAM,OAAO,uBAAuB,GAAG;AACvC,QAAI,MAAM;AACR,WAAK,KAAK,IAAI;AAAA,IAChB,OAAO;AACL,cAAQ,IAAI,uCAAuC,GAAG,gCAA2B;AAAA,IACnF;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|