@launchsecure/launch-kit 0.0.41 → 0.0.43
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/chart-client/assets/index-DOKsFe5i.css +1 -0
- package/dist/chart-client/index.html +2 -2
- package/dist/client/assets/index-BqiDfvZi.js +294 -0
- package/dist/client/assets/index-Mewz-s77.css +32 -0
- package/dist/client/index.html +2 -2
- package/dist/council-client/assets/index-o_3y7Z0J.css +1 -0
- package/dist/council-client/index.html +2 -2
- package/dist/deck-client/assets/{_baseUniq-mvYvzeEJ.js → _baseUniq-C6w7kg8x.js} +1 -1
- package/dist/deck-client/assets/{arc-CX4ylnp2.js → arc-Cx9pT3Nn.js} +1 -1
- package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-BkR-5IRK.js → architectureDiagram-Q4EWVU46-BITSj3vA.js} +1 -1
- package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-DVNQht7c.js → blockDiagram-DXYQGD6D-BehOFuwh.js} +1 -1
- package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-Cbq1rlG8.js → c4Diagram-AHTNJAMY-BZTYM4na.js} +1 -1
- package/dist/deck-client/assets/channel-Cw2WDt9a.js +1 -0
- package/dist/deck-client/assets/{chunk-4BX2VUAB-D58Co4lU.js → chunk-4BX2VUAB-CCUx5CTd.js} +1 -1
- package/dist/deck-client/assets/{chunk-4TB4RGXK-BYvhTm3d.js → chunk-4TB4RGXK-UDZXXga6.js} +1 -1
- package/dist/deck-client/assets/{chunk-55IACEB6-oWukUhYg.js → chunk-55IACEB6-CfcU6PIW.js} +1 -1
- package/dist/deck-client/assets/{chunk-EDXVE4YY-Cm58kVnZ.js → chunk-EDXVE4YY-BK6F5Fof.js} +1 -1
- package/dist/deck-client/assets/{chunk-FMBD7UC4-Dg-i7kzi.js → chunk-FMBD7UC4-C-2idlFB.js} +1 -1
- package/dist/deck-client/assets/{chunk-OYMX7WX6-C72wigPl.js → chunk-OYMX7WX6-D6hBkYLP.js} +1 -1
- package/dist/deck-client/assets/{chunk-QZHKN3VN-CLgeuAKw.js → chunk-QZHKN3VN-DixNpysA.js} +1 -1
- package/dist/deck-client/assets/{chunk-YZCP3GAM-HDDlJ5oI.js → chunk-YZCP3GAM-Cd3pNBtQ.js} +1 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-JLUXVCUr.js +1 -0
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-JLUXVCUr.js +1 -0
- package/dist/deck-client/assets/clone-H0XCnSb6.js +1 -0
- package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-CUXQKg2M.js → cose-bilkent-S5V4N54A-OF3JWdEt.js} +1 -1
- package/dist/deck-client/assets/{dagre-KV5264BT-C5M-fVDc.js → dagre-KV5264BT-Bqu-qcv4.js} +1 -1
- package/dist/deck-client/assets/{diagram-5BDNPKRD-CcVsQ0S8.js → diagram-5BDNPKRD--0eHmUBS.js} +1 -1
- package/dist/deck-client/assets/{diagram-G4DWMVQ6-DJswXyep.js → diagram-G4DWMVQ6-nss6oL20.js} +1 -1
- package/dist/deck-client/assets/{diagram-MMDJMWI5-CGT76fm1.js → diagram-MMDJMWI5-D_gSGnLR.js} +1 -1
- package/dist/deck-client/assets/{diagram-TYMM5635-BBsYUNN6.js → diagram-TYMM5635-BIt-P6Pk.js} +1 -1
- package/dist/deck-client/assets/{erDiagram-SMLLAGMA-DKWYEHQS.js → erDiagram-SMLLAGMA-Bi-E4KQm.js} +1 -1
- package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DLuDYIKT.js → flowDiagram-DWJPFMVM-DMJCvLMA.js} +1 -1
- package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-B19b6Qtj.js → ganttDiagram-T4ZO3ILL-C3xgEoPD.js} +1 -1
- package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-BYLAfYVS.js → gitGraphDiagram-UUTBAWPF-CD0BEGAW.js} +1 -1
- package/dist/deck-client/assets/{graph-CfzQUfPh.js → graph-Dtsd9Jwe.js} +1 -1
- package/dist/deck-client/assets/index-C6YxyZay.css +1 -0
- package/dist/deck-client/assets/{index-DlwdTgE_.js → index-TFX8vtTG.js} +2 -2
- package/dist/deck-client/assets/{infoDiagram-42DDH7IO-Dp3mUA9c.js → infoDiagram-42DDH7IO-7IcQYqe_.js} +1 -1
- package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-BhrNX_jI.js → ishikawaDiagram-UXIWVN3A-DsCEbx3u.js} +1 -1
- package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-B5lJI492.js → journeyDiagram-VCZTEJTY-1mP2JwCk.js} +1 -1
- package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-D9-lmhQf.js → kanban-definition-6JOO6SKY-vT0Xrqh9.js} +1 -1
- package/dist/deck-client/assets/{layout-CfIe_Su8.js → layout-Cw4rS2pn.js} +1 -1
- package/dist/deck-client/assets/{linear-09ZFRoh_.js → linear-CzOjL-Ih.js} +1 -1
- package/dist/deck-client/assets/{mermaid.core-BaQyIOvj.js → mermaid.core-DYi3A-qK.js} +4 -4
- package/dist/deck-client/assets/{min-CYwCzYaL.js → min-DstloRoL.js} +1 -1
- package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-CouFxf6C.js → mindmap-definition-QFDTVHPH-D-cCX2d2.js} +1 -1
- package/dist/deck-client/assets/{pieDiagram-DEJITSTG-DMB1ufC0.js → pieDiagram-DEJITSTG-BqW2NTmy.js} +1 -1
- package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-CBiOKudN.js → quadrantDiagram-34T5L4WZ-DbJoWA8f.js} +1 -1
- package/dist/deck-client/assets/{requirementDiagram-MS252O5E-BMc3GJkx.js → requirementDiagram-MS252O5E-DQrUiz_d.js} +1 -1
- package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-CxACUncm.js → sankeyDiagram-XADWPNL6-kB7PZc3g.js} +1 -1
- package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-Ch-P3Mzc.js → sequenceDiagram-FGHM5R23-CpyVu1TN.js} +1 -1
- package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-Cy8n7Yzk.js → stateDiagram-FHFEXIEX-CjqQcnty.js} +1 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-tfMSn8xx.js +1 -0
- package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-C2V4sSkm.js → timeline-definition-GMOUNBTQ-B2PAO9bk.js} +1 -1
- package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-YOqt4VbE.js → vennDiagram-DHZGUBPP-C0G3ItCr.js} +1 -1
- package/dist/deck-client/assets/{wardley-RL74JXVD-Bxo5x40D.js → wardley-RL74JXVD-B0TVaOmp.js} +1 -1
- package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-DW9SOqbx.js → wardleyDiagram-NUSXRM2D-B-qtbNZe.js} +1 -1
- package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-D-rZvZOL.js → xychartDiagram-5P7HB3ND-41kcBoBE.js} +1 -1
- package/dist/deck-client/index.html +2 -2
- package/dist/server/cli.js +484 -77
- package/dist/server/deck-mcp-entry.js +137 -2
- package/dist/server/deck-serve.js +93 -1
- package/dist/server/init-entry.js +47 -21
- package/dist/server/launch-bot-entry.js +38 -4
- package/dist/server/radar-docker-init-entry.js +46 -20
- package/dist/server/rover-entry.js +6047 -5155
- package/package.json +1 -1
- package/dist/chart-client/assets/index-Dd6IotOZ.css +0 -1
- package/dist/client/assets/index-BoIjawzY.js +0 -294
- package/dist/client/assets/index-DE0uje6k.css +0 -32
- package/dist/council-client/assets/index-CGYusOCK.css +0 -1
- package/dist/deck-client/assets/channel-B9GC-CLn.js +0 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-CFBvYQ9j.js +0 -1
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-CFBvYQ9j.js +0 -1
- package/dist/deck-client/assets/clone-n-WQlAGe.js +0 -1
- package/dist/deck-client/assets/index-evAPhGvM.css +0 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-C14VKCzi.js +0 -1
- /package/dist/chart-client/assets/{index-CrYM1-ac.js → index-DJQYgFcp.js} +0 -0
- /package/dist/council-client/assets/{index-DkTFX53U.js → index-Wn06apTg.js} +0 -0
|
@@ -613,11 +613,13 @@ var RECEIVER_PATH = "/api/radar/ingest";
|
|
|
613
613
|
|
|
614
614
|
// src/server/radar-docker-init-entry.ts
|
|
615
615
|
var REQUIRED_ENV = [
|
|
616
|
-
"CLAUDE_CREDENTIALS_B64",
|
|
617
616
|
"LS_PAT",
|
|
618
617
|
"LS_ORG_SLUG",
|
|
619
618
|
"LS_PROJECT_SLUG"
|
|
620
619
|
];
|
|
620
|
+
var POD_WS = process.env.LAUNCHPOD_WORKSPACE ?? "/workspace";
|
|
621
|
+
var NO_PARK = process.env.LAUNCHPOD_NO_PARK === "1";
|
|
622
|
+
var LOCAL_ONLY = process.env.LAUNCHKIT_LOCAL_ONLY === "1";
|
|
621
623
|
function fail2(message) {
|
|
622
624
|
console.error(message);
|
|
623
625
|
process.exit(1);
|
|
@@ -631,7 +633,7 @@ function run(cmd, args, stdio = "inherit") {
|
|
|
631
633
|
const r = (0, import_node_child_process.spawnSync)(cmd, args, { stdio });
|
|
632
634
|
return r.status ?? 1;
|
|
633
635
|
}
|
|
634
|
-
var LAUNCHPOD_DIR = "
|
|
636
|
+
var LAUNCHPOD_DIR = (0, import_node_path4.join)(POD_WS, ".launchpod");
|
|
635
637
|
var CRASH_STATE_FILE = (0, import_node_path4.join)(LAUNCHPOD_DIR, ".boot-crash.json");
|
|
636
638
|
var MAX_BOOT_CRASHES = 5;
|
|
637
639
|
var STABLE_AFTER_MS = 3e4;
|
|
@@ -714,14 +716,30 @@ async function setupFromCloud() {
|
|
|
714
716
|
console.log(`[entrypoint] bundle from cloud: org=${orgSlug} project=${projectSlug} git=${process.env.GIT_USER_NAME} <${process.env.GIT_USER_EMAIL}> github=${bundle.githubTokenStatus.toLowerCase()} ${cfNote}`);
|
|
715
717
|
return bundle;
|
|
716
718
|
}
|
|
719
|
+
function hasUsableCredentials(credsPath) {
|
|
720
|
+
if (!(0, import_node_fs4.existsSync)(credsPath)) return false;
|
|
721
|
+
try {
|
|
722
|
+
const raw = (0, import_node_fs4.readFileSync)(credsPath, "utf8").trim();
|
|
723
|
+
if (raw.length === 0) return false;
|
|
724
|
+
const parsed = JSON.parse(raw);
|
|
725
|
+
return parsed != null && typeof parsed === "object" && "claudeAiOauth" in parsed;
|
|
726
|
+
} catch {
|
|
727
|
+
return false;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
717
730
|
function setupClaudeCredentials() {
|
|
718
731
|
const home = process.env.HOME ?? "/home/launchpod";
|
|
719
732
|
const claudeDir = (0, import_node_path4.join)(home, ".claude");
|
|
720
733
|
(0, import_node_fs4.mkdirSync)(claudeDir, { recursive: true });
|
|
721
|
-
const decoded = Buffer.from(requireEnv("CLAUDE_CREDENTIALS_B64"), "base64").toString("utf8");
|
|
722
734
|
const credsPath = (0, import_node_path4.join)(claudeDir, ".credentials.json");
|
|
723
|
-
|
|
724
|
-
|
|
735
|
+
if (hasUsableCredentials(credsPath)) {
|
|
736
|
+
console.log("[entrypoint] ~/.claude/.credentials.json already present \u2014 leaving Claude Code's own (refreshed) credentials intact");
|
|
737
|
+
} else {
|
|
738
|
+
const decoded = Buffer.from(requireEnv("CLAUDE_CREDENTIALS_B64"), "base64").toString("utf8");
|
|
739
|
+
(0, import_node_fs4.writeFileSync)(credsPath, decoded);
|
|
740
|
+
(0, import_node_fs4.chmodSync)(credsPath, 384);
|
|
741
|
+
console.log("[entrypoint] seeded ~/.claude/.credentials.json from CLAUDE_CREDENTIALS_B64");
|
|
742
|
+
}
|
|
725
743
|
const configPath = (0, import_node_path4.join)(home, ".claude.json");
|
|
726
744
|
let cfg = {};
|
|
727
745
|
if ((0, import_node_fs4.existsSync)(configPath)) {
|
|
@@ -745,7 +763,7 @@ function setupClaudeCredentials() {
|
|
|
745
763
|
"launch-sequencer"
|
|
746
764
|
];
|
|
747
765
|
const projects = cfg.projects ?? {};
|
|
748
|
-
const wsKey =
|
|
766
|
+
const wsKey = POD_WS;
|
|
749
767
|
const wsProject = projects[wsKey] ?? {};
|
|
750
768
|
const existingEnabled = Array.isArray(wsProject.enabledMcpjsonServers) ? wsProject.enabledMcpjsonServers : [];
|
|
751
769
|
const mergedEnabled = Array.from(/* @__PURE__ */ new Set([...existingEnabled, ...PREAPPROVED_MCPS]));
|
|
@@ -764,7 +782,7 @@ function setupGitAndGh() {
|
|
|
764
782
|
function detectAndSetPreviewPort() {
|
|
765
783
|
if (process.env.PREVIEW_PORT) return;
|
|
766
784
|
try {
|
|
767
|
-
const pkgPath = "
|
|
785
|
+
const pkgPath = (0, import_node_path4.join)(POD_WS, "package.json");
|
|
768
786
|
if (!(0, import_node_fs4.existsSync)(pkgPath)) return;
|
|
769
787
|
const pkg = JSON.parse((0, import_node_fs4.readFileSync)(pkgPath, "utf-8"));
|
|
770
788
|
const scripts = pkg.scripts ?? {};
|
|
@@ -783,23 +801,27 @@ function detectAndSetPreviewPort() {
|
|
|
783
801
|
}
|
|
784
802
|
}
|
|
785
803
|
function initWorkspaceIfEmpty() {
|
|
786
|
-
process.chdir(
|
|
804
|
+
process.chdir(POD_WS);
|
|
787
805
|
if ((0, import_node_fs4.existsSync)(".git")) {
|
|
788
|
-
console.log(
|
|
806
|
+
console.log(`[entrypoint] ${POD_WS} already initialized \u2014 skipping init`);
|
|
789
807
|
return;
|
|
790
808
|
}
|
|
791
|
-
console.log(
|
|
809
|
+
console.log(`[entrypoint] ${POD_WS} is empty \u2014 running launch-kit init`);
|
|
792
810
|
const status = run("launch-kit", [
|
|
793
811
|
"init",
|
|
794
812
|
`--token=${requireEnv("LS_PAT")}`,
|
|
795
813
|
`--org=${requireEnv("LS_ORG_SLUG")}`,
|
|
796
814
|
`--project=${requireEnv("LS_PROJECT_SLUG")}`,
|
|
797
815
|
`--url=${process.env.LS_SERVER_URL ?? "https://launchsecure-v2.vercel.app"}`,
|
|
798
|
-
`--dir
|
|
816
|
+
`--dir=${POD_WS}`
|
|
799
817
|
]);
|
|
800
818
|
if (status !== 0) fail2(`[entrypoint] launch-kit init failed (status ${status})`);
|
|
801
819
|
}
|
|
802
820
|
async function maybeProvisionIngress(bundle, services, projectSlug) {
|
|
821
|
+
if (LOCAL_ONLY) {
|
|
822
|
+
console.log("[entrypoint] LAUNCHKIT_LOCAL_ONLY=1 \u2014 skipping CF ingress; services run on localhost only");
|
|
823
|
+
return null;
|
|
824
|
+
}
|
|
803
825
|
const token = bundle.cloudflareToken ?? null;
|
|
804
826
|
const accountId = bundle.cloudflareAccountId ?? null;
|
|
805
827
|
const zones = bundle.cloudflareZones ?? [];
|
|
@@ -819,7 +841,7 @@ async function maybeProvisionIngress(bundle, services, projectSlug) {
|
|
|
819
841
|
} else {
|
|
820
842
|
fail2(`[entrypoint] cloudflare token covers ${zones.length} zones (${zones.map((z) => z.name).join(", ")}) \u2014 set LAUNCHKIT_CF_BASE_DOMAIN to pick one.`);
|
|
821
843
|
}
|
|
822
|
-
const stateFile = "
|
|
844
|
+
const stateFile = (0, import_node_path4.join)(POD_WS, ".launchpod", "launch-kit-tunnel.json");
|
|
823
845
|
const slugLabel = projectSlug.toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
824
846
|
const DNS_LABEL_RE = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
|
|
825
847
|
for (const s of services) {
|
|
@@ -895,7 +917,7 @@ async function maybeProvisionAccess(bundle, ingress) {
|
|
|
895
917
|
}
|
|
896
918
|
const serverUrl = process.env.LS_SERVER_URL ?? "https://launchsecure-v2.vercel.app";
|
|
897
919
|
const pat = requireEnv("LS_PAT");
|
|
898
|
-
const stateFile = "
|
|
920
|
+
const stateFile = (0, import_node_path4.join)(POD_WS, ".launchpod", "launch-kit-access.json");
|
|
899
921
|
const gatedHosts = services.filter((s) => !s.bypass).map((s) => s.hostname);
|
|
900
922
|
const bypassed = services.filter((s) => s.bypass).map((s) => `${s.hostname}${s.path ?? ""}`);
|
|
901
923
|
console.log(`[entrypoint] gating ${gatedHosts.join(", ")} behind CF Access (IdP: ${serverUrl})`);
|
|
@@ -994,11 +1016,13 @@ function spawnServiceGroup(services) {
|
|
|
994
1016
|
}).finally(removeSignals);
|
|
995
1017
|
}
|
|
996
1018
|
async function main() {
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1019
|
+
if (!NO_PARK) {
|
|
1020
|
+
const priorCrashes = readCrashState()?.count ?? 0;
|
|
1021
|
+
if (priorCrashes >= MAX_BOOT_CRASHES) await parkAfterCrashLoop(priorCrashes);
|
|
1022
|
+
const bootAttempt = bumpCrashCount();
|
|
1023
|
+
if (bootAttempt > 1) {
|
|
1024
|
+
console.warn(`[entrypoint] boot attempt ${bootAttempt}/${MAX_BOOT_CRASHES} \u2014 prior boot(s) crashed before becoming stable`);
|
|
1025
|
+
}
|
|
1002
1026
|
}
|
|
1003
1027
|
for (const k of REQUIRED_ENV) requireEnv(k);
|
|
1004
1028
|
const bundle = await setupFromCloud();
|
|
@@ -1032,8 +1056,10 @@ async function main() {
|
|
|
1032
1056
|
}
|
|
1033
1057
|
}
|
|
1034
1058
|
const stableTimer = setTimeout(() => {
|
|
1035
|
-
|
|
1036
|
-
|
|
1059
|
+
if (!NO_PARK) {
|
|
1060
|
+
clearCrashCount();
|
|
1061
|
+
console.log(`[entrypoint] services stable for ${Math.round(STABLE_AFTER_MS / 1e3)}s \u2014 boot-crash counter cleared`);
|
|
1062
|
+
}
|
|
1037
1063
|
}, STABLE_AFTER_MS);
|
|
1038
1064
|
stableTimer.unref?.();
|
|
1039
1065
|
try {
|