@askexenow/exe-os 0.9.175 → 0.9.177

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.
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-R4IK2YT3.js";
7
7
  import {
8
8
  AUTO_WAKE_MAX_RETRIES
9
- } from "./chunk-VCCIWTWG.js";
9
+ } from "./chunk-PMTE7LF2.js";
10
10
  import {
11
11
  getToolCapabilityIndex
12
12
  } from "./chunk-6BZF3TEG.js";
@@ -57,7 +57,7 @@ async function hasOpenTasks(client, agentId, sessionScope) {
57
57
  const scope = sessionScopeFilter(sessionScope);
58
58
  const result = await client.execute({
59
59
  sql: `SELECT 1 FROM tasks
60
- WHERE assigned_to = ? AND status IN ('open', 'in_progress')${scope.sql}
60
+ WHERE assigned_to = ? AND status IN ('open', 'in_progress', 'blocked')${scope.sql}
61
61
  LIMIT 1`,
62
62
  args: [agentId, ...scope.args]
63
63
  });
@@ -48,7 +48,7 @@ import {
48
48
  shouldKillIdleSession,
49
49
  shouldKillSession,
50
50
  shouldNudgeEmployee
51
- } from "./chunk-VCCIWTWG.js";
51
+ } from "./chunk-PMTE7LF2.js";
52
52
  import "./chunk-L4VM6PZ7.js";
53
53
  import "./chunk-KM2DOJN5.js";
54
54
  import "./chunk-GA3BI2FI.js";
@@ -162,6 +162,17 @@ If MCP is down, tell the user: "MCP disconnected. Run /mcp to reconnect."`
162
162
  }
163
163
  if (data.tool_name === "Bash") {
164
164
  const command = data.tool_input?.command ?? "";
165
+ const cwd = process.cwd();
166
+ if (cwd.includes(".worktrees/")) {
167
+ const checkoutMainMatch = command.match(/\bgit\s+checkout\s+(?:--\s+)?(?:main|master)\b/);
168
+ if (checkoutMainMatch) {
169
+ const output = JSON.stringify({
170
+ systemMessage: `ACTION BLOCKED: You are in a worktree but tried to 'git checkout main'. This escapes your worktree isolation. Stay on your feature branch. If you need to see main's state, use 'git diff main' or 'git log main' instead.`
171
+ });
172
+ process.stdout.write(output);
173
+ process.exit(0);
174
+ }
175
+ }
165
176
  const cdMatch = command.match(/\bcd\s+(?:~\/|\/Users\/\w+\/)([\w-]+)/);
166
177
  if (cdMatch) {
167
178
  const targetDir = cdMatch[1];
@@ -2187,7 +2187,7 @@ function startSessionTTL() {
2187
2187
  if (!await ensureStoreForPolling()) return;
2188
2188
  try {
2189
2189
  const { getClient } = await import("./database.js");
2190
- const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-NA3SW3FP.js");
2190
+ const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-MIRY7676.js");
2191
2191
  const deps = createSessionTTLRealDeps(getClient);
2192
2192
  const killed = await checkSessionTTL(deps);
2193
2193
  if (killed.length > 0) acted("session_ttl");
@@ -2236,7 +2236,7 @@ function startIdleKill() {
2236
2236
  const cfg = await getCachedConfig();
2237
2237
  if (!cfg) return;
2238
2238
  const { getClient } = await import("./database.js");
2239
- const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-NA3SW3FP.js");
2239
+ const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-MIRY7676.js");
2240
2240
  const deps = createIdleKillRealDeps(
2241
2241
  getClient,
2242
2242
  cfg.sessionLifecycle.idleKillIntercomAckWindowMs
@@ -2793,7 +2793,7 @@ function startOrphanReaper() {
2793
2793
  const tick = async () => {
2794
2794
  fired("orphan_reaper");
2795
2795
  try {
2796
- const { reapOrphanedMcpProcesses, createOrphanReaperRealDeps } = await import("../daemon-orchestration-NA3SW3FP.js");
2796
+ const { reapOrphanedMcpProcesses, createOrphanReaperRealDeps } = await import("../daemon-orchestration-MIRY7676.js");
2797
2797
  const deps = createOrphanReaperRealDeps();
2798
2798
  const reaped = await reapOrphanedMcpProcesses(deps);
2799
2799
  if (reaped.length > 0) acted("orphan_reaper");
@@ -2817,7 +2817,7 @@ function startZombieAgentReaper() {
2817
2817
  const tick = async () => {
2818
2818
  fired("zombie_agent_reaper");
2819
2819
  try {
2820
- const { reapZombieAgentProcesses, createZombieAgentReaperRealDeps } = await import("../daemon-orchestration-NA3SW3FP.js");
2820
+ const { reapZombieAgentProcesses, createZombieAgentReaperRealDeps } = await import("../daemon-orchestration-MIRY7676.js");
2821
2821
  const deps = createZombieAgentReaperRealDeps();
2822
2822
  const reaped = reapZombieAgentProcesses(deps);
2823
2823
  if (reaped.length > 0) acted("zombie_agent_reaper");
@@ -2840,7 +2840,7 @@ function startWorktreeReaper() {
2840
2840
  const tick = async () => {
2841
2841
  fired("worktree_reaper");
2842
2842
  try {
2843
- const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-NA3SW3FP.js");
2843
+ const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-MIRY7676.js");
2844
2844
  const deps = await createWorktreeReaperRealDeps();
2845
2845
  const result = await reapOrphanedWorktrees(deps);
2846
2846
  if (result.pruned.length > 0) {
@@ -2889,7 +2889,7 @@ function startStuckTaskRelease() {
2889
2889
  if (!await ensureStoreForPolling()) return;
2890
2890
  try {
2891
2891
  const { getClient } = await import("./database.js");
2892
- const { releaseStuckTasks, createStuckTaskRealDeps } = await import("../daemon-orchestration-NA3SW3FP.js");
2892
+ const { releaseStuckTasks, createStuckTaskRealDeps } = await import("../daemon-orchestration-MIRY7676.js");
2893
2893
  const deps = createStuckTaskRealDeps(getClient);
2894
2894
  const released = await releaseStuckTasks(deps);
2895
2895
  if (released.length > 0) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  registerAllTools
3
- } from "../chunk-UUJOPO6M.js";
3
+ } from "../chunk-IDAMUZYR.js";
4
4
  import "../chunk-PLNYW6PA.js";
5
5
  import "../chunk-R4IK2YT3.js";
6
- import "../chunk-VCCIWTWG.js";
6
+ import "../chunk-PMTE7LF2.js";
7
7
  import "../chunk-6BZF3TEG.js";
8
8
  import "../chunk-WZTQUBIE.js";
9
9
  import "../chunk-XOVQ43JR.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-V4TZI6EO.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "../chunk-UUJOPO6M.js";
6
+ } from "../chunk-IDAMUZYR.js";
7
7
  import {
8
8
  initLicenseGate
9
9
  } from "../chunk-PLNYW6PA.js";
@@ -11,7 +11,7 @@ import {
11
11
  startToolTelemetryFlush,
12
12
  wrapServerWithTelemetry
13
13
  } from "../chunk-R4IK2YT3.js";
14
- import "../chunk-VCCIWTWG.js";
14
+ import "../chunk-PMTE7LF2.js";
15
15
  import "../chunk-6BZF3TEG.js";
16
16
  import "../chunk-WZTQUBIE.js";
17
17
  import "../chunk-XOVQ43JR.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.175",
3
+ "version": "0.9.177",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",