svamp-cli 0.2.276 → 0.2.278
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-DYduijxc.mjs → agentCommands-SejhmIxj.mjs} +5 -5
- package/dist/{auth-DF4dUys9.mjs → auth-Bp-lcNvX.mjs} +1 -1
- package/dist/{cli-BrZuHfQa.mjs → cli-DXiODLrJ.mjs} +95 -63
- package/dist/cli.mjs +2 -2
- package/dist/{commands-DLlgY23R.mjs → commands-3oQU6Zbl.mjs} +1 -1
- package/dist/{commands-clA49kHW.mjs → commands-BXRsOufU.mjs} +7 -7
- package/dist/{commands-DINv6746.mjs → commands-BiJbQChb.mjs} +1 -1
- package/dist/{commands-7WZLaYv2.mjs → commands-BzMbBsGM.mjs} +2 -2
- package/dist/{commands-Cxn4Cmts.mjs → commands-CBIRneT7.mjs} +8 -7
- package/dist/{commands-BjkRYbLw.mjs → commands-D95wyAGb.mjs} +2 -2
- package/dist/{commands-DvD1mdMU.mjs → commands-DmebpYk0.mjs} +2 -2
- package/dist/{fleet-xyz1ik_N.mjs → fleet-CIFev16_.mjs} +2 -2
- package/dist/{frpc-BkGcc69x.mjs → frpc-Czt8diGB.mjs} +1 -1
- package/dist/{headlessCli-Je1q_pDw.mjs → headlessCli-CfRDf2kB.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/notifyCommands-Db7qJUME.mjs +128 -0
- package/dist/package-Cbe1TG7k.mjs +64 -0
- package/dist/{pinnedClaudeCode-D8Tbz32G.mjs → pinnedClaudeCode-BaMR97BE.mjs} +1 -1
- package/dist/{rpc-CBa5WaBD.mjs → rpc-AkzY2NVv.mjs} +1 -3
- package/dist/{rpc-HiJYPcOU.mjs → rpc-B_zN6Jvr.mjs} +1 -1
- package/dist/{run-BRHMebDp.mjs → run-CRuLlPmv.mjs} +1 -1
- package/dist/{run-DjThStDG.mjs → run-CumVWywx.mjs} +103 -26
- package/dist/{scheduler-D1JpZ5m8.mjs → scheduler-MPYVrdzd.mjs} +1 -1
- package/dist/{serveCommands-D-3LtTUy.mjs → serveCommands-DPVITK3a.mjs} +5 -5
- package/dist/{sideband-DdcXgJHf.mjs → sideband-CHcbWta4.mjs} +1 -1
- package/package.json +2 -2
- package/dist/package-D3rksT8O.mjs +0 -64
|
@@ -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-Czt8diGB.mjs');
|
|
2977
2977
|
let tunnel;
|
|
2978
2978
|
tunnel = new FrpcTunnel({
|
|
2979
2979
|
name: tunnelName,
|
|
@@ -5816,7 +5816,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
5816
5816
|
const tunnels = handlers.tunnels;
|
|
5817
5817
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
5818
5818
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
5819
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
5819
|
+
const { FrpcTunnel } = await import('./frpc-Czt8diGB.mjs');
|
|
5820
5820
|
const tunnel = new FrpcTunnel({
|
|
5821
5821
|
name: params.name,
|
|
5822
5822
|
ports: params.ports,
|
|
@@ -6292,7 +6292,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6292
6292
|
}
|
|
6293
6293
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
6294
6294
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
6295
|
-
const { toolsForRole } = await import('./sideband-
|
|
6295
|
+
const { toolsForRole } = await import('./sideband-CHcbWta4.mjs');
|
|
6296
6296
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
6297
6297
|
return fmt(r2);
|
|
6298
6298
|
}
|
|
@@ -6391,7 +6391,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6391
6391
|
if (r.error || !r.sender) return { error: r.error || "unauthorized" };
|
|
6392
6392
|
const callId = "call_" + Math.random().toString(16).slice(2, 12);
|
|
6393
6393
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
6394
|
-
const { queryCore } = await import('./commands-
|
|
6394
|
+
const { queryCore } = await import('./commands-BiJbQChb.mjs');
|
|
6395
6395
|
const timeout = c.reply?.timeout_sec || 120;
|
|
6396
6396
|
let result;
|
|
6397
6397
|
try {
|
|
@@ -6824,11 +6824,10 @@ function computeRetryDelayMs(attempt, cfg = getRateLimitRetryConfig(), rng = Mat
|
|
|
6824
6824
|
}
|
|
6825
6825
|
function isRetryableRateLimit(text, apiErrorStatus) {
|
|
6826
6826
|
const t = (text || "").toLowerCase();
|
|
6827
|
-
const
|
|
6828
|
-
|
|
6829
|
-
|
|
6830
|
-
|
|
6831
|
-
t.includes("spending limit") || t.includes("credit") || t.includes("balance") || t.includes("billing") || t.includes("payment") || t.includes("subscription") || t.includes("1m-context") || t.includes("1m context") || t.includes("insufficient") || t.includes("usage limit") && !t.includes("not your usage limit");
|
|
6827
|
+
const strongHardLimit = t.includes("quota") || t.includes("spending limit") || t.includes("payment") || t.includes("subscription") || t.includes("1m-context") || t.includes("1m context") || t.includes("insufficient") || t.includes("usage limit") && !t.includes("not your usage limit");
|
|
6828
|
+
const serverFaultSignal = typeof apiErrorStatus === "number" && apiErrorStatus >= 500 && apiErrorStatus <= 599 || /\b(500|502|503|504|520|521|522|523|524|529)\b/.test(t);
|
|
6829
|
+
const weakBillingLimit = !serverFaultSignal && (t.includes("credit") || t.includes("balance") || t.includes("billing"));
|
|
6830
|
+
const hardLimit = strongHardLimit || weakBillingLimit;
|
|
6832
6831
|
if (hardLimit) return false;
|
|
6833
6832
|
const authIssue = apiErrorStatus === 401 || apiErrorStatus === 403 || t.includes("unauthorized") || t.includes("invalid api key") || t.includes("authentication") || t.includes("forbidden");
|
|
6834
6833
|
if (authIssue) return false;
|
|
@@ -9449,6 +9448,7 @@ class SessionArtifactSync {
|
|
|
9449
9448
|
|
|
9450
9449
|
const SHARE_COLLECTION_ALIAS = "svamp-shared-sessions";
|
|
9451
9450
|
const EVENT_COLLECTION_ALIAS = "svamp-user-events";
|
|
9451
|
+
const RECIPIENT_SCOPING_CONFIG = { recipient_field: "recipientEmail", private_children: true };
|
|
9452
9452
|
function emailHash(email) {
|
|
9453
9453
|
return createHash("sha256").update(email.toLowerCase()).digest("hex").slice(0, 12);
|
|
9454
9454
|
}
|
|
@@ -9477,10 +9477,10 @@ class SharingNotificationSync {
|
|
|
9477
9477
|
return;
|
|
9478
9478
|
}
|
|
9479
9479
|
await Promise.all([
|
|
9480
|
-
this.ensureCollection(SHARE_COLLECTION_ALIAS, "Svamp Shared Sessions", "Cross-workspace share notifications for session/machine bookmarks").then((id) => {
|
|
9480
|
+
this.ensureCollection(SHARE_COLLECTION_ALIAS, "Svamp Shared Sessions", "Cross-workspace share notifications for session/machine bookmarks", RECIPIENT_SCOPING_CONFIG).then((id) => {
|
|
9481
9481
|
this.shareCollectionId = id;
|
|
9482
9482
|
}),
|
|
9483
|
-
this.ensureCollection(EVENT_COLLECTION_ALIAS, "Svamp User Events", "General-purpose user event inbox for bell notifications").then((id) => {
|
|
9483
|
+
this.ensureCollection(EVENT_COLLECTION_ALIAS, "Svamp User Events", "General-purpose user event inbox for bell notifications", RECIPIENT_SCOPING_CONFIG).then((id) => {
|
|
9484
9484
|
this.eventCollectionId = id;
|
|
9485
9485
|
})
|
|
9486
9486
|
]);
|
|
@@ -9490,7 +9490,7 @@ class SharingNotificationSync {
|
|
|
9490
9490
|
this.log(`[SHARING NOTIFY] Init failed: ${err.message}`);
|
|
9491
9491
|
}
|
|
9492
9492
|
}
|
|
9493
|
-
async ensureCollection(alias, name, description) {
|
|
9493
|
+
async ensureCollection(alias, name, description, extraConfig) {
|
|
9494
9494
|
try {
|
|
9495
9495
|
const existing = await this.artifactManager.read({
|
|
9496
9496
|
artifact_id: alias,
|
|
@@ -9503,7 +9503,7 @@ class SharingNotificationSync {
|
|
|
9503
9503
|
type: "collection",
|
|
9504
9504
|
stage: true,
|
|
9505
9505
|
manifest: { name, description },
|
|
9506
|
-
config: { permissions: { "*": "r", "@": "rw+" } },
|
|
9506
|
+
config: { permissions: { "*": "r", "@": "rw+" }, ...extraConfig || {} },
|
|
9507
9507
|
_rkwargs: true
|
|
9508
9508
|
});
|
|
9509
9509
|
await this.artifactManager.commit({
|
|
@@ -9664,6 +9664,52 @@ class SharingNotificationSync {
|
|
|
9664
9664
|
this.log(`[USER EVENT] Failed to publish ${event.type} for ${event.recipientEmail}: ${err.message}`);
|
|
9665
9665
|
}
|
|
9666
9666
|
}
|
|
9667
|
+
/**
|
|
9668
|
+
* List user events addressed to `recipientEmail` (the bell inbox), newest first, excluding
|
|
9669
|
+
* expired ones. Reuses the global svamp-user-events collection — cross-workspace by design.
|
|
9670
|
+
* Mirrors the webapp's fetchUserEvents so the CLI reads the same source of truth.
|
|
9671
|
+
*/
|
|
9672
|
+
async listUserEvents(recipientEmail) {
|
|
9673
|
+
if (!this.initialized || !this.eventCollectionId) return [];
|
|
9674
|
+
const normalized = recipientEmail.toLowerCase();
|
|
9675
|
+
try {
|
|
9676
|
+
const children = await this.artifactManager.list({
|
|
9677
|
+
parent_id: this.eventCollectionId,
|
|
9678
|
+
_rkwargs: true
|
|
9679
|
+
});
|
|
9680
|
+
if (!Array.isArray(children)) return [];
|
|
9681
|
+
const now = Date.now();
|
|
9682
|
+
return children.map((c) => c?.manifest).filter((m) => !!m && typeof m.recipientEmail === "string" && m.recipientEmail.toLowerCase() === normalized && (!m.expiresAt || m.expiresAt > now)).sort((a, b) => (b.createdAt || 0) - (a.createdAt || 0));
|
|
9683
|
+
} catch (err) {
|
|
9684
|
+
this.log(`[USER EVENT] listUserEvents failed for ${recipientEmail}: ${err.message}`);
|
|
9685
|
+
return [];
|
|
9686
|
+
}
|
|
9687
|
+
}
|
|
9688
|
+
/**
|
|
9689
|
+
* Acknowledge (dismiss) a user event by deleting its artifact. The alias is derived from the
|
|
9690
|
+
* event id + recipient email, so only the recipient's own event is removed. Returns true if a
|
|
9691
|
+
* matching event was deleted.
|
|
9692
|
+
*/
|
|
9693
|
+
async ackUserEvent(eventId, recipientEmail) {
|
|
9694
|
+
if (!this.initialized || !this.eventCollectionId) return false;
|
|
9695
|
+
const normalized = recipientEmail.toLowerCase();
|
|
9696
|
+
try {
|
|
9697
|
+
const children = await this.artifactManager.list({ parent_id: this.eventCollectionId, _rkwargs: true });
|
|
9698
|
+
if (!Array.isArray(children)) return false;
|
|
9699
|
+
const short = eventId.slice(0, 8);
|
|
9700
|
+
const match = children.find((c) => {
|
|
9701
|
+
const m = c?.manifest;
|
|
9702
|
+
return m && typeof m.id === "string" && (m.id === eventId || m.id.slice(0, 8) === short) && typeof m.recipientEmail === "string" && m.recipientEmail.toLowerCase() === normalized;
|
|
9703
|
+
});
|
|
9704
|
+
if (!match) return false;
|
|
9705
|
+
await this.artifactManager.delete({ artifact_id: match.id, _rkwargs: true });
|
|
9706
|
+
this.log(`[USER EVENT] Acked ${eventId.slice(0, 8)} for ${recipientEmail}`);
|
|
9707
|
+
return true;
|
|
9708
|
+
} catch (err) {
|
|
9709
|
+
this.log(`[USER EVENT] ackUserEvent failed for ${recipientEmail}: ${err.message}`);
|
|
9710
|
+
return false;
|
|
9711
|
+
}
|
|
9712
|
+
}
|
|
9667
9713
|
// ── Sharing config diff + sync ───────────────────────────────────
|
|
9668
9714
|
async syncSharing(sessionId, oldSharing, newSharing, context) {
|
|
9669
9715
|
if (!this.initialized) return;
|
|
@@ -11487,7 +11533,13 @@ class CodexAppServerBackend {
|
|
|
11487
11533
|
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`).");
|
|
11488
11534
|
await this.client.start();
|
|
11489
11535
|
if (this.opts.resumeThreadId) {
|
|
11490
|
-
|
|
11536
|
+
try {
|
|
11537
|
+
await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
|
|
11538
|
+
} catch (err) {
|
|
11539
|
+
this.log(`[Codex] resumeThread(${this.opts.resumeThreadId}) failed (${err?.message ?? err}) \u2014 starting a fresh thread instead (context lost, session preserved)`);
|
|
11540
|
+
const r = await this.client.startThread({ model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
|
|
11541
|
+
this.model = this.model ?? r.model;
|
|
11542
|
+
}
|
|
11491
11543
|
} else {
|
|
11492
11544
|
const r = await this.client.startThread({ model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
|
|
11493
11545
|
this.model = this.model ?? r.model;
|
|
@@ -16133,7 +16185,7 @@ async function startDaemon(options) {
|
|
|
16133
16185
|
try {
|
|
16134
16186
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
16135
16187
|
if (!dir) return;
|
|
16136
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
16188
|
+
const { reconcileServiceLinks } = await import('./agentCommands-SejhmIxj.mjs');
|
|
16137
16189
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
16138
16190
|
const config = readSvampConfig(configPath);
|
|
16139
16191
|
const entries = Array.from(urls.entries());
|
|
@@ -16151,7 +16203,7 @@ async function startDaemon(options) {
|
|
|
16151
16203
|
}
|
|
16152
16204
|
}
|
|
16153
16205
|
async function createExposedTunnel(spec) {
|
|
16154
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
16206
|
+
const { FrpcTunnel } = await import('./frpc-Czt8diGB.mjs');
|
|
16155
16207
|
const tunnel = new FrpcTunnel({
|
|
16156
16208
|
name: spec.name,
|
|
16157
16209
|
ports: spec.ports,
|
|
@@ -16179,7 +16231,7 @@ async function startDaemon(options) {
|
|
|
16179
16231
|
ensureAutoInstalledCommands(logger);
|
|
16180
16232
|
(async () => {
|
|
16181
16233
|
try {
|
|
16182
|
-
const { beginClaudeVersionReconcile } = await import('./pinnedClaudeCode-
|
|
16234
|
+
const { beginClaudeVersionReconcile } = await import('./pinnedClaudeCode-BaMR97BE.mjs');
|
|
16183
16235
|
beginClaudeVersionReconcile((msg) => logger.log(msg));
|
|
16184
16236
|
} catch (e) {
|
|
16185
16237
|
logger.log(`[claude-version] check failed: ${e?.message || e}`);
|
|
@@ -18367,11 +18419,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18367
18419
|
});
|
|
18368
18420
|
},
|
|
18369
18421
|
onIssue: async (params) => {
|
|
18370
|
-
const { issueRpc } = await import('./rpc-
|
|
18422
|
+
const { issueRpc } = await import('./rpc-B_zN6Jvr.mjs');
|
|
18371
18423
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18372
18424
|
},
|
|
18373
18425
|
onWorkflow: async (params) => {
|
|
18374
|
-
const { workflowRpc } = await import('./rpc-
|
|
18426
|
+
const { workflowRpc } = await import('./rpc-AkzY2NVv.mjs');
|
|
18375
18427
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18376
18428
|
},
|
|
18377
18429
|
onRipgrep: async (args, cwd) => {
|
|
@@ -18983,11 +19035,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18983
19035
|
});
|
|
18984
19036
|
},
|
|
18985
19037
|
onIssue: async (params) => {
|
|
18986
|
-
const { issueRpc } = await import('./rpc-
|
|
19038
|
+
const { issueRpc } = await import('./rpc-B_zN6Jvr.mjs');
|
|
18987
19039
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18988
19040
|
},
|
|
18989
19041
|
onWorkflow: async (params) => {
|
|
18990
|
-
const { workflowRpc } = await import('./rpc-
|
|
19042
|
+
const { workflowRpc } = await import('./rpc-AkzY2NVv.mjs');
|
|
18991
19043
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18992
19044
|
},
|
|
18993
19045
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19489,7 +19541,11 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
19489
19541
|
"event"
|
|
19490
19542
|
);
|
|
19491
19543
|
sessionService.sendSessionEnd();
|
|
19492
|
-
|
|
19544
|
+
if (!acpPersisted) {
|
|
19545
|
+
deleteSession(sessionId);
|
|
19546
|
+
} else {
|
|
19547
|
+
logger.log(`[Agent Session ${sessionId}] start failed on restore \u2014 preserving persisted session for a later retry (not deleting)`);
|
|
19548
|
+
}
|
|
19493
19549
|
});
|
|
19494
19550
|
return {
|
|
19495
19551
|
type: "success",
|
|
@@ -19631,13 +19687,16 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
19631
19687
|
logger.log(`Restored machine metadata (sharing=${!!persistedMachineMeta.sharing}, securityContextConfig=${!!persistedMachineMeta.securityContextConfig}, injectPlatformGuidance=${persistedMachineMeta.injectPlatformGuidance})`);
|
|
19632
19688
|
}
|
|
19633
19689
|
let seededSharing = persistedMachineMeta?.sharing;
|
|
19690
|
+
let seedShareNotify = null;
|
|
19634
19691
|
const seedEmails = parseDaemonShareEmails(process.env[DAEMON_SHARE_EMAILS_ENV]);
|
|
19635
19692
|
if (seedEmails.length > 0) {
|
|
19636
19693
|
const ownerEmail = parseJwtEmail(process.env.HYPHA_TOKEN || "") || void 0;
|
|
19694
|
+
const preSeedSharing = seededSharing;
|
|
19637
19695
|
const result = applyDaemonShareSeed(seededSharing, seedEmails, ownerEmail);
|
|
19638
19696
|
seededSharing = result.sharing;
|
|
19639
19697
|
if (result.addedEmails.length > 0) {
|
|
19640
19698
|
logger.log(`Seeded machine sharing with ${result.addedEmails.length} user(s): ${result.addedEmails.join(", ")}`);
|
|
19699
|
+
if (seededSharing) seedShareNotify = { oldSharing: preSeedSharing, newSharing: seededSharing, added: result.addedEmails };
|
|
19641
19700
|
} else {
|
|
19642
19701
|
logger.log(`Daemon --share seed: no new users (all already in allowedUsers).`);
|
|
19643
19702
|
}
|
|
@@ -19674,7 +19733,25 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
19674
19733
|
startedAt: Date.now()
|
|
19675
19734
|
};
|
|
19676
19735
|
const sharingNotificationSync = new SharingNotificationSync(server, logger.log);
|
|
19677
|
-
|
|
19736
|
+
const seedNotifyWorkspace = server.config.workspace;
|
|
19737
|
+
const seedNotifyClientId = server.config.client_id;
|
|
19738
|
+
sharingNotificationSync.init().then(() => {
|
|
19739
|
+
if (seedShareNotify) {
|
|
19740
|
+
sharingNotificationSync.syncSharing(
|
|
19741
|
+
`machine-${machineId}`,
|
|
19742
|
+
seedShareNotify.oldSharing,
|
|
19743
|
+
seedShareNotify.newSharing,
|
|
19744
|
+
{
|
|
19745
|
+
machineId,
|
|
19746
|
+
machineServiceId: `${seedNotifyWorkspace}/${seedNotifyClientId}:default`,
|
|
19747
|
+
ownerWorkspace: seedNotifyWorkspace,
|
|
19748
|
+
ownerEmail: seedShareNotify.newSharing.owner || "",
|
|
19749
|
+
label: process.env.SVAMP_DISPLAY_NAME || machineId,
|
|
19750
|
+
shareType: "machine"
|
|
19751
|
+
}
|
|
19752
|
+
).catch((e) => logger.log(`[share-seed] notify failed: ${e?.message || e}`));
|
|
19753
|
+
}
|
|
19754
|
+
}).catch(() => {
|
|
19678
19755
|
});
|
|
19679
19756
|
const buildMachineHandlers = () => ({
|
|
19680
19757
|
spawnSession,
|
|
@@ -19880,7 +19957,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
19880
19957
|
}
|
|
19881
19958
|
if (persistedSessions.length > 0) {
|
|
19882
19959
|
try {
|
|
19883
|
-
const { awaitClaudeVersionReady } = await import('./pinnedClaudeCode-
|
|
19960
|
+
const { awaitClaudeVersionReady } = await import('./pinnedClaudeCode-BaMR97BE.mjs');
|
|
19884
19961
|
await awaitClaudeVersionReady();
|
|
19885
19962
|
} catch {
|
|
19886
19963
|
}
|
|
@@ -20077,7 +20154,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
20077
20154
|
const PING_TIMEOUT_MS = 15e3;
|
|
20078
20155
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
20079
20156
|
const RECONNECT_JITTER_MS = 2500;
|
|
20080
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
20157
|
+
const { WorkflowScheduler } = await import('./scheduler-MPYVrdzd.mjs');
|
|
20081
20158
|
const workflowScheduler = new WorkflowScheduler({
|
|
20082
20159
|
projectRoots: () => {
|
|
20083
20160
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -20700,4 +20777,4 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
20700
20777
|
writeStopMarker: writeStopMarker
|
|
20701
20778
|
});
|
|
20702
20779
|
|
|
20703
|
-
export {
|
|
20780
|
+
export { clearStopMarker as $, removeWorkflow as A, saveWorkflow as B, rawWorkflow as C, listWorkflows as D, isWorkflowEnabled as E, workflowCrons as F, cronMatches as G, summarize as H, workflowSteps as I, parseJwtEmail as J, loadMachineContext as K, buildMachineInstructions as L, machineToolsForRole as M, buildMachineTools as N, parseFrontmatter as O, getSkillsServer as P, getSkillsWorkspaceName as Q, READ_ONLY_TOOLS as R, SharingNotificationSync as S, getSkillsCollectionName as T, fetchWithTimeout as U, searchSkills as V, SKILLS_DIR as W, getSkillInfo as X, downloadSkillFile as Y, listSkillFiles as Z, resolveModel as _, createSessionStore as a, stopMarkerExists as a0, formatHandle as a1, normalizeAllowedUser as a2, loadSecurityContextConfig as a3, resolveSecurityContext as a4, buildSecurityContextFromFlags as a5, mergeSecurityContexts as a6, buildSessionShareUrl as a7, computeOutboundHop as a8, registerAwaitingReply as a9, buildMachineShareUrl as aa, parseHandle as ab, handleMatchesMetadata as ac, describeMisconfiguration as ad, buildMachineDeps as ae, applyClaudeProxyEnv as af, composeSessionId as ag, generateFriendlyName as ah, generateHookSettings as ai, staticFileServer as aj, instanceConfig as ak, claudeAuth as al, codexProvider as am, projectInfo as an, DefaultTransport$1 as ao, acpBackend as ap, acpAgentConfig as aq, codexAppServerBackend as ar, GeminiTransport$1 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, 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-CumVWywx.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-BiJbQChb.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-BiJbQChb.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-BiJbQChb.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-BiJbQChb.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-BiJbQChb.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, K as loadMachineContext, L as buildMachineInstructions, M as machineToolsForRole, N as buildMachineTools } from './run-CumVWywx.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.278",
|
|
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-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-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-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-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
|
+
"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-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-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-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",
|
|
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",
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
var name = "svamp-cli";
|
|
2
|
-
var version = "0.2.276";
|
|
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-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-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-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
|
-
"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 };
|