codez-cli 0.1.13 → 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 +250 -262
- 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();
|
|
@@ -71741,7 +71741,6 @@ __export(exports_model, {
|
|
|
71741
71741
|
getOpus46PricingSuffix: () => getOpus46PricingSuffix,
|
|
71742
71742
|
getMarketingNameForModel: () => getMarketingNameForModel,
|
|
71743
71743
|
getMainLoopModel: () => getMainLoopModel,
|
|
71744
|
-
getDefaultSonnetModel: () => getDefaultSonnetModel,
|
|
71745
71744
|
getDefaultOpusModel: () => getDefaultOpusModel,
|
|
71746
71745
|
getDefaultMainLoopModelSetting: () => getDefaultMainLoopModelSetting,
|
|
71747
71746
|
getDefaultMainLoopModel: () => getDefaultMainLoopModel,
|
|
@@ -71790,12 +71789,6 @@ function getDefaultOpusModel() {
|
|
|
71790
71789
|
const settings = getSettings_DEPRECATED();
|
|
71791
71790
|
return settings?.modelSettings?.opusModel || "gpt-5.4";
|
|
71792
71791
|
}
|
|
71793
|
-
function getDefaultSonnetModel() {
|
|
71794
|
-
if (process.env.OPENAI_SONNET_MODEL)
|
|
71795
|
-
return process.env.OPENAI_SONNET_MODEL;
|
|
71796
|
-
const settings = getSettings_DEPRECATED();
|
|
71797
|
-
return settings?.modelSettings?.sonnetModel || "gpt-5.4-mini";
|
|
71798
|
-
}
|
|
71799
71792
|
function getDefaultHaikuModel() {
|
|
71800
71793
|
if (process.env.OPENAI_HAIKU_MODEL)
|
|
71801
71794
|
return process.env.OPENAI_HAIKU_MODEL;
|
|
@@ -71808,7 +71801,7 @@ function getRuntimeMainLoopModel(params) {
|
|
|
71808
71801
|
return getDefaultOpusModel();
|
|
71809
71802
|
}
|
|
71810
71803
|
if (getUserSpecifiedModelSetting() === "haiku" && permissionMode === "plan") {
|
|
71811
|
-
return
|
|
71804
|
+
return getSmallFastModel();
|
|
71812
71805
|
}
|
|
71813
71806
|
return mainLoopModel;
|
|
71814
71807
|
}
|
|
@@ -71923,9 +71916,9 @@ function parseUserSpecifiedModel(modelInput) {
|
|
|
71923
71916
|
if (isModelAlias(modelString)) {
|
|
71924
71917
|
switch (modelString) {
|
|
71925
71918
|
case "opusplan":
|
|
71926
|
-
return
|
|
71919
|
+
return getSmallFastModel();
|
|
71927
71920
|
case "sonnet":
|
|
71928
|
-
return
|
|
71921
|
+
return getSmallFastModel();
|
|
71929
71922
|
case "haiku":
|
|
71930
71923
|
return getDefaultHaikuModel();
|
|
71931
71924
|
case "opus":
|
|
@@ -75164,7 +75157,7 @@ var init_auth = __esm(() => {
|
|
|
75164
75157
|
|
|
75165
75158
|
// src/utils/userAgent.ts
|
|
75166
75159
|
function getClaudeCodeUserAgent() {
|
|
75167
|
-
return `claude-code/${"0.1.
|
|
75160
|
+
return `claude-code/${"0.1.15"}`;
|
|
75168
75161
|
}
|
|
75169
75162
|
|
|
75170
75163
|
// src/utils/workloadContext.ts
|
|
@@ -75186,7 +75179,7 @@ function getUserAgent() {
|
|
|
75186
75179
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
75187
75180
|
const workload = getWorkload();
|
|
75188
75181
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75189
|
-
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})`;
|
|
75190
75183
|
}
|
|
75191
75184
|
function getMCPUserAgent() {
|
|
75192
75185
|
const parts = [];
|
|
@@ -75200,7 +75193,7 @@ function getMCPUserAgent() {
|
|
|
75200
75193
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
75201
75194
|
}
|
|
75202
75195
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75203
|
-
return `claude-code/${"0.1.
|
|
75196
|
+
return `claude-code/${"0.1.15"}${suffix}`;
|
|
75204
75197
|
}
|
|
75205
75198
|
function getWebFetchUserAgent() {
|
|
75206
75199
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -75338,7 +75331,7 @@ var init_user = __esm(() => {
|
|
|
75338
75331
|
deviceId,
|
|
75339
75332
|
sessionId: getSessionId(),
|
|
75340
75333
|
email: getEmail(),
|
|
75341
|
-
appVersion: "0.1.
|
|
75334
|
+
appVersion: "0.1.15",
|
|
75342
75335
|
platform: getHostPlatformForAnalytics(),
|
|
75343
75336
|
organizationUuid,
|
|
75344
75337
|
accountUuid,
|
|
@@ -89711,7 +89704,7 @@ var init_metadata = __esm(() => {
|
|
|
89711
89704
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
89712
89705
|
WHITESPACE_REGEX = /\s+/;
|
|
89713
89706
|
getVersionBase = memoize_default(() => {
|
|
89714
|
-
const match = "0.1.
|
|
89707
|
+
const match = "0.1.15".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
89715
89708
|
return match ? match[0] : undefined;
|
|
89716
89709
|
});
|
|
89717
89710
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -89751,9 +89744,9 @@ var init_metadata = __esm(() => {
|
|
|
89751
89744
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
89752
89745
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
89753
89746
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
89754
|
-
version: "0.1.
|
|
89747
|
+
version: "0.1.15",
|
|
89755
89748
|
versionBase: getVersionBase(),
|
|
89756
|
-
buildTime: "2026-04-02T01:
|
|
89749
|
+
buildTime: "2026-04-02T01:22:27.530Z",
|
|
89757
89750
|
deploymentEnvironment: env4.detectDeploymentEnvironment(),
|
|
89758
89751
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
89759
89752
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -90421,7 +90414,7 @@ function initialize1PEventLogging() {
|
|
|
90421
90414
|
const platform3 = getPlatform();
|
|
90422
90415
|
const attributes = {
|
|
90423
90416
|
[import_semantic_conventions.ATTR_SERVICE_NAME]: "claude-code",
|
|
90424
|
-
[import_semantic_conventions.ATTR_SERVICE_VERSION]: "0.1.
|
|
90417
|
+
[import_semantic_conventions.ATTR_SERVICE_VERSION]: "0.1.15"
|
|
90425
90418
|
};
|
|
90426
90419
|
if (platform3 === "wsl") {
|
|
90427
90420
|
const wslVersion = getWslVersion();
|
|
@@ -90448,7 +90441,7 @@ function initialize1PEventLogging() {
|
|
|
90448
90441
|
})
|
|
90449
90442
|
]
|
|
90450
90443
|
});
|
|
90451
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "0.1.
|
|
90444
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "0.1.15");
|
|
90452
90445
|
}
|
|
90453
90446
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
90454
90447
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -91913,7 +91906,7 @@ function getMemoryPath(memoryType) {
|
|
|
91913
91906
|
return "";
|
|
91914
91907
|
}
|
|
91915
91908
|
function getManagedClaudeRulesDir() {
|
|
91916
|
-
return join24(getManagedFilePath(), ".
|
|
91909
|
+
return join24(getManagedFilePath(), ".codez", "rules");
|
|
91917
91910
|
}
|
|
91918
91911
|
function getUserClaudeRulesDir() {
|
|
91919
91912
|
return join24(getClaudeConfigHomeDir(), "rules");
|
|
@@ -92394,7 +92387,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
92394
92387
|
if (!isAttributionHeaderEnabled()) {
|
|
92395
92388
|
return "";
|
|
92396
92389
|
}
|
|
92397
|
-
const version2 = `${"0.1.
|
|
92390
|
+
const version2 = `${"0.1.15"}.${fingerprint}`;
|
|
92398
92391
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
92399
92392
|
const cch = "";
|
|
92400
92393
|
const workload = getWorkload();
|
|
@@ -92907,7 +92900,7 @@ var init_prompt = __esm(() => {
|
|
|
92907
92900
|
});
|
|
92908
92901
|
|
|
92909
92902
|
// src/tools/FileEditTool/constants.ts
|
|
92910
|
-
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.";
|
|
92911
92904
|
|
|
92912
92905
|
// src/utils/pdfUtils.ts
|
|
92913
92906
|
function parsePDFPageRange(pages) {
|
|
@@ -133615,7 +133608,7 @@ function getProjectDirsUpToHome(subdir, cwd2) {
|
|
|
133615
133608
|
if (normalizePathForComparison(current) === normalizePathForComparison(home)) {
|
|
133616
133609
|
break;
|
|
133617
133610
|
}
|
|
133618
|
-
const claudeSubdir = join28(current, ".
|
|
133611
|
+
const claudeSubdir = join28(current, ".codez", subdir);
|
|
133619
133612
|
try {
|
|
133620
133613
|
statSync4(claudeSubdir);
|
|
133621
133614
|
dirs.push(claudeSubdir);
|
|
@@ -133749,15 +133742,15 @@ var init_markdownConfigLoader = __esm(() => {
|
|
|
133749
133742
|
loadMarkdownFilesForSubdir = memoize_default(async function(subdir, cwd2) {
|
|
133750
133743
|
const searchStartTime = Date.now();
|
|
133751
133744
|
const userDir = join28(getClaudeConfigHomeDir(), subdir);
|
|
133752
|
-
const managedDir = join28(getManagedFilePath(), ".
|
|
133745
|
+
const managedDir = join28(getManagedFilePath(), ".codez", subdir);
|
|
133753
133746
|
const projectDirs = getProjectDirsUpToHome(subdir, cwd2);
|
|
133754
133747
|
const gitRoot = findGitRoot(cwd2);
|
|
133755
133748
|
const canonicalRoot = findCanonicalGitRoot(cwd2);
|
|
133756
133749
|
if (gitRoot && canonicalRoot && canonicalRoot !== gitRoot) {
|
|
133757
|
-
const worktreeSubdir = normalizePathForComparison(join28(gitRoot, ".
|
|
133750
|
+
const worktreeSubdir = normalizePathForComparison(join28(gitRoot, ".codez", subdir));
|
|
133758
133751
|
const worktreeHasSubdir = projectDirs.some((dir) => normalizePathForComparison(dir) === worktreeSubdir);
|
|
133759
133752
|
if (!worktreeHasSubdir) {
|
|
133760
|
-
const mainClaudeSubdir = join28(canonicalRoot, ".
|
|
133753
|
+
const mainClaudeSubdir = join28(canonicalRoot, ".codez", subdir);
|
|
133761
133754
|
if (!projectDirs.includes(mainClaudeSubdir)) {
|
|
133762
133755
|
projectDirs.push(mainClaudeSubdir);
|
|
133763
133756
|
}
|
|
@@ -133971,7 +133964,7 @@ function getAddDirEnabledPlugins() {
|
|
|
133971
133964
|
const result = {};
|
|
133972
133965
|
for (const dir of getAdditionalDirectoriesForClaudeMd()) {
|
|
133973
133966
|
for (const file2 of SETTINGS_FILES) {
|
|
133974
|
-
const { settings } = parseSettingsFile(join29(dir, ".
|
|
133967
|
+
const { settings } = parseSettingsFile(join29(dir, ".codez", file2));
|
|
133975
133968
|
if (!settings?.enabledPlugins) {
|
|
133976
133969
|
continue;
|
|
133977
133970
|
}
|
|
@@ -133984,7 +133977,7 @@ function getAddDirExtraMarketplaces() {
|
|
|
133984
133977
|
const result = {};
|
|
133985
133978
|
for (const dir of getAdditionalDirectoriesForClaudeMd()) {
|
|
133986
133979
|
for (const file2 of SETTINGS_FILES) {
|
|
133987
|
-
const { settings } = parseSettingsFile(join29(dir, ".
|
|
133980
|
+
const { settings } = parseSettingsFile(join29(dir, ".codez", file2));
|
|
133988
133981
|
if (!settings?.extraKnownMarketplaces) {
|
|
133989
133982
|
continue;
|
|
133990
133983
|
}
|
|
@@ -137829,12 +137822,12 @@ function convertToSandboxRuntimeConfig(settings) {
|
|
|
137829
137822
|
const cwd2 = getCwdState();
|
|
137830
137823
|
const originalCwd = getOriginalCwd();
|
|
137831
137824
|
if (cwd2 !== originalCwd) {
|
|
137832
|
-
denyWrite.push(resolve16(cwd2, ".
|
|
137833
|
-
denyWrite.push(resolve16(cwd2, ".
|
|
137825
|
+
denyWrite.push(resolve16(cwd2, ".codez", "settings.json"));
|
|
137826
|
+
denyWrite.push(resolve16(cwd2, ".codez", "settings.local.json"));
|
|
137834
137827
|
}
|
|
137835
|
-
denyWrite.push(resolve16(originalCwd, ".
|
|
137828
|
+
denyWrite.push(resolve16(originalCwd, ".codez", "skills"));
|
|
137836
137829
|
if (cwd2 !== originalCwd) {
|
|
137837
|
-
denyWrite.push(resolve16(cwd2, ".
|
|
137830
|
+
denyWrite.push(resolve16(cwd2, ".codez", "skills"));
|
|
137838
137831
|
}
|
|
137839
137832
|
bareGitRepoScrubPaths.length = 0;
|
|
137840
137833
|
const bareGitRepoFiles = ["HEAD", "objects", "refs", "hooks", "config"];
|
|
@@ -166427,7 +166420,7 @@ async function loadAgentFromFile(filePath, pluginName, namespace, sourceName, pl
|
|
|
166427
166420
|
}
|
|
166428
166421
|
for (const field of ["permissionMode", "hooks", "mcpServers"]) {
|
|
166429
166422
|
if (frontmatter[field] !== undefined) {
|
|
166430
|
-
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" });
|
|
166431
166424
|
}
|
|
166432
166425
|
}
|
|
166433
166426
|
const maxTurnsRaw = frontmatter.maxTurns;
|
|
@@ -166728,7 +166721,7 @@ function getClaudeCodeGuideBasePrompt() {
|
|
|
166728
166721
|
4. Fetch the specific documentation pages
|
|
166729
166722
|
5. Provide clear, actionable guidance based on official documentation
|
|
166730
166723
|
6. Use ${WEB_SEARCH_TOOL_NAME} if docs don't cover the topic
|
|
166731
|
-
7. Reference local project files (CLAUDE.md, .
|
|
166724
|
+
7. Reference local project files (CLAUDE.md, .codez/ directory) when relevant using ${localSearchHint}
|
|
166732
166725
|
|
|
166733
166726
|
**Guidelines:**
|
|
166734
166727
|
- Always prioritize official documentation over assumptions
|
|
@@ -167123,10 +167116,10 @@ How to use the statusLine command:
|
|
|
167123
167116
|
To display both 5-hour and 7-day limits when available:
|
|
167124
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"
|
|
167125
167118
|
|
|
167126
|
-
2. For longer commands, you can save a new file in the user's ~/.
|
|
167127
|
-
- ~/.
|
|
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.
|
|
167128
167121
|
|
|
167129
|
-
3. Update the user's ~/.
|
|
167122
|
+
3. Update the user's ~/.codez/settings.json with:
|
|
167130
167123
|
{
|
|
167131
167124
|
"statusLine": {
|
|
167132
167125
|
"type": "command",
|
|
@@ -167134,7 +167127,7 @@ How to use the statusLine command:
|
|
|
167134
167127
|
}
|
|
167135
167128
|
}
|
|
167136
167129
|
|
|
167137
|
-
4. If ~/.
|
|
167130
|
+
4. If ~/.codez/settings.json is a symlink, update the target file instead.
|
|
167138
167131
|
|
|
167139
167132
|
Guidelines:
|
|
167140
167133
|
- Preserve existing settings when updating
|
|
@@ -172254,14 +172247,14 @@ async function getMemoryFilesForNestedDirectory(dir, targetPath, processedPaths)
|
|
|
172254
172247
|
if (isSettingSourceEnabled("projectSettings")) {
|
|
172255
172248
|
const projectPath = join44(dir, "CLAUDE.md");
|
|
172256
172249
|
result.push(...await processMemoryFile(projectPath, "Project", processedPaths, false));
|
|
172257
|
-
const dotClaudePath = join44(dir, ".
|
|
172250
|
+
const dotClaudePath = join44(dir, ".codez", "CLAUDE.md");
|
|
172258
172251
|
result.push(...await processMemoryFile(dotClaudePath, "Project", processedPaths, false));
|
|
172259
172252
|
}
|
|
172260
172253
|
if (isSettingSourceEnabled("localSettings")) {
|
|
172261
172254
|
const localPath = join44(dir, "CLAUDE.local.md");
|
|
172262
172255
|
result.push(...await processMemoryFile(localPath, "Local", processedPaths, false));
|
|
172263
172256
|
}
|
|
172264
|
-
const rulesDir = join44(dir, ".
|
|
172257
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172265
172258
|
const unconditionalProcessedPaths = new Set(processedPaths);
|
|
172266
172259
|
result.push(...await processMdRules({
|
|
172267
172260
|
rulesDir,
|
|
@@ -172277,7 +172270,7 @@ async function getMemoryFilesForNestedDirectory(dir, targetPath, processedPaths)
|
|
|
172277
172270
|
return result;
|
|
172278
172271
|
}
|
|
172279
172272
|
async function getConditionalRulesForCwdLevelDirectory(dir, targetPath, processedPaths) {
|
|
172280
|
-
const rulesDir = join44(dir, ".
|
|
172273
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172281
172274
|
return processConditionedMdRules(targetPath, rulesDir, "Project", processedPaths, false);
|
|
172282
172275
|
}
|
|
172283
172276
|
async function processConditionedMdRules(targetPath, rulesDir, type, processedPaths, includeExternal) {
|
|
@@ -172524,9 +172517,9 @@ var init_claudemd = __esm(() => {
|
|
|
172524
172517
|
if (isSettingSourceEnabled("projectSettings") && !skipProject) {
|
|
172525
172518
|
const projectPath = join44(dir, "CLAUDE.md");
|
|
172526
172519
|
result.push(...await processMemoryFile(projectPath, "Project", processedPaths, includeExternal));
|
|
172527
|
-
const dotClaudePath = join44(dir, ".
|
|
172520
|
+
const dotClaudePath = join44(dir, ".codez", "CLAUDE.md");
|
|
172528
172521
|
result.push(...await processMemoryFile(dotClaudePath, "Project", processedPaths, includeExternal));
|
|
172529
|
-
const rulesDir = join44(dir, ".
|
|
172522
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172530
172523
|
result.push(...await processMdRules({
|
|
172531
172524
|
rulesDir,
|
|
172532
172525
|
type: "Project",
|
|
@@ -172545,9 +172538,9 @@ var init_claudemd = __esm(() => {
|
|
|
172545
172538
|
for (const dir of additionalDirs) {
|
|
172546
172539
|
const projectPath = join44(dir, "CLAUDE.md");
|
|
172547
172540
|
result.push(...await processMemoryFile(projectPath, "Project", processedPaths, includeExternal));
|
|
172548
|
-
const dotClaudePath = join44(dir, ".
|
|
172541
|
+
const dotClaudePath = join44(dir, ".codez", "CLAUDE.md");
|
|
172549
172542
|
result.push(...await processMemoryFile(dotClaudePath, "Project", processedPaths, includeExternal));
|
|
172550
|
-
const rulesDir = join44(dir, ".
|
|
172543
|
+
const rulesDir = join44(dir, ".codez", "rules");
|
|
172551
172544
|
result.push(...await processMdRules({
|
|
172552
172545
|
rulesDir,
|
|
172553
172546
|
type: "Project",
|
|
@@ -293424,7 +293417,7 @@ function getTelemetryAttributes() {
|
|
|
293424
293417
|
attributes["session.id"] = sessionId;
|
|
293425
293418
|
}
|
|
293426
293419
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
293427
|
-
attributes["app.version"] = "0.1.
|
|
293420
|
+
attributes["app.version"] = "0.1.15";
|
|
293428
293421
|
}
|
|
293429
293422
|
const oauthAccount = getOauthAccountInfo();
|
|
293430
293423
|
if (oauthAccount) {
|
|
@@ -304047,7 +304040,7 @@ var init_cronTasks = __esm(() => {
|
|
|
304047
304040
|
init_json();
|
|
304048
304041
|
init_log2();
|
|
304049
304042
|
init_slowOperations();
|
|
304050
|
-
CRON_FILE_REL = join49(".
|
|
304043
|
+
CRON_FILE_REL = join49(".codez", "scheduled_tasks.json");
|
|
304051
304044
|
DEFAULT_CRON_JITTER_CONFIG = {
|
|
304052
304045
|
recurringFrac: 0.1,
|
|
304053
304046
|
recurringCapMs: 15 * 60 * 1000,
|
|
@@ -317166,7 +317159,7 @@ async function getIdeLockfilesPaths() {
|
|
|
317166
317159
|
if (windowsHome) {
|
|
317167
317160
|
const converter = new WindowsToWSLConverter(process.env.WSL_DISTRO_NAME);
|
|
317168
317161
|
const wslPath = converter.toLocalPath(windowsHome);
|
|
317169
|
-
paths2.push(resolve23(wslPath, ".
|
|
317162
|
+
paths2.push(resolve23(wslPath, ".codez", "ide"));
|
|
317170
317163
|
}
|
|
317171
317164
|
try {
|
|
317172
317165
|
const usersDir = "/mnt/c/Users";
|
|
@@ -317178,7 +317171,7 @@ async function getIdeLockfilesPaths() {
|
|
|
317178
317171
|
if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
|
|
317179
317172
|
continue;
|
|
317180
317173
|
}
|
|
317181
|
-
paths2.push(join59(usersDir, user.name, ".
|
|
317174
|
+
paths2.push(join59(usersDir, user.name, ".codez", "ide"));
|
|
317182
317175
|
}
|
|
317183
317176
|
} catch (error40) {
|
|
317184
317177
|
if (isFsInaccessible(error40)) {
|
|
@@ -317434,7 +317427,7 @@ function getInstallationEnv() {
|
|
|
317434
317427
|
return;
|
|
317435
317428
|
}
|
|
317436
317429
|
function getClaudeCodeVersion() {
|
|
317437
|
-
return "0.1.
|
|
317430
|
+
return "0.1.15";
|
|
317438
317431
|
}
|
|
317439
317432
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
317440
317433
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -320153,7 +320146,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
320153
320146
|
const client2 = new Client({
|
|
320154
320147
|
name: "claude-code",
|
|
320155
320148
|
title: "codez",
|
|
320156
|
-
version: "0.1.
|
|
320149
|
+
version: "0.1.15",
|
|
320157
320150
|
description: "AI-powered agentic coding tool",
|
|
320158
320151
|
websiteUrl: PRODUCT_URL
|
|
320159
320152
|
}, {
|
|
@@ -320508,7 +320501,7 @@ var init_client5 = __esm(() => {
|
|
|
320508
320501
|
const client2 = new Client({
|
|
320509
320502
|
name: "claude-code",
|
|
320510
320503
|
title: "codez",
|
|
320511
|
-
version: "0.1.
|
|
320504
|
+
version: "0.1.15",
|
|
320512
320505
|
description: "AI-powered agentic coding tool",
|
|
320513
320506
|
websiteUrl: PRODUCT_URL
|
|
320514
320507
|
}, {
|
|
@@ -321288,13 +321281,13 @@ function getAllHooks(appState) {
|
|
|
321288
321281
|
function hookSourceDescriptionDisplayString(source) {
|
|
321289
321282
|
switch (source) {
|
|
321290
321283
|
case "userSettings":
|
|
321291
|
-
return "User settings (~/.
|
|
321284
|
+
return "User settings (~/.codez/settings.json)";
|
|
321292
321285
|
case "projectSettings":
|
|
321293
|
-
return "Project settings (.
|
|
321286
|
+
return "Project settings (.codez/settings.json)";
|
|
321294
321287
|
case "localSettings":
|
|
321295
|
-
return "Local settings (.
|
|
321288
|
+
return "Local settings (.codez/settings.local.json)";
|
|
321296
321289
|
case "pluginHook":
|
|
321297
|
-
return "Plugin hooks (~/.
|
|
321290
|
+
return "Plugin hooks (~/.codez/plugins/*/hooks/hooks.json)";
|
|
321298
321291
|
case "sessionHook":
|
|
321299
321292
|
return "Session hooks (in-memory, temporary)";
|
|
321300
321293
|
case "builtinHook":
|
|
@@ -396109,7 +396102,7 @@ async function initializeBetaTracing(resource) {
|
|
|
396109
396102
|
});
|
|
396110
396103
|
import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
|
|
396111
396104
|
setLoggerProvider(loggerProvider);
|
|
396112
|
-
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");
|
|
396113
396106
|
setEventLogger(eventLogger);
|
|
396114
396107
|
process.on("beforeExit", async () => {
|
|
396115
396108
|
await loggerProvider?.forceFlush();
|
|
@@ -396149,7 +396142,7 @@ async function initializeTelemetry() {
|
|
|
396149
396142
|
const platform5 = getPlatform();
|
|
396150
396143
|
const baseAttributes = {
|
|
396151
396144
|
[import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
|
|
396152
|
-
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "0.1.
|
|
396145
|
+
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "0.1.15"
|
|
396153
396146
|
};
|
|
396154
396147
|
if (platform5 === "wsl") {
|
|
396155
396148
|
const wslVersion = getWslVersion();
|
|
@@ -396194,7 +396187,7 @@ async function initializeTelemetry() {
|
|
|
396194
396187
|
} catch {}
|
|
396195
396188
|
};
|
|
396196
396189
|
registerCleanup(shutdownTelemetry2);
|
|
396197
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "0.1.
|
|
396190
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "0.1.15");
|
|
396198
396191
|
}
|
|
396199
396192
|
const meterProvider = new import_sdk_metrics2.MeterProvider({
|
|
396200
396193
|
resource,
|
|
@@ -396214,7 +396207,7 @@ async function initializeTelemetry() {
|
|
|
396214
396207
|
});
|
|
396215
396208
|
import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
|
|
396216
396209
|
setLoggerProvider(loggerProvider);
|
|
396217
|
-
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");
|
|
396218
396211
|
setEventLogger(eventLogger);
|
|
396219
396212
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
396220
396213
|
process.on("beforeExit", async () => {
|
|
@@ -396276,7 +396269,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
396276
396269
|
}
|
|
396277
396270
|
};
|
|
396278
396271
|
registerCleanup(shutdownTelemetry);
|
|
396279
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "0.1.
|
|
396272
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "0.1.15");
|
|
396280
396273
|
}
|
|
396281
396274
|
async function flushTelemetry() {
|
|
396282
396275
|
const meterProvider = getMeterProvider();
|
|
@@ -396652,7 +396645,7 @@ function getLocalClaudePath() {
|
|
|
396652
396645
|
}
|
|
396653
396646
|
function isRunningFromLocalInstallation() {
|
|
396654
396647
|
const execPath2 = process.argv[1] || "";
|
|
396655
|
-
return execPath2.includes("/.
|
|
396648
|
+
return execPath2.includes("/.codez/local/node_modules/");
|
|
396656
396649
|
}
|
|
396657
396650
|
async function writeIfMissing(path13, content, mode) {
|
|
396658
396651
|
try {
|
|
@@ -396833,9 +396826,9 @@ async function assertMinVersion() {
|
|
|
396833
396826
|
if (false) {}
|
|
396834
396827
|
try {
|
|
396835
396828
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
396836
|
-
if (versionConfig.minVersion && lt("0.1.
|
|
396829
|
+
if (versionConfig.minVersion && lt("0.1.15", versionConfig.minVersion)) {
|
|
396837
396830
|
console.error(`
|
|
396838
|
-
It looks like your version of codez (${"0.1.
|
|
396831
|
+
It looks like your version of codez (${"0.1.15"}) needs an update.
|
|
396839
396832
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
396840
396833
|
|
|
396841
396834
|
To update, please run:
|
|
@@ -397051,7 +397044,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
397051
397044
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
397052
397045
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
397053
397046
|
pid: process.pid,
|
|
397054
|
-
currentVersion: "0.1.
|
|
397047
|
+
currentVersion: "0.1.15"
|
|
397055
397048
|
});
|
|
397056
397049
|
return "in_progress";
|
|
397057
397050
|
}
|
|
@@ -397060,7 +397053,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
397060
397053
|
if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
|
|
397061
397054
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
397062
397055
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
397063
|
-
currentVersion: "0.1.
|
|
397056
|
+
currentVersion: "0.1.15"
|
|
397064
397057
|
});
|
|
397065
397058
|
console.error(`
|
|
397066
397059
|
Error: Windows NPM detected in WSL
|
|
@@ -397406,7 +397399,7 @@ function getInvokedBinary() {
|
|
|
397406
397399
|
async function detectMultipleInstallations() {
|
|
397407
397400
|
const fs9 = getFsImplementation();
|
|
397408
397401
|
const installations = [];
|
|
397409
|
-
const localPath = join67(homedir21(), ".
|
|
397402
|
+
const localPath = join67(homedir21(), ".codez", "local");
|
|
397410
397403
|
if (await localInstallationExists()) {
|
|
397411
397404
|
installations.push({ type: "npm-local", path: localPath });
|
|
397412
397405
|
}
|
|
@@ -397564,12 +397557,12 @@ async function detectConfigurationIssues(type) {
|
|
|
397564
397557
|
if (existingAlias) {
|
|
397565
397558
|
warnings.push({
|
|
397566
397559
|
issue: "Local installation not accessible",
|
|
397567
|
-
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"`
|
|
397568
397561
|
});
|
|
397569
397562
|
} else {
|
|
397570
397563
|
warnings.push({
|
|
397571
397564
|
issue: "Local installation not accessible",
|
|
397572
|
-
fix: 'Create alias: alias claude="~/.
|
|
397565
|
+
fix: 'Create alias: alias claude="~/.codez/local/claude"'
|
|
397573
397566
|
});
|
|
397574
397567
|
}
|
|
397575
397568
|
}
|
|
@@ -397595,7 +397588,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
397595
397588
|
}
|
|
397596
397589
|
async function getDoctorDiagnostic() {
|
|
397597
397590
|
const installationType = await getCurrentInstallationType();
|
|
397598
|
-
const version2 = typeof MACRO !== "undefined" ? "0.1.
|
|
397591
|
+
const version2 = typeof MACRO !== "undefined" ? "0.1.15" : "unknown";
|
|
397599
397592
|
const installationPath = await getInstallationPath();
|
|
397600
397593
|
const invokedBinary = getInvokedBinary();
|
|
397601
397594
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -398530,8 +398523,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
398530
398523
|
const maxVersion = await getMaxVersion();
|
|
398531
398524
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
398532
398525
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
398533
|
-
if (gte("0.1.
|
|
398534
|
-
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`);
|
|
398535
398528
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
398536
398529
|
latency_ms: Date.now() - startTime,
|
|
398537
398530
|
max_version: maxVersion,
|
|
@@ -398542,7 +398535,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
398542
398535
|
version2 = maxVersion;
|
|
398543
398536
|
}
|
|
398544
398537
|
}
|
|
398545
|
-
if (!forceReinstall && version2 === "0.1.
|
|
398538
|
+
if (!forceReinstall && version2 === "0.1.15" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
|
|
398546
398539
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
398547
398540
|
logEvent("tengu_native_update_complete", {
|
|
398548
398541
|
latency_ms: Date.now() - startTime,
|
|
@@ -399295,7 +399288,7 @@ async function cleanupNpmInstallations() {
|
|
|
399295
399288
|
errors5.push(macroPackageResult.error);
|
|
399296
399289
|
}
|
|
399297
399290
|
}
|
|
399298
|
-
const localInstallDir = join71(homedir22(), ".
|
|
399291
|
+
const localInstallDir = join71(homedir22(), ".codez", "local");
|
|
399299
399292
|
try {
|
|
399300
399293
|
await rm5(localInstallDir, { recursive: true });
|
|
399301
399294
|
removed++;
|
|
@@ -411157,11 +411150,11 @@ var init_coreSchemas = __esm(() => {
|
|
|
411157
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."),
|
|
411158
411151
|
maxTurns: exports_external2.number().int().positive().optional().describe("Maximum number of agentic turns (API round-trips) before stopping"),
|
|
411159
411152
|
background: exports_external2.boolean().optional().describe("Run this agent as a background task (non-blocking, fire-and-forget) when invoked"),
|
|
411160
|
-
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>/"),
|
|
411161
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"),
|
|
411162
411155
|
permissionMode: PermissionModeSchema().optional().describe("Permission mode controlling how tool executions are handled")
|
|
411163
411156
|
}).describe("Definition for a custom subagent that can be invoked via the Agent tool."));
|
|
411164
|
-
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)."));
|
|
411165
411158
|
SdkPluginConfigSchema = lazySchema(() => exports_external2.object({
|
|
411166
411159
|
type: exports_external2.literal("local").describe("Plugin type. Currently only 'local' is supported"),
|
|
411167
411160
|
path: exports_external2.string().describe("Absolute or relative path to the plugin directory")
|
|
@@ -418182,7 +418175,7 @@ function AssistantTextMessage(t0) {
|
|
|
418182
418175
|
t3 = /* @__PURE__ */ import_react91.default.createElement(MessageResponse, null, /* @__PURE__ */ import_react91.default.createElement(ThemedBox_default, {
|
|
418183
418176
|
flexDirection: "column",
|
|
418184
418177
|
gap: 1
|
|
418185
|
-
}, t2, /* @__PURE__ */ import_react91.default.createElement(ThemedText, null, "To continue immediately, use /model to switch to", " ", renderModelName(
|
|
418178
|
+
}, t2, /* @__PURE__ */ import_react91.default.createElement(ThemedText, null, "To continue immediately, use /model to switch to", " ", renderModelName(getSmallFastModel()), " and continue coding.")));
|
|
418186
418179
|
$3[13] = t3;
|
|
418187
418180
|
} else {
|
|
418188
418181
|
t3 = $3[13];
|
|
@@ -430471,9 +430464,9 @@ async function processSessionStartHooks(source, {
|
|
|
430471
430464
|
if (errorMessage2.includes("Failed to clone") || errorMessage2.includes("network") || errorMessage2.includes("ETIMEDOUT") || errorMessage2.includes("ENOTFOUND")) {
|
|
430472
430465
|
userGuidance = "This appears to be a network issue. Check your internet connection and try again.";
|
|
430473
430466
|
} else if (errorMessage2.includes("Permission denied") || errorMessage2.includes("EACCES") || errorMessage2.includes("EPERM")) {
|
|
430474
|
-
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/";
|
|
430475
430468
|
} else if (errorMessage2.includes("Invalid") || errorMessage2.includes("parse") || errorMessage2.includes("JSON") || errorMessage2.includes("schema")) {
|
|
430476
|
-
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";
|
|
430477
430470
|
} else {
|
|
430478
430471
|
userGuidance = "Please fix the plugin configuration or remove problematic plugins from your settings.";
|
|
430479
430472
|
}
|
|
@@ -446891,11 +446884,11 @@ import {
|
|
|
446891
446884
|
function getSkillsPath(source, dir) {
|
|
446892
446885
|
switch (source) {
|
|
446893
446886
|
case "policySettings":
|
|
446894
|
-
return join84(getManagedFilePath(), ".
|
|
446887
|
+
return join84(getManagedFilePath(), ".codez", dir);
|
|
446895
446888
|
case "userSettings":
|
|
446896
446889
|
return join84(getClaudeConfigHomeDir(), dir);
|
|
446897
446890
|
case "projectSettings":
|
|
446898
|
-
return `.
|
|
446891
|
+
return `.codez/${dir}`;
|
|
446899
446892
|
case "plugin":
|
|
446900
446893
|
return "plugin";
|
|
446901
446894
|
default:
|
|
@@ -447219,7 +447212,7 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
|
|
|
447219
447212
|
for (const filePath of filePaths) {
|
|
447220
447213
|
let currentDir = dirname33(filePath);
|
|
447221
447214
|
while (currentDir.startsWith(resolvedCwd + pathSep)) {
|
|
447222
|
-
const skillDir = join84(currentDir, ".
|
|
447215
|
+
const skillDir = join84(currentDir, ".codez", "skills");
|
|
447223
447216
|
if (!dynamicSkillDirs.has(skillDir)) {
|
|
447224
447217
|
dynamicSkillDirs.add(skillDir);
|
|
447225
447218
|
try {
|
|
@@ -447343,7 +447336,7 @@ var init_loadSkillsDir = __esm(() => {
|
|
|
447343
447336
|
import_ignore3 = __toESM(require_ignore(), 1);
|
|
447344
447337
|
getSkillDirCommands = memoize_default(async (cwd2) => {
|
|
447345
447338
|
const userSkillsDir = join84(getClaudeConfigHomeDir(), "skills");
|
|
447346
|
-
const managedSkillsDir = join84(getManagedFilePath(), ".
|
|
447339
|
+
const managedSkillsDir = join84(getManagedFilePath(), ".codez", "skills");
|
|
447347
447340
|
const projectSkillsDirs = getProjectDirsUpToHome("skills", cwd2);
|
|
447348
447341
|
logForDebugging(`Loading skills from: managed=${managedSkillsDir}, user=${userSkillsDir}, project=[${projectSkillsDirs.join(", ")}]`);
|
|
447349
447342
|
const additionalDirs = getAdditionalDirectoriesForClaudeMd();
|
|
@@ -447354,7 +447347,7 @@ var init_loadSkillsDir = __esm(() => {
|
|
|
447354
447347
|
logForDebugging(`[bare] Skipping skill dir discovery (${additionalDirs.length === 0 ? "no --add-dir" : "projectSettings disabled or skillsLocked"})`);
|
|
447355
447348
|
return [];
|
|
447356
447349
|
}
|
|
447357
|
-
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")));
|
|
447358
447351
|
return additionalSkillsNested2.flat().map((s) => s.skill);
|
|
447359
447352
|
}
|
|
447360
447353
|
const [
|
|
@@ -447367,7 +447360,7 @@ var init_loadSkillsDir = __esm(() => {
|
|
|
447367
447360
|
isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_POLICY_SKILLS) ? Promise.resolve([]) : loadSkillsFromSkillsDir(managedSkillsDir, "policySettings"),
|
|
447368
447361
|
isSettingSourceEnabled("userSettings") && !skillsLocked ? loadSkillsFromSkillsDir(userSkillsDir, "userSettings") : Promise.resolve([]),
|
|
447369
447362
|
projectSettingsEnabled ? Promise.all(projectSkillsDirs.map((dir) => loadSkillsFromSkillsDir(dir, "projectSettings"))) : Promise.resolve([]),
|
|
447370
|
-
projectSettingsEnabled ? Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join84(dir, ".
|
|
447363
|
+
projectSettingsEnabled ? Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join84(dir, ".codez", "skills"), "projectSettings"))) : Promise.resolve([]),
|
|
447371
447364
|
skillsLocked ? Promise.resolve([]) : loadSkillsFromCommandsDir(cwd2)
|
|
447372
447365
|
]);
|
|
447373
447366
|
const allSkillsWithPaths = [
|
|
@@ -475025,7 +475018,7 @@ function getEnterWorktreeToolPrompt() {
|
|
|
475025
475018
|
|
|
475026
475019
|
## Behavior
|
|
475027
475020
|
|
|
475028
|
-
- 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
|
|
475029
475022
|
- Outside a git repository: delegates to WorktreeCreate/WorktreeRemove hooks for VCS-agnostic isolation
|
|
475030
475023
|
- Switches the session's working directory to the new worktree
|
|
475031
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
|
|
@@ -477008,7 +477001,7 @@ When spawning teammates via the Agent tool, choose the \`subagent_type\` based o
|
|
|
477008
477001
|
|
|
477009
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.
|
|
477010
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.
|
|
477011
|
-
- **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.
|
|
477012
477005
|
|
|
477013
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.
|
|
477014
477007
|
|
|
@@ -477022,8 +477015,8 @@ Create a new team to coordinate multiple agents working on a project. Teams have
|
|
|
477022
477015
|
\`\`\`
|
|
477023
477016
|
|
|
477024
477017
|
This creates:
|
|
477025
|
-
- A team file at \`~/.
|
|
477026
|
-
- 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}/\`
|
|
477027
477020
|
|
|
477028
477021
|
## Team Workflow
|
|
477029
477022
|
|
|
@@ -477065,7 +477058,7 @@ Teammates go idle after every turn—this is completely normal and expected. A t
|
|
|
477065
477058
|
## Discovering Team Members
|
|
477066
477059
|
|
|
477067
477060
|
Teammates can read the team config file to discover other team members:
|
|
477068
|
-
- **Team config location**: \`~/.
|
|
477061
|
+
- **Team config location**: \`~/.codez/teams/{team-name}/config.json\`
|
|
477069
477062
|
|
|
477070
477063
|
The config file contains a \`members\` array with each teammate's:
|
|
477071
477064
|
- \`name\`: Human-readable name (**always use this** for messaging and task assignment)
|
|
@@ -477078,12 +477071,12 @@ The config file contains a \`members\` array with each teammate's:
|
|
|
477078
477071
|
|
|
477079
477072
|
Example of reading team config:
|
|
477080
477073
|
\`\`\`
|
|
477081
|
-
Use the Read tool to read ~/.
|
|
477074
|
+
Use the Read tool to read ~/.codez/teams/{team-name}/config.json
|
|
477082
477075
|
\`\`\`
|
|
477083
477076
|
|
|
477084
477077
|
## Task List Coordination
|
|
477085
477078
|
|
|
477086
|
-
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}/\`.
|
|
477087
477080
|
|
|
477088
477081
|
Teammates should:
|
|
477089
477082
|
1. Check TaskList periodically, **especially after completing each task**, to find available work or see newly unblocked tasks
|
|
@@ -477267,8 +477260,8 @@ function getPrompt7() {
|
|
|
477267
477260
|
Remove team and task directories when the swarm work is complete.
|
|
477268
477261
|
|
|
477269
477262
|
This operation:
|
|
477270
|
-
- Removes the team directory (\`~/.
|
|
477271
|
-
- Removes the task directory (\`~/.
|
|
477263
|
+
- Removes the team directory (\`~/.codez/teams/{team-name}/\`)
|
|
477264
|
+
- Removes the task directory (\`~/.codez/tasks/{team-name}/\`)
|
|
477272
477265
|
- Clears team context from the current session
|
|
477273
477266
|
|
|
477274
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.
|
|
@@ -489363,7 +489356,7 @@ function getAnthropicEnvMetadata() {
|
|
|
489363
489356
|
function getBuildAgeMinutes() {
|
|
489364
489357
|
if (false)
|
|
489365
489358
|
;
|
|
489366
|
-
const buildTime = new Date("2026-04-02T01:
|
|
489359
|
+
const buildTime = new Date("2026-04-02T01:22:27.530Z").getTime();
|
|
489367
489360
|
if (isNaN(buildTime))
|
|
489368
489361
|
return;
|
|
489369
489362
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -494332,7 +494325,7 @@ async function countTokensViaHaikuFallback(messages, tools) {
|
|
|
494332
494325
|
const containsThinking = hasThinkingBlocks(messages);
|
|
494333
494326
|
const isVertexGlobalEndpoint = isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) && getVertexRegionForModel(getSmallFastModel()) === "global";
|
|
494334
494327
|
const isVertexWithThinking = isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) && containsThinking;
|
|
494335
|
-
const model = isVertexGlobalEndpoint || isVertexWithThinking ?
|
|
494328
|
+
const model = isVertexGlobalEndpoint || isVertexWithThinking ? getSmallFastModel() : getSmallFastModel();
|
|
494336
494329
|
const anthropic = await getAnthropicClient({
|
|
494337
494330
|
maxRetries: 1,
|
|
494338
494331
|
model,
|
|
@@ -495989,7 +495982,7 @@ async function selectRelevantMemories(query2, memories, signal, recentTools) {
|
|
|
495989
495982
|
Recently used tools: ${recentTools.join(", ")}` : "";
|
|
495990
495983
|
try {
|
|
495991
495984
|
const result = await sideQuery({
|
|
495992
|
-
model:
|
|
495985
|
+
model: getSmallFastModel(),
|
|
495993
495986
|
system: SELECT_MEMORIES_SYSTEM_PROMPT,
|
|
495994
495987
|
skipSystemPromptPrefix: true,
|
|
495995
495988
|
messages: [
|
|
@@ -500729,7 +500722,7 @@ async function cacheAndRegisterPlugin(pluginId, entry, scope = "user", projectPa
|
|
|
500729
500722
|
const normalizedCachePath = cacheResult.path.endsWith(sep26) ? cacheResult.path : cacheResult.path + sep26;
|
|
500730
500723
|
const isSubdirectory = versionedPath.startsWith(normalizedCachePath);
|
|
500731
500724
|
if (isSubdirectory) {
|
|
500732
|
-
const tempPath = join102(dirname46(cacheResult.path), `.
|
|
500725
|
+
const tempPath = join102(dirname46(cacheResult.path), `.codez-plugin-temp-${Date.now()}-${randomBytes14(4).toString("hex")}`);
|
|
500733
500726
|
await rename5(cacheResult.path, tempPath);
|
|
500734
500727
|
await getFsImplementation().mkdir(dirname46(versionedPath));
|
|
500735
500728
|
await rename5(tempPath, versionedPath);
|
|
@@ -509279,7 +509272,7 @@ import { dirname as dirname48, join as join106 } from "path";
|
|
|
509279
509272
|
function detectShell() {
|
|
509280
509273
|
const shell = process.env.SHELL || "";
|
|
509281
509274
|
const home = homedir27();
|
|
509282
|
-
const claudeDir = join106(home, ".
|
|
509275
|
+
const claudeDir = join106(home, ".codez");
|
|
509283
509276
|
if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
|
|
509284
509277
|
const cacheFile = join106(claudeDir, "completion.zsh");
|
|
509285
509278
|
return {
|
|
@@ -513709,7 +513702,7 @@ function Feedback({
|
|
|
513709
513702
|
platform: env4.platform,
|
|
513710
513703
|
gitRepo: envInfo.isGit,
|
|
513711
513704
|
terminal: env4.terminal,
|
|
513712
|
-
version: "0.1.
|
|
513705
|
+
version: "0.1.15",
|
|
513713
513706
|
transcript: normalizeMessagesForAPI(messages),
|
|
513714
513707
|
errors: sanitizedErrors,
|
|
513715
513708
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -513848,7 +513841,7 @@ function Feedback({
|
|
|
513848
513841
|
dimColor: true
|
|
513849
513842
|
}, description)), /* @__PURE__ */ React167.createElement(ThemedText, null, "- Environment info:", " ", /* @__PURE__ */ React167.createElement(ThemedText, {
|
|
513850
513843
|
dimColor: true
|
|
513851
|
-
}, 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, {
|
|
513852
513845
|
dimColor: true
|
|
513853
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, {
|
|
513854
513847
|
marginTop: 1
|
|
@@ -513885,7 +513878,7 @@ ${sanitizedDescription}
|
|
|
513885
513878
|
` + `**Environment Info**
|
|
513886
513879
|
` + `- Platform: ${env4.platform}
|
|
513887
513880
|
` + `- Terminal: ${env4.terminal}
|
|
513888
|
-
` + `- Version: ${"0.1.
|
|
513881
|
+
` + `- Version: ${"0.1.15"}
|
|
513889
513882
|
` + `- Feedback ID: ${feedbackId}
|
|
513890
513883
|
` + `
|
|
513891
513884
|
**Errors**
|
|
@@ -516946,7 +516939,7 @@ function buildPrimarySection() {
|
|
|
516946
516939
|
}, "/rename to add a name");
|
|
516947
516940
|
return [{
|
|
516948
516941
|
label: "Version",
|
|
516949
|
-
value: "0.1.
|
|
516942
|
+
value: "0.1.15"
|
|
516950
516943
|
}, {
|
|
516951
516944
|
label: "Session name",
|
|
516952
516945
|
value: nameValue
|
|
@@ -520350,7 +520343,7 @@ function Config({
|
|
|
520350
520343
|
});
|
|
520351
520344
|
}
|
|
520352
520345
|
})) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ React182.createElement(ChannelDowngradeDialog, {
|
|
520353
|
-
currentVersion: "0.1.
|
|
520346
|
+
currentVersion: "0.1.15",
|
|
520354
520347
|
onChoice: (choice) => {
|
|
520355
520348
|
setShowSubmenu(null);
|
|
520356
520349
|
setTabsHidden(false);
|
|
@@ -520362,7 +520355,7 @@ function Config({
|
|
|
520362
520355
|
autoUpdatesChannel: "stable"
|
|
520363
520356
|
};
|
|
520364
520357
|
if (choice === "stay") {
|
|
520365
|
-
newSettings.minimumVersion = "0.1.
|
|
520358
|
+
newSettings.minimumVersion = "0.1.15";
|
|
520366
520359
|
}
|
|
520367
520360
|
updateSettingsForSource("userSettings", newSettings);
|
|
520368
520361
|
setSettingsData((prev_27) => ({
|
|
@@ -525067,7 +525060,7 @@ function Doctor(t0) {
|
|
|
525067
525060
|
getDoctorDiagnostic().then(setDiagnostic);
|
|
525068
525061
|
(async () => {
|
|
525069
525062
|
const userAgentsDir = join115(getClaudeConfigHomeDir(), "agents");
|
|
525070
|
-
const projectAgentsDir = join115(getOriginalCwd(), ".
|
|
525063
|
+
const projectAgentsDir = join115(getOriginalCwd(), ".codez", "agents");
|
|
525071
525064
|
const {
|
|
525072
525065
|
activeAgents,
|
|
525073
525066
|
allAgents,
|
|
@@ -525696,7 +525689,7 @@ function MemoryFileSelector(t0) {
|
|
|
525696
525689
|
let description;
|
|
525697
525690
|
const isGit = projectIsInGitRepo(getOriginalCwd());
|
|
525698
525691
|
if (file2.type === "User" && !file2.isNested) {
|
|
525699
|
-
description = "Saved in ~/.
|
|
525692
|
+
description = "Saved in ~/.codez/CLAUDE.md";
|
|
525700
525693
|
} else {
|
|
525701
525694
|
if (file2.type === "Project" && !file2.isNested && file2.path === projectMemoryPath) {
|
|
525702
525695
|
description = `${isGit ? "Checked in at" : "Saved in"} ./CLAUDE.md`;
|
|
@@ -527123,7 +527116,7 @@ function HelpV2(t0) {
|
|
|
527123
527116
|
let t6;
|
|
527124
527117
|
if ($3[31] !== tabs) {
|
|
527125
527118
|
t6 = /* @__PURE__ */ React209.createElement(Tabs, {
|
|
527126
|
-
title: `codez v${"0.1.
|
|
527119
|
+
title: `codez v${"0.1.15"}`,
|
|
527127
527120
|
color: "professionalBlue",
|
|
527128
527121
|
defaultTab: "general"
|
|
527129
527122
|
}, tabs);
|
|
@@ -528303,9 +528296,9 @@ Based on the areas detected in Phase 1, you may need to create multiple verifier
|
|
|
528303
528296
|
|
|
528304
528297
|
## Phase 4: Generate Verifier Skill
|
|
528305
528298
|
|
|
528306
|
-
**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.
|
|
528307
528300
|
|
|
528308
|
-
Write the skill file to \`.
|
|
528301
|
+
Write the skill file to \`.codez/skills/<verifier-name>/SKILL.md\`.
|
|
528309
528302
|
|
|
528310
528303
|
### Skill Template Structure
|
|
528311
528304
|
|
|
@@ -528389,7 +528382,7 @@ allowed-tools:
|
|
|
528389
528382
|
## Phase 5: Confirm Creation
|
|
528390
528383
|
|
|
528391
528384
|
After writing the skill file(s), inform the user:
|
|
528392
|
-
1. Where each skill was created (always in \`.
|
|
528385
|
+
1. Where each skill was created (always in \`.codez/skills/\`)
|
|
528393
528386
|
2. How the Verify agent will discover them — the folder name must contain "verifier" (case-insensitive) for automatic discovery
|
|
528394
528387
|
3. That they can edit the skills to customize them
|
|
528395
528388
|
4. That they can run /init-verifiers again to add more verifiers for other areas
|
|
@@ -537743,7 +537736,7 @@ async function uninstallPluginOp(plugin, scope = "user", deleteDataDir = true) {
|
|
|
537743
537736
|
if (actualScope === "project") {
|
|
537744
537737
|
return {
|
|
537745
537738
|
success: false,
|
|
537746
|
-
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`
|
|
537747
537740
|
};
|
|
537748
537741
|
}
|
|
537749
537742
|
return {
|
|
@@ -540993,7 +540986,7 @@ function ManagePlugins({
|
|
|
540993
540986
|
return;
|
|
540994
540987
|
}
|
|
540995
540988
|
clearAllCaches();
|
|
540996
|
-
setResult(`✓ Disabled ${selectedPlugin.plugin.name} in .
|
|
540989
|
+
setResult(`✓ Disabled ${selectedPlugin.plugin.name} in .codez/settings.local.json. Run /reload-plugins to apply.`);
|
|
540997
540990
|
if (onManageComplete)
|
|
540998
540991
|
onManageComplete();
|
|
540999
540992
|
setParentViewState({
|
|
@@ -541220,10 +541213,10 @@ function ManagePlugins({
|
|
|
541220
541213
|
}, /* @__PURE__ */ React245.createElement(ThemedText, {
|
|
541221
541214
|
bold: true,
|
|
541222
541215
|
color: "warning"
|
|
541223
|
-
}, 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, {
|
|
541224
541217
|
marginTop: 1,
|
|
541225
541218
|
flexDirection: "column"
|
|
541226
|
-
}, /* @__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, {
|
|
541227
541220
|
dimColor: true
|
|
541228
541221
|
}, "This has the same effect as uninstalling, without affecting other contributors.")), processError && /* @__PURE__ */ React245.createElement(ThemedBox_default, {
|
|
541229
541222
|
marginTop: 1
|
|
@@ -548517,7 +548510,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
548517
548510
|
return [];
|
|
548518
548511
|
}
|
|
548519
548512
|
}
|
|
548520
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.
|
|
548513
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.15") {
|
|
548521
548514
|
if (process.env.USER_TYPE === "ant") {
|
|
548522
548515
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
548523
548516
|
if (changelog) {
|
|
@@ -548544,7 +548537,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.13")
|
|
|
548544
548537
|
releaseNotes
|
|
548545
548538
|
};
|
|
548546
548539
|
}
|
|
548547
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "0.1.
|
|
548540
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "0.1.15") {
|
|
548548
548541
|
if (process.env.USER_TYPE === "ant") {
|
|
548549
548542
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
548550
548543
|
if (changelog) {
|
|
@@ -549714,7 +549707,7 @@ function getRecentActivitySync() {
|
|
|
549714
549707
|
return cachedActivity;
|
|
549715
549708
|
}
|
|
549716
549709
|
function getLogoDisplayData() {
|
|
549717
|
-
const version2 = process.env.DEMO_VERSION ?? "0.1.
|
|
549710
|
+
const version2 = process.env.DEMO_VERSION ?? "0.1.15";
|
|
549718
549711
|
const serverUrl = getDirectConnectServerUrl();
|
|
549719
549712
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
549720
549713
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -550867,7 +550860,7 @@ function LogoV2() {
|
|
|
550867
550860
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
550868
550861
|
t2 = () => {
|
|
550869
550862
|
const currentConfig = getGlobalConfig();
|
|
550870
|
-
if (currentConfig.lastReleaseNotesSeen === "0.1.
|
|
550863
|
+
if (currentConfig.lastReleaseNotesSeen === "0.1.15") {
|
|
550871
550864
|
return;
|
|
550872
550865
|
}
|
|
550873
550866
|
saveGlobalConfig(_temp329);
|
|
@@ -551405,12 +551398,12 @@ function LogoV2() {
|
|
|
551405
551398
|
return t41;
|
|
551406
551399
|
}
|
|
551407
551400
|
function _temp329(current) {
|
|
551408
|
-
if (current.lastReleaseNotesSeen === "0.1.
|
|
551401
|
+
if (current.lastReleaseNotesSeen === "0.1.15") {
|
|
551409
551402
|
return current;
|
|
551410
551403
|
}
|
|
551411
551404
|
return {
|
|
551412
551405
|
...current,
|
|
551413
|
-
lastReleaseNotesSeen: "0.1.
|
|
551406
|
+
lastReleaseNotesSeen: "0.1.15"
|
|
551414
551407
|
};
|
|
551415
551408
|
}
|
|
551416
551409
|
function _temp245(s_0) {
|
|
@@ -557917,7 +557910,7 @@ function SkillsMenu(t0) {
|
|
|
557917
557910
|
if ($3[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
557918
557911
|
t32 = /* @__PURE__ */ React279.createElement(ThemedText, {
|
|
557919
557912
|
dimColor: true
|
|
557920
|
-
}, "Create skills in .
|
|
557913
|
+
}, "Create skills in .codez/skills/ or ~/.codez/skills/");
|
|
557921
557914
|
$3[6] = t32;
|
|
557922
557915
|
} else {
|
|
557923
557916
|
t32 = $3[6];
|
|
@@ -563966,7 +563959,7 @@ function optionForPermissionSaveDestination(saveDestination) {
|
|
|
563966
563959
|
case "userSettings":
|
|
563967
563960
|
return {
|
|
563968
563961
|
label: "User settings",
|
|
563969
|
-
description: `Saved in at ~/.
|
|
563962
|
+
description: `Saved in at ~/.codez/settings.json`,
|
|
563970
563963
|
value: saveDestination
|
|
563971
563964
|
};
|
|
563972
563965
|
}
|
|
@@ -567935,7 +567928,7 @@ function SelectEventMode(t0) {
|
|
|
567935
567928
|
color: "suggestion"
|
|
567936
567929
|
}, figures_default.info, " Hooks Restricted by Policy"), /* @__PURE__ */ React311.createElement(ThemedText, {
|
|
567937
567930
|
dimColor: true
|
|
567938
|
-
}, "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."));
|
|
567939
567932
|
$3[2] = restrictedByPolicy;
|
|
567940
567933
|
$3[3] = t2;
|
|
567941
567934
|
} else {
|
|
@@ -569522,7 +569515,7 @@ var init_agentDisplay = __esm(() => {
|
|
|
569522
569515
|
var AGENT_PATHS;
|
|
569523
569516
|
var init_types13 = __esm(() => {
|
|
569524
569517
|
AGENT_PATHS = {
|
|
569525
|
-
FOLDER_NAME: ".
|
|
569518
|
+
FOLDER_NAME: ".codez",
|
|
569526
569519
|
AGENTS_DIR: "agents"
|
|
569527
569520
|
};
|
|
569528
569521
|
});
|
|
@@ -572985,7 +572978,7 @@ function LocationStep() {
|
|
|
572985
572978
|
let t0;
|
|
572986
572979
|
if ($3[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
572987
572980
|
t0 = {
|
|
572988
|
-
label: "Project (.
|
|
572981
|
+
label: "Project (.codez/agents/)",
|
|
572989
572982
|
value: "projectSettings"
|
|
572990
572983
|
};
|
|
572991
572984
|
$3[0] = t0;
|
|
@@ -572995,7 +572988,7 @@ function LocationStep() {
|
|
|
572995
572988
|
let t1;
|
|
572996
572989
|
if ($3[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
572997
572990
|
t1 = [t0, {
|
|
572998
|
-
label: "Personal (~/.
|
|
572991
|
+
label: "Personal (~/.codez/agents/)",
|
|
572999
572992
|
value: "userSettings"
|
|
573000
572993
|
}];
|
|
573001
572994
|
$3[1] = t1;
|
|
@@ -573098,28 +573091,28 @@ function MemoryStep() {
|
|
|
573098
573091
|
let t1;
|
|
573099
573092
|
if ($3[1] !== isUserScope) {
|
|
573100
573093
|
t1 = isUserScope ? [{
|
|
573101
|
-
label: "User scope (~/.
|
|
573094
|
+
label: "User scope (~/.codez/agent-memory/) (Recommended)",
|
|
573102
573095
|
value: "user"
|
|
573103
573096
|
}, {
|
|
573104
573097
|
label: "None (no persistent memory)",
|
|
573105
573098
|
value: "none"
|
|
573106
573099
|
}, {
|
|
573107
|
-
label: "Project scope (.
|
|
573100
|
+
label: "Project scope (.codez/agent-memory/)",
|
|
573108
573101
|
value: "project"
|
|
573109
573102
|
}, {
|
|
573110
|
-
label: "Local scope (.
|
|
573103
|
+
label: "Local scope (.codez/agent-memory-local/)",
|
|
573111
573104
|
value: "local"
|
|
573112
573105
|
}] : [{
|
|
573113
|
-
label: "Project scope (.
|
|
573106
|
+
label: "Project scope (.codez/agent-memory/) (Recommended)",
|
|
573114
573107
|
value: "project"
|
|
573115
573108
|
}, {
|
|
573116
573109
|
label: "None (no persistent memory)",
|
|
573117
573110
|
value: "none"
|
|
573118
573111
|
}, {
|
|
573119
|
-
label: "User scope (~/.
|
|
573112
|
+
label: "User scope (~/.codez/agent-memory/)",
|
|
573120
573113
|
value: "user"
|
|
573121
573114
|
}, {
|
|
573122
|
-
label: "Local scope (.
|
|
573115
|
+
label: "Local scope (.codez/agent-memory-local/)",
|
|
573123
573116
|
value: "local"
|
|
573124
573117
|
}];
|
|
573125
573118
|
$3[1] = isUserScope;
|
|
@@ -575091,7 +575084,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
575091
575084
|
smapsRollup,
|
|
575092
575085
|
platform: process.platform,
|
|
575093
575086
|
nodeVersion: process.version,
|
|
575094
|
-
ccVersion: "0.1.
|
|
575087
|
+
ccVersion: "0.1.15"
|
|
575095
575088
|
};
|
|
575096
575089
|
}
|
|
575097
575090
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -575677,7 +575670,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
575677
575670
|
var call56 = async () => {
|
|
575678
575671
|
return {
|
|
575679
575672
|
type: "text",
|
|
575680
|
-
value: `${"0.1.
|
|
575673
|
+
value: `${"0.1.15"} (built ${"2026-04-02T01:22:27.530Z"})`
|
|
575681
575674
|
};
|
|
575682
575675
|
}, version2, version_default;
|
|
575683
575676
|
var init_version = __esm(() => {
|
|
@@ -576637,7 +576630,7 @@ async function call57(onDone, _context, args) {
|
|
|
576637
576630
|
const cleanPattern = commandPattern.replace(/^["']|["']$/g, "");
|
|
576638
576631
|
addToExcludedCommands(cleanPattern);
|
|
576639
576632
|
const localSettingsPath = getSettingsFilePathForSource("localSettings");
|
|
576640
|
-
const relativePath = localSettingsPath ? relative28(getCwdState(), localSettingsPath) : ".
|
|
576633
|
+
const relativePath = localSettingsPath ? relative28(getCwdState(), localSettingsPath) : ".codez/settings.local.json";
|
|
576641
576634
|
const message = color("success", themeName)(`Added "${cleanPattern}" to excluded commands in ${relativePath}`);
|
|
576642
576635
|
onDone(message);
|
|
576643
576636
|
return null;
|
|
@@ -579603,7 +579596,7 @@ var init_statusline = __esm(() => {
|
|
|
579603
579596
|
aliases: [],
|
|
579604
579597
|
name: "statusline",
|
|
579605
579598
|
progressMessage: "setting up statusLine",
|
|
579606
|
-
allowedTools: [AGENT_TOOL_NAME, "Read(~/**)", "Edit(~/.
|
|
579599
|
+
allowedTools: [AGENT_TOOL_NAME, "Read(~/**)", "Edit(~/.codez/settings.json)"],
|
|
579607
579600
|
source: "builtin",
|
|
579608
579601
|
disableNonInteractive: true,
|
|
579609
579602
|
async getPromptForCommand(args) {
|
|
@@ -582176,7 +582169,7 @@ function renderStatsToAnsi(stats, activeTab) {
|
|
|
582176
582169
|
function renderOverviewToAnsi(stats) {
|
|
582177
582170
|
const lines2 = [];
|
|
582178
582171
|
const theme2 = getTheme(resolveThemeSetting(getGlobalConfig().theme));
|
|
582179
|
-
const h2 = (text2) => applyColor(text2, theme2.
|
|
582172
|
+
const h2 = (text2) => applyColor(text2, theme2.codez);
|
|
582180
582173
|
const COL1_LABEL_WIDTH = 18;
|
|
582181
582174
|
const COL2_START = 40;
|
|
582182
582175
|
const COL2_LABEL_WIDTH = 18;
|
|
@@ -583909,7 +583902,7 @@ function generateHtmlReport(data, insights) {
|
|
|
583909
583902
|
</html>`;
|
|
583910
583903
|
}
|
|
583911
583904
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
583912
|
-
const version3 = typeof MACRO !== "undefined" ? "0.1.
|
|
583905
|
+
const version3 = typeof MACRO !== "undefined" ? "0.1.15" : "unknown";
|
|
583913
583906
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
583914
583907
|
const facets_summary = {
|
|
583915
583908
|
total: facets.size,
|
|
@@ -584209,7 +584202,7 @@ var init_insights = __esm(() => {
|
|
|
584209
584202
|
getRemoteHostSessionCount = process.env.USER_TYPE === "ant" ? async (homespace) => {
|
|
584210
584203
|
const { stdout, code } = await execFileNoThrow("ssh", [
|
|
584211
584204
|
`${homespace}.coder`,
|
|
584212
|
-
'find /root/.
|
|
584205
|
+
'find /root/.codez/projects -name "*.jsonl" 2>/dev/null | wc -l'
|
|
584213
584206
|
], { timeout: 30000 });
|
|
584214
584207
|
if (code !== 0)
|
|
584215
584208
|
return 0;
|
|
@@ -584219,7 +584212,7 @@ var init_insights = __esm(() => {
|
|
|
584219
584212
|
const result = { copied: 0, skipped: 0 };
|
|
584220
584213
|
const tempDir = await mkdtemp3(join136(tmpdir12(), "claude-hs-"));
|
|
584221
584214
|
try {
|
|
584222
|
-
const scpResult = await execFileNoThrow("scp", ["-rq", `${homespace}.coder:/root/.
|
|
584215
|
+
const scpResult = await execFileNoThrow("scp", ["-rq", `${homespace}.coder:/root/.codez/projects/`, tempDir], { timeout: 300000 });
|
|
584223
584216
|
if (scpResult.code !== 0) {
|
|
584224
584217
|
return result;
|
|
584225
584218
|
}
|
|
@@ -584428,11 +584421,11 @@ Include 3 friction categories with 2 examples each.`,
|
|
|
584428
584421
|
- Good for: database queries, Slack integration, GitHub issue lookup, connecting to internal APIs
|
|
584429
584422
|
|
|
584430
584423
|
2. **Custom Skills**: Reusable prompts you define as markdown files that run with a single /command.
|
|
584431
|
-
- How to use: Create \`.
|
|
584424
|
+
- How to use: Create \`.codez/skills/commit/SKILL.md\` with instructions. Then type \`/commit\` to run it.
|
|
584432
584425
|
- Good for: repetitive workflows - /commit, /review, /test, /deploy, /pr, or complex multi-step workflows
|
|
584433
584426
|
|
|
584434
584427
|
3. **Hooks**: Shell commands that auto-run at specific lifecycle events.
|
|
584435
|
-
- How to use: Add to \`.
|
|
584428
|
+
- How to use: Add to \`.codez/settings.json\` under "hooks" key.
|
|
584436
584429
|
- Good for: auto-formatting code, running type checks, enforcing conventions
|
|
584437
584430
|
|
|
584438
584431
|
4. **Headless Mode**: Run Claude non-interactively from scripts and CI/CD.
|
|
@@ -588018,7 +588011,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
588018
588011
|
init_settings2();
|
|
588019
588012
|
init_slowOperations();
|
|
588020
588013
|
init_uuid();
|
|
588021
|
-
VERSION4 = typeof MACRO !== "undefined" ? "0.1.
|
|
588014
|
+
VERSION4 = typeof MACRO !== "undefined" ? "0.1.15" : "unknown";
|
|
588022
588015
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
588023
588016
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
588024
588017
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -588276,13 +588269,13 @@ function getLocalAgentMemoryDir(dirName) {
|
|
|
588276
588269
|
if (process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR) {
|
|
588277
588270
|
return join138(process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR, "projects", sanitizePath2(findCanonicalGitRoot(getProjectRoot()) ?? getProjectRoot()), "agent-memory-local", dirName) + sep34;
|
|
588278
588271
|
}
|
|
588279
|
-
return join138(getCwd(), ".
|
|
588272
|
+
return join138(getCwd(), ".codez", "agent-memory-local", dirName) + sep34;
|
|
588280
588273
|
}
|
|
588281
588274
|
function getAgentMemoryDir(agentType, scope) {
|
|
588282
588275
|
const dirName = sanitizeAgentTypeForPath(agentType);
|
|
588283
588276
|
switch (scope) {
|
|
588284
588277
|
case "project":
|
|
588285
|
-
return join138(getCwd(), ".
|
|
588278
|
+
return join138(getCwd(), ".codez", "agent-memory", dirName) + sep34;
|
|
588286
588279
|
case "local":
|
|
588287
588280
|
return getLocalAgentMemoryDir(dirName);
|
|
588288
588281
|
case "user":
|
|
@@ -588295,14 +588288,14 @@ function isAgentMemoryPath(absolutePath) {
|
|
|
588295
588288
|
if (normalizedPath.startsWith(join138(memoryBase, "agent-memory") + sep34)) {
|
|
588296
588289
|
return true;
|
|
588297
588290
|
}
|
|
588298
|
-
if (normalizedPath.startsWith(join138(getCwd(), ".
|
|
588291
|
+
if (normalizedPath.startsWith(join138(getCwd(), ".codez", "agent-memory") + sep34)) {
|
|
588299
588292
|
return true;
|
|
588300
588293
|
}
|
|
588301
588294
|
if (process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR) {
|
|
588302
588295
|
if (normalizedPath.includes(sep34 + "agent-memory-local" + sep34) && normalizedPath.startsWith(join138(process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR, "projects") + sep34)) {
|
|
588303
588296
|
return true;
|
|
588304
588297
|
}
|
|
588305
|
-
} else if (normalizedPath.startsWith(join138(getCwd(), ".
|
|
588298
|
+
} else if (normalizedPath.startsWith(join138(getCwd(), ".codez", "agent-memory-local") + sep34)) {
|
|
588306
588299
|
return true;
|
|
588307
588300
|
}
|
|
588308
588301
|
return false;
|
|
@@ -588312,7 +588305,7 @@ function getMemoryScopeDisplay(memory2) {
|
|
|
588312
588305
|
case "user":
|
|
588313
588306
|
return `User (${join138(getMemoryBaseDir(), "agent-memory")}/)`;
|
|
588314
588307
|
case "project":
|
|
588315
|
-
return "Project (.
|
|
588308
|
+
return "Project (.codez/agent-memory/)";
|
|
588316
588309
|
case "local":
|
|
588317
588310
|
return `Local (${getLocalAgentMemoryDir("...")})`;
|
|
588318
588311
|
default:
|
|
@@ -588362,12 +588355,12 @@ function getClaudeSkillScope(filePath) {
|
|
|
588362
588355
|
const absolutePathLower = normalizeCaseForComparison2(absolutePath);
|
|
588363
588356
|
const bases = [
|
|
588364
588357
|
{
|
|
588365
|
-
dir: expandPath(join139(getOriginalCwd(), ".
|
|
588366
|
-
prefix: "/.
|
|
588358
|
+
dir: expandPath(join139(getOriginalCwd(), ".codez", "skills")),
|
|
588359
|
+
prefix: "/.codez/skills/"
|
|
588367
588360
|
},
|
|
588368
588361
|
{
|
|
588369
|
-
dir: expandPath(join139(homedir33(), ".
|
|
588370
|
-
prefix: "~/.
|
|
588362
|
+
dir: expandPath(join139(homedir33(), ".codez", "skills")),
|
|
588363
|
+
prefix: "~/.codez/skills/"
|
|
588371
588364
|
}
|
|
588372
588365
|
];
|
|
588373
588366
|
for (const { dir, prefix } of bases) {
|
|
@@ -588412,7 +588405,7 @@ function getSettingsPaths() {
|
|
|
588412
588405
|
function isClaudeSettingsPath(filePath) {
|
|
588413
588406
|
const expandedPath = expandPath(filePath);
|
|
588414
588407
|
const normalizedPath = normalizeCaseForComparison2(expandedPath);
|
|
588415
|
-
if (normalizedPath.endsWith(`${sep35}.
|
|
588408
|
+
if (normalizedPath.endsWith(`${sep35}.codez${sep35}settings.json`) || normalizedPath.endsWith(`${sep35}.codez${sep35}settings.local.json`)) {
|
|
588416
588409
|
return true;
|
|
588417
588410
|
}
|
|
588418
588411
|
return getSettingsPaths().some((settingsPath) => normalizeCaseForComparison2(settingsPath) === normalizedPath);
|
|
@@ -588421,9 +588414,9 @@ function isClaudeConfigFilePath(filePath) {
|
|
|
588421
588414
|
if (isClaudeSettingsPath(filePath)) {
|
|
588422
588415
|
return true;
|
|
588423
588416
|
}
|
|
588424
|
-
const commandsDir = join139(getOriginalCwd(), ".
|
|
588425
|
-
const agentsDir = join139(getOriginalCwd(), ".
|
|
588426
|
-
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");
|
|
588427
588420
|
return pathInWorkingPath(filePath, commandsDir) || pathInWorkingPath(filePath, agentsDir) || pathInWorkingPath(filePath, skillsDir);
|
|
588428
588421
|
}
|
|
588429
588422
|
function isSessionPlanFile(absolutePath) {
|
|
@@ -588493,7 +588486,7 @@ function isDangerousFilePathToAutoEdit(path22) {
|
|
|
588493
588486
|
if (normalizedSegment !== normalizeCaseForComparison2(dir)) {
|
|
588494
588487
|
continue;
|
|
588495
588488
|
}
|
|
588496
|
-
if (dir === ".
|
|
588489
|
+
if (dir === ".codez") {
|
|
588497
588490
|
const nextSegment = pathSegments[i3 + 1];
|
|
588498
588491
|
if (nextSegment && normalizeCaseForComparison2(nextSegment) === "worktrees") {
|
|
588499
588492
|
break;
|
|
@@ -589038,7 +589031,7 @@ function checkEditableInternalPath(absolutePath, input) {
|
|
|
589038
589031
|
}
|
|
589039
589032
|
};
|
|
589040
589033
|
}
|
|
589041
|
-
if (normalizeCaseForComparison2(normalizedPath) === normalizeCaseForComparison2(join139(getOriginalCwd(), ".
|
|
589034
|
+
if (normalizeCaseForComparison2(normalizedPath) === normalizeCaseForComparison2(join139(getOriginalCwd(), ".codez", "launch.json"))) {
|
|
589042
589035
|
return {
|
|
589043
589036
|
behavior: "allow",
|
|
589044
589037
|
updatedInput: input,
|
|
@@ -589209,7 +589202,7 @@ var init_filesystem = __esm(() => {
|
|
|
589209
589202
|
".git",
|
|
589210
589203
|
".vscode",
|
|
589211
589204
|
".idea",
|
|
589212
|
-
".
|
|
589205
|
+
".codez"
|
|
589213
589206
|
];
|
|
589214
589207
|
DIR_SEP = posix8.sep;
|
|
589215
589208
|
getClaudeTempDir = memoize_default(function getClaudeTempDir2() {
|
|
@@ -589223,7 +589216,7 @@ var init_filesystem = __esm(() => {
|
|
|
589223
589216
|
});
|
|
589224
589217
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
589225
589218
|
const nonce = randomBytes20(16).toString("hex");
|
|
589226
|
-
return join139(getClaudeTempDir(), "bundled-skills", "0.1.
|
|
589219
|
+
return join139(getClaudeTempDir(), "bundled-skills", "0.1.15", nonce);
|
|
589227
589220
|
});
|
|
589228
589221
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
589229
589222
|
});
|
|
@@ -593564,7 +593557,7 @@ function generateTmuxSessionName(repoPath, branch2) {
|
|
|
593564
593557
|
return combined.replace(/[/.]/g, "_");
|
|
593565
593558
|
}
|
|
593566
593559
|
function worktreesDir(repoRoot) {
|
|
593567
|
-
return join141(repoRoot, ".
|
|
593560
|
+
return join141(repoRoot, ".codez", "worktrees");
|
|
593568
593561
|
}
|
|
593569
593562
|
function flattenSlug(slug) {
|
|
593570
593563
|
return slug.replaceAll("/", "+");
|
|
@@ -595213,7 +595206,7 @@ function computeFingerprint(messageText, version3) {
|
|
|
595213
595206
|
}
|
|
595214
595207
|
function computeFingerprintFromMessages(messages) {
|
|
595215
595208
|
const firstMessageText = extractFirstMessageText(messages);
|
|
595216
|
-
return computeFingerprint(firstMessageText, "0.1.
|
|
595209
|
+
return computeFingerprint(firstMessageText, "0.1.15");
|
|
595217
595210
|
}
|
|
595218
595211
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
595219
595212
|
var init_fingerprint = () => {};
|
|
@@ -595357,11 +595350,6 @@ function getPromptCachingEnabled(model) {
|
|
|
595357
595350
|
if (model === smallFastModel)
|
|
595358
595351
|
return false;
|
|
595359
595352
|
}
|
|
595360
|
-
if (isEnvTruthy(process.env.DISABLE_PROMPT_CACHING_SONNET)) {
|
|
595361
|
-
const defaultSonnet = getDefaultSonnetModel();
|
|
595362
|
-
if (model === defaultSonnet)
|
|
595363
|
-
return false;
|
|
595364
|
-
}
|
|
595365
595353
|
if (isEnvTruthy(process.env.DISABLE_PROMPT_CACHING_OPUS)) {
|
|
595366
595354
|
const defaultOpus = getDefaultOpusModel();
|
|
595367
595355
|
if (model === defaultOpus)
|
|
@@ -597117,7 +597105,7 @@ async function sideQuery(opts) {
|
|
|
597117
597105
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
597118
597106
|
}
|
|
597119
597107
|
const messageText = extractFirstUserMessageText(messages);
|
|
597120
|
-
const fingerprint = computeFingerprint(messageText, "0.1.
|
|
597108
|
+
const fingerprint = computeFingerprint(messageText, "0.1.15");
|
|
597121
597109
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
597122
597110
|
const systemBlocks = [
|
|
597123
597111
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -597849,7 +597837,7 @@ var init_chromeNativeHost = __esm(() => {
|
|
|
597849
597837
|
init_slowOperations();
|
|
597850
597838
|
init_common3();
|
|
597851
597839
|
MAX_MESSAGE_SIZE = 1024 * 1024;
|
|
597852
|
-
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;
|
|
597853
597841
|
messageSchema = lazySchema(() => exports_external.object({
|
|
597854
597842
|
type: exports_external.string()
|
|
597855
597843
|
}).passthrough());
|
|
@@ -601690,7 +601678,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
601690
601678
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
601691
601679
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
601692
601680
|
betas: getSdkBetas(),
|
|
601693
|
-
claude_code_version: "0.1.
|
|
601681
|
+
claude_code_version: "0.1.15",
|
|
601694
601682
|
output_style: outputStyle2,
|
|
601695
601683
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
601696
601684
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -607387,14 +607375,14 @@ import { homedir as homedir36 } from "os";
|
|
|
607387
607375
|
import { basename as basename48, join as join144, sep as sep36 } from "path";
|
|
607388
607376
|
function isInClaudeFolder(filePath) {
|
|
607389
607377
|
const absolutePath = expandPath(filePath);
|
|
607390
|
-
const claudeFolderPath = expandPath(`${getOriginalCwd()}/.
|
|
607378
|
+
const claudeFolderPath = expandPath(`${getOriginalCwd()}/.codez`);
|
|
607391
607379
|
const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
|
|
607392
607380
|
const normalizedClaudeFolderPath = normalizeCaseForComparison2(claudeFolderPath);
|
|
607393
607381
|
return normalizedAbsolutePath.startsWith(normalizedClaudeFolderPath + sep36.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedClaudeFolderPath + "/");
|
|
607394
607382
|
}
|
|
607395
607383
|
function isInGlobalClaudeFolder(filePath) {
|
|
607396
607384
|
const absolutePath = expandPath(filePath);
|
|
607397
|
-
const globalClaudeFolderPath = join144(homedir36(), ".
|
|
607385
|
+
const globalClaudeFolderPath = join144(homedir36(), ".codez");
|
|
607398
607386
|
const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
|
|
607399
607387
|
const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison2(globalClaudeFolderPath);
|
|
607400
607388
|
return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep36.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
|
|
@@ -614837,7 +614825,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
614837
614825
|
function getSemverPart(version3) {
|
|
614838
614826
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
614839
614827
|
}
|
|
614840
|
-
function useUpdateNotification(updatedVersion, initialVersion = "0.1.
|
|
614828
|
+
function useUpdateNotification(updatedVersion, initialVersion = "0.1.15") {
|
|
614841
614829
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react338.useState(() => getSemverPart(initialVersion));
|
|
614842
614830
|
if (!updatedVersion) {
|
|
614843
614831
|
return null;
|
|
@@ -614877,7 +614865,7 @@ function AutoUpdater({
|
|
|
614877
614865
|
return;
|
|
614878
614866
|
}
|
|
614879
614867
|
if (false) {}
|
|
614880
|
-
const currentVersion = "0.1.
|
|
614868
|
+
const currentVersion = "0.1.15";
|
|
614881
614869
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
614882
614870
|
let latestVersion = await getLatestVersion(channel);
|
|
614883
614871
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -614991,7 +614979,7 @@ function AutoUpdater({
|
|
|
614991
614979
|
bold: true
|
|
614992
614980
|
}, "claude doctor"), " or", " ", /* @__PURE__ */ React409.createElement(ThemedText, {
|
|
614993
614981
|
bold: true
|
|
614994
|
-
}, hasLocalInstall ? `cd ~/.
|
|
614982
|
+
}, hasLocalInstall ? `cd ~/.codez/local && npm update ${"codez-cli"}` : `npm i -g ${"codez-cli"}`)));
|
|
614995
614983
|
}
|
|
614996
614984
|
var React409, import_react339;
|
|
614997
614985
|
var init_AutoUpdater = __esm(() => {
|
|
@@ -615062,12 +615050,12 @@ function NativeAutoUpdater({
|
|
|
615062
615050
|
logEvent("tengu_native_auto_updater_start", {});
|
|
615063
615051
|
try {
|
|
615064
615052
|
const maxVersion = await getMaxVersion();
|
|
615065
|
-
if (maxVersion && gt("0.1.
|
|
615053
|
+
if (maxVersion && gt("0.1.15", maxVersion)) {
|
|
615066
615054
|
const msg = await getMaxVersionMessage();
|
|
615067
615055
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
615068
615056
|
}
|
|
615069
615057
|
const result = await installLatest(channel);
|
|
615070
|
-
const currentVersion = "0.1.
|
|
615058
|
+
const currentVersion = "0.1.15";
|
|
615071
615059
|
const latencyMs = Date.now() - startTime;
|
|
615072
615060
|
if (result.lockFailed) {
|
|
615073
615061
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -615180,17 +615168,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
615180
615168
|
const maxVersion = await getMaxVersion();
|
|
615181
615169
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
615182
615170
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
615183
|
-
if (gte("0.1.
|
|
615184
|
-
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`);
|
|
615185
615173
|
setUpdateAvailable(false);
|
|
615186
615174
|
return;
|
|
615187
615175
|
}
|
|
615188
615176
|
latest = maxVersion;
|
|
615189
615177
|
}
|
|
615190
|
-
const hasUpdate = latest && !gte("0.1.
|
|
615178
|
+
const hasUpdate = latest && !gte("0.1.15", latest) && !shouldSkipVersion(latest);
|
|
615191
615179
|
setUpdateAvailable(!!hasUpdate);
|
|
615192
615180
|
if (hasUpdate) {
|
|
615193
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.1.
|
|
615181
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.1.15"} -> ${latest}`);
|
|
615194
615182
|
}
|
|
615195
615183
|
};
|
|
615196
615184
|
$3[0] = t1;
|
|
@@ -615222,7 +615210,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
615222
615210
|
t4 = verbose && /* @__PURE__ */ React411.createElement(ThemedText, {
|
|
615223
615211
|
dimColor: true,
|
|
615224
615212
|
wrap: "truncate"
|
|
615225
|
-
}, "currentVersion: ", "0.1.
|
|
615213
|
+
}, "currentVersion: ", "0.1.15");
|
|
615226
615214
|
$3[3] = verbose;
|
|
615227
615215
|
$3[4] = t4;
|
|
615228
615216
|
} else {
|
|
@@ -622444,7 +622432,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
622444
622432
|
project_dir: getOriginalCwd(),
|
|
622445
622433
|
added_dirs: addedDirs
|
|
622446
622434
|
},
|
|
622447
|
-
version: "0.1.
|
|
622435
|
+
version: "0.1.15",
|
|
622448
622436
|
output_style: {
|
|
622449
622437
|
name: outputStyleName
|
|
622450
622438
|
},
|
|
@@ -628236,7 +628224,7 @@ async function applySkillImprovement(skillName, updates) {
|
|
|
628236
628224
|
return;
|
|
628237
628225
|
const { join: join145 } = await import("path");
|
|
628238
628226
|
const fs11 = await import("fs/promises");
|
|
628239
|
-
const filePath = join145(getCwd(), ".
|
|
628227
|
+
const filePath = join145(getCwd(), ".codez", "skills", skillName, "SKILL.md");
|
|
628240
628228
|
let currentContent;
|
|
628241
628229
|
try {
|
|
628242
628230
|
currentContent = await fs11.readFile(filePath, "utf-8");
|
|
@@ -639918,7 +639906,7 @@ async function getWatchablePaths() {
|
|
|
639918
639906
|
} catch {}
|
|
639919
639907
|
}
|
|
639920
639908
|
for (const dir of getAdditionalDirectoriesForClaudeMd()) {
|
|
639921
|
-
const additionalSkillsPath = platformPath2.join(dir, ".
|
|
639909
|
+
const additionalSkillsPath = platformPath2.join(dir, ".codez", "skills");
|
|
639922
639910
|
try {
|
|
639923
639911
|
await fs12.stat(additionalSkillsPath);
|
|
639924
639912
|
paths2.push(additionalSkillsPath);
|
|
@@ -642073,7 +642061,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
642073
642061
|
} catch {}
|
|
642074
642062
|
const data = {
|
|
642075
642063
|
trigger,
|
|
642076
|
-
version: "0.1.
|
|
642064
|
+
version: "0.1.15",
|
|
642077
642065
|
platform: process.platform,
|
|
642078
642066
|
transcript,
|
|
642079
642067
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -644196,7 +644184,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
644196
644184
|
},
|
|
644197
644185
|
{
|
|
644198
644186
|
id: "custom-commands",
|
|
644199
|
-
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",
|
|
644200
644188
|
cooldownSessions: 15,
|
|
644201
644189
|
async isRelevant() {
|
|
644202
644190
|
const config5 = getGlobalConfig();
|
|
@@ -649603,7 +649591,7 @@ function REPL({
|
|
|
649603
649591
|
return;
|
|
649604
649592
|
worktreeTipShownRef.current = true;
|
|
649605
649593
|
const secs = Math.round(wt.creationDurationMs / 1000);
|
|
649606
|
-
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")]);
|
|
649607
649595
|
}, [setMessages]);
|
|
649608
649596
|
const onlySleepToolActive = import_react432.useMemo(() => {
|
|
649609
649597
|
const lastAssistant = messages.findLast((m2) => m2.type === "assistant");
|
|
@@ -653215,7 +653203,7 @@ function WelcomeV2() {
|
|
|
653215
653203
|
color: "claude"
|
|
653216
653204
|
}, `Welcome to ${getProductName()}`, " "), /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653217
653205
|
dimColor: true
|
|
653218
|
-
}, "v", "0.1.
|
|
653206
|
+
}, "v", "0.1.15", " "));
|
|
653219
653207
|
t17 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, "…………………………………………………………………………………………………………………………………………………………");
|
|
653220
653208
|
t22 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " ");
|
|
653221
653209
|
t32 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " ");
|
|
@@ -653319,7 +653307,7 @@ function WelcomeV2() {
|
|
|
653319
653307
|
color: "claude"
|
|
653320
653308
|
}, `Welcome to ${getProductName()}`, " "), /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653321
653309
|
dimColor: true
|
|
653322
|
-
}, "v", "0.1.
|
|
653310
|
+
}, "v", "0.1.15", " "));
|
|
653323
653311
|
t1 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, "…………………………………………………………………………………………………………………………………………………………");
|
|
653324
653312
|
t2 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " ");
|
|
653325
653313
|
t3 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, null, " * █████▓▓░ ");
|
|
@@ -653446,7 +653434,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
653446
653434
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
653447
653435
|
t22 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653448
653436
|
dimColor: true
|
|
653449
|
-
}, "v", "0.1.
|
|
653437
|
+
}, "v", "0.1.15", " ");
|
|
653450
653438
|
$3[2] = t22;
|
|
653451
653439
|
} else {
|
|
653452
653440
|
t22 = $3[2];
|
|
@@ -653584,7 +653572,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
653584
653572
|
if ($3[24] === Symbol.for("react.memo_cache_sentinel")) {
|
|
653585
653573
|
t2 = /* @__PURE__ */ import_react441.default.createElement(ThemedText, {
|
|
653586
653574
|
dimColor: true
|
|
653587
|
-
}, "v", "0.1.
|
|
653575
|
+
}, "v", "0.1.15", " ");
|
|
653588
653576
|
$3[24] = t2;
|
|
653589
653577
|
} else {
|
|
653590
653578
|
t2 = $3[24];
|
|
@@ -654115,11 +654103,11 @@ function getHooksSources() {
|
|
|
654115
654103
|
const sources = [];
|
|
654116
654104
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654117
654105
|
if (hasHooks(projectSettings)) {
|
|
654118
|
-
sources.push(".
|
|
654106
|
+
sources.push(".codez/settings.json");
|
|
654119
654107
|
}
|
|
654120
654108
|
const localSettings = getSettingsForSource("localSettings");
|
|
654121
654109
|
if (hasHooks(localSettings)) {
|
|
654122
|
-
sources.push(".
|
|
654110
|
+
sources.push(".codez/settings.local.json");
|
|
654123
654111
|
}
|
|
654124
654112
|
return sources;
|
|
654125
654113
|
}
|
|
@@ -654130,11 +654118,11 @@ function getBashPermissionSources() {
|
|
|
654130
654118
|
const sources = [];
|
|
654131
654119
|
const projectRules = getPermissionRulesForSource("projectSettings");
|
|
654132
654120
|
if (hasBashPermission(projectRules)) {
|
|
654133
|
-
sources.push(".
|
|
654121
|
+
sources.push(".codez/settings.json");
|
|
654134
654122
|
}
|
|
654135
654123
|
const localRules = getPermissionRulesForSource("localSettings");
|
|
654136
654124
|
if (hasBashPermission(localRules)) {
|
|
654137
|
-
sources.push(".
|
|
654125
|
+
sources.push(".codez/settings.local.json");
|
|
654138
654126
|
}
|
|
654139
654127
|
return sources;
|
|
654140
654128
|
}
|
|
@@ -654145,11 +654133,11 @@ function getOtelHeadersHelperSources() {
|
|
|
654145
654133
|
const sources = [];
|
|
654146
654134
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654147
654135
|
if (hasOtelHeadersHelper(projectSettings)) {
|
|
654148
|
-
sources.push(".
|
|
654136
|
+
sources.push(".codez/settings.json");
|
|
654149
654137
|
}
|
|
654150
654138
|
const localSettings = getSettingsForSource("localSettings");
|
|
654151
654139
|
if (hasOtelHeadersHelper(localSettings)) {
|
|
654152
|
-
sources.push(".
|
|
654140
|
+
sources.push(".codez/settings.local.json");
|
|
654153
654141
|
}
|
|
654154
654142
|
return sources;
|
|
654155
654143
|
}
|
|
@@ -654160,11 +654148,11 @@ function getApiKeyHelperSources() {
|
|
|
654160
654148
|
const sources = [];
|
|
654161
654149
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654162
654150
|
if (hasApiKeyHelper(projectSettings)) {
|
|
654163
|
-
sources.push(".
|
|
654151
|
+
sources.push(".codez/settings.json");
|
|
654164
654152
|
}
|
|
654165
654153
|
const localSettings = getSettingsForSource("localSettings");
|
|
654166
654154
|
if (hasApiKeyHelper(localSettings)) {
|
|
654167
|
-
sources.push(".
|
|
654155
|
+
sources.push(".codez/settings.local.json");
|
|
654168
654156
|
}
|
|
654169
654157
|
return sources;
|
|
654170
654158
|
}
|
|
@@ -654175,11 +654163,11 @@ function getAwsCommandsSources() {
|
|
|
654175
654163
|
const sources = [];
|
|
654176
654164
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654177
654165
|
if (hasAwsCommands(projectSettings)) {
|
|
654178
|
-
sources.push(".
|
|
654166
|
+
sources.push(".codez/settings.json");
|
|
654179
654167
|
}
|
|
654180
654168
|
const localSettings = getSettingsForSource("localSettings");
|
|
654181
654169
|
if (hasAwsCommands(localSettings)) {
|
|
654182
|
-
sources.push(".
|
|
654170
|
+
sources.push(".codez/settings.local.json");
|
|
654183
654171
|
}
|
|
654184
654172
|
return sources;
|
|
654185
654173
|
}
|
|
@@ -654190,11 +654178,11 @@ function getGcpCommandsSources() {
|
|
|
654190
654178
|
const sources = [];
|
|
654191
654179
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654192
654180
|
if (hasGcpCommands(projectSettings)) {
|
|
654193
|
-
sources.push(".
|
|
654181
|
+
sources.push(".codez/settings.json");
|
|
654194
654182
|
}
|
|
654195
654183
|
const localSettings = getSettingsForSource("localSettings");
|
|
654196
654184
|
if (hasGcpCommands(localSettings)) {
|
|
654197
|
-
sources.push(".
|
|
654185
|
+
sources.push(".codez/settings.local.json");
|
|
654198
654186
|
}
|
|
654199
654187
|
return sources;
|
|
654200
654188
|
}
|
|
@@ -654208,11 +654196,11 @@ function getDangerousEnvVarsSources() {
|
|
|
654208
654196
|
const sources = [];
|
|
654209
654197
|
const projectSettings = getSettingsForSource("projectSettings");
|
|
654210
654198
|
if (hasDangerousEnvVars(projectSettings)) {
|
|
654211
|
-
sources.push(".
|
|
654199
|
+
sources.push(".codez/settings.json");
|
|
654212
654200
|
}
|
|
654213
654201
|
const localSettings = getSettingsForSource("localSettings");
|
|
654214
654202
|
if (hasDangerousEnvVars(localSettings)) {
|
|
654215
|
-
sources.push(".
|
|
654203
|
+
sources.push(".codez/settings.local.json");
|
|
654216
654204
|
}
|
|
654217
654205
|
return sources;
|
|
654218
654206
|
}
|
|
@@ -654786,7 +654774,7 @@ function completeOnboarding() {
|
|
|
654786
654774
|
saveGlobalConfig((current) => ({
|
|
654787
654775
|
...current,
|
|
654788
654776
|
hasCompletedOnboarding: true,
|
|
654789
|
-
lastOnboardingVersion: "0.1.
|
|
654777
|
+
lastOnboardingVersion: "0.1.15"
|
|
654790
654778
|
}));
|
|
654791
654779
|
}
|
|
654792
654780
|
function showDialog(root2, renderer) {
|
|
@@ -656802,7 +656790,7 @@ function generateReservedShortcuts() {
|
|
|
656802
656790
|
function registerKeybindingsSkill() {
|
|
656803
656791
|
registerBundledSkill({
|
|
656804
656792
|
name: "keybindings-help",
|
|
656805
|
-
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".',
|
|
656806
656794
|
allowedTools: ["Read"],
|
|
656807
656795
|
userInvocable: false,
|
|
656808
656796
|
isEnabled: isKeybindingCustomizationEnabled,
|
|
@@ -656891,11 +656879,11 @@ var init_keybindings3 = __esm(() => {
|
|
|
656891
656879
|
SECTION_INTRO = [
|
|
656892
656880
|
"# Keybindings Skill",
|
|
656893
656881
|
"",
|
|
656894
|
-
"Create or modify `~/.
|
|
656882
|
+
"Create or modify `~/.codez/keybindings.json` to customize keyboard shortcuts.",
|
|
656895
656883
|
"",
|
|
656896
656884
|
"## CRITICAL: Read Before Write",
|
|
656897
656885
|
"",
|
|
656898
|
-
"**Always read `~/.
|
|
656886
|
+
"**Always read `~/.codez/keybindings.json` first** (it may not exist yet). Merge changes with existing bindings — never replace the entire file.",
|
|
656899
656887
|
"",
|
|
656900
656888
|
"- Use **Edit** tool for modifications to existing files",
|
|
656901
656889
|
"- Use **Write** tool only if the file does not exist yet"
|
|
@@ -656973,7 +656961,7 @@ var init_keybindings3 = __esm(() => {
|
|
|
656973
656961
|
SECTION_DOCTOR = [
|
|
656974
656962
|
"## Validation with /doctor",
|
|
656975
656963
|
"",
|
|
656976
|
-
'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`.',
|
|
656977
656965
|
"",
|
|
656978
656966
|
"### Common Issues and Fixes",
|
|
656979
656967
|
"",
|
|
@@ -657019,7 +657007,7 @@ var init_keybindings3 = __esm(() => {
|
|
|
657019
657007
|
"",
|
|
657020
657008
|
"```",
|
|
657021
657009
|
"Keybinding Configuration Issues",
|
|
657022
|
-
"Location: ~/.
|
|
657010
|
+
"Location: ~/.codez/keybindings.json",
|
|
657023
657011
|
' └ [Error] Unknown context "chat"',
|
|
657024
657012
|
" → Valid contexts: Global, Chat, Autocomplete, ...",
|
|
657025
657013
|
' └ [Warning] "ctrl+c" may not work: Terminal interrupt (SIGINT)',
|
|
@@ -657537,8 +657525,8 @@ You will use the AskUserQuestion to understand what the user wants to automate.
|
|
|
657537
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.
|
|
657538
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.
|
|
657539
657527
|
- Ask where the skill should be saved. Suggest a default based on context (repo-specific workflows → repo, cross-repo personal workflows → user). Options:
|
|
657540
|
-
- **This repo** (\`.
|
|
657541
|
-
- **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
|
|
657542
657530
|
|
|
657543
657531
|
**Round 3: Breaking down each step**
|
|
657544
657532
|
For each major step, if it's not glaringly obvious, ask:
|
|
@@ -657682,7 +657670,7 @@ Signs of a stuck session:
|
|
|
657682
657670
|
- Child processes: \`pgrep -lP <pid>\`
|
|
657683
657671
|
- If high CPU: sample again after 1-2s to confirm it's sustained
|
|
657684
657672
|
- If a child looks hung (e.g., a git command), note its full command line with \`ps -p <child_pid> -o command=\`
|
|
657685
|
-
- 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)
|
|
657686
657674
|
|
|
657687
657675
|
3. **Consider a stack dump** for a truly frozen process (advanced, optional):
|
|
657688
657676
|
- macOS: \`sample <pid> 3\` gives a 3-second native stack sample
|
|
@@ -657764,9 +657752,9 @@ Choose the appropriate file based on scope:
|
|
|
657764
657752
|
|
|
657765
657753
|
| File | Scope | Git | Use For |
|
|
657766
657754
|
|------|-------|-----|---------|
|
|
657767
|
-
| \`~/.
|
|
657768
|
-
| \`.
|
|
657769
|
-
| \`.
|
|
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 |
|
|
657770
657758
|
|
|
657771
657759
|
Settings load in order: user → project → local (later overrides earlier).
|
|
657772
657760
|
|
|
@@ -657776,7 +657764,7 @@ Settings load in order: user → project → local (later overrides earlier).
|
|
|
657776
657764
|
\`\`\`json
|
|
657777
657765
|
{
|
|
657778
657766
|
"permissions": {
|
|
657779
|
-
"allow": ["Bash(npm:*)", "Edit(.
|
|
657767
|
+
"allow": ["Bash(npm:*)", "Edit(.codez)", "Read"],
|
|
657780
657768
|
"deny": ["Bash(rm -rf:*)"],
|
|
657781
657769
|
"ask": ["Write(/etc/*)"],
|
|
657782
657770
|
"defaultMode": "default" | "plan" | "acceptEdits" | "dontAsk",
|
|
@@ -657975,7 +657963,7 @@ Hooks can return JSON to control behavior:
|
|
|
657975
657963
|
"matcher": "Bash",
|
|
657976
657964
|
"hooks": [{
|
|
657977
657965
|
"type": "command",
|
|
657978
|
-
"command": "jq -r '.tool_input.command' >> ~/.
|
|
657966
|
+
"command": "jq -r '.tool_input.command' >> ~/.codez/bash-log.txt"
|
|
657979
657967
|
}]
|
|
657980
657968
|
}]
|
|
657981
657969
|
}
|
|
@@ -658023,7 +658011,7 @@ Given an event, matcher, target file, and desired behavior, follow this flow. Ea
|
|
|
658023
658011
|
|
|
658024
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).
|
|
658025
658013
|
|
|
658026
|
-
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.
|
|
658027
658015
|
|
|
658028
658016
|
5. **Validate syntax + schema in one shot:**
|
|
658029
658017
|
|
|
@@ -658037,7 +658025,7 @@ Given an event, matcher, target file, and desired behavior, follow this flow. Ea
|
|
|
658037
658025
|
|
|
658038
658026
|
**Always clean up** — revert the violation, strip the sentinel prefix — whether the proof passed or failed.
|
|
658039
658027
|
|
|
658040
|
-
**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.
|
|
658041
658029
|
|
|
658042
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.
|
|
658043
658031
|
`, UPDATE_CONFIG_PROMPT;
|
|
@@ -658110,7 +658098,7 @@ When adding to permission arrays or hook arrays, **merge with existing**, don't
|
|
|
658110
658098
|
"permissions": {
|
|
658111
658099
|
"allow": [
|
|
658112
658100
|
"Bash(git:*)", // existing
|
|
658113
|
-
"Edit(.
|
|
658101
|
+
"Edit(.codez)", // existing
|
|
658114
658102
|
"Bash(npm:*)" // new
|
|
658115
658103
|
]
|
|
658116
658104
|
}
|
|
@@ -658130,7 +658118,7 @@ ${HOOK_VERIFICATION_FLOW}
|
|
|
658130
658118
|
User: "Format my code after Claude writes it"
|
|
658131
658119
|
|
|
658132
658120
|
1. **Clarify**: Which formatter? (prettier, gofmt, etc.)
|
|
658133
|
-
2. **Read**: \`.
|
|
658121
|
+
2. **Read**: \`.codez/settings.json\` (or create if missing)
|
|
658134
658122
|
3. **Merge**: Add to existing hooks, don't replace
|
|
658135
658123
|
4. **Result**:
|
|
658136
658124
|
\`\`\`json
|
|
@@ -658176,7 +658164,7 @@ User: "Set DEBUG=true"
|
|
|
658176
658164
|
## Troubleshooting Hooks
|
|
658177
658165
|
|
|
658178
658166
|
If a hook isn't running:
|
|
658179
|
-
1. **Check the settings file** - Read ~/.
|
|
658167
|
+
1. **Check the settings file** - Read ~/.codez/settings.json or .codez/settings.json
|
|
658180
658168
|
2. **Verify JSON syntax** - Invalid JSON silently fails
|
|
658181
658169
|
3. **Check the matcher** - Does it match the tool name? (e.g., "Bash", "Write", "Edit")
|
|
658182
658170
|
4. **Check hook type** - Is it "command", "prompt", or "agent"?
|
|
@@ -659064,7 +659052,7 @@ function appendToLog(path24, message) {
|
|
|
659064
659052
|
cwd: getFsImplementation().cwd(),
|
|
659065
659053
|
userType: process.env.USER_TYPE,
|
|
659066
659054
|
sessionId: getSessionId(),
|
|
659067
|
-
version: "0.1.
|
|
659055
|
+
version: "0.1.15"
|
|
659068
659056
|
};
|
|
659069
659057
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
659070
659058
|
}
|
|
@@ -663049,8 +663037,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
663049
663037
|
}
|
|
663050
663038
|
async function checkEnvLessBridgeMinVersion() {
|
|
663051
663039
|
const cfg = await getEnvLessBridgeConfig();
|
|
663052
|
-
if (cfg.min_version && lt("0.1.
|
|
663053
|
-
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.
|
|
663054
663042
|
Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
|
|
663055
663043
|
}
|
|
663056
663044
|
return null;
|
|
@@ -663524,7 +663512,7 @@ async function initBridgeCore(params) {
|
|
|
663524
663512
|
const rawApi = createBridgeApiClient({
|
|
663525
663513
|
baseUrl,
|
|
663526
663514
|
getAccessToken,
|
|
663527
|
-
runnerVersion: "0.1.
|
|
663515
|
+
runnerVersion: "0.1.15",
|
|
663528
663516
|
onDebug: logForDebugging,
|
|
663529
663517
|
onAuth401,
|
|
663530
663518
|
getTrustedDeviceToken
|
|
@@ -668723,7 +668711,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
668723
668711
|
setCwd(cwd3);
|
|
668724
668712
|
const server = new Server({
|
|
668725
668713
|
name: "claude/tengu",
|
|
668726
|
-
version: "0.1.
|
|
668714
|
+
version: "0.1.15"
|
|
668727
668715
|
}, {
|
|
668728
668716
|
capabilities: {
|
|
668729
668717
|
tools: {}
|
|
@@ -670224,7 +670212,7 @@ __export(exports_update, {
|
|
|
670224
670212
|
});
|
|
670225
670213
|
async function update() {
|
|
670226
670214
|
logEvent("tengu_update_check", {});
|
|
670227
|
-
writeToStdout(`Current version: ${"0.1.
|
|
670215
|
+
writeToStdout(`Current version: ${"0.1.15"}
|
|
670228
670216
|
`);
|
|
670229
670217
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
670230
670218
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -670299,8 +670287,8 @@ async function update() {
|
|
|
670299
670287
|
writeToStdout(`Claude is managed by Homebrew.
|
|
670300
670288
|
`);
|
|
670301
670289
|
const latest = await getLatestVersion(channel);
|
|
670302
|
-
if (latest && !gte("0.1.
|
|
670303
|
-
writeToStdout(`Update available: ${"0.1.
|
|
670290
|
+
if (latest && !gte("0.1.15", latest)) {
|
|
670291
|
+
writeToStdout(`Update available: ${"0.1.15"} → ${latest}
|
|
670304
670292
|
`);
|
|
670305
670293
|
writeToStdout(`
|
|
670306
670294
|
`);
|
|
@@ -670316,8 +670304,8 @@ async function update() {
|
|
|
670316
670304
|
writeToStdout(`Claude is managed by winget.
|
|
670317
670305
|
`);
|
|
670318
670306
|
const latest = await getLatestVersion(channel);
|
|
670319
|
-
if (latest && !gte("0.1.
|
|
670320
|
-
writeToStdout(`Update available: ${"0.1.
|
|
670307
|
+
if (latest && !gte("0.1.15", latest)) {
|
|
670308
|
+
writeToStdout(`Update available: ${"0.1.15"} → ${latest}
|
|
670321
670309
|
`);
|
|
670322
670310
|
writeToStdout(`
|
|
670323
670311
|
`);
|
|
@@ -670333,8 +670321,8 @@ async function update() {
|
|
|
670333
670321
|
writeToStdout(`Claude is managed by apk.
|
|
670334
670322
|
`);
|
|
670335
670323
|
const latest = await getLatestVersion(channel);
|
|
670336
|
-
if (latest && !gte("0.1.
|
|
670337
|
-
writeToStdout(`Update available: ${"0.1.
|
|
670324
|
+
if (latest && !gte("0.1.15", latest)) {
|
|
670325
|
+
writeToStdout(`Update available: ${"0.1.15"} → ${latest}
|
|
670338
670326
|
`);
|
|
670339
670327
|
writeToStdout(`
|
|
670340
670328
|
`);
|
|
@@ -670399,11 +670387,11 @@ async function update() {
|
|
|
670399
670387
|
`);
|
|
670400
670388
|
await gracefulShutdown(1);
|
|
670401
670389
|
}
|
|
670402
|
-
if (result.latestVersion === "0.1.
|
|
670403
|
-
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"})`) + `
|
|
670404
670392
|
`);
|
|
670405
670393
|
} else {
|
|
670406
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.1.
|
|
670394
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.1.15"} to version ${result.latestVersion}`) + `
|
|
670407
670395
|
`);
|
|
670408
670396
|
await regenerateCompletionCache();
|
|
670409
670397
|
}
|
|
@@ -670463,12 +670451,12 @@ async function update() {
|
|
|
670463
670451
|
`);
|
|
670464
670452
|
await gracefulShutdown(1);
|
|
670465
670453
|
}
|
|
670466
|
-
if (latestVersion === "0.1.
|
|
670467
|
-
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"})`) + `
|
|
670468
670456
|
`);
|
|
670469
670457
|
await gracefulShutdown(0);
|
|
670470
670458
|
}
|
|
670471
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.1.
|
|
670459
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.1.15"})
|
|
670472
670460
|
`);
|
|
670473
670461
|
writeToStdout(`Installing update...
|
|
670474
670462
|
`);
|
|
@@ -670513,7 +670501,7 @@ async function update() {
|
|
|
670513
670501
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
670514
670502
|
switch (status2) {
|
|
670515
670503
|
case "success":
|
|
670516
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.1.
|
|
670504
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.1.15"} to version ${latestVersion}`) + `
|
|
670517
670505
|
`);
|
|
670518
670506
|
await regenerateCompletionCache();
|
|
670519
670507
|
break;
|
|
@@ -670523,7 +670511,7 @@ async function update() {
|
|
|
670523
670511
|
if (useLocalUpdate) {
|
|
670524
670512
|
process.stderr.write(`Try manually updating with:
|
|
670525
670513
|
`);
|
|
670526
|
-
process.stderr.write(` cd ~/.
|
|
670514
|
+
process.stderr.write(` cd ~/.codez/local && npm update ${"codez-cli"}
|
|
670527
670515
|
`);
|
|
670528
670516
|
} else {
|
|
670529
670517
|
process.stderr.write(`Try running with sudo or fix npm permissions
|
|
@@ -670539,7 +670527,7 @@ async function update() {
|
|
|
670539
670527
|
if (useLocalUpdate) {
|
|
670540
670528
|
process.stderr.write(`Try manually updating with:
|
|
670541
670529
|
`);
|
|
670542
|
-
process.stderr.write(` cd ~/.
|
|
670530
|
+
process.stderr.write(` cd ~/.codez/local && npm update ${"codez-cli"}
|
|
670543
670531
|
`);
|
|
670544
670532
|
} else {
|
|
670545
670533
|
process.stderr.write(`Or consider using native installation with: codez install
|
|
@@ -671757,7 +671745,7 @@ ${customInstructions}` : customInstructions;
|
|
|
671757
671745
|
}
|
|
671758
671746
|
}
|
|
671759
671747
|
logForDiagnosticsNoPII("info", "started", {
|
|
671760
|
-
version: "0.1.
|
|
671748
|
+
version: "0.1.15",
|
|
671761
671749
|
is_native_binary: isInBundledMode()
|
|
671762
671750
|
});
|
|
671763
671751
|
registerCleanup(async () => {
|
|
@@ -672541,7 +672529,7 @@ Usage: codez --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
672541
672529
|
pendingHookMessages
|
|
672542
672530
|
}, renderAndRun);
|
|
672543
672531
|
}
|
|
672544
|
-
}).version("0.1.
|
|
672532
|
+
}).version("0.1.15", "-v, --version", "Output the version number");
|
|
672545
672533
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
672546
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.");
|
|
672547
672535
|
if (canUserConfigureAdvisor()) {
|
|
@@ -672706,7 +672694,7 @@ Usage: codez --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
672706
672694
|
} = await Promise.resolve().then(() => (init_plugins(), exports_plugins));
|
|
672707
672695
|
await pluginInstallHandler2(plugin2, options);
|
|
672708
672696
|
});
|
|
672709
|
-
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) => {
|
|
672710
672698
|
const {
|
|
672711
672699
|
pluginUninstallHandler: pluginUninstallHandler2
|
|
672712
672700
|
} = await Promise.resolve().then(() => (init_plugins(), exports_plugins));
|
|
@@ -673054,7 +673042,7 @@ async function main2() {
|
|
|
673054
673042
|
const args = process.argv.slice(2);
|
|
673055
673043
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
673056
673044
|
const label = process.env.CLAUDE_CODE_USE_OPENAI === "1" ? "codez (OpenAI)" : "codez";
|
|
673057
|
-
console.log(`${"0.1.
|
|
673045
|
+
console.log(`${"0.1.15"} (${label})`);
|
|
673058
673046
|
return;
|
|
673059
673047
|
}
|
|
673060
673048
|
const {
|
|
@@ -673138,4 +673126,4 @@ async function main2() {
|
|
|
673138
673126
|
}
|
|
673139
673127
|
main2();
|
|
673140
673128
|
|
|
673141
|
-
//# debugId=
|
|
673129
|
+
//# debugId=4B6B21C0CDC0E81D64756E2164756E21
|