@askexenow/exe-os 0.9.146 → 0.9.148
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/deploy/compose/.env.customer.example +1 -1
- package/deploy/compose/.env.default +1 -1
- package/deploy/compose/.env.example +1 -1
- package/deploy/compose/README.md +1 -1
- package/deploy/compose/docker-compose.yml +16 -14
- package/dist/{backfill-metadata-5JOQOIN2.js → backfill-metadata-KMDWLDXU.js} +1 -1
- package/dist/bin/agentic-ontology-backfill.js +1 -1
- package/dist/bin/agentic-reflection-backfill.js +1 -1
- package/dist/bin/agentic-semantic-label.js +1 -1
- package/dist/bin/backfill-conversations.js +1 -1
- package/dist/bin/backfill-responses.js +1 -1
- package/dist/bin/backfill-vectors.js +1 -1
- package/dist/bin/bulk-sync-postgres.js +1 -1
- package/dist/bin/cleanup-stale-review-tasks.js +1 -1
- package/dist/bin/cli.js +5 -5
- package/dist/bin/customer-readiness.js +45 -7
- package/dist/bin/exe-agent.js +3 -3
- package/dist/bin/exe-assign.js +1 -1
- package/dist/bin/exe-boot.js +8 -6
- package/dist/bin/exe-call.js +3 -3
- package/dist/bin/exe-dispatch.js +1 -1
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +2 -2
- package/dist/bin/exe-forget.js +3 -3
- package/dist/bin/exe-gateway.js +1 -1
- package/dist/bin/exe-heartbeat.js +1 -1
- package/dist/bin/exe-kill.js +2 -2
- package/dist/bin/exe-launch-agent.js +5 -5
- package/dist/bin/exe-new-employee.js +3 -3
- package/dist/bin/exe-pending-messages.js +1 -1
- package/dist/bin/exe-pending-notifications.js +1 -1
- package/dist/bin/exe-pending-reviews.js +1 -1
- package/dist/bin/exe-rename.js +3 -3
- package/dist/bin/exe-review.js +2 -2
- package/dist/bin/exe-search.js +2 -2
- package/dist/bin/exe-session-cleanup.js +3 -3
- package/dist/bin/exe-start-codex.js +2 -2
- package/dist/bin/exe-start-opencode.js +1 -1
- package/dist/bin/exe-status.js +2 -2
- package/dist/bin/exe-team.js +1 -1
- package/dist/bin/git-sweep.js +1 -1
- package/dist/bin/graph-backfill.js +1 -1
- package/dist/bin/graph-export.js +2 -2
- package/dist/bin/intercom-check.js +1 -1
- package/dist/bin/pre-publish.js +1 -1
- package/dist/bin/scan-tasks.js +1 -1
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +1 -1
- package/dist/bin/stack-update.js +1 -1
- package/dist/{catchup-brief-7HTF254M.js → catchup-brief-IPNSW7RQ.js} +2 -2
- package/dist/{chunk-KJFCQUQP.js → chunk-3MLGUSKS.js} +1 -1
- package/dist/{chunk-4LUI7MMY.js → chunk-4EINMZNO.js} +1 -1
- package/dist/{chunk-AAZ3MQIA.js → chunk-AGFWOII2.js} +1 -1
- package/dist/{chunk-CAXNZ4KN.js → chunk-FNMNKYVH.js} +12 -12
- package/dist/{chunk-HJWNO7MX.js → chunk-JF3Q5YKI.js} +1 -1
- package/dist/{chunk-IYDFOUK4.js → chunk-MKUVEDUE.js} +1 -1
- package/dist/{chunk-7J6OKCQX.js → chunk-NJKERRSG.js} +1 -1
- package/dist/{chunk-CVUFSWGC.js → chunk-UPMKSFBU.js} +1 -1
- package/dist/{chunk-GKFSZKUD.js → chunk-XWQKCCCO.js} +1 -1
- package/dist/{chunk-PMUKZYTR.js → chunk-Y6TS42WD.js} +1 -1
- package/dist/{chunk-6CSCJTGT.js → chunk-ZMJHXDZR.js} +1 -1
- package/dist/{chunk-4XO2533K.js → chunk-ZUAXTH6Z.js} +1 -1
- package/dist/{exe-export-C7GZLJJ2.js → exe-export-ADSWDE5U.js} +3 -3
- package/dist/{exe-import-E3ZOLEAC.js → exe-import-WFLNGJZP.js} +3 -3
- package/dist/{fast-db-init-JI5U4KWG.js → fast-db-init-HVAVS35N.js} +1 -1
- package/dist/gateway/index.js +2 -2
- package/dist/{git-task-sweep-EVITTAZE.js → git-task-sweep-RSRASAHB.js} +1 -1
- package/dist/{global-procedures-YJLTJ7EZ.js → global-procedures-EKYSVONR.js} +2 -2
- package/dist/hooks/bug-report-worker.js +1 -1
- package/dist/hooks/codex-stop-task-finalizer.js +1 -1
- package/dist/hooks/commit-complete.js +2 -2
- package/dist/hooks/error-recall.js +2 -2
- package/dist/hooks/instructions-loaded.js +1 -1
- package/dist/hooks/notification.js +1 -1
- package/dist/hooks/post-compact.js +1 -1
- package/dist/hooks/post-tool-combined.js +1 -1
- package/dist/hooks/pre-compact.js +1 -1
- package/dist/hooks/pre-tool-use.js +3 -3
- package/dist/hooks/prompt-submit.js +4 -4
- package/dist/hooks/session-end.js +3 -3
- package/dist/hooks/session-start.js +2 -2
- package/dist/hooks/stop.js +3 -3
- package/dist/hooks/subagent-stop.js +1 -1
- package/dist/hooks/summary-worker.js +1 -1
- package/dist/index.js +3 -3
- package/dist/lib/consolidation.js +2 -2
- package/dist/lib/employee-templates.js +3 -3
- package/dist/lib/hybrid-search.js +2 -2
- package/dist/lib/schedules.js +2 -2
- package/dist/lib/store.js +1 -1
- package/dist/mcp/register-tools.js +12 -12
- package/dist/mcp/server.js +12 -12
- package/dist/runtime/index.js +1 -1
- package/dist/{setup-wizard-3GVBHKHG.js → setup-wizard-QVNTI3T4.js} +1 -1
- package/dist/tui/App.js +3 -3
- package/package.json +1 -1
- package/release-notes.json +173 -173
- /package/dist/{chunk-UU6YYTYH.js → chunk-7B5DQGXG.js} +0 -0
- /package/dist/{chunk-I7KGNSNR.js → chunk-B4HAUSVQ.js} +0 -0
- /package/dist/{chunk-IGRIWAV4.js → chunk-CGQ5PWS3.js} +0 -0
- /package/dist/{chunk-RMSDKMFD.js → chunk-HHMHL4FB.js} +0 -0
- /package/dist/{chunk-44XTE6NK.js → chunk-UJMDHPIN.js} +0 -0
- /package/dist/{core-memory-KF6T4PMU.js → core-memory-C3JLISAU.js} +0 -0
- /package/dist/{exe-key-4275KC6R.js → exe-key-4L32R46F.js} +0 -0
|
@@ -23,7 +23,7 @@ GATEWAY_IMAGE_TAG=ghcr.io/askexe/exe-gateway:v0.9.1
|
|
|
23
23
|
# ------------------------------------------------------------------
|
|
24
24
|
POSTGRES_USER=exe
|
|
25
25
|
POSTGRES_PASSWORD=CHANGEME_POSTGRES_PASSWORD
|
|
26
|
-
POSTGRES_DB=
|
|
26
|
+
POSTGRES_DB=exedb
|
|
27
27
|
WIKI_DB_NAME=wiki
|
|
28
28
|
|
|
29
29
|
# ------------------------------------------------------------------
|
package/deploy/compose/README.md
CHANGED
|
@@ -23,7 +23,7 @@ unchanged; this directory is the full stack.
|
|
|
23
23
|
|
|
24
24
|
| Service | Image | Pin source | Internal port |
|
|
25
25
|
|----------------|-----------------------------------------------|------------------------|---------------|
|
|
26
|
-
| `
|
|
26
|
+
| `exe-db` | `pgvector/pgvector:pg16` | hard-pinned | 5432 |
|
|
27
27
|
| `clickhouse` | `clickhouse/clickhouse-server:24.8.4.13-alpine` | hard-pinned | 8123 / 9000 |
|
|
28
28
|
| `redis` | `redis:7.4-alpine` | hard-pinned | 6379 |
|
|
29
29
|
| `exe-crm` | `${CRM_IMAGE_TAG}` | `.env` | 3000 |
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# exe-os VPS stack — full production compose
|
|
2
2
|
#
|
|
3
|
-
# Services: exe-
|
|
3
|
+
# Services: exe-db (postgres) + clickhouse + redis + exe-crm + exe-wiki + exe-os + exe-gateway
|
|
4
|
+
# ONE postgres (exe-db) — all services connect to it via DATABASE_URL.
|
|
4
5
|
# Standard for managed customer VPSs: exe-monitor-agent reports fleet health to monitor.askexe.com.
|
|
5
6
|
# All image tags pinned per-client via .env (no :latest). Healthchecks on every service.
|
|
6
7
|
# Named volumes for state; explicit subnets; depends_on with service_healthy gates.
|
|
@@ -18,12 +19,12 @@ name: exe-os
|
|
|
18
19
|
|
|
19
20
|
services:
|
|
20
21
|
# ------------------------------------------------------------------
|
|
21
|
-
# Data layer
|
|
22
|
+
# Data layer — ONE postgres (exe-db) for all services
|
|
22
23
|
# ------------------------------------------------------------------
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
image:
|
|
26
|
-
container_name:
|
|
25
|
+
exe-db:
|
|
26
|
+
image: ${EXE_DB_IMAGE:-pgvector/pgvector:pg16}
|
|
27
|
+
container_name: exe-db
|
|
27
28
|
restart: unless-stopped
|
|
28
29
|
env_file:
|
|
29
30
|
- path: .env
|
|
@@ -31,7 +32,7 @@ services:
|
|
|
31
32
|
environment:
|
|
32
33
|
POSTGRES_USER: ${POSTGRES_USER:-exe}
|
|
33
34
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
|
|
34
|
-
POSTGRES_DB: ${POSTGRES_DB:-
|
|
35
|
+
POSTGRES_DB: ${POSTGRES_DB:-exedb}
|
|
35
36
|
PGDATA: /var/lib/postgresql/data/pgdata
|
|
36
37
|
volumes:
|
|
37
38
|
- postgres_data:/var/lib/postgresql/data
|
|
@@ -39,7 +40,7 @@ services:
|
|
|
39
40
|
backend:
|
|
40
41
|
ipv4_address: 10.42.0.10
|
|
41
42
|
healthcheck:
|
|
42
|
-
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-exe} -d ${POSTGRES_DB:-
|
|
43
|
+
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-exe} -d ${POSTGRES_DB:-exedb}"]
|
|
43
44
|
interval: 10s
|
|
44
45
|
timeout: 5s
|
|
45
46
|
start_period: 30s
|
|
@@ -112,7 +113,7 @@ services:
|
|
|
112
113
|
container_name: exe-crm
|
|
113
114
|
restart: unless-stopped
|
|
114
115
|
depends_on:
|
|
115
|
-
|
|
116
|
+
exe-db:
|
|
116
117
|
condition: service_healthy
|
|
117
118
|
clickhouse:
|
|
118
119
|
condition: service_healthy
|
|
@@ -127,7 +128,7 @@ services:
|
|
|
127
128
|
EXE_LICENSE_KEY: ${EXE_LICENSE_KEY:?EXE_LICENSE_KEY is required — purchase at https://askexe.com}
|
|
128
129
|
SERVER_URL: ${CRM_SERVER_URL:-https://crm.askexe.com}
|
|
129
130
|
APP_SECRET: ${CRM_APP_SECRET:?CRM_APP_SECRET is required}
|
|
130
|
-
PG_DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@
|
|
131
|
+
PG_DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}
|
|
131
132
|
REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379
|
|
132
133
|
CLICKHOUSE_URL: http://${CLICKHOUSE_USER:-exe}:${CLICKHOUSE_PASSWORD:?CLICKHOUSE_PASSWORD is required}@clickhouse:8123/${CLICKHOUSE_DB:-default}
|
|
133
134
|
STORAGE_TYPE: local
|
|
@@ -159,7 +160,7 @@ services:
|
|
|
159
160
|
restart: unless-stopped
|
|
160
161
|
command: ["yarn", "worker:prod"]
|
|
161
162
|
depends_on:
|
|
162
|
-
|
|
163
|
+
exe-db:
|
|
163
164
|
condition: service_healthy
|
|
164
165
|
clickhouse:
|
|
165
166
|
condition: service_healthy
|
|
@@ -175,7 +176,7 @@ services:
|
|
|
175
176
|
EXE_LICENSE_KEY: ${EXE_LICENSE_KEY:?EXE_LICENSE_KEY is required — purchase at https://askexe.com}
|
|
176
177
|
SERVER_URL: ${CRM_SERVER_URL:-https://crm.askexe.com}
|
|
177
178
|
APP_SECRET: ${CRM_APP_SECRET:?CRM_APP_SECRET is required}
|
|
178
|
-
PG_DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@
|
|
179
|
+
PG_DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}
|
|
179
180
|
REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379
|
|
180
181
|
CLICKHOUSE_URL: http://${CLICKHOUSE_USER:-exe}:${CLICKHOUSE_PASSWORD:?CLICKHOUSE_PASSWORD is required}@clickhouse:8123/${CLICKHOUSE_DB:-default}
|
|
181
182
|
STORAGE_TYPE: local
|
|
@@ -198,7 +199,7 @@ services:
|
|
|
198
199
|
container_name: exe-wiki
|
|
199
200
|
restart: unless-stopped
|
|
200
201
|
depends_on:
|
|
201
|
-
|
|
202
|
+
exe-db:
|
|
202
203
|
condition: service_healthy
|
|
203
204
|
env_file:
|
|
204
205
|
- path: .env
|
|
@@ -208,7 +209,7 @@ services:
|
|
|
208
209
|
SERVER_PORT: "3001"
|
|
209
210
|
EXE_LICENSE_KEY: ${EXE_LICENSE_KEY:?EXE_LICENSE_KEY is required — purchase at https://askexe.com}
|
|
210
211
|
STORAGE_DIR: /app/server/storage
|
|
211
|
-
DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@
|
|
212
|
+
DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}?schema=${WIKI_DB_SCHEMA:-wiki}
|
|
212
213
|
AUTH_TOKEN: ${WIKI_AUTH_TOKEN:?WIKI_AUTH_TOKEN is required}
|
|
213
214
|
JWT_SECRET: ${WIKI_JWT_SECRET:?WIKI_JWT_SECRET is required}
|
|
214
215
|
SIG_KEY: ${WIKI_SIG_KEY:?WIKI_SIG_KEY is required}
|
|
@@ -249,7 +250,7 @@ services:
|
|
|
249
250
|
EXED_MCP_TOKEN: ${EXED_MCP_TOKEN:?EXED_MCP_TOKEN is required}
|
|
250
251
|
EXED_DEVICE_ID: ${EXED_DEVICE_ID:-vps-default}
|
|
251
252
|
EXE_LICENSE_KEY: ${EXE_LICENSE_KEY:?EXE_LICENSE_KEY is required — purchase at https://askexe.com}
|
|
252
|
-
DATABASE_URL: ${EXED_DATABASE_URL:-postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@
|
|
253
|
+
DATABASE_URL: ${EXED_DATABASE_URL:-postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}}
|
|
253
254
|
EXE_CLOUD_SYNC_TO_POSTGRES: ${EXE_CLOUD_SYNC_TO_POSTGRES:-true}
|
|
254
255
|
EXE_RSS_WARN_MB: ${EXE_RSS_WARN_MB:-6144}
|
|
255
256
|
EXE_RSS_RESTART_MB: ${EXE_RSS_RESTART_MB:-8192}
|
|
@@ -285,6 +286,7 @@ services:
|
|
|
285
286
|
NODE_ENV: production
|
|
286
287
|
EXE_GATEWAY_HOME: /data
|
|
287
288
|
EXE_GATEWAY_CONFIG: /data/gateway.json
|
|
289
|
+
DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}
|
|
288
290
|
EXE_GATEWAY_PORT: "3100"
|
|
289
291
|
EXE_GATEWAY_HOST: "127.0.0.1"
|
|
290
292
|
EXE_GATEWAY_AUTH_TOKEN: ${EXE_GATEWAY_AUTH_TOKEN:?EXE_GATEWAY_AUTH_TOKEN is required}
|
package/dist/bin/cli.js
CHANGED
|
@@ -107,7 +107,7 @@ if (args.includes("--global")) {
|
|
|
107
107
|
process.exit(1);
|
|
108
108
|
}
|
|
109
109
|
} else if (args[0] === "key") {
|
|
110
|
-
const { main: runKey } = await import("../exe-key-
|
|
110
|
+
const { main: runKey } = await import("../exe-key-4L32R46F.js");
|
|
111
111
|
await runKey(args.slice(1));
|
|
112
112
|
} else if (args[0] === "link") {
|
|
113
113
|
console.error("`exe-os link` has been removed from the customer command surface.");
|
|
@@ -147,7 +147,7 @@ if (args.includes("--global")) {
|
|
|
147
147
|
process.exit(1);
|
|
148
148
|
}
|
|
149
149
|
} else if (args[0] === "backfill-metadata") {
|
|
150
|
-
const { backfillMetadata } = await import("../backfill-metadata-
|
|
150
|
+
const { backfillMetadata } = await import("../backfill-metadata-KMDWLDXU.js");
|
|
151
151
|
let batchSize = 50;
|
|
152
152
|
let limit = 0;
|
|
153
153
|
let dryRun = false;
|
|
@@ -178,10 +178,10 @@ if (args.includes("--global")) {
|
|
|
178
178
|
process.exit(1);
|
|
179
179
|
}
|
|
180
180
|
} else if (args[0] === "export") {
|
|
181
|
-
const { runExeExport } = await import("../exe-export-
|
|
181
|
+
const { runExeExport } = await import("../exe-export-ADSWDE5U.js");
|
|
182
182
|
await runExeExport(args.slice(1));
|
|
183
183
|
} else if (args[0] === "import") {
|
|
184
|
-
const { runExeImport } = await import("../exe-import-
|
|
184
|
+
const { runExeImport } = await import("../exe-import-WFLNGJZP.js");
|
|
185
185
|
await runExeImport(args.slice(1));
|
|
186
186
|
} else if (args[0] === "send-message" || args[0] === "send_message") {
|
|
187
187
|
const target = args[1];
|
|
@@ -293,7 +293,7 @@ ID: ${result.id}`);
|
|
|
293
293
|
process.exit(1);
|
|
294
294
|
}
|
|
295
295
|
} else if (args[0] === "setup" || args[0] === "-setup" || args[0] === "--setup") {
|
|
296
|
-
const { runSetupWizard } = await import("../setup-wizard-
|
|
296
|
+
const { runSetupWizard } = await import("../setup-wizard-QVNTI3T4.js");
|
|
297
297
|
await runSetupWizard({ skipModel: args.includes("--skip-model") });
|
|
298
298
|
} else if (args[0] === "update") {
|
|
299
299
|
const { runUpdate } = await import("./update.js");
|
|
@@ -70,13 +70,51 @@ test("Session scoping \u2014 all task query files import scope helper", () => {
|
|
|
70
70
|
if (unscoped.length > 0) return `${unscoped.length} files missing scope: ${unscoped.slice(0, 3).join(", ")}`;
|
|
71
71
|
return true;
|
|
72
72
|
});
|
|
73
|
-
test("No
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
test("No unscoped task queries \u2014 all task queries have session scope or PK guard", () => {
|
|
74
|
+
let rawOutput;
|
|
75
|
+
try {
|
|
76
|
+
rawOutput = execSync(
|
|
77
|
+
`grep -rn -B5 -A5 "FROM.*tasks\\|UPDATE.*tasks" src/ --include="*.ts" | grep -v tasks-crud.ts | grep -v "__tests__" | grep -v ".test." | grep -v "customer-readiness" | grep -v "task-scope.ts"`,
|
|
78
|
+
{ encoding: "utf8", cwd: ROOT }
|
|
79
|
+
).trim();
|
|
80
|
+
} catch {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (!rawOutput) return true;
|
|
84
|
+
const blocks = rawOutput.split(/^--$/m);
|
|
85
|
+
const unscoped = [];
|
|
86
|
+
for (const block of blocks) {
|
|
87
|
+
const blockLower = block.toLowerCase();
|
|
88
|
+
const hasScope = blockLower.includes("scope.sql") || blockLower.includes("sessionscopefilter") || blockLower.includes("strictsessionscopefilter") || blockLower.includes("session_scope") || blockLower.includes("intentionally unscoped") || blockLower.includes("audited 2026") || blockLower.includes("querytaskrows");
|
|
89
|
+
const isSafe = hasScope || /where\s+id\s*=\s*\?/.test(blockLower) || // PK lookup by full UUID
|
|
90
|
+
/where\s+task_file\s*=\s*\?/.test(blockLower) || // task_file exact match
|
|
91
|
+
/select\s+count\s*\(\s*\*\s*\)/.test(blockLower) || // COUNT(*) stats
|
|
92
|
+
/assigned_to\s*=\s*\?.*where\s+id/.test(blockLower) || // UPDATE by PK
|
|
93
|
+
/parent_task_id\s*=\s*\?/.test(blockLower) || // Cascade by parent PK
|
|
94
|
+
/blocked_by\s*=\s*\w+\.id/.test(blockLower) || // JOIN on PK (auto-unblock)
|
|
95
|
+
/project_name\s*=\s*'/.test(blockLower) || // Migration: hardcoded project rename
|
|
96
|
+
/device_id\s*is\s*null/.test(blockLower) || // Migration: backfill device_id
|
|
97
|
+
/status\s*=\s*'completed'/.test(blockLower) || // Migration: status rename
|
|
98
|
+
/status\s*=\s*'done'.*result\s*is\s*not\s*null/.test(blockLower) || // Migration: bulk close
|
|
99
|
+
blockLower.includes("conditions.join") || // Dynamic WHERE builder (git-task-sweep)
|
|
100
|
+
blockLower.includes("exe-rename") || // Rename is intentionally global
|
|
101
|
+
blockLower.includes("cleanup-stale") || // One-time legacy cleanup script
|
|
102
|
+
blockLower.includes("title like") || // Cascade cleanup by title pattern
|
|
103
|
+
blockLower.includes("assigned_to is null");
|
|
104
|
+
if (!isSafe) {
|
|
105
|
+
const queryLine = block.split("\n").find(
|
|
106
|
+
(l) => /FROM.*tasks|UPDATE.*tasks/i.test(l) && !l.trim().startsWith("//") && !l.trim().startsWith("*")
|
|
107
|
+
);
|
|
108
|
+
if (queryLine) {
|
|
109
|
+
const match = queryLine.match(/^([^:]+):(\d+)/);
|
|
110
|
+
if (match) unscoped.push(`${match[1]}:${match[2]}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const unique = [...new Set(unscoped)];
|
|
115
|
+
if (unique.length > 0) {
|
|
116
|
+
return `${unique.length} unscoped task quer${unique.length === 1 ? "y" : "ies"}: ${unique.slice(0, 5).join(", ")}${unique.length > 5 ? ` (+${unique.length - 5} more)` : ""}`;
|
|
117
|
+
}
|
|
80
118
|
return true;
|
|
81
119
|
});
|
|
82
120
|
test("Platform procedures \u2014 shipped as code (not DB only)", () => {
|
package/dist/bin/exe-agent.js
CHANGED
|
@@ -19,9 +19,9 @@ import {
|
|
|
19
19
|
} from "../chunk-TMEE7AT7.js";
|
|
20
20
|
import {
|
|
21
21
|
getSessionPrompt
|
|
22
|
-
} from "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
22
|
+
} from "../chunk-3MLGUSKS.js";
|
|
23
|
+
import "../chunk-UPMKSFBU.js";
|
|
24
|
+
import "../chunk-XWQKCCCO.js";
|
|
25
25
|
import {
|
|
26
26
|
createTerminalRenderer,
|
|
27
27
|
renderAgentEvents
|
package/dist/bin/exe-assign.js
CHANGED
package/dist/bin/exe-boot.js
CHANGED
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_EXE,
|
|
7
7
|
getSessionPrompt
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-3MLGUSKS.js";
|
|
9
|
+
import "../chunk-UPMKSFBU.js";
|
|
10
|
+
import "../chunk-XWQKCCCO.js";
|
|
11
11
|
import {
|
|
12
12
|
cleanupSessionMarkers,
|
|
13
13
|
writeActiveAgent
|
|
14
14
|
} from "../chunk-NFHFNPTN.js";
|
|
15
15
|
import {
|
|
16
16
|
initStore
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-Y6TS42WD.js";
|
|
18
18
|
import "../chunk-524VLFFY.js";
|
|
19
19
|
import {
|
|
20
20
|
cleanupOldNotifications,
|
|
@@ -221,13 +221,15 @@ async function boot(options) {
|
|
|
221
221
|
process.stderr.write("[exe-boot] task reconciliation: " + (e instanceof Error ? e.message : String(e)) + "\n");
|
|
222
222
|
}
|
|
223
223
|
try {
|
|
224
|
+
const staleRevScope = sessionScopeFilter();
|
|
224
225
|
await client.execute({
|
|
225
226
|
sql: `UPDATE tasks SET status = 'done', updated_at = ?
|
|
226
227
|
WHERE (assigned_to = ? OR assigned_to = ?)
|
|
227
228
|
AND status = 'in_progress'
|
|
228
229
|
AND task_file LIKE '%review-%'
|
|
229
|
-
AND updated_at < datetime('now', '-1 hour')
|
|
230
|
-
|
|
230
|
+
AND updated_at < datetime('now', '-1 hour')
|
|
231
|
+
${staleRevScope.sql}`,
|
|
232
|
+
args: [(/* @__PURE__ */ new Date()).toISOString(), coordinatorName, DEFAULT_COORDINATOR_TEMPLATE_NAME, ...staleRevScope.args]
|
|
231
233
|
});
|
|
232
234
|
} catch {
|
|
233
235
|
}
|
package/dist/bin/exe-call.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getSessionPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-3MLGUSKS.js";
|
|
5
|
+
import "../chunk-UPMKSFBU.js";
|
|
6
|
+
import "../chunk-XWQKCCCO.js";
|
|
7
7
|
import {
|
|
8
8
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
9
9
|
getCoordinatorName,
|
package/dist/bin/exe-dispatch.js
CHANGED
package/dist/bin/exe-doctor.js
CHANGED
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
import "../chunk-ARGBV4PP.js";
|
|
6
6
|
import {
|
|
7
7
|
fastDbInit
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-7B5DQGXG.js";
|
|
9
9
|
import {
|
|
10
10
|
disposeStore
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-Y6TS42WD.js";
|
|
12
12
|
import "../chunk-524VLFFY.js";
|
|
13
13
|
import "../chunk-MP2AFCGL.js";
|
|
14
14
|
import "../chunk-TH6HTK2L.js";
|
package/dist/bin/exe-forget.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
fastDbInit
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7B5DQGXG.js";
|
|
5
5
|
import {
|
|
6
6
|
lightweightSearch
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-AGFWOII2.js";
|
|
8
|
+
import "../chunk-Y6TS42WD.js";
|
|
9
9
|
import "../chunk-524VLFFY.js";
|
|
10
10
|
import "../chunk-MP2AFCGL.js";
|
|
11
11
|
import {
|
package/dist/bin/exe-gateway.js
CHANGED
package/dist/bin/exe-kill.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
} from "../chunk-PMWDO5FR.js";
|
|
5
5
|
import {
|
|
6
6
|
fastDbInit
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-7B5DQGXG.js";
|
|
8
8
|
import {
|
|
9
9
|
disposeStore,
|
|
10
10
|
flushBatch
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-Y6TS42WD.js";
|
|
12
12
|
import "../chunk-524VLFFY.js";
|
|
13
13
|
import {
|
|
14
14
|
listSessions
|
|
@@ -5,15 +5,15 @@ import {
|
|
|
5
5
|
import "../chunk-ARGBV4PP.js";
|
|
6
6
|
import {
|
|
7
7
|
getSessionPrompt
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-3MLGUSKS.js";
|
|
9
|
+
import "../chunk-UPMKSFBU.js";
|
|
10
|
+
import "../chunk-XWQKCCCO.js";
|
|
11
11
|
import {
|
|
12
12
|
fastDbInit
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-7B5DQGXG.js";
|
|
14
14
|
import {
|
|
15
15
|
disposeStore
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-Y6TS42WD.js";
|
|
17
17
|
import "../chunk-524VLFFY.js";
|
|
18
18
|
import {
|
|
19
19
|
DEFAULT_PROVIDER,
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
buildCustomEmployeePrompt,
|
|
5
5
|
getTemplate,
|
|
6
6
|
personalizePrompt
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-3MLGUSKS.js";
|
|
8
|
+
import "../chunk-UPMKSFBU.js";
|
|
9
|
+
import "../chunk-XWQKCCCO.js";
|
|
10
10
|
import {
|
|
11
11
|
PlanLimitError,
|
|
12
12
|
assertEmployeeLimit
|
package/dist/bin/exe-rename.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
personalizePrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-3MLGUSKS.js";
|
|
5
|
+
import "../chunk-UPMKSFBU.js";
|
|
6
|
+
import "../chunk-XWQKCCCO.js";
|
|
7
7
|
import {
|
|
8
8
|
loadEmployees,
|
|
9
9
|
registerBinSymlinks,
|
package/dist/bin/exe-review.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
fastDbInit
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7B5DQGXG.js";
|
|
5
5
|
import {
|
|
6
6
|
flushBatch,
|
|
7
7
|
writeMemory
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-Y6TS42WD.js";
|
|
9
9
|
import "../chunk-524VLFFY.js";
|
|
10
10
|
import {
|
|
11
11
|
getCurrentSessionScope,
|
package/dist/bin/exe-search.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
hybridSearch,
|
|
4
4
|
lightweightSearch
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-AGFWOII2.js";
|
|
6
6
|
import {
|
|
7
7
|
initStore
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-Y6TS42WD.js";
|
|
9
9
|
import "../chunk-524VLFFY.js";
|
|
10
10
|
import "../chunk-MP2AFCGL.js";
|
|
11
11
|
import "../chunk-TH6HTK2L.js";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
flushBatch,
|
|
4
4
|
initStore,
|
|
5
5
|
writeMemory
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-Y6TS42WD.js";
|
|
7
7
|
import "../chunk-524VLFFY.js";
|
|
8
8
|
import {
|
|
9
9
|
sessionScopeFilter,
|
|
@@ -174,7 +174,7 @@ try {
|
|
|
174
174
|
if (result.rows.length === 0) process.exit(0);
|
|
175
175
|
let commits = [];
|
|
176
176
|
try {
|
|
177
|
-
const { getRecentCommits } = await import("../git-task-sweep-
|
|
177
|
+
const { getRecentCommits } = await import("../git-task-sweep-RSRASAHB.js");
|
|
178
178
|
commits = getRecentCommits(30);
|
|
179
179
|
} catch {
|
|
180
180
|
}
|
|
@@ -187,7 +187,7 @@ try {
|
|
|
187
187
|
const context = row.context ? String(row.context) : void 0;
|
|
188
188
|
if (commits.length > 0) {
|
|
189
189
|
try {
|
|
190
|
-
const { findBestMatch } = await import("../git-task-sweep-
|
|
190
|
+
const { findBestMatch } = await import("../git-task-sweep-RSRASAHB.js");
|
|
191
191
|
const match = findBestMatch({ id: taskId, title, context }, commits);
|
|
192
192
|
if (match) {
|
|
193
193
|
try {
|