codez-cli 0.1.14 → 0.1.15
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.js +244 -244
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -3466,7 +3466,7 @@ var getClaudeConfigHomeDir, VERTEX_REGION_OVERRIDES;
|
|
|
3466
3466
|
var init_envUtils = __esm(() => {
|
|
3467
3467
|
init_memoize();
|
|
3468
3468
|
getClaudeConfigHomeDir = memoize_default(() => {
|
|
3469
|
-
return (process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".
|
|
3469
|
+
return (process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".codez")).normalize("NFC");
|
|
3470
3470
|
}, () => process.env.CLAUDE_CONFIG_DIR);
|
|
3471
3471
|
VERTEX_REGION_OVERRIDES = [];
|
|
3472
3472
|
});
|
|
@@ -67964,7 +67964,7 @@ var init_env = __esm(() => {
|
|
|
67964
67964
|
if (getFsImplementation().existsSync(join16(getClaudeConfigHomeDir(), ".config.json"))) {
|
|
67965
67965
|
return join16(getClaudeConfigHomeDir(), ".config.json");
|
|
67966
67966
|
}
|
|
67967
|
-
const filename = `.
|
|
67967
|
+
const filename = `.codez${fileSuffixForOauthConfig()}.json`;
|
|
67968
67968
|
return join16(process.env.CLAUDE_CONFIG_DIR || homedir7(), filename);
|
|
67969
67969
|
});
|
|
67970
67970
|
hasInternetAccess = memoize_default(async () => {
|
|
@@ -69486,7 +69486,7 @@ var init_types4 = __esm(() => {
|
|
|
69486
69486
|
httpHookAllowedEnvVars: exports_external2.array(exports_external2.string()).optional().describe("Allowlist of environment variable names HTTP hooks may interpolate into headers. " + "When set, each hook's effective allowedEnvVars is the intersection with this list. " + "If undefined, no restriction is applied. " + "Arrays merge across settings sources (same semantics as allowedMcpServers)."),
|
|
69487
69487
|
allowManagedPermissionRulesOnly: exports_external2.boolean().optional().describe("When true (and set in managed settings), only permission rules (allow/deny/ask) from managed settings are respected. " + "User, project, local, and CLI argument permission rules are ignored."),
|
|
69488
69488
|
allowManagedMcpServersOnly: exports_external2.boolean().optional().describe("When true (and set in managed settings), allowedMcpServers is only read from managed settings. " + "deniedMcpServers still merges from all sources, so users can deny servers for themselves. " + "Users can still add their own MCP servers, but only the admin-defined allowlist applies."),
|
|
69489
|
-
strictPluginOnlyCustomization: exports_external2.preprocess((v) => Array.isArray(v) ? v.filter((x) => CUSTOMIZATION_SURFACES.includes(x)) : v, exports_external2.union([exports_external2.boolean(), exports_external2.array(exports_external2.enum(CUSTOMIZATION_SURFACES))])).optional().catch(undefined).describe("When set in managed settings, blocks non-plugin customization sources for the listed surfaces. " + 'Array form locks specific surfaces (e.g. ["skills", "hooks"]); `true` locks all four; `false` is an explicit no-op. ' + "Blocked: ~/.
|
|
69489
|
+
strictPluginOnlyCustomization: exports_external2.preprocess((v) => Array.isArray(v) ? v.filter((x) => CUSTOMIZATION_SURFACES.includes(x)) : v, exports_external2.union([exports_external2.boolean(), exports_external2.array(exports_external2.enum(CUSTOMIZATION_SURFACES))])).optional().catch(undefined).describe("When set in managed settings, blocks non-plugin customization sources for the listed surfaces. " + 'Array form locks specific surfaces (e.g. ["skills", "hooks"]); `true` locks all four; `false` is an explicit no-op. ' + "Blocked: ~/.codez/{surface}/, .codez/{surface}/ (project), settings.json hooks, .mcp.json. " + "NOT blocked: managed (policySettings) sources, plugin-provided customizations. " + "Composes with strictKnownMarketplaces for end-to-end admin control — plugins gated by " + "marketplace allowlist, everything else blocked here."),
|
|
69490
69490
|
statusLine: exports_external2.object({
|
|
69491
69491
|
type: exports_external2.literal("command"),
|
|
69492
69492
|
command: exports_external2.string(),
|
|
@@ -69504,7 +69504,7 @@ var init_types4 = __esm(() => {
|
|
|
69504
69504
|
});
|
|
69505
69505
|
}
|
|
69506
69506
|
}
|
|
69507
|
-
}).optional().describe("Additional marketplaces to make available for this repository. Typically used in repository .
|
|
69507
|
+
}).optional().describe("Additional marketplaces to make available for this repository. Typically used in repository .codez/settings.json to ensure team members have required plugin sources."),
|
|
69508
69508
|
strictKnownMarketplaces: exports_external2.array(MarketplaceSourceSchema()).optional().describe("Enterprise strict list of allowed marketplace sources. When set in managed settings, " + "ONLY these exact sources can be added as marketplaces. The check happens BEFORE " + "downloading, so blocked sources never touch the filesystem. " + "Note: this is a policy gate only — it does NOT register marketplaces. " + "To pre-register allowed marketplaces for users, also set extraKnownMarketplaces."),
|
|
69509
69509
|
blockedMarketplaces: exports_external2.array(MarketplaceSourceSchema()).optional().describe("Enterprise blocklist of marketplace sources. When set in managed settings, " + "these exact sources are blocked from being added as marketplaces. The check happens BEFORE " + "downloading, so blocked sources never touch the filesystem."),
|
|
69510
69510
|
forceLoginMethod: exports_external2.enum(["claudeai", "console"]).optional().describe('Force a specific login method: "claudeai" for Claude Pro/Max, "console" for Console billing'),
|
|
@@ -69553,7 +69553,7 @@ var init_types4 = __esm(() => {
|
|
|
69553
69553
|
autoUpdatesChannel: exports_external2.enum(["latest", "stable"]).optional().describe("Release channel for auto-updates (latest or stable)"),
|
|
69554
69554
|
...{},
|
|
69555
69555
|
minimumVersion: exports_external2.string().optional().describe("Minimum version to stay on - prevents downgrades when switching to stable channel"),
|
|
69556
|
-
plansDirectory: exports_external2.string().optional().describe("Custom directory for plan files, relative to project root. " + "If not set, defaults to ~/.
|
|
69556
|
+
plansDirectory: exports_external2.string().optional().describe("Custom directory for plan files, relative to project root. " + "If not set, defaults to ~/.codez/plans/"),
|
|
69557
69557
|
...process.env.USER_TYPE === "ant" ? {
|
|
69558
69558
|
classifierPermissionsEnabled: exports_external2.boolean().optional().describe("Enable AI-based classification for Bash(prompt:...) permission rules")
|
|
69559
69559
|
} : {},
|
|
@@ -69568,7 +69568,7 @@ var init_types4 = __esm(() => {
|
|
|
69568
69568
|
...{},
|
|
69569
69569
|
prefersReducedMotion: exports_external2.boolean().optional().describe("Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)"),
|
|
69570
69570
|
autoMemoryEnabled: exports_external2.boolean().optional().describe("Enable auto-memory for this project. When false, Claude will not read from or write to the auto-memory directory."),
|
|
69571
|
-
autoMemoryDirectory: exports_external2.string().optional().describe("Custom directory path for auto-memory storage. Supports ~/ prefix for home directory expansion. Ignored if set in projectSettings (checked-in .
|
|
69571
|
+
autoMemoryDirectory: exports_external2.string().optional().describe("Custom directory path for auto-memory storage. Supports ~/ prefix for home directory expansion. Ignored if set in projectSettings (checked-in .codez/settings.json) for security. When unset, defaults to ~/.codez/projects/<sanitized-cwd>/memory/."),
|
|
69572
69572
|
autoDreamEnabled: exports_external2.boolean().optional().describe("Enable background memory consolidation (auto-dream). When set, overrides the server-side default."),
|
|
69573
69573
|
showThinkingSummaries: exports_external2.boolean().optional().describe("Show thinking summaries in the transcript view (ctrl+o). Default: false."),
|
|
69574
69574
|
skipDangerousModePermissionPrompt: exports_external2.boolean().optional().describe("Whether the user has accepted the bypass permissions mode dialog"),
|
|
@@ -69582,7 +69582,7 @@ var init_types4 = __esm(() => {
|
|
|
69582
69582
|
sshIdentityFile: exports_external2.string().optional().describe("Path to SSH identity file (private key)"),
|
|
69583
69583
|
startDirectory: exports_external2.string().optional().describe("Default working directory on the remote host. " + "Supports tilde expansion (e.g. ~/projects). " + "If not specified, defaults to the remote user home directory. " + "Can be overridden by the [dir] positional argument in `codez ssh <config> [dir]`.")
|
|
69584
69584
|
})).optional().describe("SSH connection configurations for remote environments. " + "Typically set in managed settings by enterprise administrators " + "to pre-configure SSH connections for team members."),
|
|
69585
|
-
claudeMdExcludes: exports_external2.array(exports_external2.string()).optional().describe("Glob patterns or absolute paths of CLAUDE.md files to exclude from loading. " + "Patterns are matched against absolute file paths using picomatch. " + "Only applies to User, Project, and Local memory types (Managed/policy files cannot be excluded). " + 'Examples: "/home/user/monorepo/CLAUDE.md", "**/code/CLAUDE.md", "**/some-dir/.
|
|
69585
|
+
claudeMdExcludes: exports_external2.array(exports_external2.string()).optional().describe("Glob patterns or absolute paths of CLAUDE.md files to exclude from loading. " + "Patterns are matched against absolute file paths using picomatch. " + "Only applies to User, Project, and Local memory types (Managed/policy files cannot be excluded). " + 'Examples: "/home/user/monorepo/CLAUDE.md", "**/code/CLAUDE.md", "**/some-dir/.codez/rules/**"'),
|
|
69586
69586
|
pluginTrustMessage: exports_external2.string().optional().describe("Custom message to append to the plugin trust warning shown before installation. " + "Only read from policy settings (managed-settings.json / MDM). " + "Useful for enterprise administrators to add organization-specific context " + '(e.g., "All plugins from our internal marketplace are vetted and approved.").')
|
|
69587
69587
|
}).passthrough());
|
|
69588
69588
|
});
|
|
@@ -70252,9 +70252,9 @@ function getSettingsFilePathForSource(source) {
|
|
|
70252
70252
|
function getRelativeSettingsFilePathForSource(source) {
|
|
70253
70253
|
switch (source) {
|
|
70254
70254
|
case "projectSettings":
|
|
70255
|
-
return join19(".
|
|
70255
|
+
return join19(".codez", "settings.json");
|
|
70256
70256
|
case "localSettings":
|
|
70257
|
-
return join19(".
|
|
70257
|
+
return join19(".codez", "settings.local.json");
|
|
70258
70258
|
}
|
|
70259
70259
|
}
|
|
70260
70260
|
function getSettingsForSource(source) {
|
|
@@ -71422,7 +71422,7 @@ function getApiKeyFromFileDescriptor() {
|
|
|
71422
71422
|
setCached: setApiKeyFromFd
|
|
71423
71423
|
});
|
|
71424
71424
|
}
|
|
71425
|
-
var CCR_TOKEN_DIR = "/home/claude/.
|
|
71425
|
+
var CCR_TOKEN_DIR = "/home/claude/.codez/remote", CCR_OAUTH_TOKEN_PATH, CCR_API_KEY_PATH, CCR_SESSION_INGRESS_TOKEN_PATH;
|
|
71426
71426
|
var init_authFileDescriptor = __esm(() => {
|
|
71427
71427
|
init_state();
|
|
71428
71428
|
init_debug();
|
|
@@ -75157,7 +75157,7 @@ var init_auth = __esm(() => {
|
|
|
75157
75157
|
|
|
75158
75158
|
// src/utils/userAgent.ts
|
|
75159
75159
|
function getClaudeCodeUserAgent() {
|
|
75160
|
-
return `claude-code/${"0.1.
|
|
75160
|
+
return `claude-code/${"0.1.15"}`;
|
|
75161
75161
|
}
|
|
75162
75162
|
|
|
75163
75163
|
// src/utils/workloadContext.ts
|
|
@@ -75179,7 +75179,7 @@ function getUserAgent() {
|
|
|
75179
75179
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
75180
75180
|
const workload = getWorkload();
|
|
75181
75181
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75182
|
-
return `claude-cli/${"0.1.
|
|
75182
|
+
return `claude-cli/${"0.1.15"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75183
75183
|
}
|
|
75184
75184
|
function getMCPUserAgent() {
|
|
75185
75185
|
const parts = [];
|
|
@@ -75193,7 +75193,7 @@ function getMCPUserAgent() {
|
|
|
75193
75193
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
75194
75194
|
}
|
|
75195
75195
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75196
|
-
return `claude-code/${"0.1.
|
|
75196
|
+
return `claude-code/${"0.1.15"}${suffix}`;
|
|
75197
75197
|
}
|
|
75198
75198
|
function getWebFetchUserAgent() {
|
|
75199
75199
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -75331,7 +75331,7 @@ var init_user = __esm(() => {
|
|
|
75331
75331
|
deviceId,
|
|
75332
75332
|
sessionId: getSessionId(),
|
|
75333
75333
|
email: getEmail(),
|
|
75334
|
-
appVersion: "0.1.
|
|
75334
|
+
appVersion: "0.1.15",
|
|
75335
75335
|
platform: getHostPlatformForAnalytics(),
|
|
75336
75336
|
organizationUuid,
|
|
75337
75337
|
accountUuid,
|
|
@@ -89704,7 +89704,7 @@ var init_metadata = __esm(() => {
|
|
|
89704
89704
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
89705
89705
|
WHITESPACE_REGEX = /\s+/;
|
|
89706
89706
|
getVersionBase = memoize_default(() => {
|
|
89707
|
-
const match = "0.1.
|
|
89707
|
+
const match = "0.1.15".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
89708
89708
|
return match ? match[0] : undefined;
|
|
89709
89709
|
});
|
|
89710
89710
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -89744,9 +89744,9 @@ var init_metadata = __esm(() => {
|
|
|
89744
89744
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
89745
89745
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
89746
89746
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
89747
|
-
version: "0.1.
|
|
89747
|
+
version: "0.1.15",
|
|
89748
89748
|
versionBase: getVersionBase(),
|
|
89749
|
-
buildTime: "2026-04-02T01:
|
|
89749
|
+
buildTime: "2026-04-02T01:22:27.530Z",
|
|
89750
89750
|
deploymentEnvironment: env4.detectDeploymentEnvironment(),
|
|
89751
89751
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
89752
89752
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -90414,7 +90414,7 @@ function initialize1PEventLogging() {
|
|
|
90414
90414
|
const platform3 = getPlatform();
|
|
90415
90415
|
const attributes = {
|
|
90416
90416
|
[import_semantic_conventions.ATTR_SERVICE_NAME]: "claude-code",
|
|
90417
|
-
[import_semantic_conventions.ATTR_SERVICE_VERSION]: "0.1.
|
|
90417
|
+
[import_semantic_conventions.ATTR_SERVICE_VERSION]: "0.1.15"
|
|
90418
90418
|
};
|
|
90419
90419
|
if (platform3 === "wsl") {
|
|
90420
90420
|
const wslVersion = getWslVersion();
|
|
@@ -90441,7 +90441,7 @@ function initialize1PEventLogging() {
|
|
|
90441
90441
|
})
|
|
90442
90442
|
]
|
|
90443
90443
|
});
|
|
90444
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "0.1.
|
|
90444
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "0.1.15");
|
|
90445
90445
|
}
|
|
90446
90446
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
90447
90447
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -91906,7 +91906,7 @@ function getMemoryPath(memoryType) {
|
|
|
91906
91906
|
return "";
|
|
91907
91907
|
}
|
|
91908
91908
|
function getManagedClaudeRulesDir() {
|
|
91909
|
-
return join24(getManagedFilePath(), ".
|
|
91909
|
+
return join24(getManagedFilePath(), ".codez", "rules");
|
|
91910
91910
|
}
|
|
91911
91911
|
function getUserClaudeRulesDir() {
|
|
91912
91912
|
return join24(getClaudeConfigHomeDir(), "rules");
|
|
@@ -92387,7 +92387,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
92387
92387
|
if (!isAttributionHeaderEnabled()) {
|
|
92388
92388
|
return "";
|
|
92389
92389
|
}
|
|
92390
|
-
const version2 = `${"0.1.
|
|
92390
|
+
const version2 = `${"0.1.15"}.${fingerprint}`;
|
|
92391
92391
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
92392
92392
|
const cch = "";
|
|
92393
92393
|
const workload = getWorkload();
|
|
@@ -92900,7 +92900,7 @@ var init_prompt = __esm(() => {
|
|
|
92900
92900
|
});
|
|
92901
92901
|
|
|
92902
92902
|
// src/tools/FileEditTool/constants.ts
|
|
92903
|
-
var FILE_EDIT_TOOL_NAME = "Edit", CLAUDE_FOLDER_PERMISSION_PATTERN = "/.
|
|
92903
|
+
var FILE_EDIT_TOOL_NAME = "Edit", CLAUDE_FOLDER_PERMISSION_PATTERN = "/.codez/**", GLOBAL_CLAUDE_FOLDER_PERMISSION_PATTERN = "~/.codez/**", FILE_UNEXPECTEDLY_MODIFIED_ERROR = "File has been unexpectedly modified. Read it again before attempting to write it.";
|
|
92904
92904
|
|
|
92905
92905
|
// src/utils/pdfUtils.ts
|
|
92906
92906
|
function parsePDFPageRange(pages) {
|
|
@@ -133608,7 +133608,7 @@ function getProjectDirsUpToHome(subdir, cwd2) {
|
|
|
133608
133608
|
if (normalizePathForComparison(current) === normalizePathForComparison(home)) {
|
|
133609
133609
|
break;
|
|
133610
133610
|
}
|
|
133611
|
-
const claudeSubdir = join28(current, ".
|
|
133611
|
+
const claudeSubdir = join28(current, ".codez", subdir);
|
|
133612
133612
|
try {
|
|
133613
133613
|
statSync4(claudeSubdir);
|
|
133614
133614
|
dirs.push(claudeSubdir);
|
|
@@ -133742,15 +133742,15 @@ var init_markdownConfigLoader = __esm(() => {
|
|
|
133742
133742
|
loadMarkdownFilesForSubdir = memoize_default(async function(subdir, cwd2) {
|
|
133743
133743
|
const searchStartTime = Date.now();
|
|
133744
133744
|
const userDir = join28(getClaudeConfigHomeDir(), subdir);
|
|
133745
|
-
const managedDir = join28(getManagedFilePath(), ".
|
|
133745
|
+
const managedDir = join28(getManagedFilePath(), ".codez", subdir);
|
|
133746
133746
|
const projectDirs = getProjectDirsUpToHome(subdir, cwd2);
|
|
133747
133747
|
const gitRoot = findGitRoot(cwd2);
|
|
133748
133748
|
const canonicalRoot = findCanonicalGitRoot(cwd2);
|
|
133749
133749
|
if (gitRoot && canonicalRoot && canonicalRoot !== gitRoot) {
|
|
133750
|
-
const worktreeSubdir = normalizePathForComparison(join28(gitRoot, ".
|
|
133750
|
+
const worktreeSubdir = normalizePathForComparison(join28(gitRoot, ".codez", subdir));
|
|
133751
133751
|
const worktreeHasSubdir = projectDirs.some((dir) => normalizePathForComparison(dir) === worktreeSubdir);
|
|
133752
133752
|
if (!worktreeHasSubdir) {
|
|
133753
|
-
const mainClaudeSubdir = join28(canonicalRoot, ".
|
|
133753
|
+
const mainClaudeSubdir = join28(canonicalRoot, ".codez", subdir);
|
|
133754
133754
|
if (!projectDirs.includes(mainClaudeSubdir)) {
|
|
133755
133755
|
projectDirs.push(mainClaudeSubdir);
|
|
133756
133756
|
}
|
|
@@ -133964,7 +133964,7 @@ function getAddDirEnabledPlugins() {
|
|
|
133964
133964
|
const result = {};
|
|
133965
133965
|
for (const dir of getAdditionalDirectoriesForClaudeMd()) {
|
|
133966
133966
|
for (const file2 of SETTINGS_FILES) {
|
|
133967
|
-
const { settings } = parseSettingsFile(join29(dir, ".
|
|
133967
|
+
const { settings } = parseSettingsFile(join29(dir, ".codez", file2));
|
|
133968
133968
|
if (!settings?.enabledPlugins) {
|
|
133969
133969
|
continue;
|
|
133970
133970
|
}
|
|
@@ -133977,7 +133977,7 @@ function getAddDirExtraMarketplaces() {
|
|
|
133977
133977
|
const result = {};
|
|
133978
133978
|
for (const dir of getAdditionalDirectoriesForClaudeMd()) {
|
|
133979
133979
|
for (const file2 of SETTINGS_FILES) {
|
|
133980
|
-
const { settings } = parseSettingsFile(join29(dir, ".
|
|
133980
|
+
const { settings } = parseSettingsFile(join29(dir, ".codez", file2));
|
|
133981
133981
|
if (!settings?.extraKnownMarketplaces) {
|
|
133982
133982
|
continue;
|
|
133983
133983
|
}
|
|
@@ -137822,12 +137822,12 @@ function convertToSandboxRuntimeConfig(settings) {
|
|
|
137822
137822
|
const cwd2 = getCwdState();
|
|
137823
137823
|
const originalCwd = getOriginalCwd();
|
|
137824
137824
|
if (cwd2 !== originalCwd) {
|
|
137825
|
-
denyWrite.push(resolve16(cwd2, ".
|
|
137826
|
-
denyWrite.push(resolve16(cwd2, ".
|
|
137825
|
+
denyWrite.push(resolve16(cwd2, ".codez", "settings.json"));
|
|
137826
|
+
denyWrite.push(resolve16(cwd2, ".codez", "settings.local.json"));
|
|
137827
137827
|
}
|
|
137828
|
-
denyWrite.push(resolve16(originalCwd, ".
|
|
137828
|
+
denyWrite.push(resolve16(originalCwd, ".codez", "skills"));
|
|
137829
137829
|
if (cwd2 !== originalCwd) {
|
|
137830
|
-
denyWrite.push(resolve16(cwd2, ".
|
|
137830
|
+
denyWrite.push(resolve16(cwd2, ".codez", "skills"));
|
|
137831
137831
|
}
|
|
137832
137832
|
bareGitRepoScrubPaths.length = 0;
|
|
137833
137833
|
const bareGitRepoFiles = ["HEAD", "objects", "refs", "hooks", "config"];
|
|
@@ -166420,7 +166420,7 @@ async function loadAgentFromFile(filePath, pluginName, namespace, sourceName, pl
|
|
|
166420
166420
|
}
|
|
166421
166421
|
for (const field of ["permissionMode", "hooks", "mcpServers"]) {
|
|
166422
166422
|
if (frontmatter[field] !== undefined) {
|
|
166423
|
-
logForDebugging(`Plugin agent file ${filePath} sets ${field}, which is ignored for plugin agents. Use .
|
|
166423
|
+
logForDebugging(`Plugin agent file ${filePath} sets ${field}, which is ignored for plugin agents. Use .codez/agents/ for this level of control.`, { level: "warn" });
|
|
166424
166424
|
}
|
|
166425
166425
|
}
|
|
166426
166426
|
const maxTurnsRaw = frontmatter.maxTurns;
|
|
@@ -166721,7 +166721,7 @@ function getClaudeCodeGuideBasePrompt() {
|
|
|
166721
166721
|
4. Fetch the specific documentation pages
|
|
166722
166722
|
5. Provide clear, actionable guidance based on official documentation
|
|
166723
166723
|
6. Use ${WEB_SEARCH_TOOL_NAME} if docs don't cover the topic
|
|
166724
|
-
7. Reference local project files (CLAUDE.md, .
|
|
166724
|
+
7. Reference local project files (CLAUDE.md, .codez/ directory) when relevant using ${localSearchHint}
|
|
166725
166725
|
|
|
166726
166726
|
**Guidelines:**
|
|
166727
166727
|
- Always prioritize official documentation over assumptions
|
|
@@ -167116,10 +167116,10 @@ How to use the statusLine command:
|
|
|
167116
167116
|
To display both 5-hour and 7-day limits when available:
|
|
167117
167117
|
- input=$(cat); five=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty'); week=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty'); out=""; [ -n "$five" ] && out="5h:$(printf '%.0f' "$five")%"; [ -n "$week" ] && out="$out 7d:$(printf '%.0f' "$week")%"; echo "$out"
|
|
167118
167118
|
|
|
167119
|
-
2. For longer commands, you can save a new file in the user's ~/.
|
|
167120
|
-
- ~/.
|
|
167119
|
+
2. For longer commands, you can save a new file in the user's ~/.codez directory, e.g.:
|
|
167120
|
+
- ~/.codez/statusline-command.sh and reference that file in the settings.
|
|
167121
167121
|
|
|
167122
|
-
3. Update the user's ~/.
|
|
167122
|
+
3. Update the user's ~/.codez/settings.json with:
|
|
167123
167123
|
{
|
|
167124
167124
|
"statusLine": {
|
|
167125
167125
|
"type": "command",
|
|
@@ -167127,7 +167127,7 @@ How to use the statusLine command:
|
|
|
167127
167127
|
}
|
|
167128
167128
|
}
|
|
167129
167129
|
|
|
167130
|
-
4. If ~/.
|
|
167130
|
+
4. If ~/.codez/settings.json is a symlink, update the target file instead.
|
|
167131
167131
|
|
|
167132
167132
|
Guidelines:
|
|
167133
167133
|
- Preserve existing settings when updating
|
|
@@ -172247,14 +172247,14 @@ async function getMemoryFilesForNestedDirectory(dir, targetPath, processedPaths)
|
|
|
172247
172247
|
if (isSettingSourceEnabled("projectSettings")) {
|
|
172248
172248
|
const projectPath = join44(dir, "CLAUDE.md");
|
|
172249
172249
|
result.push(...await processMemoryFile(projectPath, "Project", processedPaths, false));
|
|
172250
|
-
const dotClaudePath = join44(dir, ".
|
|
172250
|
+
const dotClaudePath = join44(dir, ".codez", "CLAUDE.md");
|
|
172251
172251
|
result.push(...await processMemoryFile(dotClaudePath, "Project", processedPaths, false));
|
|
172252
172252
|
}
|
|
172253
172253
|
if (isSettingSourceEnabled("localSettings")) {
|
|
172254
172254
|
const localPath = join44(dir, "CLAUDE.local.md");
|
|
172255
172255
|
result.push(...await processMemoryFile(localPath, "Local", processedPaths, false));
|
|
172256
172256
|
}
|
|
172257
|
-
const rulesDir = join44(dir, ".
|
|
172257
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172258
172258
|
const unconditionalProcessedPaths = new Set(processedPaths);
|
|
172259
172259
|
result.push(...await processMdRules({
|
|
172260
172260
|
rulesDir,
|
|
@@ -172270,7 +172270,7 @@ async function getMemoryFilesForNestedDirectory(dir, targetPath, processedPaths)
|
|
|
172270
172270
|
return result;
|
|
172271
172271
|
}
|
|
172272
172272
|
async function getConditionalRulesForCwdLevelDirectory(dir, targetPath, processedPaths) {
|
|
172273
|
-
const rulesDir = join44(dir, ".
|
|
172273
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172274
172274
|
return processConditionedMdRules(targetPath, rulesDir, "Project", processedPaths, false);
|
|
172275
172275
|
}
|
|
172276
172276
|
async function processConditionedMdRules(targetPath, rulesDir, type, processedPaths, includeExternal) {
|
|
@@ -172517,9 +172517,9 @@ var init_claudemd = __esm(() => {
|
|
|
172517
172517
|
if (isSettingSourceEnabled("projectSettings") && !skipProject) {
|
|
172518
172518
|
const projectPath = join44(dir, "CLAUDE.md");
|
|
172519
172519
|
result.push(...await processMemoryFile(projectPath, "Project", processedPaths, includeExternal));
|
|
172520
|
-
const dotClaudePath = join44(dir, ".
|
|
172520
|
+
const dotClaudePath = join44(dir, ".codez", "CLAUDE.md");
|
|
172521
172521
|
result.push(...await processMemoryFile(dotClaudePath, "Project", processedPaths, includeExternal));
|
|
172522
|
-
const rulesDir = join44(dir, ".
|
|
172522
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172523
172523
|
result.push(...await processMdRules({
|
|
172524
172524
|
rulesDir,
|
|
172525
172525
|
type: "Project",
|
|
@@ -172538,9 +172538,9 @@ var init_claudemd = __esm(() => {
|
|
|
172538
172538
|
for (const dir of additionalDirs) {
|
|
172539
172539
|
const projectPath = join44(dir, "CLAUDE.md");
|
|
172540
172540
|
result.push(...await processMemoryFile(projectPath, "Project", processedPaths, includeExternal));
|
|
172541
|
-
const dotClaudePath = join44(dir, ".
|
|
172541
|
+
const dotClaudePath = join44(dir, ".codez", "CLAUDE.md");
|
|
172542
172542
|
result.push(...await processMemoryFile(dotClaudePath, "Project", processedPaths, includeExternal));
|
|
172543
|
-
const rulesDir = join44(dir, ".
|
|
172543
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172544
172544
|
result.push(...await processMdRules({
|
|
172545
172545
|
rulesDir,
|
|
172546
172546
|
type: "Project",
|
|
@@ -293417,7 +293417,7 @@ function getTelemetryAttributes() {
|
|
|
293417
293417
|
attributes["session.id"] = sessionId;
|
|
293418
293418
|
}
|
|
293419
293419
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
293420
|
-
attributes["app.version"] = "0.1.
|
|
293420
|
+
attributes["app.version"] = "0.1.15";
|
|
293421
293421
|
}
|
|
293422
293422
|
const oauthAccount = getOauthAccountInfo();
|
|
293423
293423
|
if (oauthAccount) {
|
|
@@ -304040,7 +304040,7 @@ var init_cronTasks = __esm(() => {
|
|
|
304040
304040
|
init_json();
|
|
304041
304041
|
init_log2();
|
|
304042
304042
|
init_slowOperations();
|
|
304043
|
-
CRON_FILE_REL = join49(".
|
|
304043
|
+
CRON_FILE_REL = join49(".codez", "scheduled_tasks.json");
|
|
304044
304044
|
DEFAULT_CRON_JITTER_CONFIG = {
|
|
304045
304045
|
recurringFrac: 0.1,
|
|
304046
304046
|
recurringCapMs: 15 * 60 * 1000,
|
|
@@ -317159,7 +317159,7 @@ async function getIdeLockfilesPaths() {
|
|
|
317159
317159
|
if (windowsHome) {
|
|
317160
317160
|
const converter = new WindowsToWSLConverter(process.env.WSL_DISTRO_NAME);
|
|
317161
317161
|
const wslPath = converter.toLocalPath(windowsHome);
|
|
317162
|
-
paths2.push(resolve23(wslPath, ".
|
|
317162
|
+
paths2.push(resolve23(wslPath, ".codez", "ide"));
|
|
317163
317163
|
}
|
|
317164
317164
|
try {
|
|
317165
317165
|
const usersDir = "/mnt/c/Users";
|
|
@@ -317171,7 +317171,7 @@ async function getIdeLockfilesPaths() {
|
|
|
317171
317171
|
if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
|
|
317172
317172
|
continue;
|
|
317173
317173
|
}
|
|
317174
|
-
paths2.push(join59(usersDir, user.name, ".
|
|
317174
|
+
paths2.push(join59(usersDir, user.name, ".codez", "ide"));
|
|
317175
317175
|
}
|
|
317176
317176
|
} catch (error40) {
|
|
317177
317177
|
if (isFsInaccessible(error40)) {
|
|
@@ -317427,7 +317427,7 @@ function getInstallationEnv() {
|
|
|
317427
317427
|
return;
|
|
317428
317428
|
}
|
|
317429
317429
|
function getClaudeCodeVersion() {
|
|
317430
|
-
return "0.1.
|
|
317430
|
+
return "0.1.15";
|
|
317431
317431
|
}
|
|
317432
317432
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
317433
317433
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -320146,7 +320146,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
320146
320146
|
const client2 = new Client({
|
|
320147
320147
|
name: "claude-code",
|
|
320148
320148
|
title: "codez",
|
|
320149
|
-
version: "0.1.
|
|
320149
|
+
version: "0.1.15",
|
|
320150
320150
|
description: "AI-powered agentic coding tool",
|
|
320151
320151
|
websiteUrl: PRODUCT_URL
|
|
320152
320152
|
}, {
|
|
@@ -320501,7 +320501,7 @@ var init_client5 = __esm(() => {
|
|
|
320501
320501
|
const client2 = new Client({
|
|
320502
320502
|
name: "claude-code",
|
|
320503
320503
|
title: "codez",
|
|
320504
|
-
version: "0.1.
|
|
320504
|
+
version: "0.1.15",
|
|
320505
320505
|
description: "AI-powered agentic coding tool",
|
|
320506
320506
|
websiteUrl: PRODUCT_URL
|
|
320507
320507
|
}, {
|
|
@@ -321281,13 +321281,13 @@ function getAllHooks(appState) {
|
|
|
321281
321281
|
function hookSourceDescriptionDisplayString(source) {
|
|
321282
321282
|
switch (source) {
|
|
321283
321283
|
case "userSettings":
|
|
321284
|
-
return "User settings (~/.
|
|
321284
|
+
return "User settings (~/.codez/settings.json)";
|
|
321285
321285
|
case "projectSettings":
|
|
321286
|
-
return "Project settings (.
|
|
321286
|
+
return "Project settings (.codez/settings.json)";
|
|
321287
321287
|
case "localSettings":
|
|
321288
|
-
return "Local settings (.
|
|
321288
|
+
return "Local settings (.codez/settings.local.json)";
|
|
321289
321289
|
case "pluginHook":
|
|
321290
|
-
return "Plugin hooks (~/.
|
|
321290
|
+
return "Plugin hooks (~/.codez/plugins/*/hooks/hooks.json)";
|
|
321291
321291
|
case "sessionHook":
|
|
321292
321292
|
return "Session hooks (in-memory, temporary)";
|
|
321293
321293
|
case "builtinHook":
|
|
@@ -396102,7 +396102,7 @@ async function initializeBetaTracing(resource) {
|
|
|
396102
396102
|
});
|
|
396103
396103
|
import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
|
|
396104
396104
|
setLoggerProvider(loggerProvider);
|
|
396105
|
-
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "0.1.
|
|
396105
|
+
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "0.1.15");
|
|
396106
396106
|
setEventLogger(eventLogger);
|
|
396107
396107
|
process.on("beforeExit", async () => {
|
|
396108
396108
|
await loggerProvider?.forceFlush();
|
|
@@ -396142,7 +396142,7 @@ async function initializeTelemetry() {
|
|
|
396142
396142
|
const platform5 = getPlatform();
|
|
396143
396143
|
const baseAttributes = {
|
|
396144
396144
|
[import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
|
|
396145
|
-
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "0.1.
|
|
396145
|
+
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "0.1.15"
|
|
396146
396146
|
};
|
|
396147
396147
|
if (platform5 === "wsl") {
|
|
396148
396148
|
const wslVersion = getWslVersion();
|
|
@@ -396187,7 +396187,7 @@ async function initializeTelemetry() {
|
|
|
396187
396187
|
} catch {}
|
|
396188
396188
|
};
|
|
396189
396189
|
registerCleanup(shutdownTelemetry2);
|
|
396190
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "0.1.
|
|
396190
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "0.1.15");
|
|
396191
396191
|
}
|
|
396192
396192
|
const meterProvider = new import_sdk_metrics2.MeterProvider({
|
|
396193
396193
|
resource,
|
|
@@ -396207,7 +396207,7 @@ async function initializeTelemetry() {
|
|
|
396207
396207
|
});
|
|
396208
396208
|
import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
|
|
396209
396209
|
setLoggerProvider(loggerProvider);
|
|
396210
|
-
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "0.1.
|
|
396210
|
+
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "0.1.15");
|
|
396211
396211
|
setEventLogger(eventLogger);
|
|
396212
396212
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
396213
396213
|
process.on("beforeExit", async () => {
|
|
@@ -396269,7 +396269,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
396269
396269
|
}
|
|
396270
396270
|
};
|
|
396271
396271
|
registerCleanup(shutdownTelemetry);
|
|
396272
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "0.1.
|
|
396272
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "0.1.15");
|
|
396273
396273
|
}
|
|
396274
396274
|
async function flushTelemetry() {
|
|
396275
396275
|
const meterProvider = getMeterProvider();
|
|
@@ -396645,7 +396645,7 @@ function getLocalClaudePath() {
|
|
|
396645
396645
|
}
|
|
396646
396646
|
function isRunningFromLocalInstallation() {
|
|
396647
396647
|
const execPath2 = process.argv[1] || "";
|
|
396648
|
-
return execPath2.includes("/.
|
|
396648
|
+
return execPath2.includes("/.codez/local/node_modules/");
|
|
396649
396649
|
}
|
|
396650
396650
|
async function writeIfMissing(path13, content, mode) {
|
|
396651
396651
|
try {
|
|
@@ -396826,9 +396826,9 @@ async function assertMinVersion() {
|
|
|
396826
396826
|
if (false) {}
|
|
396827
396827
|
try {
|
|
396828
396828
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
396829
|
-
if (versionConfig.minVersion && lt("0.1.
|
|
396829
|
+
if (versionConfig.minVersion && lt("0.1.15", versionConfig.minVersion)) {
|
|
396830
396830
|
console.error(`
|
|
396831
|
-
It looks like your version of codez (${"0.1.
|
|
396831
|
+
It looks like your version of codez (${"0.1.15"}) needs an update.
|
|
396832
396832
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
396833
396833
|
|
|
396834
396834
|
To update, please run:
|
|
@@ -397044,7 +397044,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
397044
397044
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
397045
397045
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
397046
397046
|
pid: process.pid,
|
|
397047
|
-
currentVersion: "0.1.
|
|
397047
|
+
currentVersion: "0.1.15"
|
|
397048
397048
|
});
|
|
397049
397049
|
return "in_progress";
|
|
397050
397050
|
}
|
|
@@ -397053,7 +397053,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
397053
397053
|
if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
|
|
397054
397054
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
397055
397055
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
397056
|
-
currentVersion: "0.1.
|
|
397056
|
+
currentVersion: "0.1.15"
|
|
397057
397057
|
});
|
|
397058
397058
|
console.error(`
|
|
397059
397059
|
Error: Windows NPM detected in WSL
|
|
@@ -397399,7 +397399,7 @@ function getInvokedBinary() {
|
|
|
397399
397399
|
async function detectMultipleInstallations() {
|
|
397400
397400
|
const fs9 = getFsImplementation();
|
|
397401
397401
|
const installations = [];
|
|
397402
|
-
const localPath = join67(homedir21(), ".
|
|
397402
|
+
const localPath = join67(homedir21(), ".codez", "local");
|
|
397403
397403
|
if (await localInstallationExists()) {
|
|
397404
397404
|
installations.push({ type: "npm-local", path: localPath });
|
|
397405
397405
|
}
|
|
@@ -397557,12 +397557,12 @@ async function detectConfigurationIssues(type) {
|
|
|
397557
397557
|
if (existingAlias) {
|
|
397558
397558
|
warnings.push({
|
|
397559
397559
|
issue: "Local installation not accessible",
|
|
397560
|
-
fix: `Alias exists but points to invalid target: ${existingAlias}. Update alias: alias claude="~/.
|
|
397560
|
+
fix: `Alias exists but points to invalid target: ${existingAlias}. Update alias: alias claude="~/.codez/local/claude"`
|
|
397561
397561
|
});
|
|
397562
397562
|
} else {
|
|
397563
397563
|
warnings.push({
|
|
397564
397564
|
issue: "Local installation not accessible",
|
|
397565
|
-
fix: 'Create alias: alias claude="~/.
|
|
397565
|
+
fix: 'Create alias: alias claude="~/.codez/local/claude"'
|
|
397566
397566
|
});
|
|
397567
397567
|
}
|
|
397568
397568
|
}
|
|
@@ -397588,7 +397588,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
397588
397588
|
}
|
|
397589
397589
|
async function getDoctorDiagnostic() {
|
|
397590
397590
|
const installationType = await getCurrentInstallationType();
|
|
397591
|
-
const version2 = typeof MACRO !== "undefined" ? "0.1.
|
|
397591
|
+
const version2 = typeof MACRO !== "undefined" ? "0.1.15" : "unknown";
|
|
397592
397592
|
const installationPath = await getInstallationPath();
|
|
397593
397593
|
const invokedBinary = getInvokedBinary();
|
|
397594
397594
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -398523,8 +398523,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
398523
398523
|
const maxVersion = await getMaxVersion();
|
|
398524
398524
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
398525
398525
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
398526
|
-
if (gte("0.1.
|
|
398527
|
-
logForDebugging(`Native installer: current version ${"0.1.
|
|
398526
|
+
if (gte("0.1.15", maxVersion)) {
|
|
398527
|
+
logForDebugging(`Native installer: current version ${"0.1.15"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
398528
398528
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
398529
398529
|
latency_ms: Date.now() - startTime,
|
|
398530
398530
|
max_version: maxVersion,
|
|
@@ -398535,7 +398535,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
398535
398535
|
version2 = maxVersion;
|
|
398536
398536
|
}
|
|
398537
398537
|
}
|
|
398538
|
-
if (!forceReinstall && version2 === "0.1.
|
|
398538
|
+
if (!forceReinstall && version2 === "0.1.15" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
|
|
398539
398539
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
398540
398540
|
logEvent("tengu_native_update_complete", {
|
|
398541
398541
|
latency_ms: Date.now() - startTime,
|
|
@@ -399288,7 +399288,7 @@ async function cleanupNpmInstallations() {
|
|
|
399288
399288
|
errors5.push(macroPackageResult.error);
|
|
399289
399289
|
}
|
|
399290
399290
|
}
|
|
399291
|
-
const localInstallDir = join71(homedir22(), ".
|
|
399291
|
+
const localInstallDir = join71(homedir22(), ".codez", "local");
|
|
399292
399292
|
try {
|
|
399293
399293
|
await rm5(localInstallDir, { recursive: true });
|
|
399294
399294
|
removed++;
|
|
@@ -411150,11 +411150,11 @@ var init_coreSchemas = __esm(() => {
|
|
|
411150
411150
|
initialPrompt: exports_external2.string().optional().describe("Auto-submitted as the first user turn when this agent is the main thread agent. Slash commands are processed. Prepended to any user-provided prompt."),
|
|
411151
411151
|
maxTurns: exports_external2.number().int().positive().optional().describe("Maximum number of agentic turns (API round-trips) before stopping"),
|
|
411152
411152
|
background: exports_external2.boolean().optional().describe("Run this agent as a background task (non-blocking, fire-and-forget) when invoked"),
|
|
411153
|
-
memory: exports_external2.enum(["user", "project", "local"]).optional().describe("Scope for auto-loading agent memory files. 'user' - ~/.
|
|
411153
|
+
memory: exports_external2.enum(["user", "project", "local"]).optional().describe("Scope for auto-loading agent memory files. 'user' - ~/.codez/agent-memory/<agentType>/, 'project' - .codez/agent-memory/<agentType>/, 'local' - .codez/agent-memory-local/<agentType>/"),
|
|
411154
411154
|
effort: exports_external2.union([exports_external2.enum(["low", "medium", "high", "max"]), exports_external2.number().int()]).optional().describe("Reasoning effort level for this agent. Either a named level or an integer"),
|
|
411155
411155
|
permissionMode: PermissionModeSchema().optional().describe("Permission mode controlling how tool executions are handled")
|
|
411156
411156
|
}).describe("Definition for a custom subagent that can be invoked via the Agent tool."));
|
|
411157
|
-
SettingSourceSchema = lazySchema(() => exports_external2.enum(["user", "project", "local"]).describe("Source for loading filesystem-based settings. " + "'user' - Global user settings (~/.
|
|
411157
|
+
SettingSourceSchema = lazySchema(() => exports_external2.enum(["user", "project", "local"]).describe("Source for loading filesystem-based settings. " + "'user' - Global user settings (~/.codez/settings.json). " + "'project' - Project settings (.codez/settings.json). " + "'local' - Local settings (.codez/settings.local.json)."));
|
|
411158
411158
|
SdkPluginConfigSchema = lazySchema(() => exports_external2.object({
|
|
411159
411159
|
type: exports_external2.literal("local").describe("Plugin type. Currently only 'local' is supported"),
|
|
411160
411160
|
path: exports_external2.string().describe("Absolute or relative path to the plugin directory")
|
|
@@ -430464,9 +430464,9 @@ async function processSessionStartHooks(source, {
|
|
|
430464
430464
|
if (errorMessage2.includes("Failed to clone") || errorMessage2.includes("network") || errorMessage2.includes("ETIMEDOUT") || errorMessage2.includes("ENOTFOUND")) {
|
|
430465
430465
|
userGuidance = "This appears to be a network issue. Check your internet connection and try again.";
|
|
430466
430466
|
} else if (errorMessage2.includes("Permission denied") || errorMessage2.includes("EACCES") || errorMessage2.includes("EPERM")) {
|
|
430467
|
-
userGuidance = "This appears to be a permissions issue. Check file permissions on ~/.
|
|
430467
|
+
userGuidance = "This appears to be a permissions issue. Check file permissions on ~/.codez/plugins/";
|
|
430468
430468
|
} else if (errorMessage2.includes("Invalid") || errorMessage2.includes("parse") || errorMessage2.includes("JSON") || errorMessage2.includes("schema")) {
|
|
430469
|
-
userGuidance = "This appears to be a configuration issue. Check your plugin settings in .
|
|
430469
|
+
userGuidance = "This appears to be a configuration issue. Check your plugin settings in .codez/settings.json";
|
|
430470
430470
|
} else {
|
|
430471
430471
|
userGuidance = "Please fix the plugin configuration or remove problematic plugins from your settings.";
|
|
430472
430472
|
}
|
|
@@ -446884,11 +446884,11 @@ import {
|
|
|
446884
446884
|
function getSkillsPath(source, dir) {
|
|
446885
446885
|
switch (source) {
|
|
446886
446886
|
case "policySettings":
|
|
446887
|
-
return join84(getManagedFilePath(), ".
|
|
446887
|
+
return join84(getManagedFilePath(), ".codez", dir);
|
|
446888
446888
|
case "userSettings":
|
|
446889
446889
|
return join84(getClaudeConfigHomeDir(), dir);
|
|
446890
446890
|
case "projectSettings":
|
|
446891
|
-
return `.
|
|
446891
|
+
return `.codez/${dir}`;
|
|
446892
446892
|
case "plugin":
|
|
446893
446893
|
return "plugin";
|
|
446894
446894
|
default:
|
|
@@ -447212,7 +447212,7 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
|
|
|
447212
447212
|
for (const filePath of filePaths) {
|
|
447213
447213
|
let currentDir = dirname33(filePath);
|
|
447214
447214
|
while (currentDir.startsWith(resolvedCwd + pathSep)) {
|
|
447215
|
-
const skillDir = join84(currentDir, ".
|
|
447215
|
+
const skillDir = join84(currentDir, ".codez", "skills");
|
|
447216
447216
|
if (!dynamicSkillDirs.has(skillDir)) {
|
|
447217
447217
|
dynamicSkillDirs.add(skillDir);
|
|
447218
447218
|
try {
|
|
@@ -447336,7 +447336,7 @@ var init_loadSkillsDir = __esm(() => {
|
|
|
447336
447336
|
import_ignore3 = __toESM(require_ignore(), 1);
|
|
447337
447337
|
getSkillDirCommands = memoize_default(async (cwd2) => {
|
|
447338
447338
|
const userSkillsDir = join84(getClaudeConfigHomeDir(), "skills");
|
|
447339
|
-
const managedSkillsDir = join84(getManagedFilePath(), ".
|
|
447339
|
+
const managedSkillsDir = join84(getManagedFilePath(), ".codez", "skills");
|
|
447340
447340
|
const projectSkillsDirs = getProjectDirsUpToHome("skills", cwd2);
|
|
447341
447341
|
logForDebugging(`Loading skills from: managed=${managedSkillsDir}, user=${userSkillsDir}, project=[${projectSkillsDirs.join(", ")}]`);
|
|
447342
447342
|
const additionalDirs = getAdditionalDirectoriesForClaudeMd();
|
|
@@ -447347,7 +447347,7 @@ var init_loadSkillsDir = __esm(() => {
|
|
|
447347
447347
|
logForDebugging(`[bare] Skipping skill dir discovery (${additionalDirs.length === 0 ? "no --add-dir" : "projectSettings disabled or skillsLocked"})`);
|
|
447348
447348
|
return [];
|
|
447349
447349
|
}
|
|
447350
|
-
const additionalSkillsNested2 = await Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join84(dir, ".
|
|
447350
|
+
const additionalSkillsNested2 = await Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join84(dir, ".codez", "skills"), "projectSettings")));
|
|
447351
447351
|
return additionalSkillsNested2.flat().map((s) => s.skill);
|
|
447352
447352
|
}
|
|
447353
447353
|
const [
|
|
@@ -447360,7 +447360,7 @@ var init_loadSkillsDir = __esm(() => {
|
|
|
447360
447360
|
isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_POLICY_SKILLS) ? Promise.resolve([]) : loadSkillsFromSkillsDir(managedSkillsDir, "policySettings"),
|
|
447361
447361
|
isSettingSourceEnabled("userSettings") && !skillsLocked ? loadSkillsFromSkillsDir(userSkillsDir, "userSettings") : Promise.resolve([]),
|
|
447362
447362
|
projectSettingsEnabled ? Promise.all(projectSkillsDirs.map((dir) => loadSkillsFromSkillsDir(dir, "projectSettings"))) : Promise.resolve([]),
|
|
447363
|
-
projectSettingsEnabled ? Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join84(dir, ".
|
|
447363
|
+
projectSettingsEnabled ? Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join84(dir, ".codez", "skills"), "projectSettings"))) : Promise.resolve([]),
|
|
447364
447364
|
skillsLocked ? Promise.resolve([]) : loadSkillsFromCommandsDir(cwd2)
|
|
447365
447365
|
]);
|
|
447366
447366
|
const allSkillsWithPaths = [
|
|
@@ -475018,7 +475018,7 @@ function getEnterWorktreeToolPrompt() {
|
|
|
475018
475018
|
|
|
475019
475019
|
## Behavior
|
|
475020
475020
|
|
|
475021
|
-
- In a git repository: creates a new git worktree inside \`.
|
|
475021
|
+
- In a git repository: creates a new git worktree inside \`.codez/worktrees/\` with a new branch based on HEAD
|
|
475022
475022
|
- Outside a git repository: delegates to WorktreeCreate/WorktreeRemove hooks for VCS-agnostic isolation
|
|
475023
475023
|
- Switches the session's working directory to the new worktree
|
|
475024
475024
|
- Use ExitWorktree to leave the worktree mid-session (keep or remove). On session exit, if still in the worktree, the user will be prompted to keep or remove it
|
|
@@ -477001,7 +477001,7 @@ When spawning teammates via the Agent tool, choose the \`subagent_type\` based o
|
|
|
477001
477001
|
|
|
477002
477002
|
- **Read-only agents** (e.g., Explore, Plan) cannot edit or write files. Only assign them research, search, or planning tasks. Never assign them implementation work.
|
|
477003
477003
|
- **Full-capability agents** (e.g., general-purpose) have access to all tools including file editing, writing, and bash. Use these for tasks that require making changes.
|
|
477004
|
-
- **Custom agents** defined in \`.
|
|
477004
|
+
- **Custom agents** defined in \`.codez/agents/\` may have their own tool restrictions. Check their descriptions to understand what they can and cannot do.
|
|
477005
477005
|
|
|
477006
477006
|
Always review the agent type descriptions and their available tools listed in the Agent tool prompt before selecting a \`subagent_type\` for a teammate.
|
|
477007
477007
|
|
|
@@ -477015,8 +477015,8 @@ Create a new team to coordinate multiple agents working on a project. Teams have
|
|
|
477015
477015
|
\`\`\`
|
|
477016
477016
|
|
|
477017
477017
|
This creates:
|
|
477018
|
-
- A team file at \`~/.
|
|
477019
|
-
- A corresponding task list directory at \`~/.
|
|
477018
|
+
- A team file at \`~/.codez/teams/{team-name}/config.json\`
|
|
477019
|
+
- A corresponding task list directory at \`~/.codez/tasks/{team-name}/\`
|
|
477020
477020
|
|
|
477021
477021
|
## Team Workflow
|
|
477022
477022
|
|
|
@@ -477058,7 +477058,7 @@ Teammates go idle after every turn—this is completely normal and expected. A t
|
|
|
477058
477058
|
## Discovering Team Members
|
|
477059
477059
|
|
|
477060
477060
|
Teammates can read the team config file to discover other team members:
|
|
477061
|
-
- **Team config location**: \`~/.
|
|
477061
|
+
- **Team config location**: \`~/.codez/teams/{team-name}/config.json\`
|
|
477062
477062
|
|
|
477063
477063
|
The config file contains a \`members\` array with each teammate's:
|
|
477064
477064
|
- \`name\`: Human-readable name (**always use this** for messaging and task assignment)
|
|
@@ -477071,12 +477071,12 @@ The config file contains a \`members\` array with each teammate's:
|
|
|
477071
477071
|
|
|
477072
477072
|
Example of reading team config:
|
|
477073
477073
|
\`\`\`
|
|
477074
|
-
Use the Read tool to read ~/.
|
|
477074
|
+
Use the Read tool to read ~/.codez/teams/{team-name}/config.json
|
|
477075
477075
|
\`\`\`
|
|
477076
477076
|
|
|
477077
477077
|
## Task List Coordination
|
|
477078
477078
|
|
|
477079
|
-
Teams share a task list that all teammates can access at \`~/.
|
|
477079
|
+
Teams share a task list that all teammates can access at \`~/.codez/tasks/{team-name}/\`.
|
|
477080
477080
|
|
|
477081
477081
|
Teammates should:
|
|
477082
477082
|
1. Check TaskList periodically, **especially after completing each task**, to find available work or see newly unblocked tasks
|
|
@@ -477260,8 +477260,8 @@ function getPrompt7() {
|
|
|
477260
477260
|
Remove team and task directories when the swarm work is complete.
|
|
477261
477261
|
|
|
477262
477262
|
This operation:
|
|
477263
|
-
- Removes the team directory (\`~/.
|
|
477264
|
-
- Removes the task directory (\`~/.
|
|
477263
|
+
- Removes the team directory (\`~/.codez/teams/{team-name}/\`)
|
|
477264
|
+
- Removes the task directory (\`~/.codez/tasks/{team-name}/\`)
|
|
477265
477265
|
- Clears team context from the current session
|
|
477266
477266
|
|
|
477267
477267
|
**IMPORTANT**: TeamDelete will fail if the team still has active members. Gracefully terminate teammates first, then call TeamDelete after all teammates have shut down.
|
|
@@ -489356,7 +489356,7 @@ function getAnthropicEnvMetadata() {
|
|
|
489356
489356
|
function getBuildAgeMinutes() {
|
|
489357
489357
|
if (false)
|
|
489358
489358
|
;
|
|
489359
|
-
const buildTime = new Date("2026-04-02T01:
|
|
489359
|
+
const buildTime = new Date("2026-04-02T01:22:27.530Z").getTime();
|
|
489360
489360
|
if (isNaN(buildTime))
|
|
489361
489361
|
return;
|
|
489362
489362
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -500722,7 +500722,7 @@ async function cacheAndRegisterPlugin(pluginId, entry, scope = "user", projectPa
|
|
|
500722
500722
|
const normalizedCachePath = cacheResult.path.endsWith(sep26) ? cacheResult.path : cacheResult.path + sep26;
|
|
500723
500723
|
const isSubdirectory = versionedPath.startsWith(normalizedCachePath);
|
|
500724
500724
|
if (isSubdirectory) {
|
|
500725
|
-
const tempPath = join102(dirname46(cacheResult.path), `.
|
|
500725
|
+
const tempPath = join102(dirname46(cacheResult.path), `.codez-plugin-temp-${Date.now()}-${randomBytes14(4).toString("hex")}`);
|
|
500726
500726
|
await rename5(cacheResult.path, tempPath);
|
|
500727
500727
|
await getFsImplementation().mkdir(dirname46(versionedPath));
|
|
500728
500728
|
await rename5(tempPath, versionedPath);
|
|
@@ -509272,7 +509272,7 @@ import { dirname as dirname48, join as join106 } from "path";
|
|
|
509272
509272
|
function detectShell() {
|
|
509273
509273
|
const shell = process.env.SHELL || "";
|
|
509274
509274
|
const home = homedir27();
|
|
509275
|
-
const claudeDir = join106(home, ".
|
|
509275
|
+
const claudeDir = join106(home, ".codez");
|
|
509276
509276
|
if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
|
|
509277
509277
|
const cacheFile = join106(claudeDir, "completion.zsh");
|
|
509278
509278
|
return {
|
|
@@ -513702,7 +513702,7 @@ function Feedback({
|
|
|
513702
513702
|
platform: env4.platform,
|
|
513703
513703
|
gitRepo: envInfo.isGit,
|
|
513704
513704
|
terminal: env4.terminal,
|
|
513705
|
-
version: "0.1.
|
|
513705
|
+
version: "0.1.15",
|
|
513706
513706
|
transcript: normalizeMessagesForAPI(messages),
|
|
513707
513707
|
errors: sanitizedErrors,
|
|
513708
513708
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -513841,7 +513841,7 @@ function Feedback({
|
|
|
513841
513841
|
dimColor: true
|
|
513842
513842
|
}, description)), /* @__PURE__ */ React167.createElement(ThemedText, null, "- Environment info:", " ", /* @__PURE__ */ React167.createElement(ThemedText, {
|
|
513843
513843
|
dimColor: true
|
|
513844
|
-
}, env4.platform, ", ", env4.terminal, ", v", "0.1.
|
|
513844
|
+
}, env4.platform, ", ", env4.terminal, ", v", "0.1.15")), envInfo.gitState && /* @__PURE__ */ React167.createElement(ThemedText, null, "- Git repo metadata:", " ", /* @__PURE__ */ React167.createElement(ThemedText, {
|
|
513845
513845
|
dimColor: true
|
|
513846
513846
|
}, envInfo.gitState.branchName, envInfo.gitState.commitHash ? `, ${envInfo.gitState.commitHash.slice(0, 7)}` : "", envInfo.gitState.remoteUrl ? ` @ ${envInfo.gitState.remoteUrl}` : "", !envInfo.gitState.isHeadOnRemote && ", not synced", !envInfo.gitState.isClean && ", has local changes")), /* @__PURE__ */ React167.createElement(ThemedText, null, "- Current session transcript")), /* @__PURE__ */ React167.createElement(ThemedBox_default, {
|
|
513847
513847
|
marginTop: 1
|
|
@@ -513878,7 +513878,7 @@ ${sanitizedDescription}
|
|
|
513878
513878
|
` + `**Environment Info**
|
|
513879
513879
|
` + `- Platform: ${env4.platform}
|
|
513880
513880
|
` + `- Terminal: ${env4.terminal}
|
|
513881
|
-
` + `- Version: ${"0.1.
|
|
513881
|
+
` + `- Version: ${"0.1.15"}
|
|
513882
513882
|
` + `- Feedback ID: ${feedbackId}
|
|
513883
513883
|
` + `
|
|
513884
513884
|
**Errors**
|
|
@@ -516939,7 +516939,7 @@ function buildPrimarySection() {
|
|
|
516939
516939
|
}, "/rename to add a name");
|
|
516940
516940
|
return [{
|
|
516941
516941
|
label: "Version",
|
|
516942
|
-
value: "0.1.
|
|
516942
|
+
value: "0.1.15"
|
|
516943
516943
|
}, {
|
|
516944
516944
|
label: "Session name",
|
|
516945
516945
|
value: nameValue
|
|
@@ -520343,7 +520343,7 @@ function Config({
|
|
|
520343
520343
|
});
|
|
520344
520344
|
}
|
|
520345
520345
|
})) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ React182.createElement(ChannelDowngradeDialog, {
|
|
520346
|
-
currentVersion: "0.1.
|
|
520346
|
+
currentVersion: "0.1.15",
|
|
520347
520347
|
onChoice: (choice) => {
|
|
520348
520348
|
setShowSubmenu(null);
|
|
520349
520349
|
setTabsHidden(false);
|
|
@@ -520355,7 +520355,7 @@ function Config({
|
|
|
520355
520355
|
autoUpdatesChannel: "stable"
|
|
520356
520356
|
};
|
|
520357
520357
|
if (choice === "stay") {
|
|
520358
|
-
newSettings.minimumVersion = "0.1.
|
|
520358
|
+
newSettings.minimumVersion = "0.1.15";
|
|
520359
520359
|
}
|
|
520360
520360
|
updateSettingsForSource("userSettings", newSettings);
|
|
520361
520361
|
setSettingsData((prev_27) => ({
|
|
@@ -525060,7 +525060,7 @@ function Doctor(t0) {
|
|
|
525060
525060
|
getDoctorDiagnostic().then(setDiagnostic);
|
|
525061
525061
|
(async () => {
|
|
525062
525062
|
const userAgentsDir = join115(getClaudeConfigHomeDir(), "agents");
|
|
525063
|
-
const projectAgentsDir = join115(getOriginalCwd(), ".
|
|
525063
|
+
const projectAgentsDir = join115(getOriginalCwd(), ".codez", "agents");
|
|
525064
525064
|
const {
|
|
525065
525065
|
activeAgents,
|
|
525066
525066
|
allAgents,
|
|
@@ -525689,7 +525689,7 @@ function MemoryFileSelector(t0) {
|
|
|
525689
525689
|
let description;
|
|
525690
525690
|
const isGit = projectIsInGitRepo(getOriginalCwd());
|
|
525691
525691
|
if (file2.type === "User" && !file2.isNested) {
|
|
525692
|
-
description = "Saved in ~/.
|
|
525692
|
+
description = "Saved in ~/.codez/CLAUDE.md";
|
|
525693
525693
|
} else {
|
|
525694
525694
|
if (file2.type === "Project" && !file2.isNested && file2.path === projectMemoryPath) {
|
|
525695
525695
|
description = `${isGit ? "Checked in at" : "Saved in"} ./CLAUDE.md`;
|
|
@@ -527116,7 +527116,7 @@ function HelpV2(t0) {
|
|
|
527116
527116
|
let t6;
|
|
527117
527117
|
if ($3[31] !== tabs) {
|
|
527118
527118
|
t6 = /* @__PURE__ */ React209.createElement(Tabs, {
|
|
527119
|
-
title: `codez v${"0.1.
|
|
527119
|
+
title: `codez v${"0.1.15"}`,
|
|
527120
527120
|
color: "professionalBlue",
|
|
527121
527121
|
defaultTab: "general"
|
|
527122
527122
|
}, tabs);
|
|
@@ -528296,9 +528296,9 @@ Based on the areas detected in Phase 1, you may need to create multiple verifier
|
|
|
528296
528296
|
|
|
528297
528297
|
## Phase 4: Generate Verifier Skill
|
|
528298
528298
|
|
|
528299
|
-
**All verifier skills are created in the project root's \`.
|
|
528299
|
+
**All verifier skills are created in the project root's \`.codez/skills/\` directory.** This ensures they are automatically loaded when Claude runs in the project.
|
|
528300
528300
|
|
|
528301
|
-
Write the skill file to \`.
|
|
528301
|
+
Write the skill file to \`.codez/skills/<verifier-name>/SKILL.md\`.
|
|
528302
528302
|
|
|
528303
528303
|
### Skill Template Structure
|
|
528304
528304
|
|
|
@@ -528382,7 +528382,7 @@ allowed-tools:
|
|
|
528382
528382
|
## Phase 5: Confirm Creation
|
|
528383
528383
|
|
|
528384
528384
|
After writing the skill file(s), inform the user:
|
|
528385
|
-
1. Where each skill was created (always in \`.
|
|
528385
|
+
1. Where each skill was created (always in \`.codez/skills/\`)
|
|
528386
528386
|
2. How the Verify agent will discover them — the folder name must contain "verifier" (case-insensitive) for automatic discovery
|
|
528387
528387
|
3. That they can edit the skills to customize them
|
|
528388
528388
|
4. That they can run /init-verifiers again to add more verifiers for other areas
|
|
@@ -537736,7 +537736,7 @@ async function uninstallPluginOp(plugin, scope = "user", deleteDataDir = true) {
|
|
|
537736
537736
|
if (actualScope === "project") {
|
|
537737
537737
|
return {
|
|
537738
537738
|
success: false,
|
|
537739
|
-
message: `Plugin "${plugin}" is enabled at project scope (.
|
|
537739
|
+
message: `Plugin "${plugin}" is enabled at project scope (.codez/settings.json, shared with your team). To disable just for you: codez plugin disable ${plugin} --scope local`
|
|
537740
537740
|
};
|
|
537741
537741
|
}
|
|
537742
537742
|
return {
|
|
@@ -540986,7 +540986,7 @@ function ManagePlugins({
|
|
|
540986
540986
|
return;
|
|
540987
540987
|
}
|
|
540988
540988
|
clearAllCaches();
|
|
540989
|
-
setResult(`✓ Disabled ${selectedPlugin.plugin.name} in .
|
|
540989
|
+
setResult(`✓ Disabled ${selectedPlugin.plugin.name} in .codez/settings.local.json. Run /reload-plugins to apply.`);
|
|
540990
540990
|
if (onManageComplete)
|
|
540991
540991
|
onManageComplete();
|
|
540992
540992
|
setParentViewState({
|
|
@@ -541213,10 +541213,10 @@ function ManagePlugins({
|
|
|
541213
541213
|
}, /* @__PURE__ */ React245.createElement(ThemedText, {
|
|
541214
541214
|
bold: true,
|
|
541215
541215
|
color: "warning"
|
|
541216
|
-
}, selectedPlugin.plugin.name, " is enabled in .
|
|
541216
|
+
}, selectedPlugin.plugin.name, " is enabled in .codez/settings.json (shared with your team)"), /* @__PURE__ */ React245.createElement(ThemedBox_default, {
|
|
541217
541217
|
marginTop: 1,
|
|
541218
541218
|
flexDirection: "column"
|
|
541219
|
-
}, /* @__PURE__ */ React245.createElement(ThemedText, null, "Disable it just for you in .
|
|
541219
|
+
}, /* @__PURE__ */ React245.createElement(ThemedText, null, "Disable it just for you in .codez/settings.local.json?"), /* @__PURE__ */ React245.createElement(ThemedText, {
|
|
541220
541220
|
dimColor: true
|
|
541221
541221
|
}, "This has the same effect as uninstalling, without affecting other contributors.")), processError && /* @__PURE__ */ React245.createElement(ThemedBox_default, {
|
|
541222
541222
|
marginTop: 1
|
|
@@ -548510,7 +548510,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
548510
548510
|
return [];
|
|
548511
548511
|
}
|
|
548512
548512
|
}
|
|
548513
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.
|
|
548513
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.15") {
|
|
548514
548514
|
if (process.env.USER_TYPE === "ant") {
|
|
548515
548515
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
548516
548516
|
if (changelog) {
|
|
@@ -548537,7 +548537,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.14")
|
|
|
548537
548537
|
releaseNotes
|
|
548538
548538
|
};
|
|
548539
548539
|
}
|
|
548540
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "0.1.
|
|
548540
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "0.1.15") {
|
|
548541
548541
|
if (process.env.USER_TYPE === "ant") {
|
|
548542
548542
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
548543
548543
|
if (changelog) {
|
|
@@ -549707,7 +549707,7 @@ function getRecentActivitySync() {
|
|
|
549707
549707
|
return cachedActivity;
|
|
549708
549708
|
}
|
|
549709
549709
|
function getLogoDisplayData() {
|
|
549710
|
-
const version2 = process.env.DEMO_VERSION ?? "0.1.
|
|
549710
|
+
const version2 = process.env.DEMO_VERSION ?? "0.1.15";
|
|
549711
549711
|
const serverUrl = getDirectConnectServerUrl();
|
|
549712
549712
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
549713
549713
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -550860,7 +550860,7 @@ function LogoV2() {
|
|
|
550860
550860
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
550861
550861
|
t2 = () => {
|
|
550862
550862
|
const currentConfig = getGlobalConfig();
|
|
550863
|
-
if (currentConfig.lastReleaseNotesSeen === "0.1.
|
|
550863
|
+
if (currentConfig.lastReleaseNotesSeen === "0.1.15") {
|
|
550864
550864
|
return;
|
|
550865
550865
|
}
|
|
550866
550866
|
saveGlobalConfig(_temp329);
|
|
@@ -551398,12 +551398,12 @@ function LogoV2() {
|
|
|
551398
551398
|
return t41;
|
|
551399
551399
|
}
|
|
551400
551400
|
function _temp329(current) {
|
|
551401
|
-
if (current.lastReleaseNotesSeen === "0.1.
|
|
551401
|
+
if (current.lastReleaseNotesSeen === "0.1.15") {
|
|
551402
551402
|
return current;
|
|
551403
551403
|
}
|
|
551404
551404
|
return {
|
|
551405
551405
|
...current,
|
|
551406
|
-
lastReleaseNotesSeen: "0.1.
|
|
551406
|
+
lastReleaseNotesSeen: "0.1.15"
|
|
551407
551407
|
};
|
|
551408
551408
|
}
|
|
551409
551409
|
function _temp245(s_0) {
|
|
@@ -557910,7 +557910,7 @@ function SkillsMenu(t0) {
|
|
|
557910
557910
|
if ($3[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
557911
557911
|
t32 = /* @__PURE__ */ React279.createElement(ThemedText, {
|
|
557912
557912
|
dimColor: true
|
|
557913
|
-
}, "Create skills in .
|
|
557913
|
+
}, "Create skills in .codez/skills/ or ~/.codez/skills/");
|
|
557914
557914
|
$3[6] = t32;
|
|
557915
557915
|
} else {
|
|
557916
557916
|
t32 = $3[6];
|
|
@@ -563959,7 +563959,7 @@ function optionForPermissionSaveDestination(saveDestination) {
|
|
|
563959
563959
|
case "userSettings":
|
|
563960
563960
|
return {
|
|
563961
563961
|
label: "User settings",
|
|
563962
|
-
description: `Saved in at ~/.
|
|
563962
|
+
description: `Saved in at ~/.codez/settings.json`,
|
|
563963
563963
|
value: saveDestination
|
|
563964
563964
|
};
|
|
563965
563965
|
}
|
|
@@ -567928,7 +567928,7 @@ function SelectEventMode(t0) {
|
|
|
567928
567928
|
color: "suggestion"
|
|
567929
567929
|
}, figures_default.info, " Hooks Restricted by Policy"), /* @__PURE__ */ React311.createElement(ThemedText, {
|
|
567930
567930
|
dimColor: true
|
|
567931
|
-
}, "Only hooks from managed settings can run. User-defined hooks from ~/.
|
|
567931
|
+
}, "Only hooks from managed settings can run. User-defined hooks from ~/.codez/settings.json, .codez/settings.json, and .codez/settings.local.json are blocked."));
|
|
567932
567932
|
$3[2] = restrictedByPolicy;
|
|
567933
567933
|
$3[3] = t2;
|
|
567934
567934
|
} else {
|
|
@@ -569515,7 +569515,7 @@ var init_agentDisplay = __esm(() => {
|
|
|
569515
569515
|
var AGENT_PATHS;
|
|
569516
569516
|
var init_types13 = __esm(() => {
|
|
569517
569517
|
AGENT_PATHS = {
|
|
569518
|
-
FOLDER_NAME: ".
|
|
569518
|
+
FOLDER_NAME: ".codez",
|
|
569519
569519
|
AGENTS_DIR: "agents"
|
|
569520
569520
|
};
|
|
569521
569521
|
});
|
|
@@ -572978,7 +572978,7 @@ function LocationStep() {
|
|
|
572978
572978
|
let t0;
|
|
572979
572979
|
if ($3[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
572980
572980
|
t0 = {
|
|
572981
|
-
label: "Project (.
|
|
572981
|
+
label: "Project (.codez/agents/)",
|
|
572982
572982
|
value: "projectSettings"
|
|
572983
572983
|
};
|
|
572984
572984
|
$3[0] = t0;
|
|
@@ -572988,7 +572988,7 @@ function LocationStep() {
|
|
|
572988
572988
|
let t1;
|
|
572989
572989
|
if ($3[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
572990
572990
|
t1 = [t0, {
|
|
572991
|
-
label: "Personal (~/.
|
|
572991
|
+
label: "Personal (~/.codez/agents/)",
|
|
572992
572992
|
value: "userSettings"
|
|
572993
572993
|
}];
|
|
572994
572994
|
$3[1] = t1;
|
|
@@ -573091,28 +573091,28 @@ function MemoryStep() {
|
|
|
573091
573091
|
let t1;
|
|
573092
573092
|
if ($3[1] !== isUserScope) {
|
|
573093
573093
|
t1 = isUserScope ? [{
|
|
573094
|
-
label: "User scope (~/.
|
|
573094
|
+
label: "User scope (~/.codez/agent-memory/) (Recommended)",
|
|
573095
573095
|
value: "user"
|
|
573096
573096
|
}, {
|
|
573097
573097
|
label: "None (no persistent memory)",
|
|
573098
573098
|
value: "none"
|
|
573099
573099
|
}, {
|
|
573100
|
-
label: "Project scope (.
|
|
573100
|
+
label: "Project scope (.codez/agent-memory/)",
|
|
573101
573101
|
value: "project"
|
|
573102
573102
|
}, {
|
|
573103
|
-
label: "Local scope (.
|
|
573103
|
+
label: "Local scope (.codez/agent-memory-local/)",
|
|
573104
573104
|
value: "local"
|
|
573105
573105
|
}] : [{
|
|
573106
|
-
label: "Project scope (.
|
|
573106
|
+
label: "Project scope (.codez/agent-memory/) (Recommended)",
|
|
573107
573107
|
value: "project"
|
|
573108
573108
|
}, {
|
|
573109
573109
|
label: "None (no persistent memory)",
|
|
573110
573110
|
value: "none"
|
|
573111
573111
|
}, {
|
|
573112
|
-
label: "User scope (~/.
|
|
573112
|
+
label: "User scope (~/.codez/agent-memory/)",
|
|
573113
573113
|
value: "user"
|
|
573114
573114
|
}, {
|
|
573115
|
-
label: "Local scope (.
|
|
573115
|
+
label: "Local scope (.codez/agent-memory-local/)",
|
|
573116
573116
|
value: "local"
|
|
573117
573117
|
}];
|
|
573118
573118
|
$3[1] = isUserScope;
|
|
@@ -575084,7 +575084,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
575084
575084
|
smapsRollup,
|
|
575085
575085
|
platform: process.platform,
|
|
575086
575086
|
nodeVersion: process.version,
|
|
575087
|
-
ccVersion: "0.1.
|
|
575087
|
+
ccVersion: "0.1.15"
|
|
575088
575088
|
};
|
|
575089
575089
|
}
|
|
575090
575090
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -575670,7 +575670,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
575670
575670
|
var call56 = async () => {
|
|
575671
575671
|
return {
|
|
575672
575672
|
type: "text",
|
|
575673
|
-
value: `${"0.1.
|
|
575673
|
+
value: `${"0.1.15"} (built ${"2026-04-02T01:22:27.530Z"})`
|
|
575674
575674
|
};
|
|
575675
575675
|
}, version2, version_default;
|
|
575676
575676
|
var init_version = __esm(() => {
|
|
@@ -576630,7 +576630,7 @@ async function call57(onDone, _context, args) {
|
|
|
576630
576630
|
const cleanPattern = commandPattern.replace(/^["']|["']$/g, "");
|
|
576631
576631
|
addToExcludedCommands(cleanPattern);
|
|
576632
576632
|
const localSettingsPath = getSettingsFilePathForSource("localSettings");
|
|
576633
|
-
const relativePath = localSettingsPath ? relative28(getCwdState(), localSettingsPath) : ".
|
|
576633
|
+
const relativePath = localSettingsPath ? relative28(getCwdState(), localSettingsPath) : ".codez/settings.local.json";
|
|
576634
576634
|
const message = color("success", themeName)(`Added "${cleanPattern}" to excluded commands in ${relativePath}`);
|
|
576635
576635
|
onDone(message);
|
|
576636
576636
|
return null;
|
|
@@ -579596,7 +579596,7 @@ var init_statusline = __esm(() => {
|
|
|
579596
579596
|
aliases: [],
|
|
579597
579597
|
name: "statusline",
|
|
579598
579598
|
progressMessage: "setting up statusLine",
|
|
579599
|
-
allowedTools: [AGENT_TOOL_NAME, "Read(~/**)", "Edit(~/.
|
|
579599
|
+
allowedTools: [AGENT_TOOL_NAME, "Read(~/**)", "Edit(~/.codez/settings.json)"],
|
|
579600
579600
|
source: "builtin",
|
|
579601
579601
|
disableNonInteractive: true,
|
|
579602
579602
|
async getPromptForCommand(args) {
|
|
@@ -582169,7 +582169,7 @@ function renderStatsToAnsi(stats, activeTab) {
|
|
|
582169
582169
|
function renderOverviewToAnsi(stats) {
|
|
582170
582170
|
const lines2 = [];
|
|
582171
582171
|
const theme2 = getTheme(resolveThemeSetting(getGlobalConfig().theme));
|
|
582172
|
-
const h2 = (text2) => applyColor(text2, theme2.
|
|
582172
|
+
const h2 = (text2) => applyColor(text2, theme2.codez);
|
|
582173
582173
|
const COL1_LABEL_WIDTH = 18;
|
|
582174
582174
|
const COL2_START = 40;
|
|
582175
582175
|
const COL2_LABEL_WIDTH = 18;
|
|
@@ -583902,7 +583902,7 @@ function generateHtmlReport(data, insights) {
|
|
|
583902
583902
|
</html>`;
|
|
583903
583903
|
}
|
|
583904
583904
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
583905
|
-
const version3 = typeof MACRO !== "undefined" ? "0.1.
|
|
583905
|
+
const version3 = typeof MACRO !== "undefined" ? "0.1.15" : "unknown";
|
|
583906
583906
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
583907
583907
|
const facets_summary = {
|
|
583908
583908
|
total: facets.size,
|
|
@@ -584202,7 +584202,7 @@ var init_insights = __esm(() => {
|
|
|
584202
584202
|
getRemoteHostSessionCount = process.env.USER_TYPE === "ant" ? async (homespace) => {
|
|
584203
584203
|
const { stdout, code } = await execFileNoThrow("ssh", [
|
|
584204
584204
|
`${homespace}.coder`,
|
|
584205
|
-
'find /root/.
|
|
584205
|
+
'find /root/.codez/projects -name "*.jsonl" 2>/dev/null | wc -l'
|
|
584206
584206
|
], { timeout: 30000 });
|
|
584207
584207
|
if (code !== 0)
|
|
584208
584208
|
return 0;
|
|
@@ -584212,7 +584212,7 @@ var init_insights = __esm(() => {
|
|
|
584212
584212
|
const result = { copied: 0, skipped: 0 };
|
|
584213
584213
|
const tempDir = await mkdtemp3(join136(tmpdir12(), "claude-hs-"));
|
|
584214
584214
|
try {
|
|
584215
|
-
const scpResult = await execFileNoThrow("scp", ["-rq", `${homespace}.coder:/root/.
|
|
584215
|
+
const scpResult = await execFileNoThrow("scp", ["-rq", `${homespace}.coder:/root/.codez/projects/`, tempDir], { timeout: 300000 });
|
|
584216
584216
|
if (scpResult.code !== 0) {
|
|
584217
584217
|
return result;
|
|
584218
584218
|
}
|
|
@@ -584421,11 +584421,11 @@ Include 3 friction categories with 2 examples each.`,
|
|
|
584421
584421
|
- Good for: database queries, Slack integration, GitHub issue lookup, connecting to internal APIs
|
|
584422
584422
|
|
|
584423
584423
|
2. **Custom Skills**: Reusable prompts you define as markdown files that run with a single /command.
|
|
584424
|
-
- How to use: Create \`.
|
|
584424
|
+
- How to use: Create \`.codez/skills/commit/SKILL.md\` with instructions. Then type \`/commit\` to run it.
|
|
584425
584425
|
- Good for: repetitive workflows - /commit, /review, /test, /deploy, /pr, or complex multi-step workflows
|
|
584426
584426
|
|
|
584427
584427
|
3. **Hooks**: Shell commands that auto-run at specific lifecycle events.
|
|
584428
|
-
- How to use: Add to \`.
|
|
584428
|
+
- How to use: Add to \`.codez/settings.json\` under "hooks" key.
|
|
584429
584429
|
- Good for: auto-formatting code, running type checks, enforcing conventions
|
|
584430
584430
|
|
|
584431
584431
|
4. **Headless Mode**: Run Claude non-interactively from scripts and CI/CD.
|
|
@@ -588011,7 +588011,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
588011
588011
|
init_settings2();
|
|
588012
588012
|
init_slowOperations();
|
|
588013
588013
|
init_uuid();
|
|
588014
|
-
VERSION4 = typeof MACRO !== "undefined" ? "0.1.
|
|
588014
|
+
VERSION4 = typeof MACRO !== "undefined" ? "0.1.15" : "unknown";
|
|
588015
588015
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
588016
588016
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
588017
588017
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -588269,13 +588269,13 @@ function getLocalAgentMemoryDir(dirName) {
|
|
|
588269
588269
|
if (process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR) {
|
|
588270
588270
|
return join138(process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR, "projects", sanitizePath2(findCanonicalGitRoot(getProjectRoot()) ?? getProjectRoot()), "agent-memory-local", dirName) + sep34;
|
|
588271
588271
|
}
|
|
588272
|
-
return join138(getCwd(), ".
|
|
588272
|
+
return join138(getCwd(), ".codez", "agent-memory-local", dirName) + sep34;
|
|
588273
588273
|
}
|
|
588274
588274
|
function getAgentMemoryDir(agentType, scope) {
|
|
588275
588275
|
const dirName = sanitizeAgentTypeForPath(agentType);
|
|
588276
588276
|
switch (scope) {
|
|
588277
588277
|
case "project":
|
|
588278
|
-
return join138(getCwd(), ".
|
|
588278
|
+
return join138(getCwd(), ".codez", "agent-memory", dirName) + sep34;
|
|
588279
588279
|
case "local":
|
|
588280
588280
|
return getLocalAgentMemoryDir(dirName);
|
|
588281
588281
|
case "user":
|
|
@@ -588288,14 +588288,14 @@ function isAgentMemoryPath(absolutePath) {
|
|
|
588288
588288
|
if (normalizedPath.startsWith(join138(memoryBase, "agent-memory") + sep34)) {
|
|
588289
588289
|
return true;
|
|
588290
588290
|
}
|
|
588291
|
-
if (normalizedPath.startsWith(join138(getCwd(), ".
|
|
588291
|
+
if (normalizedPath.startsWith(join138(getCwd(), ".codez", "agent-memory") + sep34)) {
|
|
588292
588292
|
return true;
|
|
588293
588293
|
}
|
|
588294
588294
|
if (process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR) {
|
|
588295
588295
|
if (normalizedPath.includes(sep34 + "agent-memory-local" + sep34) && normalizedPath.startsWith(join138(process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR, "projects") + sep34)) {
|
|
588296
588296
|
return true;
|
|
588297
588297
|
}
|
|
588298
|
-
} else if (normalizedPath.startsWith(join138(getCwd(), ".
|
|
588298
|
+
} else if (normalizedPath.startsWith(join138(getCwd(), ".codez", "agent-memory-local") + sep34)) {
|
|
588299
588299
|
return true;
|
|
588300
588300
|
}
|
|
588301
588301
|
return false;
|
|
@@ -588305,7 +588305,7 @@ function getMemoryScopeDisplay(memory2) {
|
|
|
588305
588305
|
case "user":
|
|
588306
588306
|
return `User (${join138(getMemoryBaseDir(), "agent-memory")}/)`;
|
|
588307
588307
|
case "project":
|
|
588308
|
-
return "Project (.
|
|
588308
|
+
return "Project (.codez/agent-memory/)";
|
|
588309
588309
|
case "local":
|
|
588310
588310
|
return `Local (${getLocalAgentMemoryDir("...")})`;
|
|
588311
588311
|
default:
|
|
@@ -588355,12 +588355,12 @@ function getClaudeSkillScope(filePath) {
|
|
|
588355
588355
|
const absolutePathLower = normalizeCaseForComparison2(absolutePath);
|
|
588356
588356
|
const bases = [
|
|
588357
588357
|
{
|
|
588358
|
-
dir: expandPath(join139(getOriginalCwd(), ".
|
|
588359
|
-
prefix: "/.
|
|
588358
|
+
dir: expandPath(join139(getOriginalCwd(), ".codez", "skills")),
|
|
588359
|
+
prefix: "/.codez/skills/"
|
|
588360
588360
|
},
|
|
588361
588361
|
{
|
|
588362
|
-
dir: expandPath(join139(homedir33(), ".
|
|
588363
|
-
prefix: "~/.
|
|
588362
|
+
dir: expandPath(join139(homedir33(), ".codez", "skills")),
|
|
588363
|
+
prefix: "~/.codez/skills/"
|
|
588364
588364
|
}
|
|
588365
588365
|
];
|
|
588366
588366
|
for (const { dir, prefix } of bases) {
|
|
@@ -588405,7 +588405,7 @@ function getSettingsPaths() {
|
|
|
588405
588405
|
function isClaudeSettingsPath(filePath) {
|
|
588406
588406
|
const expandedPath = expandPath(filePath);
|
|
588407
588407
|
const normalizedPath = normalizeCaseForComparison2(expandedPath);
|
|
588408
|
-
if (normalizedPath.endsWith(`${sep35}.
|
|
588408
|
+
if (normalizedPath.endsWith(`${sep35}.codez${sep35}settings.json`) || normalizedPath.endsWith(`${sep35}.codez${sep35}settings.local.json`)) {
|
|
588409
588409
|
return true;
|
|
588410
588410
|
}
|
|
588411
588411
|
return getSettingsPaths().some((settingsPath) => normalizeCaseForComparison2(settingsPath) === normalizedPath);
|
|
@@ -588414,9 +588414,9 @@ function isClaudeConfigFilePath(filePath) {
|
|
|
588414
588414
|
if (isClaudeSettingsPath(filePath)) {
|
|
588415
588415
|
return true;
|
|
588416
588416
|
}
|
|
588417
|
-
const commandsDir = join139(getOriginalCwd(), ".
|
|
588418
|
-
const agentsDir = join139(getOriginalCwd(), ".
|
|
588419
|
-
const skillsDir = join139(getOriginalCwd(), ".
|
|
588417
|
+
const commandsDir = join139(getOriginalCwd(), ".codez", "commands");
|
|
588418
|
+
const agentsDir = join139(getOriginalCwd(), ".codez", "agents");
|
|
588419
|
+
const skillsDir = join139(getOriginalCwd(), ".codez", "skills");
|
|
588420
588420
|
return pathInWorkingPath(filePath, commandsDir) || pathInWorkingPath(filePath, agentsDir) || pathInWorkingPath(filePath, skillsDir);
|
|
588421
588421
|
}
|
|
588422
588422
|
function isSessionPlanFile(absolutePath) {
|
|
@@ -588486,7 +588486,7 @@ function isDangerousFilePathToAutoEdit(path22) {
|
|
|
588486
588486
|
if (normalizedSegment !== normalizeCaseForComparison2(dir)) {
|
|
588487
588487
|
continue;
|
|
588488
588488
|
}
|
|
588489
|
-
if (dir === ".
|
|
588489
|
+
if (dir === ".codez") {
|
|
588490
588490
|
const nextSegment = pathSegments[i3 + 1];
|
|
588491
588491
|
if (nextSegment && normalizeCaseForComparison2(nextSegment) === "worktrees") {
|
|
588492
588492
|
break;
|
|
@@ -589031,7 +589031,7 @@ function checkEditableInternalPath(absolutePath, input) {
|
|
|
589031
589031
|
}
|
|
589032
589032
|
};
|
|
589033
589033
|
}
|
|
589034
|
-
if (normalizeCaseForComparison2(normalizedPath) === normalizeCaseForComparison2(join139(getOriginalCwd(), ".
|
|
589034
|
+
if (normalizeCaseForComparison2(normalizedPath) === normalizeCaseForComparison2(join139(getOriginalCwd(), ".codez", "launch.json"))) {
|
|
589035
589035
|
return {
|
|
589036
589036
|
behavior: "allow",
|
|
589037
589037
|
updatedInput: input,
|
|
@@ -589202,7 +589202,7 @@ var init_filesystem = __esm(() => {
|
|
|
589202
589202
|
".git",
|
|
589203
589203
|
".vscode",
|
|
589204
589204
|
".idea",
|
|
589205
|
-
".
|
|
589205
|
+
".codez"
|
|
589206
589206
|
];
|
|
589207
589207
|
DIR_SEP = posix8.sep;
|
|
589208
589208
|
getClaudeTempDir = memoize_default(function getClaudeTempDir2() {
|
|
@@ -589216,7 +589216,7 @@ var init_filesystem = __esm(() => {
|
|
|
589216
589216
|
});
|
|
589217
589217
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
589218
589218
|
const nonce = randomBytes20(16).toString("hex");
|
|
589219
|
-
return join139(getClaudeTempDir(), "bundled-skills", "0.1.
|
|
589219
|
+
return join139(getClaudeTempDir(), "bundled-skills", "0.1.15", nonce);
|
|
589220
589220
|
});
|
|
589221
589221
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
589222
589222
|
});
|
|
@@ -593557,7 +593557,7 @@ function generateTmuxSessionName(repoPath, branch2) {
|
|
|
593557
593557
|
return combined.replace(/[/.]/g, "_");
|
|
593558
593558
|
}
|
|
593559
593559
|
function worktreesDir(repoRoot) {
|
|
593560
|
-
return join141(repoRoot, ".
|
|
593560
|
+
return join141(repoRoot, ".codez", "worktrees");
|
|
593561
593561
|
}
|
|
593562
593562
|
function flattenSlug(slug) {
|
|
593563
593563
|
return slug.replaceAll("/", "+");
|
|
@@ -595206,7 +595206,7 @@ function computeFingerprint(messageText, version3) {
|
|
|
595206
595206
|
}
|
|
595207
595207
|
function computeFingerprintFromMessages(messages) {
|
|
595208
595208
|
const firstMessageText = extractFirstMessageText(messages);
|
|
595209
|
-
return computeFingerprint(firstMessageText, "0.1.
|
|
595209
|
+
return computeFingerprint(firstMessageText, "0.1.15");
|
|
595210
595210
|
}
|
|
595211
595211
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
595212
595212
|
var init_fingerprint = () => {};
|
|
@@ -597105,7 +597105,7 @@ async function sideQuery(opts) {
|
|
|
597105
597105
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
597106
597106
|
}
|
|
597107
597107
|
const messageText = extractFirstUserMessageText(messages);
|
|
597108
|
-
const fingerprint = computeFingerprint(messageText, "0.1.
|
|
597108
|
+
const fingerprint = computeFingerprint(messageText, "0.1.15");
|
|
597109
597109
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
597110
597110
|
const systemBlocks = [
|
|
597111
597111
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -597837,7 +597837,7 @@ var init_chromeNativeHost = __esm(() => {
|
|
|
597837
597837
|
init_slowOperations();
|
|
597838
597838
|
init_common3();
|
|
597839
597839
|
MAX_MESSAGE_SIZE = 1024 * 1024;
|
|
597840
|
-
LOG_FILE = process.env.USER_TYPE === "ant" ? join142(homedir34(), ".
|
|
597840
|
+
LOG_FILE = process.env.USER_TYPE === "ant" ? join142(homedir34(), ".codez", "debug", "chrome-native-host.txt") : undefined;
|
|
597841
597841
|
messageSchema = lazySchema(() => exports_external.object({
|
|
597842
597842
|
type: exports_external.string()
|
|
597843
597843
|
}).passthrough());
|
|
@@ -601678,7 +601678,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
601678
601678
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
601679
601679
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
601680
601680
|
betas: getSdkBetas(),
|
|
601681
|
-
claude_code_version: "0.1.
|
|
601681
|
+
claude_code_version: "0.1.15",
|
|
601682
601682
|
output_style: outputStyle2,
|
|
601683
601683
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
601684
601684
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -607375,14 +607375,14 @@ import { homedir as homedir36 } from "os";
|
|
|
607375
607375
|
import { basename as basename48, join as join144, sep as sep36 } from "path";
|
|
607376
607376
|
function isInClaudeFolder(filePath) {
|
|
607377
607377
|
const absolutePath = expandPath(filePath);
|
|
607378
|
-
const claudeFolderPath = expandPath(`${getOriginalCwd()}/.
|
|
607378
|
+
const claudeFolderPath = expandPath(`${getOriginalCwd()}/.codez`);
|
|
607379
607379
|
const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
|
|
607380
607380
|
const normalizedClaudeFolderPath = normalizeCaseForComparison2(claudeFolderPath);
|
|
607381
607381
|
return normalizedAbsolutePath.startsWith(normalizedClaudeFolderPath + sep36.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedClaudeFolderPath + "/");
|
|
607382
607382
|
}
|
|
607383
607383
|
function isInGlobalClaudeFolder(filePath) {
|
|
607384
607384
|
const absolutePath = expandPath(filePath);
|
|
607385
|
-
const globalClaudeFolderPath = join144(homedir36(), ".
|
|
607385
|
+
const globalClaudeFolderPath = join144(homedir36(), ".codez");
|
|
607386
607386
|
const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
|
|
607387
607387
|
const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison2(globalClaudeFolderPath);
|
|
607388
607388
|
return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep36.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
|
|
@@ -614825,7 +614825,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
614825
614825
|
function getSemverPart(version3) {
|
|
614826
614826
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
614827
614827
|
}
|
|
614828
|
-
function useUpdateNotification(updatedVersion, initialVersion = "0.1.
|
|
614828
|
+
function useUpdateNotification(updatedVersion, initialVersion = "0.1.15") {
|
|
614829
614829
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react338.useState(() => getSemverPart(initialVersion));
|
|
614830
614830
|
if (!updatedVersion) {
|
|
614831
614831
|
return null;
|
|
@@ -614865,7 +614865,7 @@ function AutoUpdater({
|
|
|
614865
614865
|
return;
|
|
614866
614866
|
}
|
|
614867
614867
|
if (false) {}
|
|
614868
|
-
const currentVersion = "0.1.
|
|
614868
|
+
const currentVersion = "0.1.15";
|
|
614869
614869
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
614870
614870
|
let latestVersion = await getLatestVersion(channel);
|
|
614871
614871
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -614979,7 +614979,7 @@ function AutoUpdater({
|
|
|
614979
614979
|
bold: true
|
|
614980
614980
|
}, "claude doctor"), " or", " ", /* @__PURE__ */ React409.createElement(ThemedText, {
|
|
614981
614981
|
bold: true
|
|
614982
|
-
}, hasLocalInstall ? `cd ~/.
|
|
614982
|
+
}, hasLocalInstall ? `cd ~/.codez/local && npm update ${"codez-cli"}` : `npm i -g ${"codez-cli"}`)));
|
|
614983
614983
|
}
|
|
614984
614984
|
var React409, import_react339;
|
|
614985
614985
|
var init_AutoUpdater = __esm(() => {
|
|
@@ -615050,12 +615050,12 @@ function NativeAutoUpdater({
|
|
|
615050
615050
|
logEvent("tengu_native_auto_updater_start", {});
|
|
615051
615051
|
try {
|
|
615052
615052
|
const maxVersion = await getMaxVersion();
|
|
615053
|
-
if (maxVersion && gt("0.1.
|
|
615053
|
+
if (maxVersion && gt("0.1.15", maxVersion)) {
|
|
615054
615054
|
const msg = await getMaxVersionMessage();
|
|
615055
615055
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
615056
615056
|
}
|
|
615057
615057
|
const result = await installLatest(channel);
|
|
615058
|
-
const currentVersion = "0.1.
|
|
615058
|
+
const currentVersion = "0.1.15";
|
|
615059
615059
|
const latencyMs = Date.now() - startTime;
|
|
615060
615060
|
if (result.lockFailed) {
|
|
615061
615061
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -615168,17 +615168,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
615168
615168
|
const maxVersion = await getMaxVersion();
|
|
615169
615169
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
615170
615170
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
615171
|
-
if (gte("0.1.
|
|
615172
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.1.
|
|
615171
|
+
if (gte("0.1.15", maxVersion)) {
|
|
615172
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.1.15"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
615173
615173
|
setUpdateAvailable(false);
|
|
615174
615174
|
return;
|
|
615175
615175
|
}
|
|
615176
615176
|
latest = maxVersion;
|
|
615177
615177
|
}
|
|
615178
|
-
const hasUpdate = latest && !gte("0.1.
|
|
615178
|
+
const hasUpdate = latest && !gte("0.1.15", latest) && !shouldSkipVersion(latest);
|
|
615179
615179
|
setUpdateAvailable(!!hasUpdate);
|
|
615180
615180
|
if (hasUpdate) {
|
|
615181
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.1.
|
|
615181
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.1.15"} -> ${latest}`);
|
|
615182
615182
|
}
|
|
615183
615183
|
};
|
|
615184
615184
|
$3[0] = t1;
|
|
@@ -615210,7 +615210,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
615210
615210
|
t4 = verbose && /* @__PURE__ */ React411.createElement(ThemedText, {
|
|
615211
615211
|
dimColor: true,
|
|
615212
615212
|
wrap: "truncate"
|
|
615213
|
-
}, "currentVersion: ", "0.1.
|
|
615213
|
+
}, "currentVersion: ", "0.1.15");
|
|
615214
615214
|
$3[3] = verbose;
|
|
615215
615215
|
$3[4] = t4;
|
|
615216
615216
|
} else {
|
|
@@ -622432,7 +622432,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
622432
622432
|
project_dir: getOriginalCwd(),
|
|
622433
622433
|
added_dirs: addedDirs
|
|
622434
622434
|
},
|
|
622435
|
-
version: "0.1.
|
|
622435
|
+
version: "0.1.15",
|
|
622436
622436
|
output_style: {
|
|
622437
622437
|
name: outputStyleName
|
|
622438
622438
|
},
|
|
@@ -628224,7 +628224,7 @@ async function applySkillImprovement(skillName, updates) {
|
|
|
628224
628224
|
return;
|
|
628225
628225
|
const { join: join145 } = await import("path");
|
|
628226
628226
|
const fs11 = await import("fs/promises");
|
|
628227
|
-
const filePath = join145(getCwd(), ".
|
|
628227
|
+
const filePath = join145(getCwd(), ".codez", "skills", skillName, "SKILL.md");
|
|
628228
628228
|
let currentContent;
|
|
628229
628229
|
try {
|
|
628230
628230
|
currentContent = await fs11.readFile(filePath, "utf-8");
|
|
@@ -639906,7 +639906,7 @@ async function getWatchablePaths() {
|
|
|
639906
639906
|
} catch {}
|
|
639907
639907
|
}
|
|
639908
639908
|
for (const dir of getAdditionalDirectoriesForClaudeMd()) {
|
|
639909
|
-
const additionalSkillsPath = platformPath2.join(dir, ".
|
|
639909
|
+
const additionalSkillsPath = platformPath2.join(dir, ".codez", "skills");
|
|
639910
639910
|
try {
|
|
639911
639911
|
await fs12.stat(additionalSkillsPath);
|
|
639912
639912
|
paths2.push(additionalSkillsPath);
|
|
@@ -642061,7 +642061,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
642061
642061
|
} catch {}
|
|
642062
642062
|
const data = {
|
|
642063
642063
|
trigger,
|
|
642064
|
-
version: "0.1.
|
|
642064
|
+
version: "0.1.15",
|
|
642065
642065
|
platform: process.platform,
|
|
642066
642066
|
transcript,
|
|
642067
642067
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -644184,7 +644184,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
644184
644184
|
},
|
|
644185
644185
|
{
|
|
644186
644186
|
id: "custom-commands",
|
|
644187
|
-
content: async () => "Create skills by adding .md files to .
|
|
644187
|
+
content: async () => "Create skills by adding .md files to .codez/skills/ in your project or ~/.codez/skills/ for skills that work in any project",
|
|
644188
644188
|
cooldownSessions: 15,
|
|
644189
644189
|
async isRelevant() {
|
|
644190
644190
|
const config5 = getGlobalConfig();
|
|
@@ -649591,7 +649591,7 @@ function REPL({
|
|
|
649591
649591
|
return;
|
|
649592
649592
|
worktreeTipShownRef.current = true;
|
|
649593
649593
|
const secs = Math.round(wt.creationDurationMs / 1000);
|
|
649594
|
-
setMessages((prev) => [...prev, createSystemMessage(`Worktree creation took ${secs}s. For large repos, set \`worktree.sparsePaths\` in .
|
|
649594
|
+
setMessages((prev) => [...prev, createSystemMessage(`Worktree creation took ${secs}s. For large repos, set \`worktree.sparsePaths\` in .codez/settings.json to check out only the directories you need — e.g. \`{"worktree": {"sparsePaths": ["src", "packages/foo"]}}\`.`, "info")]);
|
|
649595
649595
|
}, [setMessages]);
|
|
649596
649596
|
const onlySleepToolActive = import_react432.useMemo(() => {
|
|
649597
649597
|
const lastAssistant = messages.findLast((m2) => m2.type === "assistant");
|
|
@@ -653203,7 +653203,7 @@ function WelcomeV2() {
|
|
|
653203
653203
|
color: "claude"
|
|
653204
653204
|
}, `Welcome to ${getProductName()}`, " "), /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653205
653205
|
dimColor: true
|
|
653206
|
-
}, "v", "0.1.
|
|
653206
|
+
}, "v", "0.1.15", " "));
|
|
653207
653207
|
t17 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, "…………………………………………………………………………………………………………………………………………………………");
|
|
653208
653208
|
t22 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " ");
|
|
653209
653209
|
t32 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " ");
|
|
@@ -653307,7 +653307,7 @@ function WelcomeV2() {
|
|
|
653307
653307
|
color: "claude"
|
|
653308
653308
|
}, `Welcome to ${getProductName()}`, " "), /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653309
653309
|
dimColor: true
|
|
653310
|
-
}, "v", "0.1.
|
|
653310
|
+
}, "v", "0.1.15", " "));
|
|
653311
653311
|
t1 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, "…………………………………………………………………………………………………………………………………………………………");
|
|
653312
653312
|
t2 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " ");
|
|
653313
653313
|
t3 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " * █████▓▓░ ");
|
|
@@ -653434,7 +653434,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
653434
653434
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
653435
653435
|
t22 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653436
653436
|
dimColor: true
|
|
653437
|
-
}, "v", "0.1.
|
|
653437
|
+
}, "v", "0.1.15", " ");
|
|
653438
653438
|
$3[2] = t22;
|
|
653439
653439
|
} else {
|
|
653440
653440
|
t22 = $3[2];
|
|
@@ -653572,7 +653572,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
653572
653572
|
if ($3[24] === Symbol.for("react.memo_cache_sentinel")) {
|
|
653573
653573
|
t2 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653574
653574
|
dimColor: true
|
|
653575
|
-
}, "v", "0.1.
|
|
653575
|
+
}, "v", "0.1.15", " ");
|
|
653576
653576
|
$3[24] = t2;
|
|
653577
653577
|
} else {
|
|
653578
653578
|
t2 = $3[24];
|
|
@@ -654103,11 +654103,11 @@ function getHooksSources() {
|
|
|
654103
654103
|
const sources = [];
|
|
654104
654104
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654105
654105
|
if (hasHooks(projectSettings)) {
|
|
654106
|
-
sources.push(".
|
|
654106
|
+
sources.push(".codez/settings.json");
|
|
654107
654107
|
}
|
|
654108
654108
|
const localSettings = getSettingsForSource("localSettings");
|
|
654109
654109
|
if (hasHooks(localSettings)) {
|
|
654110
|
-
sources.push(".
|
|
654110
|
+
sources.push(".codez/settings.local.json");
|
|
654111
654111
|
}
|
|
654112
654112
|
return sources;
|
|
654113
654113
|
}
|
|
@@ -654118,11 +654118,11 @@ function getBashPermissionSources() {
|
|
|
654118
654118
|
const sources = [];
|
|
654119
654119
|
const projectRules = getPermissionRulesForSource("projectSettings");
|
|
654120
654120
|
if (hasBashPermission(projectRules)) {
|
|
654121
|
-
sources.push(".
|
|
654121
|
+
sources.push(".codez/settings.json");
|
|
654122
654122
|
}
|
|
654123
654123
|
const localRules = getPermissionRulesForSource("localSettings");
|
|
654124
654124
|
if (hasBashPermission(localRules)) {
|
|
654125
|
-
sources.push(".
|
|
654125
|
+
sources.push(".codez/settings.local.json");
|
|
654126
654126
|
}
|
|
654127
654127
|
return sources;
|
|
654128
654128
|
}
|
|
@@ -654133,11 +654133,11 @@ function getOtelHeadersHelperSources() {
|
|
|
654133
654133
|
const sources = [];
|
|
654134
654134
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654135
654135
|
if (hasOtelHeadersHelper(projectSettings)) {
|
|
654136
|
-
sources.push(".
|
|
654136
|
+
sources.push(".codez/settings.json");
|
|
654137
654137
|
}
|
|
654138
654138
|
const localSettings = getSettingsForSource("localSettings");
|
|
654139
654139
|
if (hasOtelHeadersHelper(localSettings)) {
|
|
654140
|
-
sources.push(".
|
|
654140
|
+
sources.push(".codez/settings.local.json");
|
|
654141
654141
|
}
|
|
654142
654142
|
return sources;
|
|
654143
654143
|
}
|
|
@@ -654148,11 +654148,11 @@ function getApiKeyHelperSources() {
|
|
|
654148
654148
|
const sources = [];
|
|
654149
654149
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654150
654150
|
if (hasApiKeyHelper(projectSettings)) {
|
|
654151
|
-
sources.push(".
|
|
654151
|
+
sources.push(".codez/settings.json");
|
|
654152
654152
|
}
|
|
654153
654153
|
const localSettings = getSettingsForSource("localSettings");
|
|
654154
654154
|
if (hasApiKeyHelper(localSettings)) {
|
|
654155
|
-
sources.push(".
|
|
654155
|
+
sources.push(".codez/settings.local.json");
|
|
654156
654156
|
}
|
|
654157
654157
|
return sources;
|
|
654158
654158
|
}
|
|
@@ -654163,11 +654163,11 @@ function getAwsCommandsSources() {
|
|
|
654163
654163
|
const sources = [];
|
|
654164
654164
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654165
654165
|
if (hasAwsCommands(projectSettings)) {
|
|
654166
|
-
sources.push(".
|
|
654166
|
+
sources.push(".codez/settings.json");
|
|
654167
654167
|
}
|
|
654168
654168
|
const localSettings = getSettingsForSource("localSettings");
|
|
654169
654169
|
if (hasAwsCommands(localSettings)) {
|
|
654170
|
-
sources.push(".
|
|
654170
|
+
sources.push(".codez/settings.local.json");
|
|
654171
654171
|
}
|
|
654172
654172
|
return sources;
|
|
654173
654173
|
}
|
|
@@ -654178,11 +654178,11 @@ function getGcpCommandsSources() {
|
|
|
654178
654178
|
const sources = [];
|
|
654179
654179
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654180
654180
|
if (hasGcpCommands(projectSettings)) {
|
|
654181
|
-
sources.push(".
|
|
654181
|
+
sources.push(".codez/settings.json");
|
|
654182
654182
|
}
|
|
654183
654183
|
const localSettings = getSettingsForSource("localSettings");
|
|
654184
654184
|
if (hasGcpCommands(localSettings)) {
|
|
654185
|
-
sources.push(".
|
|
654185
|
+
sources.push(".codez/settings.local.json");
|
|
654186
654186
|
}
|
|
654187
654187
|
return sources;
|
|
654188
654188
|
}
|
|
@@ -654196,11 +654196,11 @@ function getDangerousEnvVarsSources() {
|
|
|
654196
654196
|
const sources = [];
|
|
654197
654197
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654198
654198
|
if (hasDangerousEnvVars(projectSettings)) {
|
|
654199
|
-
sources.push(".
|
|
654199
|
+
sources.push(".codez/settings.json");
|
|
654200
654200
|
}
|
|
654201
654201
|
const localSettings = getSettingsForSource("localSettings");
|
|
654202
654202
|
if (hasDangerousEnvVars(localSettings)) {
|
|
654203
|
-
sources.push(".
|
|
654203
|
+
sources.push(".codez/settings.local.json");
|
|
654204
654204
|
}
|
|
654205
654205
|
return sources;
|
|
654206
654206
|
}
|
|
@@ -654774,7 +654774,7 @@ function completeOnboarding() {
|
|
|
654774
654774
|
saveGlobalConfig((current) => ({
|
|
654775
654775
|
...current,
|
|
654776
654776
|
hasCompletedOnboarding: true,
|
|
654777
|
-
lastOnboardingVersion: "0.1.
|
|
654777
|
+
lastOnboardingVersion: "0.1.15"
|
|
654778
654778
|
}));
|
|
654779
654779
|
}
|
|
654780
654780
|
function showDialog(root2, renderer) {
|
|
@@ -656790,7 +656790,7 @@ function generateReservedShortcuts() {
|
|
|
656790
656790
|
function registerKeybindingsSkill() {
|
|
656791
656791
|
registerBundledSkill({
|
|
656792
656792
|
name: "keybindings-help",
|
|
656793
|
-
description: 'Use when the user wants to customize keyboard shortcuts, rebind keys, add chord bindings, or modify ~/.
|
|
656793
|
+
description: 'Use when the user wants to customize keyboard shortcuts, rebind keys, add chord bindings, or modify ~/.codez/keybindings.json. Examples: "rebind ctrl+s", "add a chord shortcut", "change the submit key", "customize keybindings".',
|
|
656794
656794
|
allowedTools: ["Read"],
|
|
656795
656795
|
userInvocable: false,
|
|
656796
656796
|
isEnabled: isKeybindingCustomizationEnabled,
|
|
@@ -656879,11 +656879,11 @@ var init_keybindings3 = __esm(() => {
|
|
|
656879
656879
|
SECTION_INTRO = [
|
|
656880
656880
|
"# Keybindings Skill",
|
|
656881
656881
|
"",
|
|
656882
|
-
"Create or modify `~/.
|
|
656882
|
+
"Create or modify `~/.codez/keybindings.json` to customize keyboard shortcuts.",
|
|
656883
656883
|
"",
|
|
656884
656884
|
"## CRITICAL: Read Before Write",
|
|
656885
656885
|
"",
|
|
656886
|
-
"**Always read `~/.
|
|
656886
|
+
"**Always read `~/.codez/keybindings.json` first** (it may not exist yet). Merge changes with existing bindings — never replace the entire file.",
|
|
656887
656887
|
"",
|
|
656888
656888
|
"- Use **Edit** tool for modifications to existing files",
|
|
656889
656889
|
"- Use **Write** tool only if the file does not exist yet"
|
|
@@ -656961,7 +656961,7 @@ var init_keybindings3 = __esm(() => {
|
|
|
656961
656961
|
SECTION_DOCTOR = [
|
|
656962
656962
|
"## Validation with /doctor",
|
|
656963
656963
|
"",
|
|
656964
|
-
'The `/doctor` command includes a "Keybinding Configuration Issues" section that validates `~/.
|
|
656964
|
+
'The `/doctor` command includes a "Keybinding Configuration Issues" section that validates `~/.codez/keybindings.json`.',
|
|
656965
656965
|
"",
|
|
656966
656966
|
"### Common Issues and Fixes",
|
|
656967
656967
|
"",
|
|
@@ -657007,7 +657007,7 @@ var init_keybindings3 = __esm(() => {
|
|
|
657007
657007
|
"",
|
|
657008
657008
|
"```",
|
|
657009
657009
|
"Keybinding Configuration Issues",
|
|
657010
|
-
"Location: ~/.
|
|
657010
|
+
"Location: ~/.codez/keybindings.json",
|
|
657011
657011
|
' └ [Error] Unknown context "chat"',
|
|
657012
657012
|
" → Valid contexts: Global, Chat, Autocomplete, ...",
|
|
657013
657013
|
' └ [Warning] "ctrl+c" may not work: Terminal interrupt (SIGINT)',
|
|
@@ -657525,8 +657525,8 @@ You will use the AskUserQuestion to understand what the user wants to automate.
|
|
|
657525
657525
|
- If you think the skill will require arguments, suggest arguments based on what you observed. Make sure you understand what someone would need to provide.
|
|
657526
657526
|
- If it's not clear, ask if this skill should run inline (in the current conversation) or forked (as a sub-agent with its own context). Forked is better for self-contained tasks that don't need mid-process user input; inline is better when the user wants to steer mid-process.
|
|
657527
657527
|
- Ask where the skill should be saved. Suggest a default based on context (repo-specific workflows → repo, cross-repo personal workflows → user). Options:
|
|
657528
|
-
- **This repo** (\`.
|
|
657529
|
-
- **Personal** (\`~/.
|
|
657528
|
+
- **This repo** (\`.codez/skills/<name>/SKILL.md\`) — for workflows specific to this project
|
|
657529
|
+
- **Personal** (\`~/.codez/skills/<name>/SKILL.md\`) — follows you across all repos
|
|
657530
657530
|
|
|
657531
657531
|
**Round 3: Breaking down each step**
|
|
657532
657532
|
For each major step, if it's not glaringly obvious, ask:
|
|
@@ -657670,7 +657670,7 @@ Signs of a stuck session:
|
|
|
657670
657670
|
- Child processes: \`pgrep -lP <pid>\`
|
|
657671
657671
|
- If high CPU: sample again after 1-2s to confirm it's sustained
|
|
657672
657672
|
- If a child looks hung (e.g., a git command), note its full command line with \`ps -p <child_pid> -o command=\`
|
|
657673
|
-
- Check the session's debug log if you can infer the session ID: \`~/.
|
|
657673
|
+
- Check the session's debug log if you can infer the session ID: \`~/.codez/debug/<session-id>.txt\` (the last few hundred lines often show what it was doing before hanging)
|
|
657674
657674
|
|
|
657675
657675
|
3. **Consider a stack dump** for a truly frozen process (advanced, optional):
|
|
657676
657676
|
- macOS: \`sample <pid> 3\` gives a 3-second native stack sample
|
|
@@ -657752,9 +657752,9 @@ Choose the appropriate file based on scope:
|
|
|
657752
657752
|
|
|
657753
657753
|
| File | Scope | Git | Use For |
|
|
657754
657754
|
|------|-------|-----|---------|
|
|
657755
|
-
| \`~/.
|
|
657756
|
-
| \`.
|
|
657757
|
-
| \`.
|
|
657755
|
+
| \`~/.codez/settings.json\` | Global | N/A | Personal preferences for all projects |
|
|
657756
|
+
| \`.codez/settings.json\` | Project | Commit | Team-wide hooks, permissions, plugins |
|
|
657757
|
+
| \`.codez/settings.local.json\` | Project | Gitignore | Personal overrides for this project |
|
|
657758
657758
|
|
|
657759
657759
|
Settings load in order: user → project → local (later overrides earlier).
|
|
657760
657760
|
|
|
@@ -657764,7 +657764,7 @@ Settings load in order: user → project → local (later overrides earlier).
|
|
|
657764
657764
|
\`\`\`json
|
|
657765
657765
|
{
|
|
657766
657766
|
"permissions": {
|
|
657767
|
-
"allow": ["Bash(npm:*)", "Edit(.
|
|
657767
|
+
"allow": ["Bash(npm:*)", "Edit(.codez)", "Read"],
|
|
657768
657768
|
"deny": ["Bash(rm -rf:*)"],
|
|
657769
657769
|
"ask": ["Write(/etc/*)"],
|
|
657770
657770
|
"defaultMode": "default" | "plan" | "acceptEdits" | "dontAsk",
|
|
@@ -657963,7 +657963,7 @@ Hooks can return JSON to control behavior:
|
|
|
657963
657963
|
"matcher": "Bash",
|
|
657964
657964
|
"hooks": [{
|
|
657965
657965
|
"type": "command",
|
|
657966
|
-
"command": "jq -r '.tool_input.command' >> ~/.
|
|
657966
|
+
"command": "jq -r '.tool_input.command' >> ~/.codez/bash-log.txt"
|
|
657967
657967
|
}]
|
|
657968
657968
|
}]
|
|
657969
657969
|
}
|
|
@@ -658011,7 +658011,7 @@ Given an event, matcher, target file, and desired behavior, follow this flow. Ea
|
|
|
658011
658011
|
|
|
658012
658012
|
Check exit code AND side effect (file actually formatted, test actually ran). If it fails you get a real error — fix (wrong package manager? tool not installed? jq path wrong?) and retest. Once it works, wrap with \`2>/dev/null || true\` (unless the user wants a blocking check).
|
|
658013
658013
|
|
|
658014
|
-
4. **Write the JSON.** Merge into the target file (schema shape in the "Hook Structure" section above). If this creates \`.
|
|
658014
|
+
4. **Write the JSON.** Merge into the target file (schema shape in the "Hook Structure" section above). If this creates \`.codez/settings.local.json\` for the first time, add it to .gitignore — the Write tool doesn't auto-gitignore it.
|
|
658015
658015
|
|
|
658016
658016
|
5. **Validate syntax + schema in one shot:**
|
|
658017
658017
|
|
|
@@ -658025,7 +658025,7 @@ Given an event, matcher, target file, and desired behavior, follow this flow. Ea
|
|
|
658025
658025
|
|
|
658026
658026
|
**Always clean up** — revert the violation, strip the sentinel prefix — whether the proof passed or failed.
|
|
658027
658027
|
|
|
658028
|
-
**If proof fails but pipe-test passed and \`jq -e\` passed**: the settings watcher isn't watching \`.
|
|
658028
|
+
**If proof fails but pipe-test passed and \`jq -e\` passed**: the settings watcher isn't watching \`.codez/\` — it only watches directories that had a settings file when this session started. The hook is written correctly. Tell the user to open \`/hooks\` once (reloads config) or restart — you can't do this yourself; \`/hooks\` is a user UI menu and opening it ends this turn.
|
|
658029
658029
|
|
|
658030
658030
|
7. **Handoff.** Tell the user the hook is live (or needs \`/hooks\`/restart per the watcher caveat). Point them at \`/hooks\` to review, edit, or disable it later. The UI only shows "Ran N hooks" if a hook errors or is slow — silent success is invisible by design.
|
|
658031
658031
|
`, UPDATE_CONFIG_PROMPT;
|
|
@@ -658098,7 +658098,7 @@ When adding to permission arrays or hook arrays, **merge with existing**, don't
|
|
|
658098
658098
|
"permissions": {
|
|
658099
658099
|
"allow": [
|
|
658100
658100
|
"Bash(git:*)", // existing
|
|
658101
|
-
"Edit(.
|
|
658101
|
+
"Edit(.codez)", // existing
|
|
658102
658102
|
"Bash(npm:*)" // new
|
|
658103
658103
|
]
|
|
658104
658104
|
}
|
|
@@ -658118,7 +658118,7 @@ ${HOOK_VERIFICATION_FLOW}
|
|
|
658118
658118
|
User: "Format my code after Claude writes it"
|
|
658119
658119
|
|
|
658120
658120
|
1. **Clarify**: Which formatter? (prettier, gofmt, etc.)
|
|
658121
|
-
2. **Read**: \`.
|
|
658121
|
+
2. **Read**: \`.codez/settings.json\` (or create if missing)
|
|
658122
658122
|
3. **Merge**: Add to existing hooks, don't replace
|
|
658123
658123
|
4. **Result**:
|
|
658124
658124
|
\`\`\`json
|
|
@@ -658164,7 +658164,7 @@ User: "Set DEBUG=true"
|
|
|
658164
658164
|
## Troubleshooting Hooks
|
|
658165
658165
|
|
|
658166
658166
|
If a hook isn't running:
|
|
658167
|
-
1. **Check the settings file** - Read ~/.
|
|
658167
|
+
1. **Check the settings file** - Read ~/.codez/settings.json or .codez/settings.json
|
|
658168
658168
|
2. **Verify JSON syntax** - Invalid JSON silently fails
|
|
658169
658169
|
3. **Check the matcher** - Does it match the tool name? (e.g., "Bash", "Write", "Edit")
|
|
658170
658170
|
4. **Check hook type** - Is it "command", "prompt", or "agent"?
|
|
@@ -659052,7 +659052,7 @@ function appendToLog(path24, message) {
|
|
|
659052
659052
|
cwd: getFsImplementation().cwd(),
|
|
659053
659053
|
userType: process.env.USER_TYPE,
|
|
659054
659054
|
sessionId: getSessionId(),
|
|
659055
|
-
version: "0.1.
|
|
659055
|
+
version: "0.1.15"
|
|
659056
659056
|
};
|
|
659057
659057
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
659058
659058
|
}
|
|
@@ -663037,8 +663037,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
663037
663037
|
}
|
|
663038
663038
|
async function checkEnvLessBridgeMinVersion() {
|
|
663039
663039
|
const cfg = await getEnvLessBridgeConfig();
|
|
663040
|
-
if (cfg.min_version && lt("0.1.
|
|
663041
|
-
return `Your version of codez (${"0.1.
|
|
663040
|
+
if (cfg.min_version && lt("0.1.15", cfg.min_version)) {
|
|
663041
|
+
return `Your version of codez (${"0.1.15"}) is too old for Remote Control.
|
|
663042
663042
|
Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
|
|
663043
663043
|
}
|
|
663044
663044
|
return null;
|
|
@@ -663512,7 +663512,7 @@ async function initBridgeCore(params) {
|
|
|
663512
663512
|
const rawApi = createBridgeApiClient({
|
|
663513
663513
|
baseUrl,
|
|
663514
663514
|
getAccessToken,
|
|
663515
|
-
runnerVersion: "0.1.
|
|
663515
|
+
runnerVersion: "0.1.15",
|
|
663516
663516
|
onDebug: logForDebugging,
|
|
663517
663517
|
onAuth401,
|
|
663518
663518
|
getTrustedDeviceToken
|
|
@@ -668711,7 +668711,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
668711
668711
|
setCwd(cwd3);
|
|
668712
668712
|
const server = new Server({
|
|
668713
668713
|
name: "claude/tengu",
|
|
668714
|
-
version: "0.1.
|
|
668714
|
+
version: "0.1.15"
|
|
668715
668715
|
}, {
|
|
668716
668716
|
capabilities: {
|
|
668717
668717
|
tools: {}
|
|
@@ -670212,7 +670212,7 @@ __export(exports_update, {
|
|
|
670212
670212
|
});
|
|
670213
670213
|
async function update() {
|
|
670214
670214
|
logEvent("tengu_update_check", {});
|
|
670215
|
-
writeToStdout(`Current version: ${"0.1.
|
|
670215
|
+
writeToStdout(`Current version: ${"0.1.15"}
|
|
670216
670216
|
`);
|
|
670217
670217
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
670218
670218
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -670287,8 +670287,8 @@ async function update() {
|
|
|
670287
670287
|
writeToStdout(`Claude is managed by Homebrew.
|
|
670288
670288
|
`);
|
|
670289
670289
|
const latest = await getLatestVersion(channel);
|
|
670290
|
-
if (latest && !gte("0.1.
|
|
670291
|
-
writeToStdout(`Update available: ${"0.1.
|
|
670290
|
+
if (latest && !gte("0.1.15", latest)) {
|
|
670291
|
+
writeToStdout(`Update available: ${"0.1.15"} → ${latest}
|
|
670292
670292
|
`);
|
|
670293
670293
|
writeToStdout(`
|
|
670294
670294
|
`);
|
|
@@ -670304,8 +670304,8 @@ async function update() {
|
|
|
670304
670304
|
writeToStdout(`Claude is managed by winget.
|
|
670305
670305
|
`);
|
|
670306
670306
|
const latest = await getLatestVersion(channel);
|
|
670307
|
-
if (latest && !gte("0.1.
|
|
670308
|
-
writeToStdout(`Update available: ${"0.1.
|
|
670307
|
+
if (latest && !gte("0.1.15", latest)) {
|
|
670308
|
+
writeToStdout(`Update available: ${"0.1.15"} → ${latest}
|
|
670309
670309
|
`);
|
|
670310
670310
|
writeToStdout(`
|
|
670311
670311
|
`);
|
|
@@ -670321,8 +670321,8 @@ async function update() {
|
|
|
670321
670321
|
writeToStdout(`Claude is managed by apk.
|
|
670322
670322
|
`);
|
|
670323
670323
|
const latest = await getLatestVersion(channel);
|
|
670324
|
-
if (latest && !gte("0.1.
|
|
670325
|
-
writeToStdout(`Update available: ${"0.1.
|
|
670324
|
+
if (latest && !gte("0.1.15", latest)) {
|
|
670325
|
+
writeToStdout(`Update available: ${"0.1.15"} → ${latest}
|
|
670326
670326
|
`);
|
|
670327
670327
|
writeToStdout(`
|
|
670328
670328
|
`);
|
|
@@ -670387,11 +670387,11 @@ async function update() {
|
|
|
670387
670387
|
`);
|
|
670388
670388
|
await gracefulShutdown(1);
|
|
670389
670389
|
}
|
|
670390
|
-
if (result.latestVersion === "0.1.
|
|
670391
|
-
writeToStdout(source_default.green(`codez is up to date (${"0.1.
|
|
670390
|
+
if (result.latestVersion === "0.1.15") {
|
|
670391
|
+
writeToStdout(source_default.green(`codez is up to date (${"0.1.15"})`) + `
|
|
670392
670392
|
`);
|
|
670393
670393
|
} else {
|
|
670394
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.1.
|
|
670394
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.1.15"} to version ${result.latestVersion}`) + `
|
|
670395
670395
|
`);
|
|
670396
670396
|
await regenerateCompletionCache();
|
|
670397
670397
|
}
|
|
@@ -670451,12 +670451,12 @@ async function update() {
|
|
|
670451
670451
|
`);
|
|
670452
670452
|
await gracefulShutdown(1);
|
|
670453
670453
|
}
|
|
670454
|
-
if (latestVersion === "0.1.
|
|
670455
|
-
writeToStdout(source_default.green(`codez is up to date (${"0.1.
|
|
670454
|
+
if (latestVersion === "0.1.15") {
|
|
670455
|
+
writeToStdout(source_default.green(`codez is up to date (${"0.1.15"})`) + `
|
|
670456
670456
|
`);
|
|
670457
670457
|
await gracefulShutdown(0);
|
|
670458
670458
|
}
|
|
670459
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.1.
|
|
670459
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.1.15"})
|
|
670460
670460
|
`);
|
|
670461
670461
|
writeToStdout(`Installing update...
|
|
670462
670462
|
`);
|
|
@@ -670501,7 +670501,7 @@ async function update() {
|
|
|
670501
670501
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
670502
670502
|
switch (status2) {
|
|
670503
670503
|
case "success":
|
|
670504
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.1.
|
|
670504
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.1.15"} to version ${latestVersion}`) + `
|
|
670505
670505
|
`);
|
|
670506
670506
|
await regenerateCompletionCache();
|
|
670507
670507
|
break;
|
|
@@ -670511,7 +670511,7 @@ async function update() {
|
|
|
670511
670511
|
if (useLocalUpdate) {
|
|
670512
670512
|
process.stderr.write(`Try manually updating with:
|
|
670513
670513
|
`);
|
|
670514
|
-
process.stderr.write(` cd ~/.
|
|
670514
|
+
process.stderr.write(` cd ~/.codez/local && npm update ${"codez-cli"}
|
|
670515
670515
|
`);
|
|
670516
670516
|
} else {
|
|
670517
670517
|
process.stderr.write(`Try running with sudo or fix npm permissions
|
|
@@ -670527,7 +670527,7 @@ async function update() {
|
|
|
670527
670527
|
if (useLocalUpdate) {
|
|
670528
670528
|
process.stderr.write(`Try manually updating with:
|
|
670529
670529
|
`);
|
|
670530
|
-
process.stderr.write(` cd ~/.
|
|
670530
|
+
process.stderr.write(` cd ~/.codez/local && npm update ${"codez-cli"}
|
|
670531
670531
|
`);
|
|
670532
670532
|
} else {
|
|
670533
670533
|
process.stderr.write(`Or consider using native installation with: codez install
|
|
@@ -671745,7 +671745,7 @@ ${customInstructions}` : customInstructions;
|
|
|
671745
671745
|
}
|
|
671746
671746
|
}
|
|
671747
671747
|
logForDiagnosticsNoPII("info", "started", {
|
|
671748
|
-
version: "0.1.
|
|
671748
|
+
version: "0.1.15",
|
|
671749
671749
|
is_native_binary: isInBundledMode()
|
|
671750
671750
|
});
|
|
671751
671751
|
registerCleanup(async () => {
|
|
@@ -672529,7 +672529,7 @@ Usage: codez --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
672529
672529
|
pendingHookMessages
|
|
672530
672530
|
}, renderAndRun);
|
|
672531
672531
|
}
|
|
672532
|
-
}).version("0.1.
|
|
672532
|
+
}).version("0.1.15", "-v, --version", "Output the version number");
|
|
672533
672533
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
672534
672534
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
672535
672535
|
if (canUserConfigureAdvisor()) {
|
|
@@ -672694,7 +672694,7 @@ Usage: codez --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
672694
672694
|
} = await Promise.resolve().then(() => (init_plugins(), exports_plugins));
|
|
672695
672695
|
await pluginInstallHandler2(plugin2, options);
|
|
672696
672696
|
});
|
|
672697
|
-
pluginCmd.command("uninstall <plugin>").alias("remove").alias("rm").description("Uninstall an installed plugin").option("-s, --scope <scope>", "Uninstall from scope: user, project, or local", "user").option("--keep-data", "Preserve the plugin's persistent data directory (~/.
|
|
672697
|
+
pluginCmd.command("uninstall <plugin>").alias("remove").alias("rm").description("Uninstall an installed plugin").option("-s, --scope <scope>", "Uninstall from scope: user, project, or local", "user").option("--keep-data", "Preserve the plugin's persistent data directory (~/.codez/plugins/data/{id}/)").addOption(coworkOption()).action(async (plugin2, options) => {
|
|
672698
672698
|
const {
|
|
672699
672699
|
pluginUninstallHandler: pluginUninstallHandler2
|
|
672700
672700
|
} = await Promise.resolve().then(() => (init_plugins(), exports_plugins));
|
|
@@ -673042,7 +673042,7 @@ async function main2() {
|
|
|
673042
673042
|
const args = process.argv.slice(2);
|
|
673043
673043
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
673044
673044
|
const label = process.env.CLAUDE_CODE_USE_OPENAI === "1" ? "codez (OpenAI)" : "codez";
|
|
673045
|
-
console.log(`${"0.1.
|
|
673045
|
+
console.log(`${"0.1.15"} (${label})`);
|
|
673046
673046
|
return;
|
|
673047
673047
|
}
|
|
673048
673048
|
const {
|
|
@@ -673126,4 +673126,4 @@ async function main2() {
|
|
|
673126
673126
|
}
|
|
673127
673127
|
main2();
|
|
673128
673128
|
|
|
673129
|
-
//# debugId=
|
|
673129
|
+
//# debugId=4B6B21C0CDC0E81D64756E2164756E21
|