sisyphi 1.1.25 → 1.1.27
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 +35 -35
- package/deploy/aws/main.tf +1 -1
- package/deploy/aws/variables.tf +1 -1
- package/deploy/aws/versions.tf +1 -1
- package/deploy/hetzner/variables.tf +1 -1
- package/deploy/hetzner/versions.tf +1 -1
- package/deploy/shared/cloud-init.yaml.tpl +1 -1
- package/dist/cli.js +619 -200
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +23 -11
- package/dist/daemon.js.map +1 -1
- package/dist/deploy/aws/main.tf +1 -1
- package/dist/deploy/aws/variables.tf +1 -1
- package/dist/deploy/aws/versions.tf +1 -1
- package/dist/deploy/hetzner/variables.tf +1 -1
- package/dist/deploy/hetzner/versions.tf +1 -1
- package/dist/deploy/shared/cloud-init.yaml.tpl +1 -1
- package/dist/templates/agent-plugin/agents/explore.md +2 -2
- package/dist/templates/agent-plugin/agents/implementor.md +2 -2
- package/dist/templates/agent-plugin/agents/operator.md +3 -3
- package/dist/templates/agent-plugin/agents/plan.md +2 -2
- package/dist/templates/agent-plugin/agents/problem.md +8 -8
- package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +1 -1
- package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +1 -1
- package/dist/templates/agent-plugin/agents/spec.md +19 -19
- package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +7 -7
- package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +2 -2
- package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +2 -2
- package/dist/templates/agent-suffix.md +3 -3
- package/dist/templates/dashboard-claude.md +13 -13
- package/dist/templates/orchestrator-base.md +13 -13
- package/dist/templates/orchestrator-completion.md +11 -11
- package/dist/templates/orchestrator-discovery.md +5 -5
- package/dist/templates/orchestrator-impl.md +8 -8
- package/dist/templates/orchestrator-planning.md +6 -6
- package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +1 -1
- package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +2 -2
- package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +9 -9
- package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -1
- package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +1 -1
- package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +4 -4
- package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +2 -2
- package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +1 -1
- package/dist/templates/orchestrator-validation.md +5 -5
- package/dist/templates/termrender-haiku-system.md +1 -1
- package/dist/tui.js +8 -8
- package/dist/tui.js.map +1 -1
- package/package.json +2 -1
- package/templates/agent-plugin/agents/explore.md +2 -2
- package/templates/agent-plugin/agents/implementor.md +2 -2
- package/templates/agent-plugin/agents/operator.md +3 -3
- package/templates/agent-plugin/agents/plan.md +2 -2
- package/templates/agent-plugin/agents/problem.md +8 -8
- package/templates/agent-plugin/agents/review-plan/CLAUDE.md +1 -1
- package/templates/agent-plugin/agents/spec/requirements-writer.md +1 -1
- package/templates/agent-plugin/agents/spec.md +19 -19
- package/templates/agent-plugin/skills/humanloop/SKILL.md +7 -7
- package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +2 -2
- package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +2 -2
- package/templates/agent-suffix.md +3 -3
- package/templates/dashboard-claude.md +13 -13
- package/templates/orchestrator-base.md +13 -13
- package/templates/orchestrator-completion.md +11 -11
- package/templates/orchestrator-discovery.md +5 -5
- package/templates/orchestrator-impl.md +8 -8
- package/templates/orchestrator-planning.md +6 -6
- package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +1 -1
- package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +2 -2
- package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +9 -9
- package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -1
- package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +1 -1
- package/templates/orchestrator-plugin/skills/orchestration/strategy.md +4 -4
- package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +2 -2
- package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +1 -1
- package/templates/orchestrator-validation.md +5 -5
- package/templates/termrender-haiku-system.md +1 -1
package/dist/daemon.js
CHANGED
|
@@ -21,6 +21,9 @@ __export(paths_exports, {
|
|
|
21
21
|
askVisualAnsiPath: () => askVisualAnsiPath,
|
|
22
22
|
askVisualMarkdownPath: () => askVisualMarkdownPath,
|
|
23
23
|
askVisualsDir: () => askVisualsDir,
|
|
24
|
+
boxCloudSidecarDir: () => boxCloudSidecarDir,
|
|
25
|
+
boxCloudSidecarPath: () => boxCloudSidecarPath,
|
|
26
|
+
boxRepoPath: () => boxRepoPath,
|
|
24
27
|
companionMemoryPath: () => companionMemoryPath,
|
|
25
28
|
companionPath: () => companionPath,
|
|
26
29
|
contextDir: () => contextDir,
|
|
@@ -229,6 +232,15 @@ function deployCredsPath(provider) {
|
|
|
229
232
|
function deployTailscaleEnvPath() {
|
|
230
233
|
return join(deployDir(), "tailscale.env");
|
|
231
234
|
}
|
|
235
|
+
function boxRepoPath(repo) {
|
|
236
|
+
return `~/projects/${repo}`;
|
|
237
|
+
}
|
|
238
|
+
function boxCloudSidecarPath(repo) {
|
|
239
|
+
return `~/.sisyphus/cloud/${repo}.json`;
|
|
240
|
+
}
|
|
241
|
+
function boxCloudSidecarDir() {
|
|
242
|
+
return `~/.sisyphus/cloud`;
|
|
243
|
+
}
|
|
232
244
|
function isSisyphusSession(name) {
|
|
233
245
|
return name.startsWith("ssyph_");
|
|
234
246
|
}
|
|
@@ -2244,7 +2256,7 @@ async function resolveOrchestratorOrphanAsks(cwd, sessionId, selectedOptionId) {
|
|
|
2244
2256
|
writeOutput(cwd, sessionId, askId, [{
|
|
2245
2257
|
id: "orphan",
|
|
2246
2258
|
selectedOptionId,
|
|
2247
|
-
freetext: `auto-resolved by ${selectedOptionId === "resume" ? "
|
|
2259
|
+
freetext: `auto-resolved by ${selectedOptionId === "resume" ? "sis session resume" : "system"}`
|
|
2248
2260
|
}], completedAt);
|
|
2249
2261
|
await updateMeta(cwd, sessionId, askId, { status: "answered", completedAt });
|
|
2250
2262
|
} catch (err) {
|
|
@@ -2561,12 +2573,12 @@ async function spawnAgent(opts) {
|
|
|
2561
2573
|
try {
|
|
2562
2574
|
execSync4(`which ${fallbackCli}`, { stdio: "pipe", env: execEnv() });
|
|
2563
2575
|
} catch {
|
|
2564
|
-
throw new Error(`Neither ${cliToCheck} (model: ${agentConfig?.frontmatter.model}) nor ${fallbackCli} (fallback: ${fallback}) CLI found on PATH. Run \`
|
|
2576
|
+
throw new Error(`Neither ${cliToCheck} (model: ${agentConfig?.frontmatter.model}) nor ${fallbackCli} (fallback: ${fallback}) CLI found on PATH. Run \`sis admin doctor\` to diagnose.`);
|
|
2565
2577
|
}
|
|
2566
2578
|
if (agentConfig) agentConfig.frontmatter.model = fallback;
|
|
2567
2579
|
provider = fallbackProvider;
|
|
2568
2580
|
} else {
|
|
2569
|
-
throw new Error(`${cliToCheck} CLI not found on PATH. Run \`
|
|
2581
|
+
throw new Error(`${cliToCheck} CLI not found on PATH. Run \`sis admin doctor\` to diagnose.`);
|
|
2570
2582
|
}
|
|
2571
2583
|
}
|
|
2572
2584
|
const repo = opts.repo !== void 0 ? opts.repo : ".";
|
|
@@ -6082,7 +6094,7 @@ ${agentLines}
|
|
|
6082
6094
|
}
|
|
6083
6095
|
}
|
|
6084
6096
|
if (repos.length > 1) {
|
|
6085
|
-
repositoriesSection += '\nTarget agents at specific repos:\n```bash\
|
|
6097
|
+
repositoriesSection += '\nTarget agents at specific repos:\n```bash\nsis agent spawn --name "impl" --repo <repo-name> "task"\n```\n';
|
|
6086
6098
|
}
|
|
6087
6099
|
}
|
|
6088
6100
|
const goalFile = goalPath(session.cwd, session.id);
|
|
@@ -6113,7 +6125,7 @@ async function spawnOrchestrator(sessionId, cwd, windowId, message, forceMode) {
|
|
|
6113
6125
|
try {
|
|
6114
6126
|
execSync5("which claude", { stdio: "pipe", env: EXEC_ENV });
|
|
6115
6127
|
} catch {
|
|
6116
|
-
throw new Error("Claude CLI not found on PATH. Run `
|
|
6128
|
+
throw new Error("Claude CLI not found on PATH. Run `sis admin doctor` to diagnose.");
|
|
6117
6129
|
}
|
|
6118
6130
|
const session = getSession(cwd, sessionId);
|
|
6119
6131
|
const lastCycle = [...session.orchestratorCycles].reverse().find((c) => c.completedAt);
|
|
@@ -6175,7 +6187,7 @@ ${continuationText}`;
|
|
|
6175
6187
|
|
|
6176
6188
|
## Note: Prior Cycle Included a Long Pause
|
|
6177
6189
|
|
|
6178
|
-
The previous cycle waited ~${hours}h for a \`
|
|
6190
|
+
The previous cycle waited ~${hours}h for a \`sis ask\` answer. Repository state and any in-flight context may have drifted during that window. Briefly verify before acting on the answer.`;
|
|
6179
6191
|
}
|
|
6180
6192
|
const userPromptFilePath = `${promptsDir(cwd, sessionId)}/orchestrator-user-${cycleNum}.md`;
|
|
6181
6193
|
writeFileSync12(userPromptFilePath, substituteEnvVars(userPrompt), "utf-8");
|
|
@@ -6878,7 +6890,7 @@ async function startSession(task, cwd, context, name, effort) {
|
|
|
6878
6890
|
async function cloneSession(sourceId, cwd, goal, context, name, strategy) {
|
|
6879
6891
|
const sourceSession = getSession(cwd, sourceId);
|
|
6880
6892
|
if (sourceSession.status === "completed") {
|
|
6881
|
-
throw new Error("Cannot clone completed session. Use `
|
|
6893
|
+
throw new Error("Cannot clone completed session. Use `sis session continue` to resume it first.");
|
|
6882
6894
|
}
|
|
6883
6895
|
const cloneId = uuidv4();
|
|
6884
6896
|
if (name && !NAME_PATTERN.test(name)) {
|
|
@@ -6995,7 +7007,7 @@ async function reconnectSession(sessionId, cwd) {
|
|
|
6995
7007
|
const session = getSession(cwd, sessionId);
|
|
6996
7008
|
const tmuxName = session.tmuxSessionName ?? tmuxSessionName(cwd, session.name ?? sessionId.slice(0, 8));
|
|
6997
7009
|
if (!sessionNameTaken(tmuxName)) {
|
|
6998
|
-
throw new Error(`No tmux session named "${tmuxName}" exists. Use \`
|
|
7010
|
+
throw new Error(`No tmux session named "${tmuxName}" exists. Use \`sis session resume\` to create a new one.`);
|
|
6999
7011
|
}
|
|
7000
7012
|
const tmuxSessId = resolveSessionId(tmuxName);
|
|
7001
7013
|
if (!tmuxSessId) {
|
|
@@ -7297,7 +7309,7 @@ async function handleSubmit(cwd, sessionId, agentId, report, windowId) {
|
|
|
7297
7309
|
function formatPendingAskError(verb, askedBy, open) {
|
|
7298
7310
|
const lines = open.map((a) => ` - ${a.askId} (${a.status})${a.title ? ": " + a.title : ""}`);
|
|
7299
7311
|
const who = askedBy === ORCHESTRATOR_ASKED_BY ? "orchestrator" : `agent ${askedBy}`;
|
|
7300
|
-
const recovery = verb === "yield" ? `Resolve before yielding: \`
|
|
7312
|
+
const recovery = verb === "yield" ? `Resolve before yielding: \`sis ask poll <askId>\` blocks until the user answers, then process the response and yield with a continuation prompt that names the answered branch.` : `Resolve before submitting: \`sis ask poll <askId>\` blocks until the user answers, parse the response, then call \`sis agent submit\` with your final report.`;
|
|
7301
7313
|
return `Cannot ${verb}: ${who} owns ${open.length} open deck${open.length === 1 ? "" : "s"}:
|
|
7302
7314
|
${lines.join("\n")}
|
|
7303
7315
|
|
|
@@ -8034,7 +8046,7 @@ function registerSessionTmux(sessionId, tmuxSession, windowId, tmuxSessionId) {
|
|
|
8034
8046
|
}
|
|
8035
8047
|
}
|
|
8036
8048
|
function unknownSessionError(sessionId) {
|
|
8037
|
-
return { ok: false, error: `Unknown session: ${sessionId}. Run \`
|
|
8049
|
+
return { ok: false, error: `Unknown session: ${sessionId}. Run \`sis list --all\` to see available sessions.` };
|
|
8038
8050
|
}
|
|
8039
8051
|
function collectAllSessionIds() {
|
|
8040
8052
|
const idToCwd = /* @__PURE__ */ new Map();
|
|
@@ -8257,7 +8269,7 @@ async function handleRequest(req) {
|
|
|
8257
8269
|
sessionTrackingMap.set(req.sessionId, tracking);
|
|
8258
8270
|
persistSessionRegistry();
|
|
8259
8271
|
} else {
|
|
8260
|
-
return { ok: false, error: `Unknown session: ${req.sessionId}. No state.json found at ${stateFile}. Run \`
|
|
8272
|
+
return { ok: false, error: `Unknown session: ${req.sessionId}. No state.json found at ${stateFile}. Run \`sis list --all\` to see available sessions.` };
|
|
8261
8273
|
}
|
|
8262
8274
|
}
|
|
8263
8275
|
const session = await resumeSession(req.sessionId, tracking.cwd, req.message);
|