claude-launchpad 1.14.0 → 1.16.0
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/{chunk-D6RAMWH6.js → chunk-7KB5YGQZ.js} +2 -2
- package/dist/{chunk-UN43OVRW.js → chunk-DLDVXHI3.js} +2 -2
- package/dist/{chunk-M6GVFN67.js → chunk-IPGNXDJF.js} +2 -2
- package/dist/{chunk-VF7U63AI.js → chunk-LCKV24Q3.js} +3 -3
- package/dist/{chunk-OPORVSAF.js → chunk-MX3T2VEX.js} +3 -3
- package/dist/{chunk-QEPE3WVF.js → chunk-U2TFIUGE.js} +57 -5
- package/dist/chunk-U2TFIUGE.js.map +1 -0
- package/dist/cli.js +136 -62
- package/dist/cli.js.map +1 -1
- package/dist/commands/memory/server.js +4 -4
- package/dist/{context-YIPO4LBS.js → context-3GHG7KW6.js} +6 -6
- package/dist/{doctor-DCHFJ3XV.js → doctor-EKGJ2YAO.js} +4 -4
- package/dist/{install-D32PV7SF.js → install-543ZKMXX.js} +6 -6
- package/dist/{pull-YUQTDRUP.js → pull-ULSZEVCR.js} +8 -8
- package/dist/{push-U4IVTFOU.js → push-JXCWX4NY.js} +8 -8
- package/dist/{require-deps-WDMHDGBN.js → require-deps-AEDO5YRM.js} +3 -3
- package/dist/{stats-77BYLKYP.js → stats-63L7C24W.js} +7 -7
- package/dist/{sync-DTCWK2CY.js → sync-QTJ6BXQ4.js} +5 -5
- package/dist/{sync-clean-ACZCB3NZ.js → sync-clean-OJEK4XH4.js} +3 -3
- package/dist/{sync-status-2V2RCYZO.js → sync-status-EAX527SC.js} +8 -8
- package/dist/{tui-HVJNLRY2.js → tui-BS4XXLOC.js} +92 -45
- package/dist/tui-BS4XXLOC.js.map +1 -0
- package/package.json +2 -1
- package/dist/chunk-QEPE3WVF.js.map +0 -1
- package/dist/tui-HVJNLRY2.js.map +0 -1
- /package/dist/{chunk-D6RAMWH6.js.map → chunk-7KB5YGQZ.js.map} +0 -0
- /package/dist/{chunk-UN43OVRW.js.map → chunk-DLDVXHI3.js.map} +0 -0
- /package/dist/{chunk-M6GVFN67.js.map → chunk-IPGNXDJF.js.map} +0 -0
- /package/dist/{chunk-VF7U63AI.js.map → chunk-LCKV24Q3.js.map} +0 -0
- /package/dist/{chunk-OPORVSAF.js.map → chunk-MX3T2VEX.js.map} +0 -0
- /package/dist/{context-YIPO4LBS.js.map → context-3GHG7KW6.js.map} +0 -0
- /package/dist/{doctor-DCHFJ3XV.js.map → doctor-EKGJ2YAO.js.map} +0 -0
- /package/dist/{install-D32PV7SF.js.map → install-543ZKMXX.js.map} +0 -0
- /package/dist/{pull-YUQTDRUP.js.map → pull-ULSZEVCR.js.map} +0 -0
- /package/dist/{push-U4IVTFOU.js.map → push-JXCWX4NY.js.map} +0 -0
- /package/dist/{require-deps-WDMHDGBN.js.map → require-deps-AEDO5YRM.js.map} +0 -0
- /package/dist/{stats-77BYLKYP.js.map → stats-63L7C24W.js.map} +0 -0
- /package/dist/{sync-DTCWK2CY.js.map → sync-QTJ6BXQ4.js.map} +0 -0
- /package/dist/{sync-clean-ACZCB3NZ.js.map → sync-clean-OJEK4XH4.js.map} +0 -0
- /package/dist/{sync-status-2V2RCYZO.js.map → sync-status-EAX527SC.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
log
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-U2TFIUGE.js";
|
|
5
5
|
|
|
6
6
|
// src/commands/memory/utils/require-deps.ts
|
|
7
7
|
import { createRequire } from "module";
|
|
@@ -44,4 +44,4 @@ export {
|
|
|
44
44
|
cwdRequire,
|
|
45
45
|
requireMemoryDeps
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-7KB5YGQZ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
cwdRequire
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7KB5YGQZ.js";
|
|
5
5
|
|
|
6
6
|
// src/commands/memory/config.ts
|
|
7
7
|
import { z } from "zod";
|
|
@@ -181,4 +181,4 @@ export {
|
|
|
181
181
|
createDatabase,
|
|
182
182
|
closeDatabase
|
|
183
183
|
};
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
184
|
+
//# sourceMappingURL=chunk-DLDVXHI3.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
log
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-U2TFIUGE.js";
|
|
5
5
|
|
|
6
6
|
// src/commands/memory/utils/gist-transport.ts
|
|
7
7
|
import { execSync } from "child_process";
|
|
@@ -205,4 +205,4 @@ export {
|
|
|
205
205
|
deleteGistFile,
|
|
206
206
|
updateGistFiles
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
208
|
+
//# sourceMappingURL=chunk-IPGNXDJF.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-HSGSTSVN.js";
|
|
6
6
|
import {
|
|
7
7
|
migrate
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MX3T2VEX.js";
|
|
9
9
|
import {
|
|
10
10
|
MemoryRepo
|
|
11
11
|
} from "./chunk-IDH3M4EI.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
createDatabase,
|
|
15
15
|
loadConfig,
|
|
16
16
|
resolveDataDir
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-DLDVXHI3.js";
|
|
18
18
|
|
|
19
19
|
// src/commands/memory/subcommands/init-storage.ts
|
|
20
20
|
function initStorage(dbPath) {
|
|
@@ -36,4 +36,4 @@ function initStorage(dbPath) {
|
|
|
36
36
|
export {
|
|
37
37
|
initStorage
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-LCKV24Q3.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
cwdRequire
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7KB5YGQZ.js";
|
|
5
5
|
import {
|
|
6
6
|
__export
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-U2TFIUGE.js";
|
|
8
8
|
|
|
9
9
|
// src/commands/memory/storage/migrations/001-initial.ts
|
|
10
10
|
var initial_exports = {};
|
|
@@ -222,4 +222,4 @@ function migrate(db) {
|
|
|
222
222
|
export {
|
|
223
223
|
migrate
|
|
224
224
|
};
|
|
225
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-MX3T2VEX.js.map
|
|
@@ -46,7 +46,7 @@ import { homedir } from "os";
|
|
|
46
46
|
// src/lib/sections.ts
|
|
47
47
|
var SESSION_START_CONTENT = "- ALWAYS read @TASKS.md first \u2014 it tracks progress across sessions\n- Check the Session Log at the bottom of TASKS.md for where we left off\n- Update TASKS.md as you complete work";
|
|
48
48
|
var BACKLOG_CONTENT = "- When a feature is discussed but deferred, add it to BACKLOG.md immediately\n- Never leave future ideas only in TASKS.md or conversation \u2014 they get lost\n- BACKLOG.md is the single source of truth for parked features\n- Every WP uses the 7-field template in BACKLOG.md \u2014 no freeform entries\n- Pull a WP into a sprint = **move**, not copy. A WP lives in exactly one file at a time";
|
|
49
|
-
var STOP_AND_SWARM_CONTENT = 'Three failed iterations on the same problem = stop iterating alone.\n(An iteration = an attempted fix that did not change the failing symptom. Announce "Attempt N" when retrying so the count stays visible.)\nFirst, one systematic pass \u2014 it usually resolves the loop without the swarm:\nreproduce the failure, read the FULL error output, state one hypothesis about the root cause, and verify it BEFORE writing any fix.\nOnly if that pass fails, swarm: dispatch at least 3 parallel subagents via the Task tool \u2014 in a single message so they run concurrently \u2014 each investigating from a different angle:\n1. Root-cause debug agent\n2. Upstream library/docs research agent\n3. Alternative architecture agent\
|
|
49
|
+
var STOP_AND_SWARM_CONTENT = 'Three failed iterations on the same problem = stop iterating alone.\n(An iteration = an attempted fix that did not change the failing symptom. Announce "Attempt N" when retrying so the count stays visible.)\nFirst, one systematic pass \u2014 it usually resolves the loop without the swarm:\nreproduce the failure, read the FULL error output, state one hypothesis about the root cause, and verify it BEFORE writing any fix.\nOnly if that pass fails, swarm: dispatch at least 3 parallel subagents via the Task tool \u2014 in a single message so they run concurrently \u2014 each investigating from a different angle:\n1. Root-cause debug agent\n2. Upstream library/docs research agent\n3. Alternative architecture agent\nEvery agent brief has four parts \u2014 agents start with empty context: Mission (one sentence), Context (exact repro command, full error text, already-failed fixes), Scope fence (files/questions NOT to touch), Return format (findings as file:line + evidence).\nTreat agent output as testimony, not truth \u2014 spot-check load-bearing claims (open the cited file, re-run the cited command) before acting on them.\nWait for all agents to return, synthesize their findings, then act.\nFor re-planning after repeated failure, switch to plan mode instead of attempting again.';
|
|
50
50
|
var STALE_SWARM_PHRASE = "spin up at least 3 parallel agents via the Agent tool";
|
|
51
51
|
var SWARM_PHRASE_REPLACEMENT = "dispatch at least 3 parallel subagents via the Task tool (in a single message so they run concurrently)";
|
|
52
52
|
var OFF_LIMITS_CONTENT = "- Never hardcode secrets \u2014 use environment variables\n- Never write to `.env` files\n- Never expose internal error details in API responses";
|
|
@@ -757,6 +757,7 @@ function isJqAvailable() {
|
|
|
757
757
|
}
|
|
758
758
|
return jqChecked;
|
|
759
759
|
}
|
|
760
|
+
var FORCE_PUSH_ERE = "git +(-[cC][^ ]* +([^ ]+ +)?)*push([^|;&]*( -[a-zA-Z]*f[a-zA-Z]*| --force| --force-with-lease(=[^ ;|&]*)?)( |$|;|&)|[^|;&]* \\+[^ ;|&]+)";
|
|
760
761
|
|
|
761
762
|
// src/lib/hook-scripts.ts
|
|
762
763
|
var SPRINT_SIZE_CHECK = `#!/usr/bin/env bash
|
|
@@ -1627,7 +1628,7 @@ async function addForcePushProtection(root) {
|
|
|
1627
1628
|
matcher: "Bash",
|
|
1628
1629
|
hooks: [{
|
|
1629
1630
|
type: "command",
|
|
1630
|
-
command: `cmd=${jqField("command")}; echo "$cmd" | grep -qE
|
|
1631
|
+
command: `cmd=${jqField("command")}; echo "$cmd" | grep -qE "${FORCE_PUSH_ERE}" && { echo 'WARNING: Force push detected \u2014 this can destroy remote history' >&2; exit 2; }; exit 0`
|
|
1631
1632
|
}]
|
|
1632
1633
|
}, "Added force-push protection hook (PreToolUse \u2192 Bash)");
|
|
1633
1634
|
}
|
|
@@ -1685,6 +1686,42 @@ async function addSessionStartHook(root) {
|
|
|
1685
1686
|
hooks: [{ type: "command", command: "cat TASKS.md 2>/dev/null; exit 0" }]
|
|
1686
1687
|
}, "Added SessionStart hook (injects TASKS.md at startup/resume/compact/clear)");
|
|
1687
1688
|
}
|
|
1689
|
+
async function upgradeForcePushPattern(root) {
|
|
1690
|
+
const stale = "push.*--force|push.*-f";
|
|
1691
|
+
let any = false;
|
|
1692
|
+
for (const [read, write, label] of [
|
|
1693
|
+
[readSettingsJson, writeSettingsJson, "settings.json"],
|
|
1694
|
+
[readSettingsLocalJson, writeSettingsLocalJson, "settings.local.json"]
|
|
1695
|
+
]) {
|
|
1696
|
+
const settings = await read(root);
|
|
1697
|
+
if (settings === null) continue;
|
|
1698
|
+
const raw = JSON.stringify(settings);
|
|
1699
|
+
if (!raw.includes(stale.replace(/\\/g, "\\\\"))) {
|
|
1700
|
+
if (!raw.includes(stale)) continue;
|
|
1701
|
+
}
|
|
1702
|
+
const hooks = settings.hooks;
|
|
1703
|
+
if (!hooks) continue;
|
|
1704
|
+
let changed = false;
|
|
1705
|
+
for (const groups of Object.values(hooks)) {
|
|
1706
|
+
for (const group of groups) {
|
|
1707
|
+
const inner = group.hooks;
|
|
1708
|
+
if (!inner) continue;
|
|
1709
|
+
for (const h of inner) {
|
|
1710
|
+
const cmd = typeof h.command === "string" ? h.command : "";
|
|
1711
|
+
if (cmd.includes(stale)) {
|
|
1712
|
+
h.command = cmd.replace(stale, FORCE_PUSH_ERE);
|
|
1713
|
+
changed = true;
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
if (!changed) continue;
|
|
1719
|
+
await write(root, settings);
|
|
1720
|
+
log.success(`Upgraded force-push guard pattern in ${label}`);
|
|
1721
|
+
any = true;
|
|
1722
|
+
}
|
|
1723
|
+
return any;
|
|
1724
|
+
}
|
|
1688
1725
|
|
|
1689
1726
|
// src/commands/doctor/fixer-hook-input.ts
|
|
1690
1727
|
import { readFile as readFile4 } from "fs/promises";
|
|
@@ -1695,10 +1732,10 @@ function rewriteEnvVarHookCommand(cmd) {
|
|
|
1695
1732
|
return `fp=${jqField("file_path")}; echo "$fp" | grep -qE '\\.(env|env\\..*)$' && ! echo "$fp" | grep -q '.env.example' && { echo 'BLOCKED: .env files contain secrets' >&2; exit 2; }; exit 0`;
|
|
1696
1733
|
}
|
|
1697
1734
|
if (cmd.includes("BLOCKED: Destructive command detected")) {
|
|
1698
|
-
return `cmd=${jqField("command")}; echo "$cmd" | grep -qE 'rm\\s+-rf\\s+/|DROP\\s+TABLE|DROP\\s+DATABASE
|
|
1735
|
+
return `cmd=${jqField("command")}; echo "$cmd" | grep -qE 'rm\\s+-rf\\s+/|DROP\\s+TABLE|DROP\\s+DATABASE|${FORCE_PUSH_ERE}' && { echo 'BLOCKED: Destructive command detected' >&2; exit 2; }; exit 0`;
|
|
1699
1736
|
}
|
|
1700
1737
|
if (cmd.includes("WARNING: Force push detected") || cmd.includes("Force push detected")) {
|
|
1701
|
-
return `cmd=${jqField("command")}; echo "$cmd" | grep -qE '
|
|
1738
|
+
return `cmd=${jqField("command")}; echo "$cmd" | grep -qE '${FORCE_PUSH_ERE}' && { echo 'WARNING: Force push detected \u2014 this can destroy remote history' >&2; exit 2; }; exit 0`;
|
|
1702
1739
|
}
|
|
1703
1740
|
if (cmd.includes("Sprint complete") && cmd.includes("TASKS.md")) {
|
|
1704
1741
|
return SPRINT_COMPLETE_NUDGE;
|
|
@@ -1754,6 +1791,15 @@ async function rewriteEnvVarHooks(root) {
|
|
|
1754
1791
|
didFix = true;
|
|
1755
1792
|
}
|
|
1756
1793
|
}
|
|
1794
|
+
const localSettings = await readSettingsLocalJson(root);
|
|
1795
|
+
if (localSettings !== null) {
|
|
1796
|
+
const outcome = rewriteSettingsHooks(localSettings);
|
|
1797
|
+
if (outcome.changed) {
|
|
1798
|
+
await writeSettingsLocalJson(root, outcome.settings);
|
|
1799
|
+
log.success("Rewrote inert $TOOL_INPUT_* hooks in settings.local.json to canonical jq+stdin form");
|
|
1800
|
+
didFix = true;
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1757
1803
|
const workflowCheckPath = join5(root, ".claude", "hooks", "workflow-check.sh");
|
|
1758
1804
|
if (await rewriteWrapperScript(workflowCheckPath, () => writeWorkflowCheckScript(root))) {
|
|
1759
1805
|
log.success("Rewrote .claude/hooks/workflow-check.sh to canonical jq+stdin form");
|
|
@@ -2009,6 +2055,11 @@ var FIX_TABLE = [
|
|
|
2009
2055
|
return a || b || c || d;
|
|
2010
2056
|
}
|
|
2011
2057
|
},
|
|
2058
|
+
{
|
|
2059
|
+
analyzer: "Hooks",
|
|
2060
|
+
match: "outdated pattern",
|
|
2061
|
+
fix: (root) => upgradeForcePushPattern(root)
|
|
2062
|
+
},
|
|
2012
2063
|
{
|
|
2013
2064
|
analyzer: "Hooks",
|
|
2014
2065
|
match: ".env file protection",
|
|
@@ -2663,6 +2714,7 @@ export {
|
|
|
2663
2714
|
jqField,
|
|
2664
2715
|
hasEnvVarHookPattern,
|
|
2665
2716
|
isJqAvailable,
|
|
2717
|
+
FORCE_PUSH_ERE,
|
|
2666
2718
|
SPRINT_COMPLETE_NUDGE,
|
|
2667
2719
|
WORKFLOW_CHECK_WRAPPER,
|
|
2668
2720
|
SPRINT_OPEN_WRAPPER,
|
|
@@ -2682,4 +2734,4 @@ export {
|
|
|
2682
2734
|
printScoreCard,
|
|
2683
2735
|
renderDoctorReport
|
|
2684
2736
|
};
|
|
2685
|
-
//# sourceMappingURL=chunk-
|
|
2737
|
+
//# sourceMappingURL=chunk-U2TFIUGE.js.map
|