svamp-cli 0.2.291 → 0.2.293
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-DuA0IQ8B.mjs → adminCommands-BScS0gcw.mjs} +1 -1
- package/dist/{agentCommands-CoPsnzwK.mjs → agentCommands-Ct_y-kUT.mjs} +5 -5
- package/dist/{auth-Dj_Pcii4.mjs → auth-larVCkSe.mjs} +1 -1
- package/dist/{cli-CuzIOUig.mjs → cli-CFNupfRe.mjs} +69 -69
- package/dist/cli.mjs +2 -2
- package/dist/{commands-B9puiDBS.mjs → commands-1FEhmtlI.mjs} +5 -41
- package/dist/{commands-kahqMkYE.mjs → commands-Ba3H8r0_.mjs} +7 -7
- package/dist/{commands-eBqn9KgI.mjs → commands-BeHqLet1.mjs} +1 -1
- package/dist/{commands-B-VYM4sA.mjs → commands-BuYofggg.mjs} +1 -1
- package/dist/{commands-Bfgme-kK.mjs → commands-DioFG-T8.mjs} +2 -2
- package/dist/{commands-Cx8mEjjt.mjs → commands-S9ugb6eO.mjs} +2 -2
- package/dist/{commands-DwQIShcm.mjs → commands-sLeyJvvR.mjs} +2 -2
- package/dist/{commands-DSI9ZUTG.mjs → commands-spXLzJrp.mjs} +1 -1
- package/dist/{fleet-CqbZhBG2.mjs → fleet-BDH5YnGz.mjs} +1 -1
- package/dist/{frpc-BeGCyERl.mjs → frpc-D_Z7ezPz.mjs} +1 -1
- package/dist/{headlessCli-CJiHG0gu.mjs → headlessCli-fqWKn6GX.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{notifyCommands-CXjWSZHe.mjs → notifyCommands-BFKffk8w.mjs} +1 -1
- package/dist/package-DVTZQWn9.mjs +64 -0
- package/dist/{rpc-1Ic_yDzC.mjs → rpc-BnQ5dQm_.mjs} +1 -1
- package/dist/{rpc-DiG_DaMK.mjs → rpc-DAnM-lOr.mjs} +1 -1
- package/dist/{run-DZJuuuAu.mjs → run-Cv0X_muz.mjs} +1 -1
- package/dist/{run-CKLU1B02.mjs → run-P_rX5hRP.mjs} +104 -12
- package/dist/{scheduler-C5Gk_hYP.mjs → scheduler-DdfPXpWh.mjs} +1 -1
- package/dist/{serveCommands-Dipn0QHs.mjs → serveCommands-I-wRHtX4.mjs} +5 -5
- package/dist/{sideband-BCMGW33d.mjs → sideband-BhOX0Gs4.mjs} +1 -1
- package/package.json +46 -46
- package/dist/package-C0aVCX6O.mjs +0 -64
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import {
|
|
5
|
+
import { H as buildOutpostInstall, I as ChannelStore, J as DEFAULT_OUTPOST_DOWNLOAD_BASE, K as setupOutpostChannel } from './run-P_rX5hRP.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -21,24 +21,6 @@ import 'node:fs/promises';
|
|
|
21
21
|
import 'node:util';
|
|
22
22
|
import 'yaml';
|
|
23
23
|
|
|
24
|
-
const DEFAULT_DOWNLOAD_BASE = "https://github.com/amun-ai/hypha-cloud/releases/latest/download";
|
|
25
|
-
function shq(v) {
|
|
26
|
-
return `'${String(v).replace(/'/g, `'\\''`)}'`;
|
|
27
|
-
}
|
|
28
|
-
function psq(v) {
|
|
29
|
-
return `'${String(v).replace(/'/g, `''`)}'`;
|
|
30
|
-
}
|
|
31
|
-
function buildOutpostInstall(params) {
|
|
32
|
-
const base = params.serverBase.replace(/\/$/, "");
|
|
33
|
-
const dl = (params.downloadBase || DEFAULT_DOWNLOAD_BASE).replace(/\/$/, "");
|
|
34
|
-
const session = params.session || params.channel;
|
|
35
|
-
const q = `channel=${encodeURIComponent(params.channel)}&token=${encodeURIComponent(params.token)}&session=${encodeURIComponent(session)}&dl=${encodeURIComponent(dl)}`;
|
|
36
|
-
const unix = `curl -fsSL ${shq(`${base}/outpost/install.sh?${q}`)} | SVAMP_OUTPOST_SERVER=${shq(base)} SVAMP_OUTPOST_CHANNEL=${shq(params.channel)} SVAMP_OUTPOST_TOKEN=${shq(params.token)} SVAMP_OUTPOST_SESSION=${shq(session)} sh`;
|
|
37
|
-
const windows = `$env:SVAMP_OUTPOST_SERVER=${psq(base)}; $env:SVAMP_OUTPOST_CHANNEL=${psq(params.channel)}; $env:SVAMP_OUTPOST_TOKEN=${psq(params.token)}; $env:SVAMP_OUTPOST_SESSION=${psq(session)}; irm ${psq(`${base}/outpost/install.ps1?${q}`)} | iex`;
|
|
38
|
-
const direct = `svamp-outpost --server ${shq(base)} --channel ${shq(params.channel)} --token ${shq(params.token)} --session ${shq(session)}`;
|
|
39
|
-
return { unix, windows, direct };
|
|
40
|
-
}
|
|
41
|
-
|
|
42
24
|
function loadConfig() {
|
|
43
25
|
const p = join(os.homedir(), ".svamp", "outpost.json");
|
|
44
26
|
if (!existsSync(p)) return null;
|
|
@@ -119,28 +101,10 @@ async function outpostUp(args) {
|
|
|
119
101
|
console.error("Could not resolve workspace/machine (HYPHA_WORKSPACE / daemon.state.json).");
|
|
120
102
|
process.exit(1);
|
|
121
103
|
}
|
|
122
|
-
const
|
|
123
|
-
const
|
|
124
|
-
const channelId =
|
|
125
|
-
const store = new ChannelStore(projectDir());
|
|
126
|
-
const existing = store.get(channelId);
|
|
127
|
-
let token = existing?.identity?.callers?.find((c) => c.name === "outpost")?.key;
|
|
128
|
-
if (!token) token = genKey();
|
|
129
|
-
const channel = {
|
|
130
|
-
id: channelId,
|
|
131
|
-
name: `Remote outpost \u2014 ${session}`,
|
|
132
|
-
description: "FDE remote machine: a svamp-outpost binary connects here and the agent runs commands on it.",
|
|
133
|
-
enabled: true,
|
|
134
|
-
bind: { session },
|
|
135
|
-
identity: { mode: "per-key", callers: [{ name: "outpost", kind: "agent", key: token }] },
|
|
136
|
-
action: { kind: "message" },
|
|
137
|
-
reply: { mode: "queue" },
|
|
138
|
-
skill: { name: "remote-outpost", description: "Run commands on the connected remote machine." }
|
|
139
|
-
};
|
|
140
|
-
store.save(channel);
|
|
141
|
-
const dl = argVal(args, "--download-base") || envVar("SVAMP_OUTPOST_DL") || "https://static-outpost-bin-08c08c38.svc.hypha.aicell.io";
|
|
104
|
+
const dl = argVal(args, "--download-base") || envVar("SVAMP_OUTPOST_DL") || DEFAULT_OUTPOST_DOWNLOAD_BASE;
|
|
105
|
+
const info = setupOutpostChannel({ session, projectDir: projectDir(), channelsServiceId: `${workspace}/${mid}:channels`, serverUrl, downloadBase: dl });
|
|
106
|
+
const { channelId, token, serverBase: gw, install: gen } = info;
|
|
142
107
|
saveConfig({ control: "", serverBase: gw, serveBase: dl, token, channel: channelId, session });
|
|
143
|
-
const gen = buildOutpostInstall({ serverBase: gw, channel: channelId, token, session, downloadBase: dl });
|
|
144
108
|
console.log(`\u2713 outpost channel ready for session ${session} (channel "${channelId}", gateway transport)
|
|
145
109
|
`);
|
|
146
110
|
console.log("Give this to the person at the remote machine:\n");
|
|
@@ -223,7 +187,7 @@ async function outpostCommand(args) {
|
|
|
223
187
|
console.error('usage: svamp outpost exec [--machine <id>] "<command>"');
|
|
224
188
|
process.exit(1);
|
|
225
189
|
}
|
|
226
|
-
const { ChannelOutbox } = await import('./run-
|
|
190
|
+
const { ChannelOutbox } = await import('./run-P_rX5hRP.mjs').then(function (n) { return n.at; });
|
|
227
191
|
const outbox = new ChannelOutbox(projectDir());
|
|
228
192
|
const id = "x" + Date.now().toString(36);
|
|
229
193
|
outbox.append(cfg.channel, { to: "outpost", body: JSON.stringify({ type: "exec", id, cmd, target: target || "" }) });
|
|
@@ -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-D_Z7ezPz.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-BuYofggg.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-Ct_y-kUT.mjs');
|
|
96
96
|
let added = 0;
|
|
97
97
|
for (const [port, url] of urlEntries) {
|
|
98
98
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -129,7 +129,7 @@ async function serviceServe(args) {
|
|
|
129
129
|
console.log(`Serving ${resolvedDir}`);
|
|
130
130
|
const servePort = 18080;
|
|
131
131
|
const http = await import('http');
|
|
132
|
-
const { serveStaticMount } = await import('./run-
|
|
132
|
+
const { serveStaticMount } = await import('./run-P_rX5hRP.mjs').then(function (n) { return n.ap; });
|
|
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;
|
|
@@ -140,7 +140,7 @@ async function serviceServe(args) {
|
|
|
140
140
|
server.once("error", reject);
|
|
141
141
|
server.listen(servePort, "127.0.0.1", () => resolve());
|
|
142
142
|
});
|
|
143
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
143
|
+
const { runFrpcTunnel } = await import('./frpc-D_Z7ezPz.mjs');
|
|
144
144
|
void server;
|
|
145
145
|
await runFrpcTunnel(name, [servePort]);
|
|
146
146
|
} catch (err) {
|
|
@@ -150,7 +150,7 @@ async function serviceServe(args) {
|
|
|
150
150
|
}
|
|
151
151
|
async function serviceList(_args) {
|
|
152
152
|
try {
|
|
153
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
153
|
+
const { connectAndGetMachine } = await import('./commands-BuYofggg.mjs');
|
|
154
154
|
const { server, machine } = await connectAndGetMachine();
|
|
155
155
|
try {
|
|
156
156
|
const tunnels = await machine.tunnelList({});
|
|
@@ -190,7 +190,7 @@ async function serviceDelete(args) {
|
|
|
190
190
|
process.exit(1);
|
|
191
191
|
}
|
|
192
192
|
try {
|
|
193
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
193
|
+
const { connectAndGetMachine } = await import('./commands-BuYofggg.mjs');
|
|
194
194
|
const { server, machine } = await connectAndGetMachine();
|
|
195
195
|
try {
|
|
196
196
|
await machine.tunnelStop({ name });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { j as resolveProjectRoot,
|
|
2
|
+
import { j as resolveProjectRoot, M as workflowSteps, z as setWorkflowEnabled, E as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, D as listWorkflows, B as saveWorkflow, C as rawWorkflow } from './run-P_rX5hRP.mjs';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
|
5
5
|
import 'fs';
|
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync, execFileSync } from 'node:child_process';
|
|
3
3
|
import { basename, resolve, join, isAbsolute } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import {
|
|
5
|
+
import { a7 as formatHandle, a8 as normalizeAllowedUser, a9 as loadSecurityContextConfig, aa as resolveSecurityContext, ab as buildSecurityContextFromFlags, ac as mergeSecurityContexts, c as connectToHypha, ad as buildSessionShareUrl, ae as computeOutboundHop, i as shortId, af as registerAwaitingReply, ag as buildMachineShareUrl, ah as parseHandle, ai as handleMatchesMetadata } from './run-P_rX5hRP.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
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,
|
|
4
|
+
import { f as flushAndExit } from './cli-CFNupfRe.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, L as summarize, n as addIssue } from './run-P_rX5hRP.mjs';
|
|
6
6
|
import './serviceManager-hlOVxkhW.mjs';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
|
-
import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-
|
|
3
|
+
import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-BuYofggg.mjs';
|
|
4
4
|
import { execFileSync } from 'node:child_process';
|
|
5
|
-
import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-
|
|
5
|
+
import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-P_rX5hRP.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { writeFileSync, readFileSync } from 'fs';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
-
import { connectAndGetMachine } from './commands-
|
|
3
|
+
import { connectAndGetMachine } from './commands-BuYofggg.mjs';
|
|
4
4
|
import 'node:fs';
|
|
5
5
|
import 'node:child_process';
|
|
6
6
|
import 'node:path';
|
|
7
7
|
import 'node:os';
|
|
8
|
-
import './run-
|
|
8
|
+
import './run-P_rX5hRP.mjs';
|
|
9
9
|
import 'os';
|
|
10
10
|
import 'fs/promises';
|
|
11
11
|
import 'url';
|
|
@@ -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 {
|
|
4
|
+
import { W as parseFrontmatter, X as getSkillsServer, Y as getSkillsWorkspaceName, Z as getSkillsCollectionName, _ as fetchWithTimeout, $ as searchSkills, a0 as SKILLS_DIR, a1 as getSkillInfo, a2 as downloadSkillFile, a3 as listSkillFiles } from './run-P_rX5hRP.mjs';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
@@ -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 { c as connectToHypha } from './run-
|
|
4
|
+
import { c as connectToHypha } from './run-P_rX5hRP.mjs';
|
|
5
5
|
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-BaMR97BE.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-P_rX5hRP.mjs';
|
|
8
8
|
import 'fs/promises';
|
|
9
9
|
import 'url';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-
|
|
1
|
+
import { a4 as resolveModel, aj as describeMisconfiguration, ak as buildMachineDeps } from './run-P_rX5hRP.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BhOX0Gs4.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-P_rX5hRP.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, N as parseJwtEmail } from './run-P_rX5hRP.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.293";
|
|
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-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-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-session-access-fallback.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.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-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-idle.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-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",
|
|
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-P_rX5hRP.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 saveWorkflow, C as rawWorkflow, D 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 saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-P_rX5hRP.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 {
|
|
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-P_rX5hRP.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';
|
|
@@ -2973,7 +2973,7 @@ Connection: close\r
|
|
|
2973
2973
|
const mount = this.mounts.get(mountName);
|
|
2974
2974
|
const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
|
|
2975
2975
|
try {
|
|
2976
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
2976
|
+
const { FrpcTunnel } = await import('./frpc-D_Z7ezPz.mjs');
|
|
2977
2977
|
let tunnel;
|
|
2978
2978
|
tunnel = new FrpcTunnel({
|
|
2979
2979
|
name: tunnelName,
|
|
@@ -5869,7 +5869,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
5869
5869
|
const tunnels = handlers.tunnels;
|
|
5870
5870
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
5871
5871
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
5872
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
5872
|
+
const { FrpcTunnel } = await import('./frpc-D_Z7ezPz.mjs');
|
|
5873
5873
|
const tunnel = new FrpcTunnel({
|
|
5874
5874
|
name: params.name,
|
|
5875
5875
|
ports: params.ports,
|
|
@@ -6345,7 +6345,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6345
6345
|
}
|
|
6346
6346
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
6347
6347
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
6348
|
-
const { toolsForRole } = await import('./sideband-
|
|
6348
|
+
const { toolsForRole } = await import('./sideband-BhOX0Gs4.mjs');
|
|
6349
6349
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
6350
6350
|
return fmt(r2);
|
|
6351
6351
|
}
|
|
@@ -6450,7 +6450,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6450
6450
|
return { ok: false, call_id: callId, status: "busy", error: "channel is busy (too many concurrent requests) \u2014 retry shortly" };
|
|
6451
6451
|
}
|
|
6452
6452
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
6453
|
-
const { queryCore } = await import('./commands-
|
|
6453
|
+
const { queryCore } = await import('./commands-BuYofggg.mjs');
|
|
6454
6454
|
const timeout = c.reply?.timeout_sec || 120;
|
|
6455
6455
|
let result;
|
|
6456
6456
|
try {
|
|
@@ -6901,6 +6901,65 @@ function isRetryableRateLimit(text, apiErrorStatus) {
|
|
|
6901
6901
|
return networkTransient;
|
|
6902
6902
|
}
|
|
6903
6903
|
|
|
6904
|
+
const DEFAULT_DOWNLOAD_BASE = "https://github.com/amun-ai/hypha-cloud/releases/latest/download";
|
|
6905
|
+
function shq(v) {
|
|
6906
|
+
return `'${String(v).replace(/'/g, `'\\''`)}'`;
|
|
6907
|
+
}
|
|
6908
|
+
function psq(v) {
|
|
6909
|
+
return `'${String(v).replace(/'/g, `''`)}'`;
|
|
6910
|
+
}
|
|
6911
|
+
function buildOutpostInstall(params) {
|
|
6912
|
+
const base = params.serverBase.replace(/\/$/, "");
|
|
6913
|
+
const dl = (params.downloadBase || DEFAULT_DOWNLOAD_BASE).replace(/\/$/, "");
|
|
6914
|
+
const session = params.session || params.channel;
|
|
6915
|
+
const unix = `curl -fsSL ${shq(`${dl}/install.sh`)} | SVAMP_OUTPOST_SERVER=${shq(base)} SVAMP_OUTPOST_CHANNEL=${shq(params.channel)} SVAMP_OUTPOST_TOKEN=${shq(params.token)} SVAMP_OUTPOST_SESSION=${shq(session)} SVAMP_OUTPOST_DL=${shq(dl)} sh`;
|
|
6916
|
+
const windows = `$env:SVAMP_OUTPOST_SERVER=${psq(base)}; $env:SVAMP_OUTPOST_CHANNEL=${psq(params.channel)}; $env:SVAMP_OUTPOST_TOKEN=${psq(params.token)}; $env:SVAMP_OUTPOST_SESSION=${psq(session)}; $env:SVAMP_OUTPOST_DL=${psq(dl)}; irm ${psq(`${dl}/install.ps1`)} | iex`;
|
|
6917
|
+
const direct = `svamp-outpost --server ${shq(base)} --channel ${shq(params.channel)} --token ${shq(params.token)} --session ${shq(session)}`;
|
|
6918
|
+
return { unix, windows, direct };
|
|
6919
|
+
}
|
|
6920
|
+
|
|
6921
|
+
const DEFAULT_OUTPOST_DOWNLOAD_BASE = "https://static-outpost-bin-08c08c38.svc.hypha.aicell.io";
|
|
6922
|
+
const OUTPOST_BINARIES = [
|
|
6923
|
+
{ label: "macOS (Apple Silicon)", file: "svamp-outpost-darwin-arm64" },
|
|
6924
|
+
{ label: "macOS (Intel)", file: "svamp-outpost-darwin-amd64" },
|
|
6925
|
+
{ label: "Linux (x86-64)", file: "svamp-outpost-linux-amd64" },
|
|
6926
|
+
{ label: "Linux (arm64)", file: "svamp-outpost-linux-arm64" },
|
|
6927
|
+
{ label: "Windows (x86-64)", file: "svamp-outpost-windows-amd64.exe" }
|
|
6928
|
+
];
|
|
6929
|
+
function setupOutpostChannel(params) {
|
|
6930
|
+
const serverUrl = params.serverUrl || "https://hypha.aicell.io";
|
|
6931
|
+
const downloadBase = (params.downloadBase || DEFAULT_OUTPOST_DOWNLOAD_BASE).replace(/\/$/, "");
|
|
6932
|
+
const serverBase = gatewayBase(params.channelsServiceId, serverUrl);
|
|
6933
|
+
const channelId = `outpost-${params.session}`;
|
|
6934
|
+
const store = new ChannelStore(params.projectDir);
|
|
6935
|
+
const existing = store.get(channelId);
|
|
6936
|
+
let token = existing?.identity?.callers?.find((c) => c.name === "outpost")?.key;
|
|
6937
|
+
if (!token) token = genKey();
|
|
6938
|
+
const channel = {
|
|
6939
|
+
id: channelId,
|
|
6940
|
+
name: `Remote outpost \u2014 ${params.session}`,
|
|
6941
|
+
description: "FDE remote machine: a svamp-outpost binary connects here and the agent runs commands on it.",
|
|
6942
|
+
enabled: true,
|
|
6943
|
+
bind: { session: params.session },
|
|
6944
|
+
identity: { mode: "per-key", callers: [{ name: "outpost", kind: "agent", key: token }] },
|
|
6945
|
+
action: { kind: "message" },
|
|
6946
|
+
reply: { mode: "queue" },
|
|
6947
|
+
skill: { name: "remote-outpost", description: "Run commands on the connected remote machine." }
|
|
6948
|
+
};
|
|
6949
|
+
store.save(channel);
|
|
6950
|
+
const install = buildOutpostInstall({ serverBase, channel: channelId, token, session: params.session, downloadBase });
|
|
6951
|
+
const connectedCount = (store.get(channelId)?.last_calls || []).filter((c) => c.sender === "outpost").length;
|
|
6952
|
+
return {
|
|
6953
|
+
channelId,
|
|
6954
|
+
token,
|
|
6955
|
+
serverBase,
|
|
6956
|
+
downloadBase,
|
|
6957
|
+
install,
|
|
6958
|
+
binaries: OUTPOST_BINARIES.map((b) => ({ label: b.label, url: `${downloadBase}/${b.file}` })),
|
|
6959
|
+
connectedCount
|
|
6960
|
+
};
|
|
6961
|
+
}
|
|
6962
|
+
|
|
6904
6963
|
const PARTICIPANTS_CHANNEL_ID = "sys-participants";
|
|
6905
6964
|
function channelPublicView(c) {
|
|
6906
6965
|
const u = c.upload;
|
|
@@ -7599,6 +7658,10 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
7599
7658
|
authorizeRequest(context, metadata.sharing, "view");
|
|
7600
7659
|
return { channels: channelStore.list().filter((c) => !c.system) };
|
|
7601
7660
|
},
|
|
7661
|
+
// FDE outpost (#0589/#0593): idempotently ensure this session's outpost channel + return the
|
|
7662
|
+
// install one-liners and per-OS download links for the "Connect a remote machine" UI. Admin-gated
|
|
7663
|
+
// because the returned command carries a channel-scoped COMMAND-EXECUTION token — only the machine
|
|
7664
|
+
// admin/owner should onboard a remotely-controllable machine. Mirrors the CLI `svamp outpost up`.
|
|
7602
7665
|
saveChannel: async (channel, context) => {
|
|
7603
7666
|
authorizeRequest(context, metadata.sharing, "admin");
|
|
7604
7667
|
try {
|
|
@@ -7636,6 +7699,28 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
7636
7699
|
syncChannelsToMetadata();
|
|
7637
7700
|
return { success: !!caller, caller };
|
|
7638
7701
|
},
|
|
7702
|
+
// FDE outpost (#0589): provision (idempotently) this session's outpost channel and return the
|
|
7703
|
+
// install one-liners + direct binary download links + a best-effort connected count. The app's
|
|
7704
|
+
// "Connect a remote machine" panel calls this; it reuses the SAME setupOutpostChannel core as
|
|
7705
|
+
// `svamp outpost up`, so the channel shape + install command never drift. Admin-gated: the
|
|
7706
|
+
// returned token is a capability to run commands on whatever machine connects.
|
|
7707
|
+
outpostConnectInfo: async (params, context) => {
|
|
7708
|
+
authorizeRequest(context, metadata.sharing, "admin");
|
|
7709
|
+
if (!channelsServiceId) return { error: "the channels service is not available on this machine" };
|
|
7710
|
+
try {
|
|
7711
|
+
const info = setupOutpostChannel({
|
|
7712
|
+
session: sessionId,
|
|
7713
|
+
projectDir: metadata.path || process.cwd(),
|
|
7714
|
+
channelsServiceId,
|
|
7715
|
+
serverUrl: channelsBaseUrl,
|
|
7716
|
+
downloadBase: params?.downloadBase || process.env.SVAMP_OUTPOST_DL
|
|
7717
|
+
});
|
|
7718
|
+
syncChannelsToMetadata();
|
|
7719
|
+
return { ok: true, ...info };
|
|
7720
|
+
} catch (e) {
|
|
7721
|
+
return { error: e?.message || String(e) };
|
|
7722
|
+
}
|
|
7723
|
+
},
|
|
7639
7724
|
getChannelSkill: async (id, context) => {
|
|
7640
7725
|
authorizeRequest(context, metadata.sharing, "view");
|
|
7641
7726
|
const c = channelStore.get(id);
|
|
@@ -16274,7 +16359,7 @@ async function startDaemon(options) {
|
|
|
16274
16359
|
try {
|
|
16275
16360
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
16276
16361
|
if (!dir) return;
|
|
16277
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
16362
|
+
const { reconcileServiceLinks } = await import('./agentCommands-Ct_y-kUT.mjs');
|
|
16278
16363
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
16279
16364
|
const config = readSvampConfig(configPath);
|
|
16280
16365
|
const entries = Array.from(urls.entries());
|
|
@@ -16292,7 +16377,7 @@ async function startDaemon(options) {
|
|
|
16292
16377
|
}
|
|
16293
16378
|
}
|
|
16294
16379
|
async function createExposedTunnel(spec) {
|
|
16295
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
16380
|
+
const { FrpcTunnel } = await import('./frpc-D_Z7ezPz.mjs');
|
|
16296
16381
|
const tunnel = new FrpcTunnel({
|
|
16297
16382
|
name: spec.name,
|
|
16298
16383
|
ports: spec.ports,
|
|
@@ -18508,11 +18593,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18508
18593
|
});
|
|
18509
18594
|
},
|
|
18510
18595
|
onIssue: async (params) => {
|
|
18511
|
-
const { issueRpc } = await import('./rpc-
|
|
18596
|
+
const { issueRpc } = await import('./rpc-BnQ5dQm_.mjs');
|
|
18512
18597
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18513
18598
|
},
|
|
18514
18599
|
onWorkflow: async (params) => {
|
|
18515
|
-
const { workflowRpc } = await import('./rpc-
|
|
18600
|
+
const { workflowRpc } = await import('./rpc-DAnM-lOr.mjs');
|
|
18516
18601
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18517
18602
|
},
|
|
18518
18603
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19125,11 +19210,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19125
19210
|
});
|
|
19126
19211
|
},
|
|
19127
19212
|
onIssue: async (params) => {
|
|
19128
|
-
const { issueRpc } = await import('./rpc-
|
|
19213
|
+
const { issueRpc } = await import('./rpc-BnQ5dQm_.mjs');
|
|
19129
19214
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
19130
19215
|
},
|
|
19131
19216
|
onWorkflow: async (params) => {
|
|
19132
|
-
const { workflowRpc } = await import('./rpc-
|
|
19217
|
+
const { workflowRpc } = await import('./rpc-DAnM-lOr.mjs');
|
|
19133
19218
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
19134
19219
|
},
|
|
19135
19220
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19306,6 +19391,13 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19306
19391
|
}
|
|
19307
19392
|
}
|
|
19308
19393
|
const codexModel = codexForcedModel() || options2.model || agentConfig?.default_model || provider.model || void 0;
|
|
19394
|
+
if (codexModel && (provider.apiBase || codexForcedModel())) {
|
|
19395
|
+
sessionMetadata.models = [{ code: codexModel, value: codexModel, description: "Configured on this machine" }];
|
|
19396
|
+
try {
|
|
19397
|
+
sessionService.updateMetadata(sessionMetadata);
|
|
19398
|
+
} catch {
|
|
19399
|
+
}
|
|
19400
|
+
}
|
|
19309
19401
|
const codexPerm = codexPermissionSettings(currentPermissionMode);
|
|
19310
19402
|
logger.log(`[Agent Session ${sessionId}] Codex backend: app-server (model=${codexModel ?? "default"}${provider.apiBase ? `, provider=${provider.apiBase}` : ""}${accountDesc ? `, account=${accountDesc}` : ""}, mode=${currentPermissionMode} \u2192 approval=${codexPerm.approvalPolicy}/sandbox=${codexPerm.sandbox})`);
|
|
19311
19403
|
if (acpResumeThreadId) logger.log(`[Agent Session ${sessionId}] Resuming Codex thread ${acpResumeThreadId} (restart recovery)`);
|
|
@@ -20249,7 +20341,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
20249
20341
|
const PING_TIMEOUT_MS = 15e3;
|
|
20250
20342
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
20251
20343
|
const RECONNECT_JITTER_MS = 2500;
|
|
20252
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
20344
|
+
const { WorkflowScheduler } = await import('./scheduler-DdfPXpWh.mjs');
|
|
20253
20345
|
const workflowScheduler = new WorkflowScheduler({
|
|
20254
20346
|
projectRoots: () => {
|
|
20255
20347
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -20872,4 +20964,4 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
20872
20964
|
writeStopMarker: writeStopMarker
|
|
20873
20965
|
});
|
|
20874
20966
|
|
|
20875
|
-
export {
|
|
20967
|
+
export { searchSkills as $, removeWorkflow as A, saveWorkflow as B, rawWorkflow as C, listWorkflows as D, isWorkflowEnabled as E, workflowCrons as F, cronMatches as G, buildOutpostInstall as H, ChannelStore as I, DEFAULT_OUTPOST_DOWNLOAD_BASE as J, setupOutpostChannel as K, summarize as L, workflowSteps as M, parseJwtEmail as N, computeCollectionConfigUpdate as O, SYSTEM_COLLECTION_CONFIG as P, loadMachineContext as Q, READ_ONLY_TOOLS as R, SharingNotificationSync as S, buildMachineInstructions as T, machineToolsForRole as U, buildMachineTools as V, parseFrontmatter as W, getSkillsServer as X, getSkillsWorkspaceName as Y, getSkillsCollectionName as Z, fetchWithTimeout as _, createSessionStore as a, SKILLS_DIR as a0, getSkillInfo as a1, downloadSkillFile as a2, listSkillFiles as a3, resolveModel as a4, clearStopMarker as a5, stopMarkerExists as a6, formatHandle as a7, normalizeAllowedUser as a8, loadSecurityContextConfig as a9, api as aA, run as aB, resolveSecurityContext as aa, buildSecurityContextFromFlags as ab, mergeSecurityContexts as ac, buildSessionShareUrl as ad, computeOutboundHop as ae, registerAwaitingReply as af, buildMachineShareUrl as ag, parseHandle as ah, handleMatchesMetadata as ai, describeMisconfiguration as aj, buildMachineDeps as ak, applyClaudeProxyEnv as al, composeSessionId as am, generateFriendlyName as an, generateHookSettings as ao, staticFileServer as ap, instanceConfig as aq, claudeAuth as ar, codexProvider as as, outbox as at, projectInfo as au, DefaultTransport$1 as av, acpBackend as aw, acpAgentConfig as ax, codexAppServerBackend as ay, GeminiTransport$1 as az, stopDaemon as b, connectToHypha as c, daemonStatus as d, getFrpsSubdomainHost as e, getFrpsServerPort as f, getHyphaServerUrl$1 as g, getFrpsServerAddr as h, shortId as i, resolveProjectRoot as j, getIssue as k, resumeIssue as l, addComment as m, addIssue as n, listIssues as o, pauseIssue as p, searchIssues as q, registerMachineService as r, startDaemon as s, isVisibleTo as t, updateIssue as u, getRun as v, listRuns as w, getWorkflow as x, runWorkflow as y, setWorkflowEnabled as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-P_rX5hRP.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-BuYofggg.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-BuYofggg.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-BuYofggg.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-BuYofggg.mjs');
|
|
206
206
|
const all = hasFlag(args, "--all", "-a");
|
|
207
207
|
const json = hasFlag(args, "--json");
|
|
208
208
|
const sessionId = getFlag(args, "--session");
|
|
@@ -235,7 +235,7 @@ async function serveList(args, machineId) {
|
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
async function serveInfo(machineId) {
|
|
238
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
238
|
+
const { connectAndGetMachine } = await import('./commands-BuYofggg.mjs');
|
|
239
239
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
240
240
|
try {
|
|
241
241
|
const info = await machine.serveInfo();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as READ_ONLY_TOOLS,
|
|
1
|
+
import { R as READ_ONLY_TOOLS, Q as loadMachineContext, T as buildMachineInstructions, U as machineToolsForRole, V as buildMachineTools } from './run-P_rX5hRP.mjs';
|
|
2
2
|
import 'node:child_process';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|