sisyphi 1.1.24 → 1.1.26
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 +911 -242
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +27 -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 +9 -8
- 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 +11 -10
- 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 +9 -8
- 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 +11 -10
- 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,
|
|
@@ -31,6 +34,7 @@ __export(paths_exports, {
|
|
|
31
34
|
deployCredsPath: () => deployCredsPath,
|
|
32
35
|
deployDir: () => deployDir,
|
|
33
36
|
deployProviderDir: () => deployProviderDir,
|
|
37
|
+
deployRuntimePath: () => deployRuntimePath,
|
|
34
38
|
deployStateBackupPath: () => deployStateBackupPath,
|
|
35
39
|
deployStatePath: () => deployStatePath,
|
|
36
40
|
deployTailscaleEnvPath: () => deployTailscaleEnvPath,
|
|
@@ -219,12 +223,24 @@ function deployStatePath(provider) {
|
|
|
219
223
|
function deployStateBackupPath(provider) {
|
|
220
224
|
return join(deployProviderDir(provider), "terraform.tfstate.bak");
|
|
221
225
|
}
|
|
226
|
+
function deployRuntimePath(provider) {
|
|
227
|
+
return join(deployProviderDir(provider), "runtime.json");
|
|
228
|
+
}
|
|
222
229
|
function deployCredsPath(provider) {
|
|
223
230
|
return join(deployDir(), `${provider}.env`);
|
|
224
231
|
}
|
|
225
232
|
function deployTailscaleEnvPath() {
|
|
226
233
|
return join(deployDir(), "tailscale.env");
|
|
227
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
|
+
}
|
|
228
244
|
function isSisyphusSession(name) {
|
|
229
245
|
return name.startsWith("ssyph_");
|
|
230
246
|
}
|
|
@@ -2240,7 +2256,7 @@ async function resolveOrchestratorOrphanAsks(cwd, sessionId, selectedOptionId) {
|
|
|
2240
2256
|
writeOutput(cwd, sessionId, askId, [{
|
|
2241
2257
|
id: "orphan",
|
|
2242
2258
|
selectedOptionId,
|
|
2243
|
-
freetext: `auto-resolved by ${selectedOptionId === "resume" ? "
|
|
2259
|
+
freetext: `auto-resolved by ${selectedOptionId === "resume" ? "sis session resume" : "system"}`
|
|
2244
2260
|
}], completedAt);
|
|
2245
2261
|
await updateMeta(cwd, sessionId, askId, { status: "answered", completedAt });
|
|
2246
2262
|
} catch (err) {
|
|
@@ -2557,12 +2573,12 @@ async function spawnAgent(opts) {
|
|
|
2557
2573
|
try {
|
|
2558
2574
|
execSync4(`which ${fallbackCli}`, { stdio: "pipe", env: execEnv() });
|
|
2559
2575
|
} catch {
|
|
2560
|
-
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.`);
|
|
2561
2577
|
}
|
|
2562
2578
|
if (agentConfig) agentConfig.frontmatter.model = fallback;
|
|
2563
2579
|
provider = fallbackProvider;
|
|
2564
2580
|
} else {
|
|
2565
|
-
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.`);
|
|
2566
2582
|
}
|
|
2567
2583
|
}
|
|
2568
2584
|
const repo = opts.repo !== void 0 ? opts.repo : ".";
|
|
@@ -6078,7 +6094,7 @@ ${agentLines}
|
|
|
6078
6094
|
}
|
|
6079
6095
|
}
|
|
6080
6096
|
if (repos.length > 1) {
|
|
6081
|
-
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';
|
|
6082
6098
|
}
|
|
6083
6099
|
}
|
|
6084
6100
|
const goalFile = goalPath(session.cwd, session.id);
|
|
@@ -6109,7 +6125,7 @@ async function spawnOrchestrator(sessionId, cwd, windowId, message, forceMode) {
|
|
|
6109
6125
|
try {
|
|
6110
6126
|
execSync5("which claude", { stdio: "pipe", env: EXEC_ENV });
|
|
6111
6127
|
} catch {
|
|
6112
|
-
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.");
|
|
6113
6129
|
}
|
|
6114
6130
|
const session = getSession(cwd, sessionId);
|
|
6115
6131
|
const lastCycle = [...session.orchestratorCycles].reverse().find((c) => c.completedAt);
|
|
@@ -6171,7 +6187,7 @@ ${continuationText}`;
|
|
|
6171
6187
|
|
|
6172
6188
|
## Note: Prior Cycle Included a Long Pause
|
|
6173
6189
|
|
|
6174
|
-
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.`;
|
|
6175
6191
|
}
|
|
6176
6192
|
const userPromptFilePath = `${promptsDir(cwd, sessionId)}/orchestrator-user-${cycleNum}.md`;
|
|
6177
6193
|
writeFileSync12(userPromptFilePath, substituteEnvVars(userPrompt), "utf-8");
|
|
@@ -6874,7 +6890,7 @@ async function startSession(task, cwd, context, name, effort) {
|
|
|
6874
6890
|
async function cloneSession(sourceId, cwd, goal, context, name, strategy) {
|
|
6875
6891
|
const sourceSession = getSession(cwd, sourceId);
|
|
6876
6892
|
if (sourceSession.status === "completed") {
|
|
6877
|
-
throw new Error("Cannot clone completed session. Use `
|
|
6893
|
+
throw new Error("Cannot clone completed session. Use `sis session continue` to resume it first.");
|
|
6878
6894
|
}
|
|
6879
6895
|
const cloneId = uuidv4();
|
|
6880
6896
|
if (name && !NAME_PATTERN.test(name)) {
|
|
@@ -6991,7 +7007,7 @@ async function reconnectSession(sessionId, cwd) {
|
|
|
6991
7007
|
const session = getSession(cwd, sessionId);
|
|
6992
7008
|
const tmuxName = session.tmuxSessionName ?? tmuxSessionName(cwd, session.name ?? sessionId.slice(0, 8));
|
|
6993
7009
|
if (!sessionNameTaken(tmuxName)) {
|
|
6994
|
-
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.`);
|
|
6995
7011
|
}
|
|
6996
7012
|
const tmuxSessId = resolveSessionId(tmuxName);
|
|
6997
7013
|
if (!tmuxSessId) {
|
|
@@ -7293,7 +7309,7 @@ async function handleSubmit(cwd, sessionId, agentId, report, windowId) {
|
|
|
7293
7309
|
function formatPendingAskError(verb, askedBy, open) {
|
|
7294
7310
|
const lines = open.map((a) => ` - ${a.askId} (${a.status})${a.title ? ": " + a.title : ""}`);
|
|
7295
7311
|
const who = askedBy === ORCHESTRATOR_ASKED_BY ? "orchestrator" : `agent ${askedBy}`;
|
|
7296
|
-
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.`;
|
|
7297
7313
|
return `Cannot ${verb}: ${who} owns ${open.length} open deck${open.length === 1 ? "" : "s"}:
|
|
7298
7314
|
${lines.join("\n")}
|
|
7299
7315
|
|
|
@@ -8030,7 +8046,7 @@ function registerSessionTmux(sessionId, tmuxSession, windowId, tmuxSessionId) {
|
|
|
8030
8046
|
}
|
|
8031
8047
|
}
|
|
8032
8048
|
function unknownSessionError(sessionId) {
|
|
8033
|
-
return { ok: false, error: `Unknown session: ${sessionId}. Run \`
|
|
8049
|
+
return { ok: false, error: `Unknown session: ${sessionId}. Run \`sis list --all\` to see available sessions.` };
|
|
8034
8050
|
}
|
|
8035
8051
|
function collectAllSessionIds() {
|
|
8036
8052
|
const idToCwd = /* @__PURE__ */ new Map();
|
|
@@ -8253,7 +8269,7 @@ async function handleRequest(req) {
|
|
|
8253
8269
|
sessionTrackingMap.set(req.sessionId, tracking);
|
|
8254
8270
|
persistSessionRegistry();
|
|
8255
8271
|
} else {
|
|
8256
|
-
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.` };
|
|
8257
8273
|
}
|
|
8258
8274
|
}
|
|
8259
8275
|
const session = await resumeSession(req.sessionId, tracking.cwd, req.message);
|