stratagem-x7 0.3.22 → 0.3.24
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/cli.mjs +152 -36
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -156826,13 +156826,17 @@ function getProjectDirsUpToHome(subdir, cwd2) {
|
|
|
156826
156826
|
if (normalizePathForComparison(current) === normalizePathForComparison(home)) {
|
|
156827
156827
|
break;
|
|
156828
156828
|
}
|
|
156829
|
+
const stratagemSubdir = join33(current, ".stratagem", subdir);
|
|
156829
156830
|
const claudeSubdir = join33(current, ".claude", subdir);
|
|
156830
|
-
|
|
156831
|
-
|
|
156832
|
-
|
|
156833
|
-
|
|
156834
|
-
|
|
156835
|
-
|
|
156831
|
+
for (const candidate of [stratagemSubdir, claudeSubdir]) {
|
|
156832
|
+
try {
|
|
156833
|
+
statSync4(candidate);
|
|
156834
|
+
dirs.push(candidate);
|
|
156835
|
+
break;
|
|
156836
|
+
} catch (e) {
|
|
156837
|
+
if (!isFsInaccessible(e))
|
|
156838
|
+
throw e;
|
|
156839
|
+
}
|
|
156836
156840
|
}
|
|
156837
156841
|
if (gitRoot && normalizePathForComparison(current) === normalizePathForComparison(gitRoot)) {
|
|
156838
156842
|
break;
|
|
@@ -156964,12 +156968,22 @@ var init_markdownConfigLoader = __esm(() => {
|
|
|
156964
156968
|
const gitRoot = findGitRoot(cwd2);
|
|
156965
156969
|
const canonicalRoot = findCanonicalGitRoot(cwd2);
|
|
156966
156970
|
if (gitRoot && canonicalRoot && canonicalRoot !== gitRoot) {
|
|
156967
|
-
const
|
|
156968
|
-
const
|
|
156971
|
+
const worktreeStratagemSubdir = normalizePathForComparison(join33(gitRoot, ".stratagem", subdir));
|
|
156972
|
+
const worktreeClaudeSubdir = normalizePathForComparison(join33(gitRoot, ".claude", subdir));
|
|
156973
|
+
const worktreeHasSubdir = projectDirs.some((dir) => {
|
|
156974
|
+
const norm = normalizePathForComparison(dir);
|
|
156975
|
+
return norm === worktreeStratagemSubdir || norm === worktreeClaudeSubdir;
|
|
156976
|
+
});
|
|
156969
156977
|
if (!worktreeHasSubdir) {
|
|
156978
|
+
const mainStratagemSubdir = join33(canonicalRoot, ".stratagem", subdir);
|
|
156970
156979
|
const mainClaudeSubdir = join33(canonicalRoot, ".claude", subdir);
|
|
156971
|
-
if (!projectDirs.includes(mainClaudeSubdir)) {
|
|
156972
|
-
|
|
156980
|
+
if (!projectDirs.includes(mainStratagemSubdir) && !projectDirs.includes(mainClaudeSubdir)) {
|
|
156981
|
+
try {
|
|
156982
|
+
statSync4(mainStratagemSubdir);
|
|
156983
|
+
projectDirs.push(mainStratagemSubdir);
|
|
156984
|
+
} catch {
|
|
156985
|
+
projectDirs.push(mainClaudeSubdir);
|
|
156986
|
+
}
|
|
156973
156987
|
}
|
|
156974
156988
|
}
|
|
156975
156989
|
}
|
|
@@ -157557,9 +157571,13 @@ function convertToSandboxRuntimeConfig(settings) {
|
|
|
157557
157571
|
if (cwd2 !== originalCwd) {
|
|
157558
157572
|
denyWrite.push(resolve17(cwd2, ".claude", "settings.json"));
|
|
157559
157573
|
denyWrite.push(resolve17(cwd2, ".claude", "settings.local.json"));
|
|
157574
|
+
denyWrite.push(resolve17(cwd2, ".stratagem", "settings.json"));
|
|
157575
|
+
denyWrite.push(resolve17(cwd2, ".stratagem", "settings.local.json"));
|
|
157560
157576
|
}
|
|
157577
|
+
denyWrite.push(resolve17(originalCwd, ".stratagem", "skills"));
|
|
157561
157578
|
denyWrite.push(resolve17(originalCwd, ".claude", "skills"));
|
|
157562
157579
|
if (cwd2 !== originalCwd) {
|
|
157580
|
+
denyWrite.push(resolve17(cwd2, ".stratagem", "skills"));
|
|
157563
157581
|
denyWrite.push(resolve17(cwd2, ".claude", "skills"));
|
|
157564
157582
|
}
|
|
157565
157583
|
bareGitRepoScrubPaths.length = 0;
|
|
@@ -280927,6 +280945,79 @@ function profileSummary(profile, isActive) {
|
|
|
280927
280945
|
const modelDisplay = models.length <= 3 ? models.join(", ") : `${models[0]}, ${models[1]} + ${models.length - 2} more`;
|
|
280928
280946
|
return `${providerKind} · ${profile.baseUrl} · ${modelDisplay} · ${keyInfo}${activeSuffix}`;
|
|
280929
280947
|
}
|
|
280948
|
+
function getKnownModelsForBaseUrl(baseUrl) {
|
|
280949
|
+
const lower = baseUrl.toLowerCase();
|
|
280950
|
+
if (lower.includes("codex") || lower.includes("chatgpt.com")) {
|
|
280951
|
+
return [
|
|
280952
|
+
"gpt-5.5",
|
|
280953
|
+
"gpt-5.4",
|
|
280954
|
+
"gpt-5.3-codex",
|
|
280955
|
+
"gpt-5-mini",
|
|
280956
|
+
"codexplan",
|
|
280957
|
+
"codexspark",
|
|
280958
|
+
"o4-mini",
|
|
280959
|
+
"o3",
|
|
280960
|
+
"gpt-4.1",
|
|
280961
|
+
"gpt-4.1-mini",
|
|
280962
|
+
"gpt-5.4-mini",
|
|
280963
|
+
"gpt-5.2-codex",
|
|
280964
|
+
"gpt-5.1-codex-max",
|
|
280965
|
+
"gpt-5.1-codex-mini"
|
|
280966
|
+
];
|
|
280967
|
+
}
|
|
280968
|
+
if (lower.includes("api.openai.com")) {
|
|
280969
|
+
return [
|
|
280970
|
+
"gpt-5.5",
|
|
280971
|
+
"gpt-5.4",
|
|
280972
|
+
"gpt-5-mini",
|
|
280973
|
+
"o4-mini",
|
|
280974
|
+
"o3",
|
|
280975
|
+
"gpt-4.1",
|
|
280976
|
+
"gpt-4.1-mini",
|
|
280977
|
+
"gpt-4o",
|
|
280978
|
+
"gpt-4o-mini"
|
|
280979
|
+
];
|
|
280980
|
+
}
|
|
280981
|
+
if (lower.includes("generativelanguage.googleapis.com") || lower.includes("gemini")) {
|
|
280982
|
+
return [
|
|
280983
|
+
"gemini-2.5-pro",
|
|
280984
|
+
"gemini-2.5-flash",
|
|
280985
|
+
"gemini-2.0-flash",
|
|
280986
|
+
"gemini-2.0-flash-lite"
|
|
280987
|
+
];
|
|
280988
|
+
}
|
|
280989
|
+
if (lower.includes("mistral")) {
|
|
280990
|
+
return [
|
|
280991
|
+
"mistral-large-latest",
|
|
280992
|
+
"mistral-medium-latest",
|
|
280993
|
+
"mistral-small-latest",
|
|
280994
|
+
"codestral-latest"
|
|
280995
|
+
];
|
|
280996
|
+
}
|
|
280997
|
+
if (lower.includes("groq")) {
|
|
280998
|
+
return [
|
|
280999
|
+
"llama-3.3-70b-versatile",
|
|
281000
|
+
"llama-3.1-8b-instant",
|
|
281001
|
+
"mixtral-8x7b-32768",
|
|
281002
|
+
"gemma2-9b-it"
|
|
281003
|
+
];
|
|
281004
|
+
}
|
|
281005
|
+
if (lower.includes("deepseek")) {
|
|
281006
|
+
return [
|
|
281007
|
+
"deepseek-chat",
|
|
281008
|
+
"deepseek-reasoner",
|
|
281009
|
+
"deepseek-coder"
|
|
281010
|
+
];
|
|
281011
|
+
}
|
|
281012
|
+
if (lower.includes("x.ai") || lower.includes("grok")) {
|
|
281013
|
+
return [
|
|
281014
|
+
"grok-3",
|
|
281015
|
+
"grok-3-mini",
|
|
281016
|
+
"grok-2"
|
|
281017
|
+
];
|
|
281018
|
+
}
|
|
281019
|
+
return null;
|
|
281020
|
+
}
|
|
280930
281021
|
function getGithubCredentialSourceFromEnv(processEnv = process.env) {
|
|
280931
281022
|
if (processEnv.GITHUB_TOKEN?.trim() || processEnv.GH_TOKEN?.trim()) {
|
|
280932
281023
|
return "env";
|
|
@@ -281604,10 +281695,15 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281604
281695
|
if (cancelled)
|
|
281605
281696
|
return;
|
|
281606
281697
|
const models = (response.data?.data ?? []).map((m) => m.id ?? "").filter((id) => id.length > 0);
|
|
281607
|
-
|
|
281698
|
+
if (models.length > 0) {
|
|
281699
|
+
setDiscoveredModels(models);
|
|
281700
|
+
} else {
|
|
281701
|
+
if (!cancelled)
|
|
281702
|
+
setDiscoveredModels(getKnownModelsForBaseUrl(baseUrl));
|
|
281703
|
+
}
|
|
281608
281704
|
} catch {
|
|
281609
281705
|
if (!cancelled)
|
|
281610
|
-
setDiscoveredModels(
|
|
281706
|
+
setDiscoveredModels(getKnownModelsForBaseUrl(baseUrl));
|
|
281611
281707
|
} finally {
|
|
281612
281708
|
if (!cancelled)
|
|
281613
281709
|
setModelDiscoveryLoading(false);
|
|
@@ -382892,7 +382988,7 @@ function getAnthropicEnvMetadata() {
|
|
|
382892
382988
|
function getBuildAgeMinutes() {
|
|
382893
382989
|
if (false)
|
|
382894
382990
|
;
|
|
382895
|
-
const buildTime = new Date("2026-04-29T03:
|
|
382991
|
+
const buildTime = new Date("2026-04-29T03:43:04.326Z").getTime();
|
|
382896
382992
|
if (isNaN(buildTime))
|
|
382897
382993
|
return;
|
|
382898
382994
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -410069,7 +410165,7 @@ function buildPrimarySection() {
|
|
|
410069
410165
|
}, undefined, false, undefined, this);
|
|
410070
410166
|
return [{
|
|
410071
410167
|
label: "Version",
|
|
410072
|
-
value: "0.3.
|
|
410168
|
+
value: "0.3.24"
|
|
410073
410169
|
}, {
|
|
410074
410170
|
label: "Session name",
|
|
410075
410171
|
value: nameValue
|
|
@@ -424810,7 +424906,7 @@ Detect:
|
|
|
424810
424906
|
- Project structure (monorepo with workspaces, multi-module, or single project)
|
|
424811
424907
|
- Code style rules that differ from language defaults
|
|
424812
424908
|
- Non-obvious gotchas, required env vars, or workflow quirks
|
|
424813
|
-
- Existing .
|
|
424909
|
+
- Existing .stratagem/skills/ and .stratagem/rules/ directories
|
|
424814
424910
|
- Formatter configuration (prettier, biome, ruff, black, gofmt, rustfmt, or a unified format script like \`npm run format\` / \`make fmt\`)
|
|
424815
424911
|
- Git worktree usage: run \`git worktree list\` to check if this repo has multiple worktrees (only relevant if the user wants a personal CLAUDE.local.md)
|
|
424816
424912
|
|
|
@@ -424891,7 +424987,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
424891
424987
|
|
|
424892
424988
|
If AGENTS.md already exists: read it, propose specific changes as diffs, and explain why each change improves it. Do not silently overwrite.
|
|
424893
424989
|
|
|
424894
|
-
For projects with multiple concerns, suggest organizing instructions into \`.
|
|
424990
|
+
For projects with multiple concerns, suggest organizing instructions into \`.stratagem/rules/\` as separate focused files (e.g., \`code-style.md\`, \`testing.md\`, \`security.md\`). These are loaded automatically alongside AGENTS.md and can be scoped to specific file paths using \`paths\` frontmatter.
|
|
424895
424991
|
|
|
424896
424992
|
For projects with distinct subdirectories (monorepos, multi-module projects, etc.): mention that subdirectory AGENTS.md files can be added for module-specific instructions (they're loaded automatically when Claude works in those directories). Offer to create them if the user wants.
|
|
424897
424993
|
|
|
@@ -424927,9 +425023,9 @@ Skills add capabilities Claude can use on demand without bloating every session.
|
|
|
424927
425023
|
|
|
424928
425024
|
For each suggested skill, provide: name, one-line purpose, and why it fits this repo.
|
|
424929
425025
|
|
|
424930
|
-
If \`.
|
|
425026
|
+
If \`.stratagem/skills/\` already exists with skills, review them first. Do not overwrite existing skills — only propose new ones that complement what is already there.
|
|
424931
425027
|
|
|
424932
|
-
Create each skill at \`.
|
|
425028
|
+
Create each skill at \`.stratagem/skills/<skill-name>/SKILL.md\`:
|
|
424933
425029
|
|
|
424934
425030
|
\`\`\`yaml
|
|
424935
425031
|
---
|
|
@@ -424956,7 +425052,7 @@ Check the environment and ask about each gap you find (use AskUserQuestion):
|
|
|
424956
425052
|
|
|
424957
425053
|
For each hook preference (from the queue or the formatter fallback):
|
|
424958
425054
|
|
|
424959
|
-
1. Target file: default based on the Phase 1 instruction-file choice — project → \`.
|
|
425055
|
+
1. Target file: default based on the Phase 1 instruction-file choice — project → \`.stratagem/settings.json\` (team-shared, committed); personal → \`.stratagem/settings.local.json\`. Only ask if the user chose "both" in Phase 1 or the preference is ambiguous. Ask once for all hooks, not per-hook.
|
|
424960
425056
|
|
|
424961
425057
|
2. Pick the event and matcher from the preference:
|
|
424962
425058
|
- "after every edit" → \`PostToolUse\` with matcher \`Write|Edit\`
|
|
@@ -424965,7 +425061,7 @@ Check the environment and ask about each gap you find (use AskUserQuestion):
|
|
|
424965
425061
|
- "before committing" (literal git-commit gate) → **not a hooks.json hook.** Matchers can't filter Bash by command content, so there's no way to target only \`git commit\`. Route this to a git pre-commit hook (\`.git/hooks/pre-commit\`, husky, pre-commit framework) instead — offer to write one. If the user actually means "before I review and commit Claude's output", that's \`Stop\` — probe to disambiguate.
|
|
424966
425062
|
Probe if the preference is ambiguous.
|
|
424967
425063
|
|
|
424968
|
-
3. **Load the hook reference** (once per \`/init\` run, before the first hook): invoke the Skill tool with \`skill: 'update-config'\` and args starting with \`[hooks-only]\` followed by a one-line summary of what you're building — e.g., \`[hooks-only] Constructing a PostToolUse/Write|Edit format hook for .
|
|
425064
|
+
3. **Load the hook reference** (once per \`/init\` run, before the first hook): invoke the Skill tool with \`skill: 'update-config'\` and args starting with \`[hooks-only]\` followed by a one-line summary of what you're building — e.g., \`[hooks-only] Constructing a PostToolUse/Write|Edit format hook for .stratagem/settings.json using ruff\`. This loads the hooks schema and verification flow into context. Subsequent hooks reuse it — don't re-invoke.
|
|
424969
425065
|
|
|
424970
425066
|
4. Follow the skill's **"Constructing a Hook"** flow: dedup check → construct for THIS project → pipe-test raw → wrap → write JSON → \`jq -e\` validate → live-proof (for \`Pre|PostToolUse\` on triggerable matchers) → cleanup → handoff. Target file and event/matcher come from steps 1–2 above.
|
|
424971
425067
|
|
|
@@ -425172,9 +425268,9 @@ Based on the areas detected in Phase 1, you may need to create multiple verifier
|
|
|
425172
425268
|
|
|
425173
425269
|
## Phase 4: Generate Verifier Skill
|
|
425174
425270
|
|
|
425175
|
-
**All verifier skills are created in the project root's \`.
|
|
425271
|
+
**All verifier skills are created in the project root's \`.stratagem/skills/\` directory.** This ensures they are automatically loaded when Claude runs in the project.
|
|
425176
425272
|
|
|
425177
|
-
Write the skill file to \`.
|
|
425273
|
+
Write the skill file to \`.stratagem/skills/<verifier-name>/SKILL.md\`.
|
|
425178
425274
|
|
|
425179
425275
|
### Skill Template Structure
|
|
425180
425276
|
|
|
@@ -425258,7 +425354,7 @@ allowed-tools:
|
|
|
425258
425354
|
## Phase 5: Confirm Creation
|
|
425259
425355
|
|
|
425260
425356
|
After writing the skill file(s), inform the user:
|
|
425261
|
-
1. Where each skill was created (always in \`.
|
|
425357
|
+
1. Where each skill was created (always in \`.stratagem/skills/\`)
|
|
425262
425358
|
2. How the Verify agent will discover them — the folder name must contain "verifier" (case-insensitive) for automatic discovery
|
|
425263
425359
|
3. That they can edit the skills to customize them
|
|
425264
425360
|
4. That they can run /init-verifiers again to add more verifiers for other areas
|
|
@@ -449725,7 +449821,7 @@ function getStartupLines(termWidth) {
|
|
|
449725
449821
|
const sLen = ` ● ${sL} buffer ready — /help for breach controls`.length;
|
|
449726
449822
|
out.push(centerAnsiLine(boxRow(sRow, W2, sLen), tw));
|
|
449727
449823
|
out.push(centerAnsiLine(`${rgb3(...BORDER)}└${"─".repeat(W2 - 2)}┘${RESET2}`, tw));
|
|
449728
|
-
out.push(centerAnsiLine(`${rgb3(...DIMCOL)}STRATAGEM X7${RESET2} ${rgb3(...ACCENT)}v${"0.3.
|
|
449824
|
+
out.push(centerAnsiLine(`${rgb3(...DIMCOL)}STRATAGEM X7${RESET2} ${rgb3(...ACCENT)}v${"0.3.24"}${RESET2} ${rgb3(...CYAN)}// breach link stable${RESET2}`, tw));
|
|
449729
449825
|
out.push("");
|
|
449730
449826
|
return out;
|
|
449731
449827
|
}
|
|
@@ -456869,7 +456965,7 @@ function SkillsMenu(t0) {
|
|
|
456869
456965
|
t32 = /* @__PURE__ */ jsx_dev_runtime270.jsxDEV(FullWidthRow, {
|
|
456870
456966
|
children: /* @__PURE__ */ jsx_dev_runtime270.jsxDEV(ThemedText, {
|
|
456871
456967
|
dimColor: true,
|
|
456872
|
-
children: "Create skills in .
|
|
456968
|
+
children: "Create skills in .stratagem/skills/ or ~/.stratagem/skills/"
|
|
456873
456969
|
}, undefined, false, undefined, this)
|
|
456874
456970
|
}, undefined, false, undefined, this);
|
|
456875
456971
|
$2[6] = t32;
|
|
@@ -478314,7 +478410,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
478314
478410
|
var call60 = async () => {
|
|
478315
478411
|
return {
|
|
478316
478412
|
type: "text",
|
|
478317
|
-
value: `${"99.0.0"} (built ${"2026-04-29T03:
|
|
478413
|
+
value: `${"99.0.0"} (built ${"2026-04-29T03:43:04.326Z"})`
|
|
478318
478414
|
};
|
|
478319
478415
|
}, version2, version_default;
|
|
478320
478416
|
var init_version = __esm(() => {
|
|
@@ -488756,7 +488852,7 @@ Include 3 friction categories with 2 examples each.`,
|
|
|
488756
488852
|
- Good for: database queries, Slack integration, GitHub issue lookup, connecting to internal APIs
|
|
488757
488853
|
|
|
488758
488854
|
2. **Custom Skills**: Reusable prompts you define as markdown files that run with a single /command.
|
|
488759
|
-
- How to use: Create \`.
|
|
488855
|
+
- How to use: Create \`.stratagem/skills/commit/SKILL.md\` with instructions. Then type \`/commit\` to run it.
|
|
488760
488856
|
- Good for: repetitive workflows - /commit, /review, /test, /deploy, /pr, or complex multi-step workflows
|
|
488761
488857
|
|
|
488762
488858
|
3. **Hooks**: Shell commands that auto-run at specific lifecycle events.
|
|
@@ -493029,10 +493125,18 @@ function getClaudeSkillScope(filePath) {
|
|
|
493029
493125
|
const absolutePath = expandPath(filePath);
|
|
493030
493126
|
const absolutePathLower = normalizeCaseForComparison(absolutePath);
|
|
493031
493127
|
const bases = [
|
|
493128
|
+
{
|
|
493129
|
+
dir: expandPath(join137(getOriginalCwd(), ".stratagem", "skills")),
|
|
493130
|
+
prefix: "/.stratagem/skills/"
|
|
493131
|
+
},
|
|
493032
493132
|
{
|
|
493033
493133
|
dir: expandPath(join137(getOriginalCwd(), ".claude", "skills")),
|
|
493034
493134
|
prefix: "/.claude/skills/"
|
|
493035
493135
|
},
|
|
493136
|
+
{
|
|
493137
|
+
dir: expandPath(join137(homedir34(), ".stratagem", "skills")),
|
|
493138
|
+
prefix: "~/.stratagem/skills/"
|
|
493139
|
+
},
|
|
493036
493140
|
{
|
|
493037
493141
|
dir: expandPath(join137(homedir34(), ".claude", "skills")),
|
|
493038
493142
|
prefix: "~/.claude/skills/"
|
|
@@ -493080,7 +493184,7 @@ function getSettingsPaths() {
|
|
|
493080
493184
|
function isClaudeSettingsPath(filePath) {
|
|
493081
493185
|
const expandedPath = expandPath(filePath);
|
|
493082
493186
|
const normalizedPath = normalizeCaseForComparison(expandedPath);
|
|
493083
|
-
if (normalizedPath.endsWith(`${sep34}.openclaude${sep34}settings.json`) || normalizedPath.endsWith(`${sep34}.openclaude${sep34}settings.local.json`) || normalizedPath.endsWith(`${sep34}.claude${sep34}settings.json`) || normalizedPath.endsWith(`${sep34}.claude${sep34}settings.local.json`)) {
|
|
493187
|
+
if (normalizedPath.endsWith(`${sep34}.openclaude${sep34}settings.json`) || normalizedPath.endsWith(`${sep34}.openclaude${sep34}settings.local.json`) || normalizedPath.endsWith(`${sep34}.claude${sep34}settings.json`) || normalizedPath.endsWith(`${sep34}.claude${sep34}settings.local.json`) || normalizedPath.endsWith(`${sep34}.stratagem${sep34}settings.json`) || normalizedPath.endsWith(`${sep34}.stratagem${sep34}settings.local.json`)) {
|
|
493084
493188
|
return true;
|
|
493085
493189
|
}
|
|
493086
493190
|
return getSettingsPaths().some((settingsPath) => normalizeCaseForComparison(settingsPath) === normalizedPath);
|
|
@@ -493095,7 +493199,10 @@ function isClaudeConfigFilePath(filePath) {
|
|
|
493095
493199
|
const openCommandsDir = join137(getOriginalCwd(), ".openclaude", "commands");
|
|
493096
493200
|
const openAgentsDir = join137(getOriginalCwd(), ".openclaude", "agents");
|
|
493097
493201
|
const openSkillsDir = join137(getOriginalCwd(), ".openclaude", "skills");
|
|
493098
|
-
|
|
493202
|
+
const stratagemCommandsDir = join137(getOriginalCwd(), ".stratagem", "commands");
|
|
493203
|
+
const stratagemAgentsDir = join137(getOriginalCwd(), ".stratagem", "agents");
|
|
493204
|
+
const stratagemSkillsDir = join137(getOriginalCwd(), ".stratagem", "skills");
|
|
493205
|
+
return pathInWorkingPath(filePath, commandsDir) || pathInWorkingPath(filePath, agentsDir) || pathInWorkingPath(filePath, skillsDir) || pathInWorkingPath(filePath, openCommandsDir) || pathInWorkingPath(filePath, openAgentsDir) || pathInWorkingPath(filePath, openSkillsDir) || pathInWorkingPath(filePath, stratagemCommandsDir) || pathInWorkingPath(filePath, stratagemAgentsDir) || pathInWorkingPath(filePath, stratagemSkillsDir);
|
|
493099
493206
|
}
|
|
493100
493207
|
function isSessionPlanFile(absolutePath) {
|
|
493101
493208
|
const expectedPrefix = join137(getPlansDirectory(), getPlanSlug());
|
|
@@ -493881,7 +493988,8 @@ var init_filesystem = __esm(() => {
|
|
|
493881
493988
|
".vscode",
|
|
493882
493989
|
".idea",
|
|
493883
493990
|
".claude",
|
|
493884
|
-
".openclaude"
|
|
493991
|
+
".openclaude",
|
|
493992
|
+
".stratagem"
|
|
493885
493993
|
];
|
|
493886
493994
|
DIR_SEP = posix8.sep;
|
|
493887
493995
|
getClaudeTempDir = memoize_default(function getClaudeTempDir2() {
|
|
@@ -535757,7 +535865,15 @@ async function applySkillImprovement(skillName, updates) {
|
|
|
535757
535865
|
return;
|
|
535758
535866
|
const { join: join143 } = await import("path");
|
|
535759
535867
|
const fs4 = await import("fs/promises");
|
|
535760
|
-
const
|
|
535868
|
+
const stratagemPath = join143(getCwd(), ".stratagem", "skills", skillName, "SKILL.md");
|
|
535869
|
+
const claudePath = join143(getCwd(), ".claude", "skills", skillName, "SKILL.md");
|
|
535870
|
+
let filePath;
|
|
535871
|
+
try {
|
|
535872
|
+
await fs4.access(stratagemPath);
|
|
535873
|
+
filePath = stratagemPath;
|
|
535874
|
+
} catch {
|
|
535875
|
+
filePath = claudePath;
|
|
535876
|
+
}
|
|
535761
535877
|
let currentContent;
|
|
535762
535878
|
try {
|
|
535763
535879
|
currentContent = await fs4.readFile(filePath, "utf-8");
|
|
@@ -543243,7 +543359,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
543243
543359
|
},
|
|
543244
543360
|
{
|
|
543245
543361
|
id: "custom-commands",
|
|
543246
|
-
content: async () => "Create skills by adding .md files to .
|
|
543362
|
+
content: async () => "Create skills by adding .md files to .stratagem/skills/ in your project or ~/.stratagem/skills/ for skills that work in any project",
|
|
543247
543363
|
cooldownSessions: 15,
|
|
543248
543364
|
async isRelevant() {
|
|
543249
543365
|
const config3 = getGlobalConfig();
|
|
@@ -553726,7 +553842,7 @@ function WelcomeV2() {
|
|
|
553726
553842
|
dimColor: true,
|
|
553727
553843
|
children: [
|
|
553728
553844
|
"v",
|
|
553729
|
-
"0.3.
|
|
553845
|
+
"0.3.24",
|
|
553730
553846
|
" "
|
|
553731
553847
|
]
|
|
553732
553848
|
}, undefined, true, undefined, this)
|
|
@@ -573743,7 +573859,7 @@ Usage: stx7 --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
573743
573859
|
pendingHookMessages
|
|
573744
573860
|
}, renderAndRun);
|
|
573745
573861
|
}
|
|
573746
|
-
}).version("0.3.
|
|
573862
|
+
}).version("0.3.24 (STRATAGEM X7)", "-v, --version", "Output the version number");
|
|
573747
573863
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
573748
573864
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
573749
573865
|
if (canUserConfigureAdvisor()) {
|
|
@@ -574271,7 +574387,7 @@ if (false) {}
|
|
|
574271
574387
|
async function main2() {
|
|
574272
574388
|
const args = process.argv.slice(2);
|
|
574273
574389
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
574274
|
-
console.log(`${"0.3.
|
|
574390
|
+
console.log(`${"0.3.24"} (STRATAGEM X7)`);
|
|
574275
574391
|
return;
|
|
574276
574392
|
}
|
|
574277
574393
|
if (args.includes("--provider")) {
|
|
@@ -574393,4 +574509,4 @@ async function main2() {
|
|
|
574393
574509
|
}
|
|
574394
574510
|
main2();
|
|
574395
574511
|
|
|
574396
|
-
//# debugId=
|
|
574512
|
+
//# debugId=F5D81AF49661736F64756E2164756E21
|