superceo 0.3.4 → 0.3.5
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/index.js +80 -47
- package/dist/index.js.map +3 -3
- package/dist/migrations/0000_mature_masked_marvel.sql +208 -0
- package/dist/migrations/0001_fast_northstar.sql +87 -0
- package/dist/migrations/0002_big_zaladane.sql +1 -0
- package/dist/migrations/0003_shallow_quentin_quire.sql +5 -0
- package/dist/migrations/0004_issue_identifiers.sql +28 -0
- package/dist/migrations/0005_chief_luke_cage.sql +19 -0
- package/dist/migrations/0006_overjoyed_mister_sinister.sql +36 -0
- package/dist/migrations/0007_new_quentin_quire.sql +20 -0
- package/dist/migrations/0008_amused_zzzax.sql +1 -0
- package/dist/migrations/0009_fast_jackal.sql +36 -0
- package/dist/migrations/0010_stale_justin_hammer.sql +37 -0
- package/dist/migrations/0011_windy_corsair.sql +18 -0
- package/dist/migrations/0012_perpetual_ser_duncan.sql +2 -0
- package/dist/migrations/0013_dashing_wasp.sql +4 -0
- package/dist/migrations/0014_many_mikhail_rasputin.sql +135 -0
- package/dist/migrations/0015_project_color_archived.sql +2 -0
- package/dist/migrations/0016_agent_icon.sql +1 -0
- package/dist/migrations/0017_tiresome_gabe_jones.sql +51 -0
- package/dist/migrations/0018_flat_sleepwalker.sql +26 -0
- package/dist/migrations/0019_public_victor_mancha.sql +18 -0
- package/dist/migrations/0020_white_anita_blake.sql +1 -0
- package/dist/migrations/0021_chief_vindicator.sql +1 -0
- package/dist/migrations/0022_company_brand_color.sql +1 -0
- package/dist/migrations/0023_fair_lethal_legion.sql +3 -0
- package/dist/migrations/0024_far_beast.sql +2 -0
- package/dist/migrations/0025_nasty_salo.sql +15 -0
- package/dist/migrations/0026_lying_pete_wisdom.sql +39 -0
- package/dist/migrations/0027_tranquil_tenebrous.sql +2 -0
- package/dist/migrations/0028_harsh_goliath.sql +54 -0
- package/dist/migrations/0029_plugin_tables.sql +177 -0
- package/dist/migrations/0030_rich_magneto.sql +12 -0
- package/dist/migrations/0031_zippy_magma.sql +51 -0
- package/dist/migrations/0032_pretty_doctor_octopus.sql +102 -0
- package/dist/migrations/0033_shiny_black_tarantula.sql +2 -0
- package/dist/migrations/0034_fat_dormammu.sql +2 -0
- package/dist/migrations/0035_marvelous_satana.sql +91 -0
- package/dist/migrations/0036_cheerful_nitro.sql +9 -0
- package/dist/migrations/0037_friendly_eddie_brock.sql +29 -0
- package/dist/migrations/0038_careless_iron_monger.sql +5 -0
- package/dist/migrations/0039_fat_magneto.sql +161 -0
- package/dist/migrations/0040_eager_shotgun.sql +5 -0
- package/dist/migrations/0041_curly_maria_hill.sql +1 -0
- package/dist/migrations/0042_spotty_the_renegades.sql +26 -0
- package/dist/migrations/0043_reflective_captain_universe.sql +6 -0
- package/dist/migrations/0044_illegal_toad.sql +56 -0
- package/dist/migrations/0045_workable_shockwave.sql +17 -0
- package/dist/migrations/0046_smooth_sentinels.sql +11 -0
- package/dist/migrations/0047_overjoyed_groot.sql +102 -0
- package/dist/migrations/0048_flashy_marrow.sql +1 -0
- package/dist/migrations/0049_flawless_abomination.sql +21 -0
- package/dist/migrations/0050_stiff_luckman.sql +1 -0
- package/dist/migrations/0051_young_korg.sql +5 -0
- package/dist/migrations/0052_mushy_trauma.sql +26 -0
- package/dist/migrations/0053_sharp_wild_child.sql +18 -0
- package/dist/migrations/0054_draft_routines.sql +2 -0
- package/dist/migrations/0055_faithful_doctor_octopus.sql +48 -0
- package/dist/migrations/0056_equal_sabretooth.sql +34 -0
- package/dist/migrations/0057_ordinary_khan.sql +5 -0
- package/dist/migrations/0058_sad_wolf_cub.sql +2 -0
- package/dist/migrations/0059_rich_jackpot.sql +4 -0
- package/dist/migrations/0060_orange_nightshade.sql +60 -0
- package/dist/migrations/0061_parallel_puma.sql +1 -0
- package/dist/migrations/0062_goofy_lethal_legion.sql +26 -0
- package/dist/migrations/0063_luxuriant_doctor_spectrum.sql +23 -0
- package/dist/migrations/0064_lead_platform_user.sql +2 -0
- package/dist/migrations/0065_wild_next_avengers.sql +14 -0
- package/dist/migrations/0066_late_stark_industries.sql +5 -0
- package/dist/migrations/0067_instance_backup_settings.sql +1 -0
- package/dist/migrations/0068_tiresome_ma_gnuci.sql +1 -0
- package/dist/migrations/0069_lazy_zaladane.sql +106 -0
- package/dist/migrations/0070_lame_wendigo.sql +1 -0
- package/dist/migrations/0071_content_analytics.sql +71 -0
- package/dist/migrations/0072_quota_gate_feature_scope.sql +3 -0
- package/dist/migrations/0073_instance_update_settings.sql +1 -0
- package/dist/migrations/0074_local_tools_config.sql +1 -0
- package/dist/migrations/0075_liveness_recovery_dedupe.sql +15 -0
- package/dist/migrations/0076_active_run_output_watchdog.sql +91 -0
- package/dist/migrations/0077_issue_tree_holds.sql +107 -0
- package/dist/migrations/0078_issue_reference_mentions.sql +50 -0
- package/dist/migrations/0079_subscription_quota_lane.sql +4 -0
- package/dist/migrations/0080_lead_product_user.sql +3 -0
- package/dist/migrations/0081_lead_product_user_split_x.sql +8 -0
- package/dist/migrations/0082_agent_image_url.sql +1 -0
- package/dist/migrations/0083_chat_sessions_target_agent.sql +2 -0
- package/dist/migrations/0084_document_folders.sql +22 -0
- package/dist/migrations/0085_eager_mulholland_black.sql +4 -0
- package/dist/migrations/meta/0000_snapshot.json +1743 -0
- package/dist/migrations/meta/0001_snapshot.json +2441 -0
- package/dist/migrations/meta/0002_snapshot.json +2454 -0
- package/dist/migrations/meta/0003_snapshot.json +2502 -0
- package/dist/migrations/meta/0005_snapshot.json +2719 -0
- package/dist/migrations/meta/0006_snapshot.json +3048 -0
- package/dist/migrations/meta/0007_snapshot.json +3258 -0
- package/dist/migrations/meta/0008_snapshot.json +3264 -0
- package/dist/migrations/meta/0009_snapshot.json +3587 -0
- package/dist/migrations/meta/0010_snapshot.json +3929 -0
- package/dist/migrations/meta/0011_snapshot.json +4068 -0
- package/dist/migrations/meta/0012_snapshot.json +4087 -0
- package/dist/migrations/meta/0013_snapshot.json +4118 -0
- package/dist/migrations/meta/0014_snapshot.json +5187 -0
- package/dist/migrations/meta/0017_snapshot.json +5215 -0
- package/dist/migrations/meta/0018_snapshot.json +5450 -0
- package/dist/migrations/meta/0019_snapshot.json +5603 -0
- package/dist/migrations/meta/0020_snapshot.json +5603 -0
- package/dist/migrations/meta/0021_snapshot.json +5609 -0
- package/dist/migrations/meta/0023_snapshot.json +5633 -0
- package/dist/migrations/meta/0024_snapshot.json +5693 -0
- package/dist/migrations/meta/0025_snapshot.json +5849 -0
- package/dist/migrations/meta/0027_snapshot.json +6205 -0
- package/dist/migrations/meta/0028_snapshot.json +6710 -0
- package/dist/migrations/meta/0029_snapshot.json +7899 -0
- package/dist/migrations/meta/0030_snapshot.json +8003 -0
- package/dist/migrations/meta/0031_snapshot.json +7242 -0
- package/dist/migrations/meta/0032_snapshot.json +7733 -0
- package/dist/migrations/meta/0033_snapshot.json +9038 -0
- package/dist/migrations/meta/0034_snapshot.json +9039 -0
- package/dist/migrations/meta/0035_snapshot.json +9959 -0
- package/dist/migrations/meta/0036_snapshot.json +10023 -0
- package/dist/migrations/meta/0037_snapshot.json +10263 -0
- package/dist/migrations/meta/0038_snapshot.json +11350 -0
- package/dist/migrations/meta/0039_snapshot.json +10308 -0
- package/dist/migrations/meta/0040_snapshot.json +10481 -0
- package/dist/migrations/meta/0041_snapshot.json +11393 -0
- package/dist/migrations/meta/0044_snapshot.json +11701 -0
- package/dist/migrations/meta/0045_snapshot.json +11857 -0
- package/dist/migrations/meta/0046_snapshot.json +11870 -0
- package/dist/migrations/meta/0047_snapshot.json +12539 -0
- package/dist/migrations/meta/0048_snapshot.json +12546 -0
- package/dist/migrations/meta/0049_snapshot.json +12766 -0
- package/dist/migrations/meta/0050_snapshot.json +12772 -0
- package/dist/migrations/meta/0051_snapshot.json +12836 -0
- package/dist/migrations/meta/0052_snapshot.json +13057 -0
- package/dist/migrations/meta/0053_snapshot.json +12979 -0
- package/dist/migrations/meta/0055_snapshot.json +13586 -0
- package/dist/migrations/meta/0056_snapshot.json +13868 -0
- package/dist/migrations/meta/0057_snapshot.json +13906 -0
- package/dist/migrations/meta/0058_snapshot.json +13918 -0
- package/dist/migrations/meta/0059_snapshot.json +13942 -0
- package/dist/migrations/meta/0060_snapshot.json +14509 -0
- package/dist/migrations/meta/0061_snapshot.json +14515 -0
- package/dist/migrations/meta/0062_snapshot.json +14717 -0
- package/dist/migrations/meta/0063_snapshot.json +14941 -0
- package/dist/migrations/meta/0065_snapshot.json +15081 -0
- package/dist/migrations/meta/0066_snapshot.json +15112 -0
- package/dist/migrations/meta/0067_snapshot.json +15119 -0
- package/dist/migrations/meta/0068_snapshot.json +15125 -0
- package/dist/migrations/meta/0069_snapshot.json +16110 -0
- package/dist/migrations/meta/0070_snapshot.json +16116 -0
- package/dist/migrations/meta/0073_snapshot.json +16584 -0
- package/dist/migrations/meta/0079_snapshot.json +17847 -0
- package/dist/migrations/meta/0080_snapshot.json +17853 -0
- package/dist/migrations/meta/0081_snapshot.json +17853 -0
- package/dist/migrations/meta/0085_snapshot.json +18068 -0
- package/dist/migrations/meta/_journal.json +608 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8823,27 +8823,36 @@ function getCliBrandPack(env = process.env) {
|
|
|
8823
8823
|
const path83 = nonEmpty(env.PAPERCLIP_BRAND_PACK_PATH);
|
|
8824
8824
|
if (path83) {
|
|
8825
8825
|
const parsed = JSON.parse(fs6.readFileSync(path83, "utf8"));
|
|
8826
|
+
const name2 = typeof parsed.name === "string" && parsed.name.trim() ? parsed.name.trim() : DEFAULT_BRAND.name;
|
|
8826
8827
|
const branded2 = {
|
|
8827
|
-
name:
|
|
8828
|
-
tagline: typeof parsed.tagline === "string" && parsed.tagline.trim() ? parsed.tagline.trim() : DEFAULT_BRAND.tagline
|
|
8828
|
+
name: name2,
|
|
8829
|
+
tagline: typeof parsed.tagline === "string" && parsed.tagline.trim() ? parsed.tagline.trim() : DEFAULT_BRAND.tagline,
|
|
8830
|
+
command: typeof parsed.command === "string" && parsed.command.trim() ? parsed.command.trim() : deriveCommand(name2)
|
|
8829
8831
|
};
|
|
8830
8832
|
if (env === process.env) cachedBrand = branded2;
|
|
8831
8833
|
return branded2;
|
|
8832
8834
|
}
|
|
8835
|
+
const name = nonEmpty(env.PAPERCLIP_BRAND_NAME) ?? DEFAULT_BRAND.name;
|
|
8833
8836
|
const branded = {
|
|
8834
|
-
name
|
|
8835
|
-
tagline: nonEmpty(env.PAPERCLIP_BRAND_TAGLINE) ?? DEFAULT_BRAND.tagline
|
|
8837
|
+
name,
|
|
8838
|
+
tagline: nonEmpty(env.PAPERCLIP_BRAND_TAGLINE) ?? DEFAULT_BRAND.tagline,
|
|
8839
|
+
command: nonEmpty(env.PAPERCLIP_BRAND_COMMAND) ?? deriveCommand(name)
|
|
8836
8840
|
};
|
|
8837
8841
|
if (env === process.env) cachedBrand = branded;
|
|
8838
8842
|
return branded;
|
|
8839
8843
|
}
|
|
8844
|
+
function deriveCommand(name) {
|
|
8845
|
+
if (name === DEFAULT_BRAND.name) return DEFAULT_BRAND.command;
|
|
8846
|
+
return name.toLowerCase().replace(/[^a-z0-9]+/g, "");
|
|
8847
|
+
}
|
|
8840
8848
|
var DEFAULT_BRAND, cachedBrand;
|
|
8841
8849
|
var init_brand = __esm({
|
|
8842
8850
|
"../cli/src/utils/brand.ts"() {
|
|
8843
8851
|
"use strict";
|
|
8844
8852
|
DEFAULT_BRAND = {
|
|
8845
8853
|
name: "Paperclip",
|
|
8846
|
-
tagline: "Open-source orchestration for zero-human companies"
|
|
8854
|
+
tagline: "Open-source orchestration for zero-human companies",
|
|
8855
|
+
command: "paperclipai"
|
|
8847
8856
|
};
|
|
8848
8857
|
cachedBrand = null;
|
|
8849
8858
|
}
|
|
@@ -8853,9 +8862,10 @@ var init_brand = __esm({
|
|
|
8853
8862
|
import pc2 from "picocolors";
|
|
8854
8863
|
function printPaperclipCliBanner() {
|
|
8855
8864
|
const brand2 = getCliBrandPack();
|
|
8865
|
+
const art = brand2.name.toLowerCase() === "superceo" ? SUPERCEO_ART : PAPERCLIP_ART;
|
|
8856
8866
|
const lines = [
|
|
8857
8867
|
"",
|
|
8858
|
-
...
|
|
8868
|
+
...art.map((line) => pc2.cyan(line)),
|
|
8859
8869
|
pc2.blue(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),
|
|
8860
8870
|
pc2.bold(pc2.white(` ${brand2.tagline}`)),
|
|
8861
8871
|
pc2.dim(` ${brand2.name} CLI`),
|
|
@@ -8863,7 +8873,7 @@ function printPaperclipCliBanner() {
|
|
|
8863
8873
|
];
|
|
8864
8874
|
console.log(lines.join("\n"));
|
|
8865
8875
|
}
|
|
8866
|
-
var PAPERCLIP_ART;
|
|
8876
|
+
var PAPERCLIP_ART, SUPERCEO_ART;
|
|
8867
8877
|
var init_banner = __esm({
|
|
8868
8878
|
"../cli/src/utils/banner.ts"() {
|
|
8869
8879
|
"use strict";
|
|
@@ -8876,6 +8886,14 @@ var init_banner = __esm({
|
|
|
8876
8886
|
"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 ",
|
|
8877
8887
|
"\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D "
|
|
8878
8888
|
];
|
|
8889
|
+
SUPERCEO_ART = [
|
|
8890
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
|
|
8891
|
+
"\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557",
|
|
8892
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551",
|
|
8893
|
+
"\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551",
|
|
8894
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D",
|
|
8895
|
+
"\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D "
|
|
8896
|
+
];
|
|
8879
8897
|
}
|
|
8880
8898
|
});
|
|
8881
8899
|
|
|
@@ -9149,13 +9167,14 @@ var init_agent_jwt_secret_check = __esm({
|
|
|
9149
9167
|
// ../cli/src/checks/config-check.ts
|
|
9150
9168
|
function configCheck(configPath) {
|
|
9151
9169
|
const filePath = resolveConfigPath(configPath);
|
|
9170
|
+
const { command } = getCliBrandPack();
|
|
9152
9171
|
if (!configExists(configPath)) {
|
|
9153
9172
|
return {
|
|
9154
9173
|
name: "Config file",
|
|
9155
9174
|
status: "fail",
|
|
9156
9175
|
message: `Config file not found at ${filePath}`,
|
|
9157
9176
|
canRepair: false,
|
|
9158
|
-
repairHint:
|
|
9177
|
+
repairHint: `Run \`${command} onboard\` to create one`
|
|
9159
9178
|
};
|
|
9160
9179
|
}
|
|
9161
9180
|
try {
|
|
@@ -9171,7 +9190,7 @@ function configCheck(configPath) {
|
|
|
9171
9190
|
status: "fail",
|
|
9172
9191
|
message: `Invalid config: ${err instanceof Error ? err.message : String(err)}`,
|
|
9173
9192
|
canRepair: false,
|
|
9174
|
-
repairHint:
|
|
9193
|
+
repairHint: `Run \`${command} configure --section database\` (or \`${command} onboard\` to recreate)`
|
|
9175
9194
|
};
|
|
9176
9195
|
}
|
|
9177
9196
|
}
|
|
@@ -9179,6 +9198,7 @@ var init_config_check = __esm({
|
|
|
9179
9198
|
"../cli/src/checks/config-check.ts"() {
|
|
9180
9199
|
"use strict";
|
|
9181
9200
|
init_store();
|
|
9201
|
+
init_brand();
|
|
9182
9202
|
}
|
|
9183
9203
|
});
|
|
9184
9204
|
|
|
@@ -9198,7 +9218,7 @@ function deploymentAuthCheck(config) {
|
|
|
9198
9218
|
status: "fail",
|
|
9199
9219
|
message: `local_trusted requires loopback host binding (found ${config.server.host})`,
|
|
9200
9220
|
canRepair: false,
|
|
9201
|
-
repairHint:
|
|
9221
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section server\` and set host to 127.0.0.1`
|
|
9202
9222
|
};
|
|
9203
9223
|
}
|
|
9204
9224
|
return {
|
|
@@ -9223,7 +9243,7 @@ function deploymentAuthCheck(config) {
|
|
|
9223
9243
|
status: "fail",
|
|
9224
9244
|
message: "auth.baseUrlMode=explicit requires auth.publicBaseUrl",
|
|
9225
9245
|
canRepair: false,
|
|
9226
|
-
repairHint:
|
|
9246
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section server\` and provide a base URL`
|
|
9227
9247
|
};
|
|
9228
9248
|
}
|
|
9229
9249
|
if (exposure === "public") {
|
|
@@ -9233,7 +9253,7 @@ function deploymentAuthCheck(config) {
|
|
|
9233
9253
|
status: "fail",
|
|
9234
9254
|
message: "authenticated/public requires explicit auth.publicBaseUrl",
|
|
9235
9255
|
canRepair: false,
|
|
9236
|
-
repairHint:
|
|
9256
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section server\` and select public exposure`
|
|
9237
9257
|
};
|
|
9238
9258
|
}
|
|
9239
9259
|
try {
|
|
@@ -9253,7 +9273,7 @@ function deploymentAuthCheck(config) {
|
|
|
9253
9273
|
status: "fail",
|
|
9254
9274
|
message: "auth.publicBaseUrl is not a valid URL",
|
|
9255
9275
|
canRepair: false,
|
|
9256
|
-
repairHint:
|
|
9276
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section server\` and provide a valid URL`
|
|
9257
9277
|
};
|
|
9258
9278
|
}
|
|
9259
9279
|
}
|
|
@@ -9266,6 +9286,7 @@ function deploymentAuthCheck(config) {
|
|
|
9266
9286
|
var init_deployment_auth_check = __esm({
|
|
9267
9287
|
"../cli/src/checks/deployment-auth-check.ts"() {
|
|
9268
9288
|
"use strict";
|
|
9289
|
+
init_brand();
|
|
9269
9290
|
}
|
|
9270
9291
|
});
|
|
9271
9292
|
|
|
@@ -9287,7 +9308,7 @@ async function databaseCheck(config, configPath) {
|
|
|
9287
9308
|
status: "fail",
|
|
9288
9309
|
message: "PostgreSQL mode selected but no connection string configured",
|
|
9289
9310
|
canRepair: false,
|
|
9290
|
-
repairHint:
|
|
9311
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section database\``
|
|
9291
9312
|
};
|
|
9292
9313
|
}
|
|
9293
9314
|
try {
|
|
@@ -9326,12 +9347,13 @@ async function databaseCheck(config, configPath) {
|
|
|
9326
9347
|
status: "fail",
|
|
9327
9348
|
message: `Unknown database mode: ${String(config.database.mode)}`,
|
|
9328
9349
|
canRepair: false,
|
|
9329
|
-
repairHint:
|
|
9350
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section database\``
|
|
9330
9351
|
};
|
|
9331
9352
|
}
|
|
9332
9353
|
var init_database_check = __esm({
|
|
9333
9354
|
"../cli/src/checks/database-check.ts"() {
|
|
9334
9355
|
"use strict";
|
|
9356
|
+
init_brand();
|
|
9335
9357
|
init_path_resolver2();
|
|
9336
9358
|
}
|
|
9337
9359
|
});
|
|
@@ -9376,7 +9398,7 @@ async function llmCheck(config) {
|
|
|
9376
9398
|
status: "fail",
|
|
9377
9399
|
message: "Claude API key is invalid (401)",
|
|
9378
9400
|
canRepair: false,
|
|
9379
|
-
repairHint:
|
|
9401
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section llm\``
|
|
9380
9402
|
};
|
|
9381
9403
|
}
|
|
9382
9404
|
return {
|
|
@@ -9397,7 +9419,7 @@ async function llmCheck(config) {
|
|
|
9397
9419
|
status: "fail",
|
|
9398
9420
|
message: "OpenAI API key is invalid (401)",
|
|
9399
9421
|
canRepair: false,
|
|
9400
|
-
repairHint:
|
|
9422
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section llm\``
|
|
9401
9423
|
};
|
|
9402
9424
|
}
|
|
9403
9425
|
return {
|
|
@@ -9417,6 +9439,7 @@ async function llmCheck(config) {
|
|
|
9417
9439
|
var init_llm_check = __esm({
|
|
9418
9440
|
"../cli/src/checks/llm-check.ts"() {
|
|
9419
9441
|
"use strict";
|
|
9442
|
+
init_brand();
|
|
9420
9443
|
}
|
|
9421
9444
|
});
|
|
9422
9445
|
|
|
@@ -9621,7 +9644,7 @@ function secretsCheck(config, configPath) {
|
|
|
9621
9644
|
status: "fail",
|
|
9622
9645
|
message: `${provider} is configured, but this build only supports local_encrypted`,
|
|
9623
9646
|
canRepair: false,
|
|
9624
|
-
repairHint:
|
|
9647
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section secrets\` and set provider to local_encrypted`
|
|
9625
9648
|
};
|
|
9626
9649
|
}
|
|
9627
9650
|
const envMasterKey = process.env.PAPERCLIP_SECRETS_MASTER_KEY;
|
|
@@ -9703,6 +9726,7 @@ function secretsCheck(config, configPath) {
|
|
|
9703
9726
|
var init_secrets_check = __esm({
|
|
9704
9727
|
"../cli/src/checks/secrets-check.ts"() {
|
|
9705
9728
|
"use strict";
|
|
9729
|
+
init_brand();
|
|
9706
9730
|
init_path_resolver2();
|
|
9707
9731
|
}
|
|
9708
9732
|
});
|
|
@@ -9740,7 +9764,7 @@ function storageCheck(config, configPath) {
|
|
|
9740
9764
|
status: "fail",
|
|
9741
9765
|
message: "S3 storage requires non-empty bucket and region",
|
|
9742
9766
|
canRepair: false,
|
|
9743
|
-
repairHint:
|
|
9767
|
+
repairHint: `Run \`${getCliBrandPack().command} configure --section storage\``
|
|
9744
9768
|
};
|
|
9745
9769
|
}
|
|
9746
9770
|
return {
|
|
@@ -9754,6 +9778,7 @@ function storageCheck(config, configPath) {
|
|
|
9754
9778
|
var init_storage_check = __esm({
|
|
9755
9779
|
"../cli/src/checks/storage-check.ts"() {
|
|
9756
9780
|
"use strict";
|
|
9781
|
+
init_brand();
|
|
9757
9782
|
init_path_resolver2();
|
|
9758
9783
|
}
|
|
9759
9784
|
});
|
|
@@ -9780,7 +9805,8 @@ import * as p8 from "@clack/prompts";
|
|
|
9780
9805
|
import pc3 from "picocolors";
|
|
9781
9806
|
async function doctor(opts) {
|
|
9782
9807
|
printPaperclipCliBanner();
|
|
9783
|
-
|
|
9808
|
+
const brand2 = getCliBrandPack();
|
|
9809
|
+
p8.intro(pc3.bgCyan(pc3.black(` ${brand2.command} doctor `)));
|
|
9784
9810
|
const configPath = resolveConfigPath(opts.config);
|
|
9785
9811
|
loadPaperclipEnvFile(configPath);
|
|
9786
9812
|
const results = [];
|
|
@@ -9799,7 +9825,7 @@ async function doctor(opts) {
|
|
|
9799
9825
|
status: "fail",
|
|
9800
9826
|
message: `Could not read config: ${err instanceof Error ? err.message : String(err)}`,
|
|
9801
9827
|
canRepair: false,
|
|
9802
|
-
repairHint:
|
|
9828
|
+
repairHint: `Run \`${brand2.command} configure --section database\` or \`${brand2.command} onboard\``
|
|
9803
9829
|
};
|
|
9804
9830
|
results.push(readResult);
|
|
9805
9831
|
printResult(readResult);
|
|
@@ -9920,6 +9946,7 @@ var init_doctor = __esm({
|
|
|
9920
9946
|
init_checks();
|
|
9921
9947
|
init_env();
|
|
9922
9948
|
init_banner();
|
|
9949
|
+
init_brand();
|
|
9923
9950
|
STATUS_ICON = {
|
|
9924
9951
|
pass: pc3.green("\u2713"),
|
|
9925
9952
|
warn: pc3.yellow("!"),
|
|
@@ -82282,14 +82309,15 @@ async function runCommand(opts) {
|
|
|
82282
82309
|
const configPath = resolveConfigPath(opts.config);
|
|
82283
82310
|
process.env.PAPERCLIP_CONFIG = configPath;
|
|
82284
82311
|
loadPaperclipEnvFile(configPath);
|
|
82285
|
-
|
|
82312
|
+
const brand2 = getCliBrandPack();
|
|
82313
|
+
p9.intro(pc4.bgCyan(pc4.black(` ${brand2.command} run `)));
|
|
82286
82314
|
p9.log.message(pc4.dim(`Home: ${paths.homeDir}`));
|
|
82287
82315
|
p9.log.message(pc4.dim(`Instance: ${paths.instanceId}`));
|
|
82288
82316
|
p9.log.message(pc4.dim(`Config: ${configPath}`));
|
|
82289
82317
|
if (!configExists(configPath)) {
|
|
82290
82318
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
82291
82319
|
p9.log.error("No config found and terminal is non-interactive.");
|
|
82292
|
-
p9.log.message(`Run ${pc4.cyan(
|
|
82320
|
+
p9.log.message(`Run ${pc4.cyan(`${brand2.command} onboard`)} once, then retry ${pc4.cyan(`${brand2.command} run`)}.`);
|
|
82293
82321
|
process.exit(1);
|
|
82294
82322
|
}
|
|
82295
82323
|
p9.log.step("No config found. Starting onboarding...");
|
|
@@ -82545,7 +82573,7 @@ function canCreateBootstrapInviteImmediately(config) {
|
|
|
82545
82573
|
async function onboard(opts) {
|
|
82546
82574
|
const brand2 = getCliBrandPack();
|
|
82547
82575
|
printPaperclipCliBanner();
|
|
82548
|
-
p10.intro(pc5.bgCyan(pc5.black(
|
|
82576
|
+
p10.intro(pc5.bgCyan(pc5.black(` ${brand2.command} onboard `)));
|
|
82549
82577
|
const configPath = resolveConfigPath(opts.config);
|
|
82550
82578
|
const instance = describeLocalInstancePaths(resolvePaperclipInstanceId());
|
|
82551
82579
|
p10.log.message(
|
|
@@ -82571,7 +82599,7 @@ ${err instanceof Error ? err.message : String(err)}`
|
|
|
82571
82599
|
p10.log.message(
|
|
82572
82600
|
pc5.dim(`Existing ${brand2.name} install detected; keeping the current configuration unchanged.`)
|
|
82573
82601
|
);
|
|
82574
|
-
p10.log.message(pc5.dim(`Use ${pc5.cyan(
|
|
82602
|
+
p10.log.message(pc5.dim(`Use ${pc5.cyan(`${brand2.command} configure`)} if you want to change settings.`));
|
|
82575
82603
|
const jwtSecret2 = ensureAgentJwtSecret(configPath);
|
|
82576
82604
|
const envFilePath2 = resolveAgentJwtEnvFile(configPath);
|
|
82577
82605
|
if (jwtSecret2.created) {
|
|
@@ -82604,9 +82632,9 @@ ${err instanceof Error ? err.message : String(err)}`
|
|
|
82604
82632
|
);
|
|
82605
82633
|
p10.note(
|
|
82606
82634
|
[
|
|
82607
|
-
`Run: ${pc5.cyan(
|
|
82608
|
-
`Reconfigure later: ${pc5.cyan(
|
|
82609
|
-
`Diagnose setup: ${pc5.cyan(
|
|
82635
|
+
`Run: ${pc5.cyan(`${brand2.command} run`)}`,
|
|
82636
|
+
`Reconfigure later: ${pc5.cyan(`${brand2.command} configure`)}`,
|
|
82637
|
+
`Diagnose setup: ${pc5.cyan(`${brand2.command} doctor`)}`
|
|
82610
82638
|
].join("\n"),
|
|
82611
82639
|
"Next commands"
|
|
82612
82640
|
);
|
|
@@ -82679,7 +82707,7 @@ ${err instanceof Error ? err.message : String(err)}`
|
|
|
82679
82707
|
await db.execute("SELECT 1");
|
|
82680
82708
|
s.stop("Database connection successful");
|
|
82681
82709
|
} catch {
|
|
82682
|
-
s.stop(pc5.yellow(
|
|
82710
|
+
s.stop(pc5.yellow(`Could not connect to database \u2014 you can fix this later with \`${brand2.command} doctor\``));
|
|
82683
82711
|
}
|
|
82684
82712
|
}
|
|
82685
82713
|
p10.log.step(pc5.bold("LLM Provider"));
|
|
@@ -82811,9 +82839,9 @@ ${err instanceof Error ? err.message : String(err)}`
|
|
|
82811
82839
|
);
|
|
82812
82840
|
p10.note(
|
|
82813
82841
|
[
|
|
82814
|
-
`Run: ${pc5.cyan(
|
|
82815
|
-
`Reconfigure later: ${pc5.cyan(
|
|
82816
|
-
`Diagnose setup: ${pc5.cyan(
|
|
82842
|
+
`Run: ${pc5.cyan(`${brand2.command} run`)}`,
|
|
82843
|
+
`Reconfigure later: ${pc5.cyan(`${brand2.command} configure`)}`,
|
|
82844
|
+
`Diagnose setup: ${pc5.cyan(`${brand2.command} doctor`)}`
|
|
82817
82845
|
].join("\n"),
|
|
82818
82846
|
"Next commands"
|
|
82819
82847
|
);
|
|
@@ -82841,8 +82869,8 @@ ${err instanceof Error ? err.message : String(err)}`
|
|
|
82841
82869
|
p10.log.info(
|
|
82842
82870
|
[
|
|
82843
82871
|
"Bootstrap CEO invite will be created after the server starts.",
|
|
82844
|
-
`Next: ${pc5.cyan(
|
|
82845
|
-
`Then: ${pc5.cyan(
|
|
82872
|
+
`Next: ${pc5.cyan(`${brand2.command} run`)}`,
|
|
82873
|
+
`Then: ${pc5.cyan(`${brand2.command} auth bootstrap-ceo`)}`
|
|
82846
82874
|
].join("\n")
|
|
82847
82875
|
);
|
|
82848
82876
|
}
|
|
@@ -83229,10 +83257,11 @@ function defaultConfig() {
|
|
|
83229
83257
|
}
|
|
83230
83258
|
async function configure(opts) {
|
|
83231
83259
|
printPaperclipCliBanner();
|
|
83232
|
-
|
|
83260
|
+
const brand2 = getCliBrandPack();
|
|
83261
|
+
p12.intro(pc7.bgCyan(pc7.black(` ${brand2.command} configure `)));
|
|
83233
83262
|
const configPath = resolveConfigPath(opts.config);
|
|
83234
83263
|
if (!configExists(opts.config)) {
|
|
83235
|
-
p12.log.error(
|
|
83264
|
+
p12.log.error(`No config file found. Run \`${brand2.command} onboard\` first.`);
|
|
83236
83265
|
p12.outro("");
|
|
83237
83266
|
return;
|
|
83238
83267
|
}
|
|
@@ -83350,6 +83379,7 @@ var init_configure = __esm({
|
|
|
83350
83379
|
init_server();
|
|
83351
83380
|
init_home();
|
|
83352
83381
|
init_banner();
|
|
83382
|
+
init_brand();
|
|
83353
83383
|
SECTION_LABELS = {
|
|
83354
83384
|
llm: "LLM Provider",
|
|
83355
83385
|
database: "Database",
|
|
@@ -84989,8 +85019,9 @@ async function toApiError(response) {
|
|
|
84989
85019
|
}
|
|
84990
85020
|
function buildConnectionErrorMessage(input) {
|
|
84991
85021
|
const healthUrl = buildHealthCheckUrl(input.url);
|
|
85022
|
+
const brand2 = getCliBrandPack();
|
|
84992
85023
|
const lines = [
|
|
84993
|
-
|
|
85024
|
+
`Could not reach the ${brand2.name} API.`,
|
|
84994
85025
|
"",
|
|
84995
85026
|
`Request: ${input.method} ${input.url}`
|
|
84996
85027
|
];
|
|
@@ -84999,12 +85030,12 @@ function buildConnectionErrorMessage(input) {
|
|
|
84999
85030
|
}
|
|
85000
85031
|
lines.push(
|
|
85001
85032
|
"",
|
|
85002
|
-
|
|
85033
|
+
`This usually means the ${brand2.name} server is not running, the configured URL is wrong, or the request is being blocked before it reaches ${brand2.name}.`,
|
|
85003
85034
|
"",
|
|
85004
85035
|
"Try:",
|
|
85005
|
-
|
|
85036
|
+
`- Start ${brand2.name} with \`pnpm dev\` or \`pnpm ${brand2.command} run\`.`,
|
|
85006
85037
|
`- Verify the server is reachable with \`curl ${healthUrl}\`.`,
|
|
85007
|
-
`- If
|
|
85038
|
+
`- If ${brand2.name} is running elsewhere, pass \`--api-base ${input.apiBase.replace(/\/+$/, "")}\` or set \`PAPERCLIP_API_URL\`.`
|
|
85008
85039
|
);
|
|
85009
85040
|
return lines.join("\n");
|
|
85010
85041
|
}
|
|
@@ -85039,6 +85070,7 @@ var ApiRequestError, ApiConnectionError, PaperclipApiClient;
|
|
|
85039
85070
|
var init_http3 = __esm({
|
|
85040
85071
|
"../cli/src/client/http.ts"() {
|
|
85041
85072
|
"use strict";
|
|
85073
|
+
init_brand();
|
|
85042
85074
|
ApiRequestError = class extends Error {
|
|
85043
85075
|
status;
|
|
85044
85076
|
details;
|
|
@@ -85176,7 +85208,7 @@ function resolveCommandContext(options2, opts) {
|
|
|
85176
85208
|
const companyId = options2.companyId?.trim() || process.env.PAPERCLIP_COMPANY_ID?.trim() || profile.companyId;
|
|
85177
85209
|
if (opts?.requireCompany && !companyId) {
|
|
85178
85210
|
throw new Error(
|
|
85179
|
-
|
|
85211
|
+
`Company ID is required. Pass --company-id, set PAPERCLIP_COMPANY_ID, or set context profile companyId via \`${getCliBrandPack().command} context set\`.`
|
|
85180
85212
|
);
|
|
85181
85213
|
}
|
|
85182
85214
|
const api = new PaperclipApiClient({
|
|
@@ -89918,12 +89950,12 @@ async function runWorktreeInit(opts) {
|
|
|
89918
89950
|
}
|
|
89919
89951
|
async function worktreeInitCommand(opts) {
|
|
89920
89952
|
printPaperclipCliBanner();
|
|
89921
|
-
p16.intro(pc24.bgCyan(pc24.black(
|
|
89953
|
+
p16.intro(pc24.bgCyan(pc24.black(` ${getCliBrandPack().command} worktree init `)));
|
|
89922
89954
|
await runWorktreeInit(opts);
|
|
89923
89955
|
}
|
|
89924
89956
|
async function worktreeMakeCommand(nameArg, opts) {
|
|
89925
89957
|
printPaperclipCliBanner();
|
|
89926
|
-
p16.intro(pc24.bgCyan(pc24.black(
|
|
89958
|
+
p16.intro(pc24.bgCyan(pc24.black(` ${getCliBrandPack().command} worktree:make `)));
|
|
89927
89959
|
const name = resolveWorktreeMakeName(nameArg);
|
|
89928
89960
|
const startPoint = resolveWorktreeStartPoint(opts.startPoint);
|
|
89929
89961
|
const sourceCwd = process.cwd();
|
|
@@ -90079,7 +90111,7 @@ function worktreePathHasUncommittedChanges(worktreePath) {
|
|
|
90079
90111
|
}
|
|
90080
90112
|
async function worktreeCleanupCommand(nameArg, opts) {
|
|
90081
90113
|
printPaperclipCliBanner();
|
|
90082
|
-
p16.intro(pc24.bgCyan(pc24.black(
|
|
90114
|
+
p16.intro(pc24.bgCyan(pc24.black(` ${getCliBrandPack().command} worktree:cleanup `)));
|
|
90083
90115
|
const name = resolveWorktreeMakeName(nameArg);
|
|
90084
90116
|
const sourceCwd = process.cwd();
|
|
90085
90117
|
const targetPath = resolveWorktreeMakeTargetPath(name);
|
|
@@ -90704,7 +90736,7 @@ async function promptForSourceEndpoint(excludeWorktreePath) {
|
|
|
90704
90736
|
hint: `${choice.worktree}${choice.isCurrent ? " (current)" : ""}`
|
|
90705
90737
|
}));
|
|
90706
90738
|
if (choices.length === 0) {
|
|
90707
|
-
throw new Error(
|
|
90739
|
+
throw new Error(`No worktrees were found. Run \`${getCliBrandPack().command} worktree:list\` to inspect the repo worktrees.`);
|
|
90708
90740
|
}
|
|
90709
90741
|
const selection = await p16.select({
|
|
90710
90742
|
message: "Choose the source worktree to import from",
|
|
@@ -91102,7 +91134,7 @@ async function worktreeMergeHistoryCommand(sourceArg, opts) {
|
|
|
91102
91134
|
}
|
|
91103
91135
|
async function worktreeReseedCommand(opts) {
|
|
91104
91136
|
printPaperclipCliBanner();
|
|
91105
|
-
p16.intro(pc24.bgCyan(pc24.black(
|
|
91137
|
+
p16.intro(pc24.bgCyan(pc24.black(` ${getCliBrandPack().command} worktree reseed `)));
|
|
91106
91138
|
const seedMode = opts.seedMode ?? "full";
|
|
91107
91139
|
if (!isWorktreeSeedMode(seedMode)) {
|
|
91108
91140
|
throw new Error(`Unsupported seed mode "${seedMode}". Expected one of: minimal, full.`);
|
|
@@ -91184,6 +91216,7 @@ var WORKTREE_NAME_PREFIX, dynamicImport;
|
|
|
91184
91216
|
var init_worktree = __esm({
|
|
91185
91217
|
"../cli/src/commands/worktree.ts"() {
|
|
91186
91218
|
"use strict";
|
|
91219
|
+
init_brand();
|
|
91187
91220
|
init_dist2();
|
|
91188
91221
|
init_env();
|
|
91189
91222
|
init_home();
|
|
@@ -91540,7 +91573,7 @@ var init_src2 = __esm({
|
|
|
91540
91573
|
program = new Command();
|
|
91541
91574
|
brand = getCliBrandPack();
|
|
91542
91575
|
DATA_DIR_OPTION_HELP = `${brand.name} data directory root (isolates state from ~/.paperclip)`;
|
|
91543
|
-
program.name(
|
|
91576
|
+
program.name(brand.command).description(`${brand.name} CLI \u2014 setup, diagnose, and configure your instance`).version(cliVersion);
|
|
91544
91577
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
91545
91578
|
const options2 = actionCommand.optsWithGlobals();
|
|
91546
91579
|
const optionNames = new Set(actionCommand.options.map((option) => option.attributeName()));
|