svamp-cli 0.2.332 → 0.2.334
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/dist/{adminCommands-BNGSC5oD.mjs → adminCommands-CBuNOXdO.mjs} +1 -1
- package/dist/{agentCommands-DD47Krr1.mjs → agentCommands-D26EUFSD.mjs} +35 -6
- package/dist/{auth-CE3Cnkn6.mjs → auth-g7KNy7sB.mjs} +1 -1
- package/dist/{cli-CdYVO7ce.mjs → cli-CqGlhaWz.mjs} +77 -77
- package/dist/cli.mjs +2 -2
- package/dist/{commands-C2X-uElg.mjs → commands-6lx2QJEs.mjs} +1 -1
- package/dist/{commands-09sPSIH-.mjs → commands-BiA2_M_9.mjs} +3 -3
- package/dist/{commands-CHKSUX7x.mjs → commands-C2clJWyQ.mjs} +3 -3
- package/dist/{commands-14Tf0D6G.mjs → commands-Cj8WbqGh.mjs} +3 -3
- package/dist/{commands-BIKekqQG.mjs → commands-Ct2EXO44.mjs} +1 -1
- package/dist/{commands-DXJlhBPk.mjs → commands-DLHf6gma.mjs} +7 -9
- package/dist/{commands-BIx8s0JL.mjs → commands-VLcMD_8H.mjs} +11 -11
- package/dist/{commands-D7wwybeC.mjs → commands-cYTe9lAc.mjs} +8 -3
- package/dist/{fleet-bAe_gJfS.mjs → fleet-CXVxTQTU.mjs} +3 -3
- package/dist/{headlessCli-Bwg5pf3s.mjs → headlessCli-BYJunlMc.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{notifyCommands-Cc3wLAWW.mjs → notifyCommands-CfKQtXDj.mjs} +1 -1
- package/dist/package-CF7vQ3Fz.mjs +64 -0
- package/dist/{pinnedClaudeCode-BO0Qs_kE.mjs → pinnedClaudeCode-C43KnZ-Q.mjs} +27 -6
- package/dist/{rpc-DObWvEis.mjs → rpc-BsgXlOhI.mjs} +13 -1
- package/dist/{rpc-Bv6_c-xW.mjs → rpc-C6zBQ0L5.mjs} +2 -1
- package/dist/{run-CyyWhgFI.mjs → run-D4TWydj5.mjs} +1 -1
- package/dist/{run-DGhVoN3s.mjs → run-DEn3zLAt.mjs} +434 -101
- package/dist/{scheduler-BvtNZ0pl.mjs → scheduler-Ciu9Qfsi.mjs} +1 -1
- package/dist/{serveCommands-CEM708Ls.mjs → serveCommands-BTl4Fcku.mjs} +10 -10
- package/dist/{sideband--9vWYqKA.mjs → sideband-BMzd_SoN.mjs} +1 -1
- package/package.json +4 -4
- package/dist/package-CPQqs8ty.mjs +0 -64
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
2
|
import { join } from 'node:path';
|
|
4
|
-
import { f as flushAndExit } from './cli-
|
|
5
|
-
import { f as resolveProjectRoot,
|
|
3
|
+
import { f as flushAndExit } from './cli-CqGlhaWz.mjs';
|
|
4
|
+
import { f as resolveProjectRoot, o as searchIssues, m as listIssues, n as isPendingIssue, j as resumeIssue, p as pauseIssue, k as addComment, u as updateIssue, h as getIssue, i as checkVerifyCommand, q as isVisibleTo, J as summarize, l as addIssue } from './run-DEn3zLAt.mjs';
|
|
6
5
|
import './serviceManager-hlOVxkhW.mjs';
|
|
7
6
|
import 'os';
|
|
8
7
|
import 'fs/promises';
|
|
@@ -12,6 +11,7 @@ import 'url';
|
|
|
12
11
|
import 'child_process';
|
|
13
12
|
import 'crypto';
|
|
14
13
|
import 'node:crypto';
|
|
14
|
+
import 'node:child_process';
|
|
15
15
|
import 'util';
|
|
16
16
|
import 'http';
|
|
17
17
|
import 'net';
|
|
@@ -241,13 +241,11 @@ ${issue.body}`);
|
|
|
241
241
|
if (has(rest, "--force")) {
|
|
242
242
|
console.error(`\u26A0 #${id}: closing WITHOUT running verify-cmd (--force): \`${vc}\``);
|
|
243
243
|
} else {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
} catch (e) {
|
|
247
|
-
const tail = (String(e?.stdout || "") + String(e?.stderr || "")).split("\n").slice(-15).join("\n").trim();
|
|
244
|
+
const res = checkVerifyCommand(root, current);
|
|
245
|
+
if (!res.ok) {
|
|
248
246
|
console.error(`Refusing to close #${id}: its verify-cmd failed \u2014 the fix is not verified.
|
|
249
|
-
$ ${
|
|
250
|
-
${
|
|
247
|
+
$ ${res.cmd}
|
|
248
|
+
${res.output || ""}
|
|
251
249
|
(Fix the issue, or pass --force to override.)`);
|
|
252
250
|
process.exit(1);
|
|
253
251
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
-
import { w as wantsHelp } from './cli-
|
|
3
|
-
import './run-
|
|
2
|
+
import { w as wantsHelp } from './cli-CqGlhaWz.mjs';
|
|
3
|
+
import './run-DEn3zLAt.mjs';
|
|
4
4
|
import 'os';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'fs';
|
|
@@ -83,7 +83,7 @@ async function serviceExpose(args) {
|
|
|
83
83
|
process.exit(1);
|
|
84
84
|
}
|
|
85
85
|
if (foreground) {
|
|
86
|
-
const { runFrpcTunnel } = await import('./run-
|
|
86
|
+
const { runFrpcTunnel } = await import('./run-DEn3zLAt.mjs').then(function (n) { return n.ar; });
|
|
87
87
|
await runFrpcTunnel(name, ports, void 0, {
|
|
88
88
|
group,
|
|
89
89
|
groupKey,
|
|
@@ -93,7 +93,7 @@ async function serviceExpose(args) {
|
|
|
93
93
|
});
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
96
|
+
const { connectAndGetMachine } = await import('./commands-6lx2QJEs.mjs');
|
|
97
97
|
const { server, machine } = await connectAndGetMachine();
|
|
98
98
|
try {
|
|
99
99
|
const status = await machine.tunnelStart({
|
|
@@ -115,7 +115,7 @@ async function serviceExpose(args) {
|
|
|
115
115
|
console.log(` port ${port}: ${url}`);
|
|
116
116
|
}
|
|
117
117
|
if (process.env.SVAMP_SESSION_ID) {
|
|
118
|
-
const { autoAddSessionLink } = await import('./agentCommands-
|
|
118
|
+
const { autoAddSessionLink } = await import('./agentCommands-D26EUFSD.mjs');
|
|
119
119
|
let added = 0;
|
|
120
120
|
for (const [port, url] of urlEntries) {
|
|
121
121
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -151,8 +151,8 @@ async function serviceServe(args) {
|
|
|
151
151
|
const resolvedDir = path.resolve(directory);
|
|
152
152
|
console.log(`Serving ${resolvedDir}`);
|
|
153
153
|
const http = await import('http');
|
|
154
|
-
const { serveStaticMount } = await import('./run-
|
|
155
|
-
const { getFreePort } = await import('./run-
|
|
154
|
+
const { serveStaticMount } = await import('./run-DEn3zLAt.mjs').then(function (n) { return n.as; });
|
|
155
|
+
const { getFreePort } = await import('./run-DEn3zLAt.mjs').then(function (n) { return n.ar; });
|
|
156
156
|
const server = http.createServer((req, res) => {
|
|
157
157
|
const u = new URL(req.url || "/", "http://127.0.0.1");
|
|
158
158
|
let rel = u.pathname;
|
|
@@ -175,7 +175,7 @@ async function serviceServe(args) {
|
|
|
175
175
|
resolve(18080);
|
|
176
176
|
});
|
|
177
177
|
});
|
|
178
|
-
const { runFrpcTunnel } = await import('./run-
|
|
178
|
+
const { runFrpcTunnel } = await import('./run-DEn3zLAt.mjs').then(function (n) { return n.ar; });
|
|
179
179
|
void server;
|
|
180
180
|
await runFrpcTunnel(name, [servePort]);
|
|
181
181
|
} catch (err) {
|
|
@@ -185,7 +185,7 @@ async function serviceServe(args) {
|
|
|
185
185
|
}
|
|
186
186
|
async function serviceList(_args) {
|
|
187
187
|
try {
|
|
188
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
188
|
+
const { connectAndGetMachine } = await import('./commands-6lx2QJEs.mjs');
|
|
189
189
|
const { server, machine } = await connectAndGetMachine();
|
|
190
190
|
try {
|
|
191
191
|
const tunnels = await machine.tunnelList({});
|
|
@@ -225,11 +225,11 @@ async function serviceDelete(args) {
|
|
|
225
225
|
process.exit(1);
|
|
226
226
|
}
|
|
227
227
|
try {
|
|
228
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
228
|
+
const { connectAndGetMachine } = await import('./commands-6lx2QJEs.mjs');
|
|
229
229
|
const { server, machine } = await connectAndGetMachine();
|
|
230
230
|
try {
|
|
231
231
|
await machine.tunnelStop({ name });
|
|
232
|
-
const { removeSessionLinkByService } = await import('./agentCommands-
|
|
232
|
+
const { removeSessionLinkByService } = await import('./agentCommands-D26EUFSD.mjs');
|
|
233
233
|
removeSessionLinkByService("tunnel", name);
|
|
234
234
|
console.log(`Stopped tunnel '${name}'.`);
|
|
235
235
|
} catch (err) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { f as resolveProjectRoot,
|
|
3
|
-
import { w as wantsHelp } from './cli-
|
|
2
|
+
import { f as resolveProjectRoot, K as workflowSteps, y as setWorkflowEnabled, F as isWorkflowEnabled, z as removeWorkflow, w as getWorkflow, E as listWorkflows, A as validateCronExpr, C as saveWorkflow, D as rawWorkflow, L as describeNextFire } from './run-DEn3zLAt.mjs';
|
|
3
|
+
import { w as wantsHelp } from './cli-CqGlhaWz.mjs';
|
|
4
4
|
import 'os';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'fs';
|
|
@@ -45,7 +45,12 @@ function positional(args) {
|
|
|
45
45
|
function describeOn(on) {
|
|
46
46
|
if (!on) return "manual";
|
|
47
47
|
const parts = [];
|
|
48
|
-
if (on.schedule?.length)
|
|
48
|
+
if (on.schedule?.length) {
|
|
49
|
+
parts.push(`schedule(${on.schedule.map((s) => {
|
|
50
|
+
const next = describeNextFire(s.cron, s.tz);
|
|
51
|
+
return next ? `${s.cron} \u2192 ${next}` : s.cron;
|
|
52
|
+
}).join(", ")})`);
|
|
53
|
+
}
|
|
49
54
|
if (on.workflow_dispatch) parts.push("workflow_dispatch");
|
|
50
55
|
if (on.channel) parts.push(`channel(${on.channel})`);
|
|
51
56
|
if (on.issue?.length) parts.push(`issue(${on.issue.join("/")})`);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
|
-
import {
|
|
5
|
-
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-
|
|
4
|
+
import { ag as PINNED_CODEX_VERSION, c as connectToHypha } from './run-DEn3zLAt.mjs';
|
|
5
|
+
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-C43KnZ-Q.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -23,7 +23,7 @@ import 'node:fs/promises';
|
|
|
23
23
|
import 'yaml';
|
|
24
24
|
|
|
25
25
|
const KIMI_NPM_PACKAGE = "@moonshot-ai/kimi-code";
|
|
26
|
-
const PINNED_KIMI_VERSION = "0.
|
|
26
|
+
const PINNED_KIMI_VERSION = "0.38.0";
|
|
27
27
|
|
|
28
28
|
const SVAMP_HOME = process.env.SVAMP_HOME || join(os.homedir(), ".svamp");
|
|
29
29
|
const DAEMON_STATE_FILE = join(SVAMP_HOME, "daemon.state.json");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband
|
|
1
|
+
import { a3 as resolveModel, ak as describeMisconfiguration, al as buildMachineDeps } from './run-DEn3zLAt.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BMzd_SoN.mjs';
|
|
3
3
|
import { WebSocket } from 'ws';
|
|
4
4
|
import { execSync, spawn } from 'child_process';
|
|
5
5
|
import 'os';
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-
|
|
1
|
+
export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-DEn3zLAt.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as connectToHypha, S as SharingNotificationSync,
|
|
1
|
+
import { c as connectToHypha, S as SharingNotificationSync, M as parseJwtEmail } from './run-DEn3zLAt.mjs';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { existsSync, readFileSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var name = "svamp-cli";
|
|
2
|
+
var version = "0.2.334";
|
|
3
|
+
var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
|
|
4
|
+
var author = "Amun AI AB";
|
|
5
|
+
var license = "SEE LICENSE IN LICENSE";
|
|
6
|
+
var type = "module";
|
|
7
|
+
var bin = {
|
|
8
|
+
svamp: "./bin/svamp.mjs"
|
|
9
|
+
};
|
|
10
|
+
var files = [
|
|
11
|
+
"dist",
|
|
12
|
+
"bin"
|
|
13
|
+
];
|
|
14
|
+
var main = "./dist/index.mjs";
|
|
15
|
+
var exports$1 = {
|
|
16
|
+
".": "./dist/index.mjs",
|
|
17
|
+
"./cli": "./dist/cli.mjs"
|
|
18
|
+
};
|
|
19
|
+
var scripts = {
|
|
20
|
+
build: "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
|
|
21
|
+
typecheck: "tsc --noEmit",
|
|
22
|
+
test: "node test/with-timeout.mjs 420 npx tsx test/test-context-window.mjs && node test/with-timeout.mjs 420 npx tsx test/test-ratelimit-retry.mjs && node test/with-timeout.mjs 420 npx tsx test/test-completed-requests.mjs && node test/with-timeout.mjs 420 npx tsx test/test-reconnect-health.mjs &&node test/with-timeout.mjs 420 npx tsx test/test-fleet-version-parse.mjs &&node test/with-timeout.mjs 420 npx tsx test/test-instance-config.mjs && node test/with-timeout.mjs 420 npx tsx test/test-authorize.mjs && node test/with-timeout.mjs 420 npx tsx test/test-normalize-allowed-user.mjs && node test/with-timeout.mjs 420 npx tsx test/test-share-url.mjs && node test/with-timeout.mjs 420 npx tsx test/test-update-sharing-normalization.mjs && node test/with-timeout.mjs 420 npx tsx test/test-sharing-notify-sync.mjs && node test/with-timeout.mjs 420 npx tsx test/test-sharing-notify-resolve.mjs && node test/with-timeout.mjs 420 npx tsx test/test-staged-homes-sweep.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-helpers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-cli-routing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-security-context.mjs && node test/with-timeout.mjs 420 npx tsx test/test-isolation-decision.mjs && node test/with-timeout.mjs 420 npx tsx test/test-message-helpers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-stdin-delivery.mjs && node test/with-timeout.mjs 420 npx tsx test/test-agent-config.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wrap-command.mjs && node test/with-timeout.mjs 420 npx tsx test/test-credential-staging.mjs && node test/with-timeout.mjs 420 npx tsx test/test-claude-auth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-backend-accounts.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-force-model.mjs && node test/with-timeout.mjs 420 npx tsx test/test-backend-oauth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-btw-proxy-env.mjs && node test/with-timeout.mjs 420 npx tsx test/test-output-formatters.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-guard.mjs && node test/with-timeout.mjs 420 npx tsx test/test-user-events.mjs && node test/with-timeout.mjs 420 npx tsx test/test-migrate-children.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-install.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-setup.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-pairing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-coordinator.mjs && node test/with-timeout.mjs 420 npx tsx test/e2e-outpost-transport.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-reconcile.mjs && node test/with-timeout.mjs 420 npx tsx test/test-auto-topic.mjs && node test/with-timeout.mjs 420 npx tsx test/test-project-info.mjs && node test/with-timeout.mjs 420 npx tsx test/test-agent-types.mjs && node test/with-timeout.mjs 420 npx tsx test/test-transport.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-update-handlers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-scanner.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hypha-client.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hook-settings.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-service-logic.mjs && node test/with-timeout.mjs 420 npx tsx test/test-daemon-persistence.mjs && node test/with-timeout.mjs 420 npx tsx test/test-detect-isolation.mjs && node test/with-timeout.mjs 420 npx tsx test/test-isolation-disable.mjs && node test/with-timeout.mjs 420 npx tsx test/test-machine-service-logic.mjs && node test/with-timeout.mjs 420 npx tsx test/test-machine-session-visibility.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-access-fallback.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-rpc-role-map.mjs && node test/with-timeout.mjs 420 npx tsx test/test-interactive-helpers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-pinned-codex.mjs && node test/with-timeout.mjs 420 npx tsx test/test-pinned-hypha-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-pinned-kimi.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-receive-cap.mjs && node test/with-timeout.mjs 420 npx tsx test/test-dns-shadowing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-request-timeout.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-app-server.mjs && node test/with-timeout.mjs 420 npx tsx test/test-kimi-provider.mjs && node test/with-timeout.mjs 420 npx tsx test/test-acp-backend.mjs && node test/with-timeout.mjs 420 npx tsx test/test-acp-bridge.mjs && node test/with-timeout.mjs 420 npx tsx test/test-listener-backoff.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-identity-env.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hook-server.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-commands.mjs && node test/with-timeout.mjs 420 npx tsx test/test-interactive-console.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-messages.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-send-query.mjs && node test/with-timeout.mjs 420 npx tsx test/test-skills.mjs && node test/with-timeout.mjs 420 npx tsx test/test-agent-grouping.mjs && node test/with-timeout.mjs 420 npx tsx test/test-machine-list-directory.mjs && node test/with-timeout.mjs 420 npx tsx test/test-service-commands.mjs && node test/with-timeout.mjs 420 npx tsx test/test-supervisor.mjs && node test/with-timeout.mjs 420 npx tsx test/test-supervisor-lock.mjs && node test/with-timeout.mjs 420 node test/test-supervisor-restart.mjs && node test/with-timeout.mjs 420 npx tsx test/test-clear-detection.mjs && node test/with-timeout.mjs 420 npx tsx test/test-compact-detect.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-consolidation.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-store.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-cross-machine.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-store.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-store-lock.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-close-gate.mjs && node test/with-timeout.mjs 420 npx tsx test/test-loop-verify.mjs && node test/with-timeout.mjs 420 npx tsx test/test-restore-decision.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-pause.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-store.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-scheduler.mjs && node test/with-timeout.mjs 420 npx tsx test/test-cron.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-runs.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-runs-lock.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-idle.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-reconcile.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-link-subdomain.mjs && node test/with-timeout.mjs 420 npx tsx test/test-short-id.mjs && node test/with-timeout.mjs 420 npx tsx test/test-transcript-edit.mjs && node test/with-timeout.mjs 420 npx tsx test/test-edit-history.mjs && node test/with-timeout.mjs 420 npx tsx test/test-friendly-name.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-rpc-dispatch.mjs && node test/with-timeout.mjs 420 npx tsx test/test-sandbox-cli.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-manager.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-files-gateway.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-ws-upgrade.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-auth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-static-file-server.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-stability.mjs && node test/with-timeout.mjs 420 npx tsx test/test-frpc-e2e.mjs --unit-only && node test/with-timeout.mjs 420 npx tsx test/test-frpc-status.mjs && node test/with-timeout.mjs 420 npx tsx test/test-frpc-orphan-reap.mjs && node test/with-timeout.mjs 420 node test/pinnedClaudeCode.test.mjs && node test/with-timeout.mjs 420 npx tsx test/test-claude-version-recheck.mjs && node test/with-timeout.mjs 420 node test/fleet.test.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-file.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-agent.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-agent.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channels-service.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hotreload-seam.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hot-reload.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hot-reload-live.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-core.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-async-reply.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outbox-reload.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-binding.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-store-lock.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-identity.mjs && node test/with-timeout.mjs 420 npx tsx test/test-stateless-dispatch-limiter.mjs && node test/with-timeout.mjs 420 npx tsx test/test-shared-session-identity.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-agent-auth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-http.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-upload.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-file-access.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-voice.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-headless.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-machine.mjs && node test/with-timeout.mjs 420 npx tsx test/test-crew-merge.mjs && node test/with-timeout.mjs 420 npx tsx test/test-crew-verdict-routing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-crew-standalone.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-links.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-loop-pause-guard.mjs && node test/with-timeout.mjs 420 npx tsx test/test-artifact-guard.mjs && node test/with-timeout.mjs 420 npx tsx test/test-artifact-sync-pagination.mjs && node test/with-timeout.mjs 420 npx tsx test/test-graceful-restart.mjs && node test/with-timeout.mjs 420 npx tsx test/test-flush-exit.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-skills.mjs && node test/with-timeout.mjs 420 npx tsx test/test-nightly-0807-fixes.mjs && node test/with-timeout.mjs 420 npx tsx test/test-nightly-0814-fixes.mjs && node test/with-timeout.mjs 420 npx tsx test/test-log-prune.mjs && node test/with-timeout.mjs 420 node test/test-message-count-cache.mjs && node test/with-timeout.mjs 420 node test/test-serve-link-gate.mjs && node test/with-timeout.mjs 420 node test/test-security-context-unenforceable.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-id-resolution.mjs && node test/with-timeout.mjs 420 npx tsx test/test-help-flag-never-acts.mjs && node test/with-timeout.mjs 420 npx tsx test/test-with-timeout.mjs && node test/with-timeout.mjs 420 npx tsx test/test-message-queue-cap.mjs && node test/with-timeout.mjs 420 npx tsx test/test-compaction-backstop.mjs && node test/with-timeout.mjs 420 npx tsx test/test-log-format.mjs && npx tsx test/test-deploy-manifests.mjs && npx tsx test/test-kimi-default-model-1169.mjs && npx tsx test/test-loop-dormant-runtime-1170.mjs && npx tsx test/test-skill-install-atomic.mjs",
|
|
23
|
+
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
24
|
+
dev: "tsx src/cli.ts",
|
|
25
|
+
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|
|
26
|
+
"test:e2e": "node --no-warnings test/e2e-session-tests.mjs && npx tsx test/e2e-codex-midturn-steer.mjs && npx tsx test/e2e-serve-iframe-login.mjs && npx tsx test/test-archive-preserves-claude-file.mjs && npx tsx test/test-daemon-e2e.mjs && npx tsx test/test-hypha-service.mjs && npx tsx test/test-permission-e2e.mjs && npx tsx test/test-serve-e2e.mjs && npx tsx test/test-session-archive-resume.mjs && npx tsx test/test-session-rpc-e2e.mjs && npx tsx test/test-skills-integration.mjs && npx tsx test/test-wm-refresh.mjs && npx tsx test/e2e-session-files-gateway.mjs && npx tsx test/e2e-dns-production-hosts.mjs",
|
|
27
|
+
"test:frpc": "npx tsx test/test-frpc-e2e.mjs",
|
|
28
|
+
prepublishOnly: "node ../../scripts/bump-cli-version.mjs --check && yarn build && yarn test"
|
|
29
|
+
};
|
|
30
|
+
var dependencies = {
|
|
31
|
+
"@agentclientprotocol/sdk": "^0.14.1",
|
|
32
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
33
|
+
"hypha-rpc": "0.21.46",
|
|
34
|
+
"node-pty": "1.2.0-beta.11",
|
|
35
|
+
ws: "^8.18.0",
|
|
36
|
+
yaml: "^2.8.2",
|
|
37
|
+
zod: "^3.24.4"
|
|
38
|
+
};
|
|
39
|
+
var devDependencies = {
|
|
40
|
+
"@types/node": ">=20",
|
|
41
|
+
"@types/ws": "^8.5.14",
|
|
42
|
+
pkgroll: "^2.14.2",
|
|
43
|
+
tsx: "^4.20.6",
|
|
44
|
+
typescript: "5.9.3"
|
|
45
|
+
};
|
|
46
|
+
var packageManager = "yarn@1.22.22";
|
|
47
|
+
var _package = {
|
|
48
|
+
name: name,
|
|
49
|
+
version: version,
|
|
50
|
+
description: description,
|
|
51
|
+
author: author,
|
|
52
|
+
license: license,
|
|
53
|
+
type: type,
|
|
54
|
+
bin: bin,
|
|
55
|
+
files: files,
|
|
56
|
+
main: main,
|
|
57
|
+
exports: exports$1,
|
|
58
|
+
scripts: scripts,
|
|
59
|
+
dependencies: dependencies,
|
|
60
|
+
devDependencies: devDependencies,
|
|
61
|
+
packageManager: packageManager
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export { author, bin, _package as default, dependencies, description, devDependencies, exports$1 as exports, files, license, main, name, packageManager, scripts, type, version };
|
|
@@ -4,12 +4,33 @@ import { promisify } from 'node:util';
|
|
|
4
4
|
const PINNED_CLAUDE_CODE_VERSION = "2.1.233";
|
|
5
5
|
const exec = promisify(exec$1);
|
|
6
6
|
let _reconcile = null;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
let _reconcileStartedAt = 0;
|
|
8
|
+
let _inFlight = false;
|
|
9
|
+
const CLAUDE_VERSION_RECHECK_MS = 60 * 60 * 1e3;
|
|
10
|
+
function beginClaudeVersionReconcile(log, opts) {
|
|
11
|
+
const now = opts?.now ?? Date.now();
|
|
12
|
+
const recheckMs = opts?.recheckMs ?? CLAUDE_VERSION_RECHECK_MS;
|
|
13
|
+
if (_inFlight) return;
|
|
14
|
+
if (_reconcile && !opts?.force && now - _reconcileStartedAt < recheckMs) return;
|
|
15
|
+
_inFlight = true;
|
|
16
|
+
_reconcileStartedAt = now;
|
|
17
|
+
_reconcile = ensureClaudeCodeVersion(log, PINNED_CLAUDE_CODE_VERSION, { readVersion: opts?.readVersion }).then((result) => {
|
|
18
|
+
try {
|
|
19
|
+
opts?.onResult?.(result);
|
|
20
|
+
} catch {
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}).catch((e) => {
|
|
10
24
|
log(`[claude-version] check failed: ${e?.message || e}`);
|
|
25
|
+
}).finally(() => {
|
|
26
|
+
_inFlight = false;
|
|
11
27
|
});
|
|
12
28
|
}
|
|
29
|
+
function __resetClaudeVersionReconcileForTests() {
|
|
30
|
+
_reconcile = null;
|
|
31
|
+
_reconcileStartedAt = 0;
|
|
32
|
+
_inFlight = false;
|
|
33
|
+
}
|
|
13
34
|
function awaitClaudeVersionReady(timeoutMs = 6e4) {
|
|
14
35
|
if (!_reconcile) return Promise.resolve();
|
|
15
36
|
return Promise.race([
|
|
@@ -45,7 +66,7 @@ function runInstaller(version, log) {
|
|
|
45
66
|
}
|
|
46
67
|
async function ensureClaudeCodeVersion(log, pinned = PINNED_CLAUDE_CODE_VERSION, opts) {
|
|
47
68
|
const autoInstall = opts?.allowAutoInstall !== false;
|
|
48
|
-
const current = await readClaudeVersion();
|
|
69
|
+
const current = await (opts?.readVersion ?? readClaudeVersion)();
|
|
49
70
|
if (!current) {
|
|
50
71
|
log(`[claude-version] 'claude' not on PATH \u2014 please run the Anthropic installer once: curl -fsSL https://claude.ai/install.sh | sh`);
|
|
51
72
|
return { kind: "not-installed", want: pinned };
|
|
@@ -64,9 +85,9 @@ async function ensureClaudeCodeVersion(log, pinned = PINNED_CLAUDE_CODE_VERSION,
|
|
|
64
85
|
log(`[claude-version] install failed for ${pinned}: ${stderr.trim().slice(0, 400)}`);
|
|
65
86
|
return { kind: "install-failed", from: current, want: pinned, error: stderr.slice(0, 400) };
|
|
66
87
|
}
|
|
67
|
-
const after = await readClaudeVersion();
|
|
88
|
+
const after = await (opts?.readVersion ?? readClaudeVersion)();
|
|
68
89
|
log(`[claude-version] installer finished; now reports ${after ?? "unknown"}`);
|
|
69
90
|
return { kind: "installed", from: current, to: after ?? pinned };
|
|
70
91
|
}
|
|
71
92
|
|
|
72
|
-
export { PINNED_CLAUDE_CODE_VERSION, awaitClaudeVersionReady, beginClaudeVersionReconcile, ensureClaudeCodeVersion };
|
|
93
|
+
export { CLAUDE_VERSION_RECHECK_MS, PINNED_CLAUDE_CODE_VERSION, __resetClaudeVersionReconcileForTests, awaitClaudeVersionReady, beginClaudeVersionReconcile, ensureClaudeCodeVersion };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as resolveProjectRoot, u as updateIssue, h as getIssue, i as resumeIssue, p as pauseIssue,
|
|
1
|
+
import { f as resolveProjectRoot, u as updateIssue, h as getIssue, i as checkVerifyCommand, j as resumeIssue, p as pauseIssue, k as addComment, l as addIssue, m as listIssues, n as isPendingIssue, o as searchIssues, q as isVisibleTo } from './run-DEn3zLAt.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -137,6 +137,18 @@ function issueRpc(cwd, params, deps = {}) {
|
|
|
137
137
|
case "status": {
|
|
138
138
|
const status = STATUS_MAP[params.status];
|
|
139
139
|
if (!status) throw new Error(`issue status: unknown status "${params.status}"`);
|
|
140
|
+
if ((params.status === "close" || params.status === "done") && !params.force) {
|
|
141
|
+
const cur = getIssue(root, String(params.id));
|
|
142
|
+
const res = checkVerifyCommand(root, cur);
|
|
143
|
+
if (!res.ok) {
|
|
144
|
+
throw new Error(
|
|
145
|
+
`Refusing to close #${params.id}: its verify-cmd failed \u2014 the fix is not verified.
|
|
146
|
+
$ ${res.cmd}
|
|
147
|
+
${res.output || ""}
|
|
148
|
+
(Fix the issue, or close with force to override.)`
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
140
152
|
const patch = { status };
|
|
141
153
|
if (status === "in_progress" && params.session) {
|
|
142
154
|
const cur = getIssue(root, String(params.id));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as resolveProjectRoot,
|
|
1
|
+
import { f as resolveProjectRoot, t as getRun, v as listRuns, w as getWorkflow, x as runWorkflow, y as setWorkflowEnabled, z as removeWorkflow, A as validateCronExpr, B as validateWorkflowName, C as saveWorkflow, D as rawWorkflow, E as listWorkflows } from './run-DEn3zLAt.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -37,6 +37,7 @@ async function workflowRpc(cwd, params) {
|
|
|
37
37
|
for (const c of crons) validateCronExpr(c);
|
|
38
38
|
if (crons.length) on.schedule = crons.map((c) => ({ cron: c }));
|
|
39
39
|
if (params.dispatch || params.workflow_dispatch) on.workflow_dispatch = true;
|
|
40
|
+
if (params.idle || Array.isArray(params.on) && params.on.map(String).includes("idle")) on.idle = true;
|
|
40
41
|
const runs = Array.isArray(params.runs) ? params.runs.map(String).filter(Boolean) : [];
|
|
41
42
|
if (!params.name || !runs.length) throw new Error("workflow add: name and at least one run step required");
|
|
42
43
|
validateWorkflowName(String(params.name));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import {
|
|
1
|
+
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { am as applyClaudeProxyEnv, an as composeSessionId, ao as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ap as generateHookSettings } from './run-DEn3zLAt.mjs';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import { existsSync, readFileSync, watch } from 'node:fs';
|