skydive-cli 0.5.0 → 0.6.0-beta.100

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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as errorMessage, i as sendErrorMessage, o as isRecord, t as createRestClient } from "./rest-B9__Zsuk.mjs";
2
+ import { a as errorMessage, i as sendErrorMessage, o as isRecord, t as createRestClient } from "./rest-YroXUA7G.mjs";
3
3
  import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
4
4
  import { i as billingBlockedOutcomeFromSendResponse, n as BillingBlockedError } from "./billing-blocked-D3l5kJlX.mjs";
5
5
  import path from "node:path";
@@ -512,18 +512,18 @@ function readQuestionEntries(raw) {
512
512
  }];
513
513
  });
514
514
  }
515
- /**
516
- * The `platform ask` form. The web renders it as an interactive picker; here
517
- * it maps onto an answer_question button so ctrl+r (and letter shortcuts)
518
- * open an in-TUI picker. The composed answer is sent as a normal user
519
- * message — same non-blocking model as the web card. Without this the spec
520
- * is not a Card, parses to null, and the question is silently dropped.
521
- */
522
515
  /** Compose the user-message body the web card also sends. */
523
516
  function composeQuestionAnswer(questions, answers) {
524
517
  if (questions.length === 1) return (answers[0] ?? []).join(", ");
525
518
  return questions.map((q, i) => `${q.question} → ${(answers[i] ?? []).join(", ")}`).join("\n");
526
519
  }
520
+ /** Build the typed durable payload that settles this exact question card. */
521
+ function composeQuestionAnswerEntries(questions, answers) {
522
+ return questions.map((question, index) => ({
523
+ question: question.question,
524
+ answer: (answers[index] ?? []).join(", ")
525
+ }));
526
+ }
527
527
  function parseQuestionCard(rootEl) {
528
528
  const props = isRecord(rootEl.props) ? rootEl.props : {};
529
529
  const cardId = optionalString(props.cardId);
@@ -691,6 +691,66 @@ function reconcileMaskedInput(previousValue, displayed) {
691
691
  while (kept < displayed.length && kept < previousValue.length && displayed[kept] === MASK_CHAR) kept++;
692
692
  return previousValue.slice(0, kept) + displayed.slice(kept);
693
693
  }
694
+ /**
695
+ * Whether a card is one an agent RUN is actively blocked on until the user
696
+ * decides here: a portal-share consent (`platform portal request`), a compute
697
+ * upgrade decision (`platform compute request`), or a connect/credential card
698
+ * the run is waiting to be fulfilled. The lone non-blocking actionable card is
699
+ * `answer_question` — a `platform ask` form, whose answer is a normal user
700
+ * message (the run keeps going regardless), so it must never shadow a decision
701
+ * the agent is stalled on.
702
+ */
703
+ function isBlockingCardAction(action) {
704
+ return action.kind !== "answer_question";
705
+ }
706
+ /**
707
+ * Narrow a set of actionable cards to the ones ctrl+r (and the card picker)
708
+ * should target, prioritizing blocking cards over `platform ask` forms. When
709
+ * both a blocking card and a stale `answer_question` are waiting, ctrl+r must
710
+ * approve the thing the agent is stalled on, not re-answer an earlier ask that
711
+ * can remain actionable when ignored or answered as plain composer text.
712
+ * Falls through to the
713
+ * ask forms only when they are the only actionable cards left. Preserves input
714
+ * order within a tier, so a single card and genuine multi-card cases behave
715
+ * exactly as before.
716
+ */
717
+ function prioritizeActionableCards(cards) {
718
+ const blocking = cards.filter((c) => c.card.button !== null && isBlockingCardAction(c.card.button.action));
719
+ return blocking.length > 0 ? blocking : [...cards];
720
+ }
721
+ /**
722
+ * The footer verb for a single card action. Derived from the action's own
723
+ * `kind`, not from `isBlockingCardAction` (which answers a different question —
724
+ * "is the run stalled on this" — and is right for prioritization but wrong as a
725
+ * label: it would read a portal-share or compute-approval card as "connect").
726
+ * Each blocking kind gets the verb that matches what the chord actually does:
727
+ * an OAuth/credential card connects, a portal-share card grants, a compute
728
+ * request is decided, a `platform ask` form is answered.
729
+ */
730
+ function verbForAction(action) {
731
+ switch (action.kind) {
732
+ case "open_oauth":
733
+ case "open_external_oauth":
734
+ case "open_github_app":
735
+ case "submit_credential": return "connect";
736
+ case "grant_portal": return "grant";
737
+ case "decide_compute": return "decide";
738
+ case "answer_question": return "answer";
739
+ }
740
+ }
741
+ /**
742
+ * The footer verb for the actionable cards ctrl+r would target. Reflects the
743
+ * first card's actual action so a stale ask never mislabels the footer as
744
+ * "connect", and a portal/compute card reads as "grant"/"decide" rather than
745
+ * being lumped under "connect". Pass the ALREADY-prioritized set (see
746
+ * prioritizeActionableCards) so the label matches what ctrl+r acts on; null
747
+ * when nothing is waiting.
748
+ */
749
+ function actionableCardVerb(cards) {
750
+ const [first] = cards;
751
+ if (!first || first.card.button === null) return null;
752
+ return verbForAction(first.card.button.action);
753
+ }
694
754
 
695
755
  //#endregion
696
756
  //#region src/chat/connect-cards.ts
@@ -763,7 +823,7 @@ function summarizeConnectCard(card, appUrl) {
763
823
  }
764
824
  /**
765
825
  * Parse a `data-anyone-render-spec` stream chunk into a connect-card summary,
766
- * or null if the chunk isn't a connect card (other render specs — training,
826
+ * or null if the chunk isn't a connect card (other render specs — e.g.
767
827
  * deep-learn — parse to null, same as the TUI). A card that arrives already
768
828
  * settled (a compute request's decided re-emission) is an FYI, not an action,
769
829
  * so it stays out of the "[action needed]" stream too.
@@ -840,6 +900,7 @@ async function runPrint({ appUrl, sessionToken, workspaceId, prompt, agentSelect
840
900
  conversationId,
841
901
  content: prompt,
842
902
  attachmentIds: [],
903
+ questionAnswer: null,
843
904
  clientSurface: "cli"
844
905
  });
845
906
  } catch (err) {
@@ -1017,4 +1078,4 @@ async function readStdin() {
1017
1078
  }
1018
1079
 
1019
1080
  //#endregion
1020
- export { getSavedTheme as A, resolveSession as B, deleteConfig as C, getPreference as D, getLastSeenVersion as E, recordDefaultAgent as F, setLastSeenVersion as G, saveConfig as H, resolveAppUrl as I, resolveChatAuth as L, getStoredApiKeyId as M, getStoredApiKeyWorkspaceName as N, getPromptHistoryPath as O, getUpdateCheckDisabled as P, resolveConfig as R, PREFERENCES as S, getDefaultAgent as T, saveSession as U, resolveWebUrl as V, saveTheme as W, API_KEYS_URL as _, runPrint as a, DEFAULT_API_URL as b, cardActionErrorMessage as c, reconcileMaskedInput as d, resolveConnectUrl as f, specKeyFor as g, parseConnectCard as h, resolveAgent as i, getShareMachineDefault as j, getReviewStateDir as k, parseExternalOauthConnectParams as l, computeSettledLabel as m, messageGet as n, toPrintError as o, composeQuestionAnswer as p, readStdin as r, MASK_CHAR as s, collectRunText as t, parseOauthConnectParams as u, API_KEY_FAMILY_PREFIX as v, getConfigPath as w, DEFAULT_APP_URL as x, API_KEY_PREFIX as y, resolveManagementAuth as z };
1081
+ export { getPreference as A, resolveChatAuth as B, DEFAULT_API_URL as C, getConfigPath as D, deleteConfig as E, getStoredApiKeyId as F, saveConfig as G, resolveManagementAuth as H, getStoredApiKeyWorkspaceName as I, setLastSeenVersion as J, saveSession as K, getUpdateCheckDisabled as L, getReviewStateDir as M, getSavedTheme as N, getDefaultAgent as O, getShareMachineDefault as P, recordDefaultAgent as R, API_KEY_PREFIX as S, PREFERENCES as T, resolveSession as U, resolveConfig as V, resolveWebUrl as W, computeSettledLabel as _, runPrint as a, API_KEYS_URL as b, actionableCardVerb as c, parseOauthConnectParams as d, prioritizeActionableCards as f, composeQuestionAnswerEntries as g, composeQuestionAnswer as h, resolveAgent as i, getPromptHistoryPath as j, getLastSeenVersion as k, cardActionErrorMessage as l, resolveConnectUrl as m, messageGet as n, toPrintError as o, reconcileMaskedInput as p, saveTheme as q, readStdin as r, MASK_CHAR as s, collectRunText as t, parseExternalOauthConnectParams as u, parseConnectCard as v, DEFAULT_APP_URL as w, API_KEY_FAMILY_PREFIX as x, specKeyFor as y, resolveAppUrl as z };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import "./rest-B9__Zsuk.mjs";
3
- import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-D_UEjdSw.mjs";
2
+ import "./rest-YroXUA7G.mjs";
3
+ import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-B_jFXZ1W.mjs";
4
4
  import "./billing-blocked-D3l5kJlX.mjs";
5
5
 
6
6
  export { messageGet, readStdin, resolveAgent, runPrint };
@@ -14,7 +14,7 @@ import { n as printError } from "./output-C9mb3sUB.mjs";
14
14
  * the reply (and to --json).
15
15
  */
16
16
  async function connectMachineShare({ appUrl, sessionToken, timeoutHint }) {
17
- const { PortalClient } = await import("./client-Ct0-JZSS.mjs");
17
+ const { PortalClient } = await import("./client-BfwRLRDF.mjs");
18
18
  const { defaultTlsCertSource } = await import("./tls-cert-BpCaD5AT.mjs");
19
19
  let signalConnected;
20
20
  const connected = new Promise((resolve) => {
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as SandboxStream } from "./client-Btq6bMzX.mjs";
2
+ import { t as SandboxStream } from "./client-Cxk3khQu.mjs";
3
3
 
4
4
  //#region src/chat/sandbox/raw-pty.ts
5
5
  /**
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import "./client-Cxk3khQu.mjs";
3
+ import { t as runRawPtyPassthrough } from "./raw-pty-B-WKaaE3.mjs";
4
+
5
+ export { runRawPtyPassthrough };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as sendErrorMessage, n as errorDetail, r as filenameFromContentDisposition, t as createRestClient } from "./rest-B9__Zsuk.mjs";
2
+ import { i as sendErrorMessage, n as errorDetail, r as filenameFromContentDisposition, t as createRestClient } from "./rest-YroXUA7G.mjs";
3
3
  import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
4
4
  import "./billing-blocked-D3l5kJlX.mjs";
5
5
 
@@ -6,7 +6,7 @@ import { createParser } from "eventsource-parser";
6
6
 
7
7
  //#region package.json
8
8
  var name = "skydive-cli";
9
- var version = "0.5.0";
9
+ var version = "0.6.0-beta.100";
10
10
 
11
11
  //#endregion
12
12
  //#region src/chat/util.ts
@@ -270,8 +270,11 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
270
270
  return conversation;
271
271
  },
272
272
  listModels: async () => {
273
- const { models } = await get("/api/v1/models", listModelsResponseSchema);
274
- return models;
273
+ const { models, trainingOptedOut } = await get("/api/v1/models", listModelsResponseSchema);
274
+ return {
275
+ models,
276
+ trainingOptedOut: trainingOptedOut ?? false
277
+ };
275
278
  },
276
279
  listModelEfforts: async () => {
277
280
  const { modelConfigOverrides } = await get("/api/v1/models/preferred", modelEffortPreferencesResponseSchema);
@@ -279,6 +282,14 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
279
282
  for (const [modelId, config] of Object.entries(modelConfigOverrides ?? {})) if (config.thinkingLevel) efforts[modelId] = config.thinkingLevel;
280
283
  return efforts;
281
284
  },
285
+ getBillingSummary: async () => {
286
+ const { result } = await get("/api/v1/trpc/v2.billing.getBillingOrgSummary", billingSummaryResponseSchema);
287
+ return result.data;
288
+ },
289
+ getFreeFloorState: async () => {
290
+ const { result } = await get("/api/v1/trpc/v2.billing.freeFloorState", freeFloorStateResponseSchema);
291
+ return result.data;
292
+ },
282
293
  setModelEffort: async ({ modelId, thinkingLevel }) => {
283
294
  await post("/api/v1/models/config", {
284
295
  modelId,
@@ -295,6 +306,17 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
295
306
  thinkingLevel: agent.thinkingLevel ?? null
296
307
  };
297
308
  },
309
+ setConversationModel: async ({ conversationId, agentId, model, thinkingLevel }) => {
310
+ const settled = await post(`/api/v1/conversations/${conversationId}/model`, {
311
+ agentId,
312
+ model,
313
+ thinkingLevel
314
+ }, conversationModelResponseSchema);
315
+ return {
316
+ ...settled,
317
+ scope: settled.scope ?? null
318
+ };
319
+ },
298
320
  updateAgentEffort: async ({ agentId, thinkingLevel }) => {
299
321
  const { agent } = await patchAgent(agentId, { thinkingLevel });
300
322
  return { thinkingLevel: agent.thinkingLevel ?? null };
@@ -355,6 +377,10 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
355
377
  const { recap } = await get(`/api/v1/conversations/${encodeURIComponent(conversationId)}/recap`, recapResponseSchema);
356
378
  return recap?.text ?? null;
357
379
  },
380
+ getConversationUsage: async ({ conversationId }) => {
381
+ const { usage } = await get(`/api/v1/conversations/${encodeURIComponent(conversationId)}/usage`, conversationUsageResponseSchema);
382
+ return usage;
383
+ },
358
384
  listSubagentTasks: async ({ conversationId }) => {
359
385
  const { result } = await get(`/api/v1/trpc/v2.subagentTasks.list?input=${encodeURIComponent(JSON.stringify({ conversationId }))}`, subagentTasksResponseSchema);
360
386
  return new Map(result.data.subagentTasks.map((task) => [task.id, task]));
@@ -417,9 +443,13 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
417
443
  setConversationArchived: async ({ conversationId, archived }) => {
418
444
  await post(`/api/v1/conversations/${encodeURIComponent(conversationId)}/archive`, { archived }, z.object({ archived: z.boolean() }));
419
445
  },
446
+ setConversationPinned: async ({ conversationId, pinned }) => {
447
+ await post(`/api/v1/conversations/${encodeURIComponent(conversationId)}/pin`, { pinned }, z.object({ pinned: z.boolean() }));
448
+ },
420
449
  markConversationRead: async ({ conversationId }) => {
421
450
  await post(`/api/v1/conversations/${encodeURIComponent(conversationId)}/read`, {}, z.object({ read: z.boolean() }));
422
451
  },
452
+ trackAnalyticsEvent: async (input) => post("/api/v1/cli-analytics/track", input, z.object({ ok: z.boolean() })),
423
453
  renameConversation: async ({ conversationId, title }) => {
424
454
  await post(`/api/v1/conversations/${encodeURIComponent(conversationId)}`, { title }, z.object({ conversation: z.object({ id: z.string() }) }), "PATCH");
425
455
  },
@@ -536,11 +566,35 @@ const platformModelSchema = z.object({
536
566
  providerDisplay: z.string().optional(),
537
567
  reasoning: z.boolean().optional(),
538
568
  compliant: z.boolean().optional(),
569
+ noTraining: z.boolean().optional(),
539
570
  thinkingLevels: z.array(z.string()).optional(),
540
- thinkingLevelLabels: z.record(z.string(), z.string()).optional()
571
+ thinkingLevelLabels: z.record(z.string(), z.string()).optional(),
572
+ signals: z.object({
573
+ intelligence: z.number().int().min(1).max(6).nullable(),
574
+ speed: z.number().int().min(1).max(6).nullable(),
575
+ cost: z.number().int().min(1).max(6).nullable()
576
+ }).optional()
541
577
  }).passthrough();
542
- const listModelsResponseSchema = z.object({ models: z.array(platformModelSchema) });
578
+ const listModelsResponseSchema = z.object({
579
+ models: z.array(platformModelSchema),
580
+ trainingOptedOut: z.boolean().optional()
581
+ });
543
582
  const modelEffortPreferencesResponseSchema = z.object({ modelConfigOverrides: z.record(z.string(), z.object({ thinkingLevel: z.string().optional() })).optional() });
583
+ const billingSummaryResponseSchema = z.object({ result: z.object({ data: z.object({
584
+ planKey: z.string().nullable(),
585
+ blockReason: z.string().nullable(),
586
+ billingEnforcementEnabled: z.boolean()
587
+ }) }) });
588
+ const freeFloorStateResponseSchema = z.object({ result: z.object({ data: z.object({
589
+ available: z.boolean(),
590
+ models: z.array(z.string()),
591
+ resetsAt: z.string().nullable()
592
+ }).nullable() }) });
593
+ const conversationModelResponseSchema = z.object({
594
+ model: z.string().nullable(),
595
+ thinkingLevel: z.string().nullable(),
596
+ scope: z.enum(["agent", "conversation"]).nullish()
597
+ });
544
598
  const updateAgentResponseSchema = z.object({ agent: z.object({
545
599
  model: z.string().nullable().optional(),
546
600
  thinkingLevel: z.string().nullable().optional()
@@ -573,7 +627,10 @@ const conversationSummarySchema = z.object({
573
627
  channel: z.string().nullable(),
574
628
  channelLabel: z.string().nullable(),
575
629
  viewerArchivedAt: z.string().nullable().optional(),
630
+ viewerPinnedAt: z.string().nullable().optional(),
631
+ viewerParticipates: z.boolean().optional(),
576
632
  unread: z.boolean().optional(),
633
+ activeRun: z.boolean().optional(),
577
634
  agent: conversationAgentSchema,
578
635
  agents: z.array(conversationAgentSchema).optional()
579
636
  });
@@ -627,6 +684,31 @@ const uiMessageSchema = z.object({
627
684
  agentName: z.string().nullish()
628
685
  }).passthrough().optional() }).passthrough().optional()
629
686
  });
687
+ const conversationUsageModelSchema = z.object({
688
+ model: z.string().nullable(),
689
+ promptTokens: z.number(),
690
+ completionTokens: z.number(),
691
+ cacheCreationTokens: z.number(),
692
+ cacheReadTokens: z.number(),
693
+ cents: z.number()
694
+ });
695
+ const conversationUsageSchema = z.object({
696
+ own: z.object({
697
+ inferenceCents: z.number(),
698
+ byModel: z.array(conversationUsageModelSchema)
699
+ }),
700
+ children: z.object({
701
+ inferenceCents: z.number(),
702
+ conversationCount: z.number()
703
+ }),
704
+ compute: z.object({
705
+ cents: z.number(),
706
+ vcpuSeconds: z.number()
707
+ }),
708
+ unpriced: z.array(z.string()),
709
+ totalCents: z.number()
710
+ });
711
+ const conversationUsageResponseSchema = z.object({ usage: conversationUsageSchema.nullable() });
630
712
  const recapResponseSchema = z.object({ recap: z.object({ text: z.string() }).nullable() });
631
713
  const subagentTaskSnapshotSchema = z.object({
632
714
  id: z.string(),
@@ -709,7 +791,8 @@ const conversationStreamEventSchema = z.discriminatedUnion("kind", [
709
791
  id: z.string(),
710
792
  model: z.string().nullable(),
711
793
  modelLocked: z.boolean(),
712
- thinkingLevel: z.string().nullish()
794
+ thinkingLevel: z.string().nullish(),
795
+ agentModel: z.string().nullish()
713
796
  }),
714
797
  z.object({
715
798
  kind: z.literal("run"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skydive-cli",
3
- "version": "0.5.0",
3
+ "version": "0.6.0-beta.100",
4
4
  "description": "Skydive CLI — cloud agents from the command line",
5
5
  "homepage": "https://skydive.com",
6
6
  "license": "MIT",
@@ -25,12 +25,13 @@
25
25
  "test:unit": "vitest run --passWithNoTests && yarn test:tui",
26
26
  "test:ci": "vitest run --coverage --coverage.reporter=lcovonly --reporter=default --reporter=github-actions --minWorkers=1 --maxWorkers=2 --passWithNoTests && yarn test:tui",
27
27
  "test:tui": "node scripts/run-tui-tests.mjs",
28
+ "test:blackbox": "bun test test/blackbox --timeout 120000",
28
29
  "render:frames": "bun scripts/render-frames.tsx",
29
30
  "render:send-errors": "bun scripts/render-send-errors.tsx",
30
31
  "typecheck": "tsgo --noEmit"
31
32
  },
32
33
  "dependencies": {
33
- "@opentui/react": "0.4.3",
34
+ "@opentui/react": "0.5.10",
34
35
  "conf": "^13.0.1",
35
36
  "diff": "9.0.0",
36
37
  "eventsource-parser": "^3.0.8",
@@ -50,6 +51,7 @@
50
51
  "zustand": "^5.0.2"
51
52
  },
52
53
  "devDependencies": {
54
+ "@createinc/anyone-agents": "^0.0.0",
53
55
  "@createinc/anyone-portal-daemon": "0.0.0",
54
56
  "@createinc/anyone-sandbox-stream-protocol": "0.0.0",
55
57
  "@createinc/tsconfig": "0.0.0",
@@ -59,10 +61,10 @@
59
61
  "@types/semver": "^7.7.1",
60
62
  "@types/yargs": "^17.0.33",
61
63
  "@typescript/native-preview": "^7.0.0-dev.20260113.1",
62
- "@vitest/coverage-v8": "^2.1.8",
64
+ "@vitest/coverage-v8": "^3.2.4",
63
65
  "tsdown": "^0.20.3",
64
66
  "typescript": "^5.9.3",
65
- "vitest": "^2.1.8"
67
+ "vitest": "^3.2.4"
66
68
  },
67
69
  "engines": {
68
70
  "bun": ">=1.3.14",
@@ -70,9 +72,9 @@
70
72
  },
71
73
  "//optionalDependencies": "The per-platform binary packages (skydive-cli-<os>-<arch>) are INTENTIONALLY not committed here. They are published by release-skydive-cli-binaries.yml and injected — pinned to the exact version being published — into the published launcher's optionalDependencies at release time (scripts/prepare-platform-packages.mjs --pin-version, run in release-skydive-cli.yml). Committing them would make `yarn install` try to resolve versions that only exist post-publish, breaking local dev and CI. npm installs of a published skydive-cli still get them (os/cpu-gated); the launcher (src/launcher.ts) resolves and execs the matching one. Local dev never needs them: it runs the JS bundle or `build:binary` directly.",
72
74
  "optionalDependencies": {
73
- "skydive-cli-darwin-arm64": "0.5.0",
74
- "skydive-cli-darwin-x64": "0.5.0",
75
- "skydive-cli-linux-x64": "0.5.0",
76
- "skydive-cli-linux-arm64": "0.5.0"
75
+ "skydive-cli-darwin-arm64": "0.6.0-beta.100",
76
+ "skydive-cli-darwin-x64": "0.6.0-beta.100",
77
+ "skydive-cli-linux-x64": "0.6.0-beta.100",
78
+ "skydive-cli-linux-arm64": "0.6.0-beta.100"
77
79
  }
78
80
  }
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- import { t as PortalClient } from "./client--k9cjfkX.mjs";
3
- import "./api-BFQ4PQDA.mjs";
4
-
5
- export { PortalClient };
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./client--k9cjfkX.mjs";
3
- import "./tls-cert-Rua2oV7n.mjs";
4
- import "./api-BFQ4PQDA.mjs";
5
- import "./daemon-Do1jU2UF.mjs";
6
- import { t as PortalDaemonClient } from "./daemon-client-Dvad009G.mjs";
7
-
8
- export { PortalDaemonClient };
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./client-Btq6bMzX.mjs";
3
- import { t as runRawPtyPassthrough } from "./raw-pty-D5PhKZSl.mjs";
4
-
5
- export { runRawPtyPassthrough };