svamp-cli 0.2.310 → 0.2.311
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-BcH3OlSL.mjs → adminCommands-U5D7i8tD.mjs} +1 -1
- package/dist/{agentCommands-9GHpj3mp.mjs → agentCommands-BefFTl6g.mjs} +5 -5
- package/dist/{auth-CuN-K8i9.mjs → auth-DgGAjihq.mjs} +1 -1
- package/dist/{cli-Co_GXbrT.mjs → cli-B0TyKXyU.mjs} +70 -70
- package/dist/cli.mjs +2 -2
- package/dist/{commands-Eo0kocpm.mjs → commands-BCQbBzYU.mjs} +2 -2
- package/dist/{commands-D-RsuMqs.mjs → commands-BoGUxb2o.mjs} +1 -1
- package/dist/{commands-B0cRa6cc.mjs → commands-CEOhve0Y.mjs} +2 -2
- package/dist/{commands-DrVsg0Q1.mjs → commands-CjVl4amM.mjs} +8 -8
- package/dist/{commands-Dx4S6f_G.mjs → commands-CnqL60f7.mjs} +1 -1
- package/dist/{commands-DBiIsRQ_.mjs → commands-XQ8-fOSu.mjs} +1 -1
- package/dist/{commands-DuLlH97k.mjs → commands-imLC7CK2.mjs} +2 -2
- package/dist/{commands-DiuHHJ6r.mjs → commands-xoalqGUY.mjs} +2 -2
- package/dist/{fleet-CFpET-T5.mjs → fleet-BS5eS0Wz.mjs} +1 -1
- package/dist/{frpc-DxIjZ8o_.mjs → frpc-DvBVvsZC.mjs} +1 -1
- package/dist/{headlessCli-BIY-YePw.mjs → headlessCli-C9wTLm1x.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{notifyCommands-DldLQlDU.mjs → notifyCommands-0IltLO-S.mjs} +1 -1
- package/dist/package-CFhmZcVJ.mjs +64 -0
- package/dist/{rpc-D7_Gj0Kt.mjs → rpc-BLWr4p8g.mjs} +1 -1
- package/dist/{rpc-BVw8Tv9l.mjs → rpc-BXpuORiQ.mjs} +1 -1
- package/dist/{run-DLk7NGih.mjs → run-CMoQtnIj.mjs} +1 -1
- package/dist/{run-CqO23ro_.mjs → run-DtVX2pQN.mjs} +70 -24
- package/dist/{scheduler-q7Refevo.mjs → scheduler-7aLvf5mn.mjs} +1 -1
- package/dist/{serveCommands-BJjvhDxp.mjs → serveCommands-D7BieIJ5.mjs} +5 -5
- package/dist/{sideband-Dv3qNlQN.mjs → sideband-DjjXlVhw.mjs} +1 -1
- package/package.json +2 -2
- package/dist/package-BKmrvBsb.mjs +0 -64
|
@@ -60,7 +60,7 @@ async function serviceExpose(args) {
|
|
|
60
60
|
process.exit(1);
|
|
61
61
|
}
|
|
62
62
|
if (foreground) {
|
|
63
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
63
|
+
const { runFrpcTunnel } = await import('./frpc-DvBVvsZC.mjs');
|
|
64
64
|
await runFrpcTunnel(name, ports, void 0, {
|
|
65
65
|
group,
|
|
66
66
|
groupKey,
|
|
@@ -70,7 +70,7 @@ async function serviceExpose(args) {
|
|
|
70
70
|
});
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
73
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
74
74
|
const { server, machine } = await connectAndGetMachine();
|
|
75
75
|
try {
|
|
76
76
|
const status = await machine.tunnelStart({
|
|
@@ -92,7 +92,7 @@ async function serviceExpose(args) {
|
|
|
92
92
|
console.log(` port ${port}: ${url}`);
|
|
93
93
|
}
|
|
94
94
|
if (process.env.SVAMP_SESSION_ID) {
|
|
95
|
-
const { autoAddSessionLink } = await import('./agentCommands-
|
|
95
|
+
const { autoAddSessionLink } = await import('./agentCommands-BefFTl6g.mjs');
|
|
96
96
|
let added = 0;
|
|
97
97
|
for (const [port, url] of urlEntries) {
|
|
98
98
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -128,8 +128,8 @@ async function serviceServe(args) {
|
|
|
128
128
|
const resolvedDir = path.resolve(directory);
|
|
129
129
|
console.log(`Serving ${resolvedDir}`);
|
|
130
130
|
const http = await import('http');
|
|
131
|
-
const { serveStaticMount } = await import('./run-
|
|
132
|
-
const { getFreePort } = await import('./frpc-
|
|
131
|
+
const { serveStaticMount } = await import('./run-DtVX2pQN.mjs').then(function (n) { return n.ap; });
|
|
132
|
+
const { getFreePort } = await import('./frpc-DvBVvsZC.mjs');
|
|
133
133
|
const server = http.createServer((req, res) => {
|
|
134
134
|
const u = new URL(req.url || "/", "http://127.0.0.1");
|
|
135
135
|
let rel = u.pathname;
|
|
@@ -152,7 +152,7 @@ async function serviceServe(args) {
|
|
|
152
152
|
resolve(18080);
|
|
153
153
|
});
|
|
154
154
|
});
|
|
155
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
155
|
+
const { runFrpcTunnel } = await import('./frpc-DvBVvsZC.mjs');
|
|
156
156
|
void server;
|
|
157
157
|
await runFrpcTunnel(name, [servePort]);
|
|
158
158
|
} catch (err) {
|
|
@@ -162,7 +162,7 @@ async function serviceServe(args) {
|
|
|
162
162
|
}
|
|
163
163
|
async function serviceList(_args) {
|
|
164
164
|
try {
|
|
165
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
165
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
166
166
|
const { server, machine } = await connectAndGetMachine();
|
|
167
167
|
try {
|
|
168
168
|
const tunnels = await machine.tunnelList({});
|
|
@@ -202,7 +202,7 @@ async function serviceDelete(args) {
|
|
|
202
202
|
process.exit(1);
|
|
203
203
|
}
|
|
204
204
|
try {
|
|
205
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
205
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
206
206
|
const { server, machine } = await connectAndGetMachine();
|
|
207
207
|
try {
|
|
208
208
|
await machine.tunnelStop({ name });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { j as resolveProjectRoot, K as workflowSteps, z as setWorkflowEnabled, F as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, E as listWorkflows, C as saveWorkflow, D as rawWorkflow } from './run-
|
|
2
|
+
import { j as resolveProjectRoot, K as workflowSteps, z as setWorkflowEnabled, F as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, E as listWorkflows, C as saveWorkflow, D as rawWorkflow } from './run-DtVX2pQN.mjs';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
|
5
5
|
import 'fs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import fs__default from 'fs';
|
|
3
3
|
import { resolve, join, relative } from 'path';
|
|
4
|
-
import { V as parseFrontmatter, W as getSkillsServer, X as getSkillsWorkspaceName, Y as getSkillsCollectionName, Z as fetchWithTimeout, _ as searchSkills, $ as SKILLS_DIR, a0 as getSkillInfo, a1 as downloadSkillFile, a2 as listSkillFiles } from './run-
|
|
4
|
+
import { V as parseFrontmatter, W as getSkillsServer, X as getSkillsWorkspaceName, Y as getSkillsCollectionName, Z as fetchWithTimeout, _ as searchSkills, $ as SKILLS_DIR, a0 as getSkillInfo, a1 as downloadSkillFile, a2 as listSkillFiles } from './run-DtVX2pQN.mjs';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { connectAndResolveSession } from './commands-
|
|
1
|
+
import { connectAndResolveSession } from './commands-BoGUxb2o.mjs';
|
|
2
2
|
import 'node:fs';
|
|
3
3
|
import 'node:child_process';
|
|
4
4
|
import 'node:path';
|
|
5
5
|
import 'node:os';
|
|
6
|
-
import './run-
|
|
6
|
+
import './run-DtVX2pQN.mjs';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
9
9
|
import 'fs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { f as flushAndExit } from './cli-
|
|
5
|
-
import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, J as summarize, n as addIssue } from './run-
|
|
4
|
+
import { f as flushAndExit } from './cli-B0TyKXyU.mjs';
|
|
5
|
+
import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, J as summarize, n as addIssue } from './run-DtVX2pQN.mjs';
|
|
6
6
|
import './serviceManager-hlOVxkhW.mjs';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
|
-
import { U as PINNED_CODEX_VERSION, c as connectToHypha } from './run-
|
|
4
|
+
import { U as PINNED_CODEX_VERSION, c as connectToHypha } from './run-DtVX2pQN.mjs';
|
|
5
5
|
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-zDzkOTi2.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
@@ -4,7 +4,7 @@ import { mkdirSync, chmodSync, writeFileSync, unlinkSync, existsSync, readFileSy
|
|
|
4
4
|
import { join } from 'path';
|
|
5
5
|
import { homedir, platform, arch } from 'os';
|
|
6
6
|
import { randomUUID, createHash } from 'crypto';
|
|
7
|
-
import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-
|
|
7
|
+
import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-DtVX2pQN.mjs';
|
|
8
8
|
import 'fs/promises';
|
|
9
9
|
import 'url';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a3 as resolveModel, aj as describeMisconfiguration, ak as buildMachineDeps } from './run-
|
|
2
|
-
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-
|
|
1
|
+
import { a3 as resolveModel, aj as describeMisconfiguration, ak as buildMachineDeps } from './run-DtVX2pQN.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-DjjXlVhw.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-DtVX2pQN.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, L as parseJwtEmail } from './run-
|
|
1
|
+
import { c as connectToHypha, S as SharingNotificationSync, L as parseJwtEmail } from './run-DtVX2pQN.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.311";
|
|
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: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-sharing-notify-resolve.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-stdin-delivery.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-codex-force-model.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-outpost-pairing.mjs && npx tsx test/test-outpost-coordinator.mjs && npx tsx test/e2e-outpost-transport.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-machine-session-visibility.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-session-rpc-role-map.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-pinned-codex.mjs && npx tsx test/test-codex-request-timeout.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/e2e-codex-midturn-steer.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-listener-backoff.mjs && npx tsx test/test-session-identity-env.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-store-lock.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-restore-decision.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-runs-lock.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-workflow-reconcile.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-store-lock.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-stateless-dispatch-limiter.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-artifact-sync-pagination.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs && npx tsx test/test-codex-skills.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",
|
|
27
|
+
"test:frpc": "npx tsx test/test-frpc-e2e.mjs",
|
|
28
|
+
prepublishOnly: "yarn build"
|
|
29
|
+
};
|
|
30
|
+
var dependencies = {
|
|
31
|
+
"@agentclientprotocol/sdk": "^0.14.1",
|
|
32
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
33
|
+
"hypha-rpc": "0.21.42",
|
|
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 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-DtVX2pQN.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as validateWorkflowName, C as saveWorkflow, D as rawWorkflow, E as listWorkflows } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as validateWorkflowName, C as saveWorkflow, D as rawWorkflow, E as listWorkflows } from './run-DtVX2pQN.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { al as applyClaudeProxyEnv, am as composeSessionId, an as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ao as generateHookSettings } from './run-
|
|
1
|
+
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { al as applyClaudeProxyEnv, am as composeSessionId, an as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ao as generateHookSettings } from './run-DtVX2pQN.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';
|
|
@@ -3147,7 +3147,7 @@ Connection: close\r
|
|
|
3147
3147
|
const mount = this.mounts.get(mountName);
|
|
3148
3148
|
const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
|
|
3149
3149
|
try {
|
|
3150
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
3150
|
+
const { FrpcTunnel } = await import('./frpc-DvBVvsZC.mjs');
|
|
3151
3151
|
let tunnel;
|
|
3152
3152
|
tunnel = new FrpcTunnel({
|
|
3153
3153
|
name: tunnelName,
|
|
@@ -6280,7 +6280,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
6280
6280
|
const tunnels = handlers.tunnels;
|
|
6281
6281
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
6282
6282
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
6283
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
6283
|
+
const { FrpcTunnel } = await import('./frpc-DvBVvsZC.mjs');
|
|
6284
6284
|
const tunnel = new FrpcTunnel({
|
|
6285
6285
|
name: params.name,
|
|
6286
6286
|
ports: params.ports,
|
|
@@ -6773,7 +6773,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6773
6773
|
}
|
|
6774
6774
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
6775
6775
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
6776
|
-
const { toolsForRole } = await import('./sideband-
|
|
6776
|
+
const { toolsForRole } = await import('./sideband-DjjXlVhw.mjs');
|
|
6777
6777
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
6778
6778
|
return fmt(r2);
|
|
6779
6779
|
}
|
|
@@ -6878,7 +6878,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6878
6878
|
return { ok: false, call_id: callId, status: "busy", error: "channel is busy (too many concurrent requests) \u2014 retry shortly" };
|
|
6879
6879
|
}
|
|
6880
6880
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
6881
|
-
const { queryCore } = await import('./commands-
|
|
6881
|
+
const { queryCore } = await import('./commands-BoGUxb2o.mjs');
|
|
6882
6882
|
const timeout = c.reply?.timeout_sec || 120;
|
|
6883
6883
|
let result;
|
|
6884
6884
|
try {
|
|
@@ -16358,6 +16358,28 @@ async function writeSessionFileChunk(directory, sessionMetadata, path, content,
|
|
|
16358
16358
|
}
|
|
16359
16359
|
}
|
|
16360
16360
|
|
|
16361
|
+
function isStdinWritable(proc) {
|
|
16362
|
+
if (!proc || proc.exitCode !== null) return false;
|
|
16363
|
+
const stdin = proc.stdin;
|
|
16364
|
+
if (!stdin) return false;
|
|
16365
|
+
if (stdin.destroyed === true) return false;
|
|
16366
|
+
if (stdin.writable === false) return false;
|
|
16367
|
+
return true;
|
|
16368
|
+
}
|
|
16369
|
+
function serializeUserFrame(text) {
|
|
16370
|
+
return JSON.stringify({ type: "user", message: { role: "user", content: text } }) + "\n";
|
|
16371
|
+
}
|
|
16372
|
+
function writeUserFrame(proc, text, onError) {
|
|
16373
|
+
if (!isStdinWritable(proc)) return false;
|
|
16374
|
+
try {
|
|
16375
|
+
proc.stdin.write(serializeUserFrame(text));
|
|
16376
|
+
return true;
|
|
16377
|
+
} catch (err) {
|
|
16378
|
+
onError?.(err);
|
|
16379
|
+
return false;
|
|
16380
|
+
}
|
|
16381
|
+
}
|
|
16382
|
+
|
|
16361
16383
|
const __filename$1 = fileURLToPath(import.meta.url);
|
|
16362
16384
|
const __dirname$1 = dirname$1(__filename$1);
|
|
16363
16385
|
const CLAUDE_SKILLS_DIR = join(os$1.homedir(), ".claude", "skills");
|
|
@@ -17855,7 +17877,7 @@ async function startDaemon(options) {
|
|
|
17855
17877
|
try {
|
|
17856
17878
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
17857
17879
|
if (!dir) return;
|
|
17858
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
17880
|
+
const { reconcileServiceLinks } = await import('./agentCommands-BefFTl6g.mjs');
|
|
17859
17881
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
17860
17882
|
const config = readSvampConfig(configPath);
|
|
17861
17883
|
const entries = Array.from(urls.entries());
|
|
@@ -17873,7 +17895,7 @@ async function startDaemon(options) {
|
|
|
17873
17895
|
}
|
|
17874
17896
|
}
|
|
17875
17897
|
async function createExposedTunnel(spec) {
|
|
17876
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
17898
|
+
const { FrpcTunnel } = await import('./frpc-DvBVvsZC.mjs');
|
|
17877
17899
|
const tunnel = new FrpcTunnel({
|
|
17878
17900
|
name: spec.name,
|
|
17879
17901
|
ports: spec.ports,
|
|
@@ -19472,6 +19494,9 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19472
19494
|
}
|
|
19473
19495
|
return child;
|
|
19474
19496
|
};
|
|
19497
|
+
const writeUserFrameToClaude = (text) => writeUserFrame(claudeProcess, text, (err) => {
|
|
19498
|
+
logger.log(`[Session ${sessionId}] Claude stdin write failed: ${err?.message || err}`);
|
|
19499
|
+
});
|
|
19475
19500
|
const restartClaudeHandler = async (opts) => {
|
|
19476
19501
|
logger.log(`[Session ${sessionId}] Restart Claude requested`);
|
|
19477
19502
|
if (isRestartingClaude || isSwitchingMode) {
|
|
@@ -19510,6 +19535,9 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19510
19535
|
spawnClaude(void 0, { permissionMode: currentPermissionMode });
|
|
19511
19536
|
sessionService.updateMetadata(sessionMetadata);
|
|
19512
19537
|
logger.log(`[Session ${sessionId}] Claude respawned with --resume ${claudeResumeId}`);
|
|
19538
|
+
if ((sessionMetadata.messageQueue?.length ?? 0) > 0 && !trackedSession?.stopped) {
|
|
19539
|
+
setTimeout(() => processMessageQueueRef?.(), 300);
|
|
19540
|
+
}
|
|
19513
19541
|
if (beforeRespawnError) {
|
|
19514
19542
|
return { success: false, message: `Edit failed (session restored): ${beforeRespawnError}` };
|
|
19515
19543
|
}
|
|
@@ -19734,15 +19762,26 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19734
19762
|
pendingCompactTurn = isCompactCommand(text);
|
|
19735
19763
|
if (!claudeProcess || claudeProcess.exitCode !== null) {
|
|
19736
19764
|
spawnClaude(text, msgMeta);
|
|
19765
|
+
signalProcessing(true);
|
|
19766
|
+
sessionWasProcessing = true;
|
|
19767
|
+
} else if (writeUserFrameToClaude(text)) {
|
|
19768
|
+
signalProcessing(true);
|
|
19769
|
+
sessionWasProcessing = true;
|
|
19737
19770
|
} else {
|
|
19738
|
-
|
|
19739
|
-
|
|
19740
|
-
|
|
19741
|
-
|
|
19742
|
-
|
|
19771
|
+
logger.log(`[Session ${sessionId}] Claude stdin unwritable \u2014 requeueing message for respawn delivery`);
|
|
19772
|
+
const existingQueue = sessionMetadata.messageQueue || [];
|
|
19773
|
+
sessionMetadata = {
|
|
19774
|
+
...sessionMetadata,
|
|
19775
|
+
messageQueue: [...existingQueue, { id: randomUUID$1(), text, createdAt: Date.now(), alreadyStored: true }]
|
|
19776
|
+
};
|
|
19777
|
+
sessionService.updateMetadata(sessionMetadata);
|
|
19778
|
+
signalProcessing(true);
|
|
19779
|
+
sessionWasProcessing = true;
|
|
19780
|
+
try {
|
|
19781
|
+
claudeProcess.kill("SIGTERM");
|
|
19782
|
+
} catch {
|
|
19783
|
+
}
|
|
19743
19784
|
}
|
|
19744
|
-
signalProcessing(true);
|
|
19745
|
-
sessionWasProcessing = true;
|
|
19746
19785
|
},
|
|
19747
19786
|
onAbort: () => {
|
|
19748
19787
|
logger.log(`[Session ${sessionId}] Abort requested`);
|
|
@@ -19844,6 +19883,9 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19844
19883
|
isKillingClaude = false;
|
|
19845
19884
|
if (trackedSession?.stopped) return;
|
|
19846
19885
|
spawnClaude(void 0, { permissionMode: normalizedMode });
|
|
19886
|
+
if ((sessionMetadata.messageQueue?.length ?? 0) > 0 && !trackedSession?.stopped) {
|
|
19887
|
+
setTimeout(() => processMessageQueueRef?.(), 300);
|
|
19888
|
+
}
|
|
19847
19889
|
} finally {
|
|
19848
19890
|
isKillingClaude = false;
|
|
19849
19891
|
isSwitchingMode = false;
|
|
@@ -20107,11 +20149,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
20107
20149
|
});
|
|
20108
20150
|
},
|
|
20109
20151
|
onIssue: async (params) => {
|
|
20110
|
-
const { issueRpc } = await import('./rpc-
|
|
20152
|
+
const { issueRpc } = await import('./rpc-BLWr4p8g.mjs');
|
|
20111
20153
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
20112
20154
|
},
|
|
20113
20155
|
onWorkflow: async (params) => {
|
|
20114
|
-
const { workflowRpc } = await import('./rpc-
|
|
20156
|
+
const { workflowRpc } = await import('./rpc-BXpuORiQ.mjs');
|
|
20115
20157
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
20116
20158
|
},
|
|
20117
20159
|
onRipgrep: async (args, cwd) => {
|
|
@@ -20257,12 +20299,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
20257
20299
|
try {
|
|
20258
20300
|
if (!claudeProcess || claudeProcess.exitCode !== null) {
|
|
20259
20301
|
spawnClaude(next.text);
|
|
20260
|
-
} else {
|
|
20261
|
-
const stdinMsg = JSON.stringify({
|
|
20262
|
-
type: "user",
|
|
20263
|
-
message: { role: "user", content: next.text }
|
|
20264
|
-
});
|
|
20265
|
-
claudeProcess.stdin?.write(stdinMsg + "\n");
|
|
20302
|
+
} else if (writeUserFrameToClaude(next.text)) {
|
|
20266
20303
|
if (claudeResumeId && !trackedSession?.stopped) {
|
|
20267
20304
|
saveSession({
|
|
20268
20305
|
sessionId,
|
|
@@ -20276,6 +20313,15 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
20276
20313
|
wasProcessing: true
|
|
20277
20314
|
});
|
|
20278
20315
|
}
|
|
20316
|
+
} else {
|
|
20317
|
+
logger.log(`[Session ${sessionId}] Claude stdin unwritable during queue drain \u2014 restoring head + respawning`);
|
|
20318
|
+
sessionMetadata = { ...sessionMetadata, messageQueue: [next, ...remaining] };
|
|
20319
|
+
sessionService.updateMetadata(sessionMetadata);
|
|
20320
|
+
sessionWasProcessing = false;
|
|
20321
|
+
try {
|
|
20322
|
+
claudeProcess.kill("SIGTERM");
|
|
20323
|
+
} catch {
|
|
20324
|
+
}
|
|
20279
20325
|
}
|
|
20280
20326
|
} catch (err) {
|
|
20281
20327
|
logger.log(`[Session ${sessionId}] Error in processMessageQueue spawn: ${err.message}`);
|
|
@@ -20781,11 +20827,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
20781
20827
|
});
|
|
20782
20828
|
},
|
|
20783
20829
|
onIssue: async (params) => {
|
|
20784
|
-
const { issueRpc } = await import('./rpc-
|
|
20830
|
+
const { issueRpc } = await import('./rpc-BLWr4p8g.mjs');
|
|
20785
20831
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
20786
20832
|
},
|
|
20787
20833
|
onWorkflow: async (params) => {
|
|
20788
|
-
const { workflowRpc } = await import('./rpc-
|
|
20834
|
+
const { workflowRpc } = await import('./rpc-BXpuORiQ.mjs');
|
|
20789
20835
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
20790
20836
|
},
|
|
20791
20837
|
onRipgrep: async (args, cwd) => {
|
|
@@ -21948,7 +21994,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
21948
21994
|
const PING_TIMEOUT_MS = 15e3;
|
|
21949
21995
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
21950
21996
|
const RECONNECT_JITTER_MS = 2500;
|
|
21951
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
21997
|
+
const { WorkflowScheduler } = await import('./scheduler-7aLvf5mn.mjs');
|
|
21952
21998
|
const workflowProjectRoots = () => {
|
|
21953
21999
|
const dirs = /* @__PURE__ */ new Set();
|
|
21954
22000
|
for (const s of pidToTrackedSession.values()) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, E as listWorkflows, F as isWorkflowEnabled, G as workflowSchedules, H as inZone, y as runWorkflow, I as cronMatches } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, E as listWorkflows, F as isWorkflowEnabled, G as workflowSchedules, H as inZone, y as runWorkflow, I as cronMatches } from './run-DtVX2pQN.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -54,7 +54,7 @@ async function handleServeCommand() {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
async function serveAdd(args, machineId) {
|
|
57
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
57
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
58
58
|
const pos = positionalArgs(args);
|
|
59
59
|
const name = pos[0];
|
|
60
60
|
if (!name) {
|
|
@@ -93,7 +93,7 @@ async function serveAdd(args, machineId) {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
async function serveApply(args, machineId) {
|
|
96
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
96
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
97
97
|
const fs = await import('fs');
|
|
98
98
|
const yaml = await import('yaml');
|
|
99
99
|
const file = positionalArgs(args)[0];
|
|
@@ -182,7 +182,7 @@ async function serveApply(args, machineId) {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
async function serveRemove(args, machineId) {
|
|
185
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
185
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
186
186
|
const pos = positionalArgs(args);
|
|
187
187
|
const name = pos[0];
|
|
188
188
|
if (!name) {
|
|
@@ -202,7 +202,7 @@ async function serveRemove(args, machineId) {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
async function serveList(args, machineId) {
|
|
205
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
205
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
206
206
|
const all = hasFlag(args, "--all", "-a");
|
|
207
207
|
const json = hasFlag(args, "--json");
|
|
208
208
|
const sessionId = getFlag(args, "--session");
|
|
@@ -236,7 +236,7 @@ async function serveList(args, machineId) {
|
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
async function serveInfo(machineId) {
|
|
239
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
239
|
+
const { connectAndGetMachine } = await import('./commands-BoGUxb2o.mjs');
|
|
240
240
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
241
241
|
try {
|
|
242
242
|
const info = await machine.serveInfo();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as READ_ONLY_TOOLS, O as loadMachineContext, P as buildMachineInstructions, Q as machineToolsForRole, T as buildMachineTools } from './run-
|
|
1
|
+
import { R as READ_ONLY_TOOLS, O as loadMachineContext, P as buildMachineInstructions, Q as machineToolsForRole, T as buildMachineTools } from './run-DtVX2pQN.mjs';
|
|
2
2
|
import 'node:child_process';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svamp-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.311",
|
|
4
4
|
"description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
|
|
5
5
|
"author": "Amun AI AB",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"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",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
|
-
"test": "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-sharing-notify-resolve.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-codex-force-model.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-outpost-pairing.mjs && npx tsx test/test-outpost-coordinator.mjs && npx tsx test/e2e-outpost-transport.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-machine-session-visibility.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-session-rpc-role-map.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-pinned-codex.mjs && npx tsx test/test-codex-request-timeout.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/e2e-codex-midturn-steer.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-listener-backoff.mjs && npx tsx test/test-session-identity-env.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-store-lock.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-restore-decision.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-runs-lock.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-workflow-reconcile.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-store-lock.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-stateless-dispatch-limiter.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-artifact-sync-pagination.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs && npx tsx test/test-codex-skills.mjs",
|
|
23
|
+
"test": "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-sharing-notify-resolve.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-stdin-delivery.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-codex-force-model.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-outpost-pairing.mjs && npx tsx test/test-outpost-coordinator.mjs && npx tsx test/e2e-outpost-transport.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-machine-session-visibility.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-session-rpc-role-map.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-pinned-codex.mjs && npx tsx test/test-codex-request-timeout.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/e2e-codex-midturn-steer.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-listener-backoff.mjs && npx tsx test/test-session-identity-env.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-store-lock.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-restore-decision.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-runs-lock.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-workflow-reconcile.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-store-lock.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-stateless-dispatch-limiter.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-artifact-sync-pagination.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs && npx tsx test/test-codex-skills.mjs",
|
|
24
24
|
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
25
25
|
"dev": "tsx src/cli.ts",
|
|
26
26
|
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|