svamp-cli 0.2.262 → 0.2.264
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/{agentCommands-Da1IvglZ.mjs → agentCommands-BZPDL-1B.mjs} +5 -5
- package/dist/{auth-0oP68YeR.mjs → auth-Dv8z9Dg0.mjs} +1 -1
- package/dist/cli-CNorTj26.mjs +2460 -0
- package/dist/cli.mjs +3 -2438
- package/dist/{commands-CijMDYaV.mjs → commands-BmpHRl5s.mjs} +1 -1
- package/dist/{commands-B8iRZu9B.mjs → commands-CSNOKRVn.mjs} +2 -2
- package/dist/{commands-uXRdAqOg.mjs → commands-DNyzbWPw.mjs} +6 -6
- package/dist/{commands-DvsieDv9.mjs → commands-D_YqjDY4.mjs} +4 -2
- package/dist/{commands-BO0qy2Y0.mjs → commands-Dg_nTA2I.mjs} +2 -2
- package/dist/{commands-QXKWC_Ft.mjs → commands-DuPRCS2G.mjs} +1 -1
- package/dist/{commands-CRJ6c4Ea.mjs → commands-Kk7AH5dR.mjs} +1 -1
- package/dist/{fleet-BAWJhQsC.mjs → fleet-DkFOlkxS.mjs} +1 -1
- package/dist/{frpc-B7han0nb.mjs → frpc-DmaWRu0M.mjs} +1 -1
- package/dist/{headlessCli-qwpjuvFV.mjs → headlessCli-DFsJaJ2p.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{package-BejWpjWo.mjs → package-Cz5Z0buw.mjs} +2 -2
- package/dist/{rpc-DmHEcy9B.mjs → rpc-Db3BR76v.mjs} +1 -1
- package/dist/{rpc-1svTrXB4.mjs → rpc-DswYjrCh.mjs} +1 -1
- package/dist/{run-B7I_RGWW.mjs → run-C3qTQEDV.mjs} +1 -1
- package/dist/{run-BPaC3cDA.mjs → run-kkeXP2d_.mjs} +107 -44
- package/dist/{scheduler-oOaKoCTW.mjs → scheduler-DhKDP3hC.mjs} +1 -1
- package/dist/{serveCommands-CIF6ecFk.mjs → serveCommands-BVJR3K9P.mjs} +5 -5
- package/dist/{serveManager-BiNjVxjK.mjs → serveManager-a_dIQuK4.mjs} +2 -2
- package/dist/{sideband-COSN23AN.mjs → sideband-CIJUNKUA.mjs} +1 -1
- package/package.json +2 -2
|
@@ -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 { P as parseFrontmatter, Q as getSkillsServer, T as getSkillsWorkspaceName, U as getSkillsCollectionName, V as fetchWithTimeout, W as searchSkills, X as SKILLS_DIR, Y as getSkillInfo, Z as downloadSkillFile, _ as listSkillFiles } from './run-kkeXP2d_.mjs';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
@@ -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-DuPRCS2G.mjs';
|
|
4
4
|
import { execSync } from 'node:child_process';
|
|
5
|
-
import { u as updateIssue,
|
|
5
|
+
import { u as updateIssue, o as addComment, q as addIssue, i as shortId } from './run-kkeXP2d_.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -58,7 +58,7 @@ async function serviceExpose(args) {
|
|
|
58
58
|
process.exit(1);
|
|
59
59
|
}
|
|
60
60
|
if (foreground) {
|
|
61
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
61
|
+
const { runFrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
|
|
62
62
|
await runFrpcTunnel(name, ports, void 0, {
|
|
63
63
|
group,
|
|
64
64
|
groupKey,
|
|
@@ -68,7 +68,7 @@ async function serviceExpose(args) {
|
|
|
68
68
|
});
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
71
|
+
const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
|
|
72
72
|
const { server, machine } = await connectAndGetMachine();
|
|
73
73
|
try {
|
|
74
74
|
const status = await machine.tunnelStart({
|
|
@@ -90,7 +90,7 @@ async function serviceExpose(args) {
|
|
|
90
90
|
console.log(` port ${port}: ${url}`);
|
|
91
91
|
}
|
|
92
92
|
if (process.env.SVAMP_SESSION_ID) {
|
|
93
|
-
const { autoAddSessionLink } = await import('./agentCommands-
|
|
93
|
+
const { autoAddSessionLink } = await import('./agentCommands-BZPDL-1B.mjs');
|
|
94
94
|
let added = 0;
|
|
95
95
|
for (const [port, url] of urlEntries) {
|
|
96
96
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -138,7 +138,7 @@ async function serviceServe(args) {
|
|
|
138
138
|
server.once("error", reject);
|
|
139
139
|
server.listen(servePort, "127.0.0.1", () => resolve());
|
|
140
140
|
});
|
|
141
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
141
|
+
const { runFrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
|
|
142
142
|
void server;
|
|
143
143
|
await runFrpcTunnel(name, [servePort]);
|
|
144
144
|
} catch (err) {
|
|
@@ -148,7 +148,7 @@ async function serviceServe(args) {
|
|
|
148
148
|
}
|
|
149
149
|
async function serviceList(_args) {
|
|
150
150
|
try {
|
|
151
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
151
|
+
const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
|
|
152
152
|
const { server, machine } = await connectAndGetMachine();
|
|
153
153
|
try {
|
|
154
154
|
const tunnels = await machine.tunnelList({});
|
|
@@ -188,7 +188,7 @@ async function serviceDelete(args) {
|
|
|
188
188
|
process.exit(1);
|
|
189
189
|
}
|
|
190
190
|
try {
|
|
191
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
191
|
+
const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
|
|
192
192
|
const { server, machine } = await connectAndGetMachine();
|
|
193
193
|
try {
|
|
194
194
|
await machine.tunnelStop({ name });
|
|
@@ -1,7 +1,9 @@
|
|
|
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 {
|
|
4
|
+
import { f as flushAndExit } from './cli-CNorTj26.mjs';
|
|
5
|
+
import { l as resolveProjectRoot, v as searchIssues, t as listIssues, n as resumeIssue, p as pauseIssue, o as addComment, u as updateIssue, m as getIssue, w as isVisibleTo, J as summarize, q as addIssue } from './run-kkeXP2d_.mjs';
|
|
6
|
+
import './serviceManager-hlOVxkhW.mjs';
|
|
5
7
|
import 'os';
|
|
6
8
|
import 'fs/promises';
|
|
7
9
|
import 'fs';
|
|
@@ -366,7 +368,7 @@ the user explicitly reserved): re-run with \`--blocked "<the specific blocker>"\
|
|
|
366
368
|
const pending = listIssues(root).filter(inScope).filter((i) => i.status === "ready" || i.status === "in_progress");
|
|
367
369
|
if (json) console.log(JSON.stringify(pending));
|
|
368
370
|
else out(pending.length ? `${pending.length} pending: ${pending.map((i) => "#" + i.id).join(" ")}` : "No pending issues.");
|
|
369
|
-
|
|
371
|
+
await flushAndExit(pending.length ? 1 : 0);
|
|
370
372
|
break;
|
|
371
373
|
}
|
|
372
374
|
case "search": {
|
|
@@ -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-DuPRCS2G.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-kkeXP2d_.mjs';
|
|
9
9
|
import 'os';
|
|
10
10
|
import 'fs/promises';
|
|
11
11
|
import 'url';
|
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { basename, resolve, join, isAbsolute } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop,
|
|
5
|
+
import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, i as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-kkeXP2d_.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import {
|
|
2
|
+
import { l as resolveProjectRoot, K as workflowSteps, B as setWorkflowEnabled, G as isWorkflowEnabled, C as removeWorkflow, z as getWorkflow, F as listWorkflows, D as saveWorkflow, E as rawWorkflow } from './run-kkeXP2d_.mjs';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
|
5
5
|
import 'fs';
|
|
@@ -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-kkeXP2d_.mjs';
|
|
5
5
|
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-B9O-hKxm.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 {
|
|
7
|
+
import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-kkeXP2d_.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 { $ as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-kkeXP2d_.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-CIJUNKUA.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-kkeXP2d_.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "svamp-cli";
|
|
2
|
-
var version = "0.2.
|
|
2
|
+
var version = "0.2.264";
|
|
3
3
|
var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
|
|
4
4
|
var author = "Amun AI AB";
|
|
5
5
|
var license = "SEE LICENSE IN LICENSE";
|
|
@@ -19,7 +19,7 @@ var exports$1 = {
|
|
|
19
19
|
var scripts = {
|
|
20
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
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-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.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-machine-service-logic.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-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-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-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-graceful-restart.mjs",
|
|
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-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.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-machine-service-logic.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-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-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-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-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs",
|
|
23
23
|
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
24
24
|
dev: "tsx src/cli.ts",
|
|
25
25
|
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { l as resolveProjectRoot, x as getRun, y as listRuns, z as getWorkflow, A as runWorkflow, B as setWorkflowEnabled, C as removeWorkflow, D as saveWorkflow, E as rawWorkflow, F as listWorkflows } from './run-kkeXP2d_.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { l as resolveProjectRoot, u as updateIssue, m as getIssue, n as resumeIssue, p as pauseIssue, o as addComment, q as addIssue, t as listIssues, v as searchIssues, w as isVisibleTo } from './run-kkeXP2d_.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 { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-
|
|
1
|
+
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-kkeXP2d_.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';
|
|
@@ -253,6 +253,34 @@ function mergeSecurityContexts(base, override) {
|
|
|
253
253
|
merged.allowedDirectories = mergeArrays(base.allowedDirectories, override.allowedDirectories);
|
|
254
254
|
return merged;
|
|
255
255
|
}
|
|
256
|
+
function clampSecurityContextToCeiling(ceiling, requested) {
|
|
257
|
+
if (!ceiling) return void 0;
|
|
258
|
+
if (!requested) return ceiling;
|
|
259
|
+
const merged = {};
|
|
260
|
+
merged.role = ceiling.role;
|
|
261
|
+
merged.denyAllNetwork = (ceiling.denyAllNetwork ?? false) || (requested.denyAllNetwork ?? false);
|
|
262
|
+
const cf = ceiling.filesystem;
|
|
263
|
+
const rf = requested.filesystem;
|
|
264
|
+
if (cf || rf) {
|
|
265
|
+
merged.filesystem = {
|
|
266
|
+
// Grants: ceiling only (caller cannot widen writable paths).
|
|
267
|
+
allowWrite: cf?.allowWrite ? dedup(cf.allowWrite) : void 0,
|
|
268
|
+
// Denials: union (caller may add more).
|
|
269
|
+
denyRead: mergeArrays(cf?.denyRead, rf?.denyRead),
|
|
270
|
+
denyWrite: mergeArrays(cf?.denyWrite, rf?.denyWrite)
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
const cn = ceiling.network;
|
|
274
|
+
const rn = requested.network;
|
|
275
|
+
if (cn || rn) {
|
|
276
|
+
merged.network = {
|
|
277
|
+
allowedDomains: cn?.allowedDomains ? dedup(cn.allowedDomains) : void 0,
|
|
278
|
+
deniedDomains: mergeArrays(cn?.deniedDomains, rn?.deniedDomains)
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
merged.allowedDirectories = ceiling.allowedDirectories ? dedup(ceiling.allowedDirectories) : void 0;
|
|
282
|
+
return merged;
|
|
283
|
+
}
|
|
256
284
|
function resolveSecurityContext(config, userEmail) {
|
|
257
285
|
if (!config) return void 0;
|
|
258
286
|
const defaultCtx = config.default;
|
|
@@ -2356,7 +2384,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
2356
2384
|
if (machineCtx) {
|
|
2357
2385
|
options = {
|
|
2358
2386
|
...options,
|
|
2359
|
-
securityContext: mergeSecurityContexts(machineCtx, options.securityContext)
|
|
2387
|
+
securityContext: isSharedUser ? clampSecurityContextToCeiling(machineCtx, options.securityContext) : mergeSecurityContexts(machineCtx, options.securityContext)
|
|
2360
2388
|
};
|
|
2361
2389
|
}
|
|
2362
2390
|
}
|
|
@@ -3013,7 +3041,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
3013
3041
|
const tunnels = handlers.tunnels;
|
|
3014
3042
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
3015
3043
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
3016
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
3044
|
+
const { FrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
|
|
3017
3045
|
const tunnel = new FrpcTunnel({
|
|
3018
3046
|
name: params.name,
|
|
3019
3047
|
ports: params.ports,
|
|
@@ -3480,7 +3508,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
3480
3508
|
}
|
|
3481
3509
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
3482
3510
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
3483
|
-
const { toolsForRole } = await import('./sideband-
|
|
3511
|
+
const { toolsForRole } = await import('./sideband-CIJUNKUA.mjs');
|
|
3484
3512
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
3485
3513
|
return fmt(r2);
|
|
3486
3514
|
}
|
|
@@ -3579,7 +3607,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
3579
3607
|
if (r.error || !r.sender) return { error: r.error || "unauthorized" };
|
|
3580
3608
|
const callId = "call_" + Math.random().toString(16).slice(2, 12);
|
|
3581
3609
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
3582
|
-
const { queryCore } = await import('./commands-
|
|
3610
|
+
const { queryCore } = await import('./commands-DuPRCS2G.mjs');
|
|
3583
3611
|
const timeout = c.reply?.timeout_sec || 120;
|
|
3584
3612
|
let result;
|
|
3585
3613
|
try {
|
|
@@ -8118,7 +8146,6 @@ var acpAgentConfig = /*#__PURE__*/Object.freeze({
|
|
|
8118
8146
|
function bridgeAcpToSession(backend, sessionService, getMetadata, setMetadata, log, onTurnEnd, getModelLabel) {
|
|
8119
8147
|
let pendingText = "";
|
|
8120
8148
|
let turnText = "";
|
|
8121
|
-
let flushTimer = null;
|
|
8122
8149
|
let bridgeStopped = false;
|
|
8123
8150
|
const pushAssistant = (content) => {
|
|
8124
8151
|
const model = getModelLabel?.() || "agent";
|
|
@@ -8126,28 +8153,21 @@ function bridgeAcpToSession(backend, sessionService, getMetadata, setMetadata, l
|
|
|
8126
8153
|
};
|
|
8127
8154
|
function flushText() {
|
|
8128
8155
|
if (pendingText) {
|
|
8156
|
+
turnText += pendingText;
|
|
8129
8157
|
pushAssistant([{ type: "text", text: pendingText }]);
|
|
8130
8158
|
pendingText = "";
|
|
8131
8159
|
}
|
|
8132
|
-
if (flushTimer) {
|
|
8133
|
-
clearTimeout(flushTimer);
|
|
8134
|
-
flushTimer = null;
|
|
8135
|
-
}
|
|
8136
8160
|
}
|
|
8137
8161
|
backend.onMessage((msg) => {
|
|
8138
8162
|
if (bridgeStopped) return;
|
|
8139
8163
|
switch (msg.type) {
|
|
8140
8164
|
case "model-output": {
|
|
8141
|
-
if (msg.
|
|
8142
|
-
pendingText
|
|
8143
|
-
turnText += msg.textDelta;
|
|
8144
|
-
if (!flushTimer) {
|
|
8145
|
-
flushTimer = setTimeout(flushText, 100);
|
|
8146
|
-
}
|
|
8147
|
-
} else if (msg.fullText) {
|
|
8165
|
+
if (msg.fullText) {
|
|
8166
|
+
pendingText = "";
|
|
8148
8167
|
turnText += msg.fullText;
|
|
8149
|
-
flushText();
|
|
8150
8168
|
pushAssistant([{ type: "text", text: msg.fullText }]);
|
|
8169
|
+
} else if (msg.textDelta) {
|
|
8170
|
+
pendingText += msg.textDelta;
|
|
8151
8171
|
}
|
|
8152
8172
|
break;
|
|
8153
8173
|
}
|
|
@@ -8258,10 +8278,6 @@ function bridgeAcpToSession(backend, sessionService, getMetadata, setMetadata, l
|
|
|
8258
8278
|
});
|
|
8259
8279
|
return () => {
|
|
8260
8280
|
bridgeStopped = true;
|
|
8261
|
-
if (flushTimer) {
|
|
8262
|
-
clearTimeout(flushTimer);
|
|
8263
|
-
flushTimer = null;
|
|
8264
|
-
}
|
|
8265
8281
|
pendingText = "";
|
|
8266
8282
|
};
|
|
8267
8283
|
}
|
|
@@ -8704,6 +8720,23 @@ function mapDecisionToWire(d) {
|
|
|
8704
8720
|
}
|
|
8705
8721
|
}
|
|
8706
8722
|
|
|
8723
|
+
function codexPermissionSettings(mode) {
|
|
8724
|
+
switch (mode) {
|
|
8725
|
+
case "yolo":
|
|
8726
|
+
case "bypassPermissions":
|
|
8727
|
+
case "danger-full-access":
|
|
8728
|
+
return { approvalPolicy: "never", sandbox: "danger-full-access" };
|
|
8729
|
+
case "safe-yolo":
|
|
8730
|
+
case "acceptEdits":
|
|
8731
|
+
return { approvalPolicy: "on-failure", sandbox: "workspace-write" };
|
|
8732
|
+
case "read-only":
|
|
8733
|
+
case "plan":
|
|
8734
|
+
return { approvalPolicy: "on-request", sandbox: "read-only" };
|
|
8735
|
+
case "default":
|
|
8736
|
+
default:
|
|
8737
|
+
return { approvalPolicy: "on-request", sandbox: "workspace-write" };
|
|
8738
|
+
}
|
|
8739
|
+
}
|
|
8707
8740
|
const CODEX_PROVIDER_KEY_ENV = "SVAMP_CODEX_API_KEY";
|
|
8708
8741
|
const PROVIDER_NAME = "svamp";
|
|
8709
8742
|
function resolveCodexProvider(env = process.env) {
|
|
@@ -8740,6 +8773,7 @@ var codexProvider = /*#__PURE__*/Object.freeze({
|
|
|
8740
8773
|
__proto__: null,
|
|
8741
8774
|
CODEX_PROVIDER_KEY_ENV: CODEX_PROVIDER_KEY_ENV,
|
|
8742
8775
|
buildCodexProviderArgs: buildCodexProviderArgs,
|
|
8776
|
+
codexPermissionSettings: codexPermissionSettings,
|
|
8743
8777
|
hasCustomProvider: hasCustomProvider,
|
|
8744
8778
|
resolveCodexProvider: resolveCodexProvider
|
|
8745
8779
|
});
|
|
@@ -8752,6 +8786,8 @@ class CodexAppServerBackend {
|
|
|
8752
8786
|
const provider = opts.provider ?? resolveCodexProvider();
|
|
8753
8787
|
const { configArgs, env: providerEnv, model: providerModel } = buildCodexProviderArgs(provider);
|
|
8754
8788
|
this.model = opts.model ?? providerModel;
|
|
8789
|
+
this.approvalPolicy = opts.approvalPolicy;
|
|
8790
|
+
this.sandbox = opts.sandbox;
|
|
8755
8791
|
this.client = new CodexAppServerClient({
|
|
8756
8792
|
cwd: opts.cwd,
|
|
8757
8793
|
env: { ...opts.env ?? {}, ...providerEnv },
|
|
@@ -8768,6 +8804,11 @@ class CodexAppServerBackend {
|
|
|
8768
8804
|
sessionId = randomUUID();
|
|
8769
8805
|
log;
|
|
8770
8806
|
model;
|
|
8807
|
+
// #0438: codex's own approval policy + sandbox, derived from the svamp permission mode. Mutable
|
|
8808
|
+
// so a mid-session switchMode takes effect on the next turn. yolo → 'never' + 'danger-full-access'
|
|
8809
|
+
// so codex NEVER prompts for writes (and never times out waiting on a prompt).
|
|
8810
|
+
approvalPolicy;
|
|
8811
|
+
sandbox;
|
|
8771
8812
|
started = false;
|
|
8772
8813
|
// Approval promises keyed by callId, resolved by respondToPermission().
|
|
8773
8814
|
pendingApprovals = /* @__PURE__ */ new Map();
|
|
@@ -8791,9 +8832,9 @@ class CodexAppServerBackend {
|
|
|
8791
8832
|
if (avail === false) throw new Error("Installed Codex is too old for app-server \u2014 upgrade to >= 0.100 (`npm i -g @openai/codex@latest`).");
|
|
8792
8833
|
await this.client.start();
|
|
8793
8834
|
if (this.opts.resumeThreadId) {
|
|
8794
|
-
await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.
|
|
8835
|
+
await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
|
|
8795
8836
|
} else {
|
|
8796
|
-
const r = await this.client.startThread({ model: this.model, approvalPolicy: this.
|
|
8837
|
+
const r = await this.client.startThread({ model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
|
|
8797
8838
|
this.model = this.model ?? r.model;
|
|
8798
8839
|
}
|
|
8799
8840
|
this.started = true;
|
|
@@ -8810,7 +8851,7 @@ class CodexAppServerBackend {
|
|
|
8810
8851
|
resolveTurn = res;
|
|
8811
8852
|
});
|
|
8812
8853
|
try {
|
|
8813
|
-
await this.client.sendTurnAndWait(prompt, { model: this.model, approvalPolicy: this.
|
|
8854
|
+
await this.client.sendTurnAndWait(prompt, { model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
|
|
8814
8855
|
} catch (err) {
|
|
8815
8856
|
this.emit({ type: "status", status: "error", detail: err instanceof Error ? err.message : String(err) });
|
|
8816
8857
|
} finally {
|
|
@@ -8861,6 +8902,12 @@ class CodexAppServerBackend {
|
|
|
8861
8902
|
setModel(model) {
|
|
8862
8903
|
this.model = model;
|
|
8863
8904
|
}
|
|
8905
|
+
/** #0438: update codex's approval policy + sandbox (from a svamp permission-mode switch). Takes
|
|
8906
|
+
* effect on the next turn (and next thread start). yolo → 'never' + 'danger-full-access'. */
|
|
8907
|
+
setPermission(approvalPolicy, sandbox) {
|
|
8908
|
+
this.approvalPolicy = approvalPolicy;
|
|
8909
|
+
this.sandbox = sandbox;
|
|
8910
|
+
}
|
|
8864
8911
|
/** The model label for assistant-message parity with Claude (frontend schema requires a non-empty `model`). */
|
|
8865
8912
|
getModel() {
|
|
8866
8913
|
return this.model || "codex";
|
|
@@ -8911,10 +8958,7 @@ class CodexAppServerBackend {
|
|
|
8911
8958
|
break;
|
|
8912
8959
|
}
|
|
8913
8960
|
case "agent_message": {
|
|
8914
|
-
|
|
8915
|
-
this.streamedThisMessage = false;
|
|
8916
|
-
break;
|
|
8917
|
-
}
|
|
8961
|
+
this.streamedThisMessage = false;
|
|
8918
8962
|
const text = mapCodexEventToText(event);
|
|
8919
8963
|
if (text) this.emit({ type: "model-output", fullText: text });
|
|
8920
8964
|
break;
|
|
@@ -12000,17 +12044,31 @@ function resolveEvaluatorModel(envValue) {
|
|
|
12000
12044
|
function parseEvaluatorVerdict(text) {
|
|
12001
12045
|
if (!text) return null;
|
|
12002
12046
|
const candidates = [];
|
|
12003
|
-
let depth = 0, start = -1;
|
|
12047
|
+
let depth = 0, start = -1, inStr = false, esc = false;
|
|
12004
12048
|
for (let i = 0; i < text.length; i++) {
|
|
12005
12049
|
const c = text[i];
|
|
12006
|
-
if (
|
|
12050
|
+
if (inStr) {
|
|
12051
|
+
if (esc) {
|
|
12052
|
+
esc = false;
|
|
12053
|
+
} else if (c === "\\") {
|
|
12054
|
+
esc = true;
|
|
12055
|
+
} else if (c === '"') {
|
|
12056
|
+
inStr = false;
|
|
12057
|
+
}
|
|
12058
|
+
continue;
|
|
12059
|
+
}
|
|
12060
|
+
if (c === '"') {
|
|
12061
|
+
inStr = true;
|
|
12062
|
+
} else if (c === "{") {
|
|
12007
12063
|
if (depth === 0) start = i;
|
|
12008
12064
|
depth++;
|
|
12009
12065
|
} else if (c === "}") {
|
|
12010
|
-
depth
|
|
12011
|
-
|
|
12012
|
-
|
|
12013
|
-
|
|
12066
|
+
if (depth > 0) {
|
|
12067
|
+
depth--;
|
|
12068
|
+
if (depth === 0 && start >= 0) {
|
|
12069
|
+
candidates.push(text.slice(start, i + 1));
|
|
12070
|
+
start = -1;
|
|
12071
|
+
}
|
|
12014
12072
|
}
|
|
12015
12073
|
}
|
|
12016
12074
|
}
|
|
@@ -13882,7 +13940,7 @@ async function startDaemon(options) {
|
|
|
13882
13940
|
try {
|
|
13883
13941
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
13884
13942
|
if (!dir) return;
|
|
13885
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
13943
|
+
const { reconcileServiceLinks } = await import('./agentCommands-BZPDL-1B.mjs');
|
|
13886
13944
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
13887
13945
|
const config = readSvampConfig(configPath);
|
|
13888
13946
|
const entries = Array.from(urls.entries());
|
|
@@ -13900,7 +13958,7 @@ async function startDaemon(options) {
|
|
|
13900
13958
|
}
|
|
13901
13959
|
}
|
|
13902
13960
|
async function createExposedTunnel(spec) {
|
|
13903
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
13961
|
+
const { FrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
|
|
13904
13962
|
const tunnel = new FrpcTunnel({
|
|
13905
13963
|
name: spec.name,
|
|
13906
13964
|
ports: spec.ports,
|
|
@@ -13921,7 +13979,7 @@ async function startDaemon(options) {
|
|
|
13921
13979
|
}
|
|
13922
13980
|
const tunnelRecreateState = /* @__PURE__ */ new Map();
|
|
13923
13981
|
const tunnelRecreateInFlight = /* @__PURE__ */ new Set();
|
|
13924
|
-
const { ServeManager } = await import('./serveManager-
|
|
13982
|
+
const { ServeManager } = await import('./serveManager-a_dIQuK4.mjs');
|
|
13925
13983
|
const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
|
|
13926
13984
|
ensureAutoInstalledSkills(logger).catch(() => {
|
|
13927
13985
|
});
|
|
@@ -16043,11 +16101,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
16043
16101
|
});
|
|
16044
16102
|
},
|
|
16045
16103
|
onIssue: async (params) => {
|
|
16046
|
-
const { issueRpc } = await import('./rpc-
|
|
16104
|
+
const { issueRpc } = await import('./rpc-DswYjrCh.mjs');
|
|
16047
16105
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
16048
16106
|
},
|
|
16049
16107
|
onWorkflow: async (params) => {
|
|
16050
|
-
const { workflowRpc } = await import('./rpc-
|
|
16108
|
+
const { workflowRpc } = await import('./rpc-Db3BR76v.mjs');
|
|
16051
16109
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
16052
16110
|
},
|
|
16053
16111
|
onRipgrep: async (args, cwd) => {
|
|
@@ -16441,6 +16499,8 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
16441
16499
|
if (currentPermissionMode === mode) return;
|
|
16442
16500
|
logger.log(`[${agentName} Session ${sessionId}] Switch mode: ${mode}`);
|
|
16443
16501
|
currentPermissionMode = mode;
|
|
16502
|
+
const cp = codexPermissionSettings(mode);
|
|
16503
|
+
agentBackend.setPermission?.(cp.approvalPolicy, cp.sandbox);
|
|
16444
16504
|
},
|
|
16445
16505
|
onRestartClaude: async () => {
|
|
16446
16506
|
logger.log(`[${agentName} Session ${sessionId}] Restart agent requested`);
|
|
@@ -16603,11 +16663,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
16603
16663
|
});
|
|
16604
16664
|
},
|
|
16605
16665
|
onIssue: async (params) => {
|
|
16606
|
-
const { issueRpc } = await import('./rpc-
|
|
16666
|
+
const { issueRpc } = await import('./rpc-DswYjrCh.mjs');
|
|
16607
16667
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
16608
16668
|
},
|
|
16609
16669
|
onWorkflow: async (params) => {
|
|
16610
|
-
const { workflowRpc } = await import('./rpc-
|
|
16670
|
+
const { workflowRpc } = await import('./rpc-Db3BR76v.mjs');
|
|
16611
16671
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
16612
16672
|
},
|
|
16613
16673
|
onRipgrep: async (args, cwd) => {
|
|
@@ -16760,7 +16820,8 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
16760
16820
|
if (avail === false) throw new Error("Installed Codex is too old for app-server \u2014 upgrade to >= 0.100 (`npm i -g @openai/codex@latest`).");
|
|
16761
16821
|
const provider = resolveCodexProvider();
|
|
16762
16822
|
const codexModel = options2.model || agentConfig?.default_model || provider.model || void 0;
|
|
16763
|
-
|
|
16823
|
+
const codexPerm = codexPermissionSettings(currentPermissionMode);
|
|
16824
|
+
logger.log(`[Agent Session ${sessionId}] Codex backend: app-server (model=${codexModel ?? "default"}${provider.apiBase ? `, provider=${provider.apiBase}` : ""}, mode=${currentPermissionMode} \u2192 approval=${codexPerm.approvalPolicy}/sandbox=${codexPerm.sandbox})`);
|
|
16764
16825
|
if (acpResumeThreadId) logger.log(`[Agent Session ${sessionId}] Resuming Codex thread ${acpResumeThreadId} (restart recovery)`);
|
|
16765
16826
|
agentBackend = new CodexAppServerBackend({
|
|
16766
16827
|
cwd: directory,
|
|
@@ -16769,6 +16830,8 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
16769
16830
|
env: options2.environmentVariables,
|
|
16770
16831
|
log: logger.log,
|
|
16771
16832
|
isolationConfig: agentIsoConfig,
|
|
16833
|
+
approvalPolicy: codexPerm.approvalPolicy,
|
|
16834
|
+
sandbox: codexPerm.sandbox,
|
|
16772
16835
|
// #0412 P2: resume the persisted thread across a daemon restart (context intact).
|
|
16773
16836
|
resumeThreadId: acpResumeThreadId
|
|
16774
16837
|
});
|
|
@@ -17615,7 +17678,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
17615
17678
|
const PING_TIMEOUT_MS = 15e3;
|
|
17616
17679
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
17617
17680
|
const RECONNECT_JITTER_MS = 2500;
|
|
17618
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
17681
|
+
const { WorkflowScheduler } = await import('./scheduler-DhKDP3hC.mjs');
|
|
17619
17682
|
const workflowScheduler = new WorkflowScheduler({
|
|
17620
17683
|
projectRoots: () => {
|
|
17621
17684
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -18226,4 +18289,4 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
18226
18289
|
writeStopMarker: writeStopMarker
|
|
18227
18290
|
});
|
|
18228
18291
|
|
|
18229
|
-
export {
|
|
18292
|
+
export { resolveModel as $, runWorkflow as A, setWorkflowEnabled as B, removeWorkflow as C, saveWorkflow as D, rawWorkflow as E, listWorkflows as F, isWorkflowEnabled as G, workflowCrons as H, cronMatches as I, summarize as J, workflowSteps as K, loadMachineContext as L, buildMachineInstructions as M, machineToolsForRole as N, buildMachineTools as O, parseFrontmatter as P, getSkillsServer as Q, READ_ONLY_TOOLS as R, ServeAuth as S, getSkillsWorkspaceName as T, getSkillsCollectionName as U, fetchWithTimeout as V, searchSkills as W, SKILLS_DIR as X, getSkillInfo as Y, downloadSkillFile as Z, listSkillFiles as _, createSessionStore as a, clearStopMarker as a0, stopMarkerExists as a1, formatHandle as a2, normalizeAllowedUser as a3, loadSecurityContextConfig as a4, resolveSecurityContext as a5, buildSecurityContextFromFlags as a6, mergeSecurityContexts as a7, buildSessionShareUrl as a8, computeOutboundHop as a9, registerAwaitingReply as aa, buildMachineShareUrl as ab, parseHandle as ac, handleMatchesMetadata as ad, describeMisconfiguration as ae, buildMachineDeps as af, applyClaudeProxyEnv as ag, composeSessionId as ah, generateFriendlyName as ai, generateHookSettings as aj, claudeAuth as ak, projectInfo as al, DefaultTransport$1 as am, acpBackend as an, acpAgentConfig as ao, codexProvider as ap, codexAppServerBackend as aq, GeminiTransport$1 as ar, instanceConfig as as, api as at, run as au, 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, getHyphaServerUrl as j, hasCookieToken as k, resolveProjectRoot as l, getIssue as m, resumeIssue as n, addComment as o, pauseIssue as p, addIssue as q, registerMachineService as r, startDaemon as s, listIssues as t, updateIssue as u, searchIssues as v, isVisibleTo as w, getRun as x, listRuns as y, getWorkflow as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { l as resolveProjectRoot, F as listWorkflows, G as isWorkflowEnabled, H as workflowCrons, A as runWorkflow, I as cronMatches } from './run-kkeXP2d_.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|