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.
Files changed (76) hide show
  1. package/README.md +35 -35
  2. package/deploy/aws/main.tf +1 -1
  3. package/deploy/aws/variables.tf +1 -1
  4. package/deploy/aws/versions.tf +1 -1
  5. package/deploy/hetzner/variables.tf +1 -1
  6. package/deploy/hetzner/versions.tf +1 -1
  7. package/deploy/shared/cloud-init.yaml.tpl +1 -1
  8. package/dist/cli.js +911 -242
  9. package/dist/cli.js.map +1 -1
  10. package/dist/daemon.js +27 -11
  11. package/dist/daemon.js.map +1 -1
  12. package/dist/deploy/aws/main.tf +1 -1
  13. package/dist/deploy/aws/variables.tf +1 -1
  14. package/dist/deploy/aws/versions.tf +1 -1
  15. package/dist/deploy/hetzner/variables.tf +1 -1
  16. package/dist/deploy/hetzner/versions.tf +1 -1
  17. package/dist/deploy/shared/cloud-init.yaml.tpl +1 -1
  18. package/dist/templates/agent-plugin/agents/explore.md +2 -2
  19. package/dist/templates/agent-plugin/agents/implementor.md +2 -2
  20. package/dist/templates/agent-plugin/agents/operator.md +3 -3
  21. package/dist/templates/agent-plugin/agents/plan.md +2 -2
  22. package/dist/templates/agent-plugin/agents/problem.md +8 -8
  23. package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +1 -1
  24. package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +1 -1
  25. package/dist/templates/agent-plugin/agents/spec.md +19 -19
  26. package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +9 -8
  27. package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +2 -2
  28. package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +2 -2
  29. package/dist/templates/agent-suffix.md +3 -3
  30. package/dist/templates/dashboard-claude.md +13 -13
  31. package/dist/templates/orchestrator-base.md +13 -13
  32. package/dist/templates/orchestrator-completion.md +11 -11
  33. package/dist/templates/orchestrator-discovery.md +5 -5
  34. package/dist/templates/orchestrator-impl.md +8 -8
  35. package/dist/templates/orchestrator-planning.md +6 -6
  36. package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +1 -1
  37. package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +2 -2
  38. package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +11 -10
  39. package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -1
  40. package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +1 -1
  41. package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +4 -4
  42. package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +2 -2
  43. package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +1 -1
  44. package/dist/templates/orchestrator-validation.md +5 -5
  45. package/dist/templates/termrender-haiku-system.md +1 -1
  46. package/dist/tui.js +8 -8
  47. package/dist/tui.js.map +1 -1
  48. package/package.json +2 -1
  49. package/templates/agent-plugin/agents/explore.md +2 -2
  50. package/templates/agent-plugin/agents/implementor.md +2 -2
  51. package/templates/agent-plugin/agents/operator.md +3 -3
  52. package/templates/agent-plugin/agents/plan.md +2 -2
  53. package/templates/agent-plugin/agents/problem.md +8 -8
  54. package/templates/agent-plugin/agents/review-plan/CLAUDE.md +1 -1
  55. package/templates/agent-plugin/agents/spec/requirements-writer.md +1 -1
  56. package/templates/agent-plugin/agents/spec.md +19 -19
  57. package/templates/agent-plugin/skills/humanloop/SKILL.md +9 -8
  58. package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +2 -2
  59. package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +2 -2
  60. package/templates/agent-suffix.md +3 -3
  61. package/templates/dashboard-claude.md +13 -13
  62. package/templates/orchestrator-base.md +13 -13
  63. package/templates/orchestrator-completion.md +11 -11
  64. package/templates/orchestrator-discovery.md +5 -5
  65. package/templates/orchestrator-impl.md +8 -8
  66. package/templates/orchestrator-planning.md +6 -6
  67. package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +1 -1
  68. package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +2 -2
  69. package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +11 -10
  70. package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -1
  71. package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +1 -1
  72. package/templates/orchestrator-plugin/skills/orchestration/strategy.md +4 -4
  73. package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +2 -2
  74. package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +1 -1
  75. package/templates/orchestrator-validation.md +5 -5
  76. 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" ? "sisyphus session resume" : "system"}`
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 \`sisyphus admin doctor\` to diagnose.`);
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 \`sisyphus admin doctor\` to diagnose.`);
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\nsisyphus agent spawn --name "impl" --repo <repo-name> "task"\n```\n';
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 `sisyphus admin doctor` to diagnose.");
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 \`sisyphus ask\` answer. Repository state and any in-flight context may have drifted during that window. Briefly verify before acting on the answer.`;
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 `sisyphus session continue` to resume it first.");
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 \`sisyphus session resume\` to create a new one.`);
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: \`sisyphus 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: \`sisyphus ask poll <askId>\` blocks until the user answers, parse the response, then call \`sisyphus agent submit\` with your final report.`;
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 \`sisyphus list --all\` to see available sessions.` };
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 \`sisyphus list --all\` to see available sessions.` };
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);