@askexenow/exe-os 0.9.14 → 0.9.16
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/bin/cleanup-stale-review-tasks.js +10 -0
- package/dist/bin/cli.js +35 -6
- package/dist/bin/exe-agent-config.js +4 -2
- package/dist/bin/exe-assign.js +12 -0
- package/dist/bin/exe-boot.js +18 -4
- package/dist/bin/exe-call.js +4 -2
- package/dist/bin/exe-dispatch.js +18 -4
- package/dist/bin/exe-forget.js +16 -0
- package/dist/bin/exe-gateway.js +35 -6
- package/dist/bin/exe-heartbeat.js +10 -0
- package/dist/bin/exe-launch-agent.js +4 -2
- package/dist/bin/exe-new-employee.js +4 -2
- package/dist/bin/exe-pending-messages.js +10 -0
- package/dist/bin/exe-pending-notifications.js +10 -0
- package/dist/bin/exe-pending-reviews.js +10 -0
- package/dist/bin/exe-search.js +74 -1
- package/dist/bin/exe-session-cleanup.js +31 -4
- package/dist/bin/exe-settings.js +4 -2
- package/dist/bin/exe-start-codex.js +4 -0
- package/dist/bin/exe-status.js +10 -0
- package/dist/bin/git-sweep.js +31 -4
- package/dist/bin/install.js +4 -2
- package/dist/bin/scan-tasks.js +31 -4
- package/dist/bin/setup.js +4 -2
- package/dist/gateway/index.js +35 -6
- package/dist/hooks/bug-report-worker.js +22 -6
- package/dist/hooks/codex-stop-task-finalizer.js +21 -11
- package/dist/hooks/commit-complete.js +31 -4
- package/dist/hooks/error-recall.js +74 -1
- package/dist/hooks/ingest-worker.js +18 -4
- package/dist/hooks/ingest.js +17 -2
- package/dist/hooks/instructions-loaded.js +13 -0
- package/dist/hooks/notification.js +13 -0
- package/dist/hooks/post-compact.js +23 -0
- package/dist/hooks/pre-compact.js +31 -4
- package/dist/hooks/pre-tool-use.js +27 -2
- package/dist/hooks/prompt-submit.js +96 -7
- package/dist/hooks/session-end.js +31 -4
- package/dist/hooks/session-start.js +88 -3
- package/dist/hooks/stop.js +23 -0
- package/dist/hooks/subagent-stop.js +23 -0
- package/dist/hooks/summary-worker.js +10 -0
- package/dist/index.js +35 -6
- package/dist/lib/agent-config.js +4 -2
- package/dist/lib/employees.js +4 -2
- package/dist/lib/exe-daemon.js +139 -38
- package/dist/lib/hybrid-search.js +74 -1
- package/dist/lib/messaging.js +15 -5
- package/dist/lib/store.js +13 -0
- package/dist/lib/tasks.js +18 -4
- package/dist/lib/tmux-routing.js +18 -4
- package/dist/lib/tmux-transport.js +10 -0
- package/dist/lib/transport.js +10 -0
- package/dist/mcp/server.js +107 -18
- package/dist/mcp/tools/create-task.js +22 -6
- package/dist/mcp/tools/list-tasks.js +10 -0
- package/dist/mcp/tools/send-message.js +17 -7
- package/dist/mcp/tools/update-task.js +18 -4
- package/dist/runtime/index.js +31 -4
- package/dist/tui/App.js +35 -6
- package/package.json +1 -1
|
@@ -2652,6 +2652,16 @@ var init_tmux_transport = __esm({
|
|
|
2652
2652
|
sendKeys(target, keys) {
|
|
2653
2653
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
2654
2654
|
}
|
|
2655
|
+
/**
|
|
2656
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
2657
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
2658
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
2659
|
+
* the submit keystroke arrives.
|
|
2660
|
+
*/
|
|
2661
|
+
sendKeysLiteral(target, text) {
|
|
2662
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
2663
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
2664
|
+
}
|
|
2655
2665
|
capturePane(target, lines) {
|
|
2656
2666
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
2657
2667
|
if (lines) args.push("-S", `-${lines}`);
|
package/dist/bin/cli.js
CHANGED
|
@@ -368,7 +368,7 @@ function getAgentRuntime(agentId) {
|
|
|
368
368
|
if (orgDefault) return orgDefault;
|
|
369
369
|
return { runtime: DEFAULT_RUNTIME, model: DEFAULT_MODELS[DEFAULT_RUNTIME] };
|
|
370
370
|
}
|
|
371
|
-
function setAgentRuntime(agentId, runtime, model) {
|
|
371
|
+
function setAgentRuntime(agentId, runtime, model, reasoning_effort) {
|
|
372
372
|
const knownModels = KNOWN_RUNTIMES[runtime];
|
|
373
373
|
if (!knownModels) {
|
|
374
374
|
return {
|
|
@@ -383,7 +383,9 @@ function setAgentRuntime(agentId, runtime, model) {
|
|
|
383
383
|
};
|
|
384
384
|
}
|
|
385
385
|
const config = loadAgentConfig();
|
|
386
|
-
|
|
386
|
+
const entry = { runtime, model };
|
|
387
|
+
if (reasoning_effort) entry.reasoning_effort = reasoning_effort;
|
|
388
|
+
config[agentId] = entry;
|
|
387
389
|
saveAgentConfig(config);
|
|
388
390
|
return { ok: true };
|
|
389
391
|
}
|
|
@@ -6938,6 +6940,7 @@ ${p.content}`).join("\n\n");
|
|
|
6938
6940
|
var store_exports = {};
|
|
6939
6941
|
__export(store_exports, {
|
|
6940
6942
|
attachDocumentMetadata: () => attachDocumentMetadata,
|
|
6943
|
+
buildRawVisibilityFilter: () => buildRawVisibilityFilter,
|
|
6941
6944
|
buildWikiScopeFilter: () => buildWikiScopeFilter,
|
|
6942
6945
|
classifyTier: () => classifyTier,
|
|
6943
6946
|
disposeStore: () => disposeStore,
|
|
@@ -7307,6 +7310,15 @@ function buildWikiScopeFilter(options, columnPrefix) {
|
|
|
7307
7310
|
}
|
|
7308
7311
|
return { clause, args: args2 };
|
|
7309
7312
|
}
|
|
7313
|
+
function buildRawVisibilityFilter(options, columnPrefix) {
|
|
7314
|
+
if (options?.includeRaw === false) {
|
|
7315
|
+
return {
|
|
7316
|
+
clause: ` AND COALESCE(${columnPrefix}memory_type, 'raw') != 'raw'`,
|
|
7317
|
+
args: []
|
|
7318
|
+
};
|
|
7319
|
+
}
|
|
7320
|
+
return { clause: "", args: [] };
|
|
7321
|
+
}
|
|
7310
7322
|
async function searchMemories(queryVector, agentId, options) {
|
|
7311
7323
|
let client;
|
|
7312
7324
|
try {
|
|
@@ -7339,6 +7351,9 @@ async function searchMemories(queryVector, agentId, options) {
|
|
|
7339
7351
|
const scope = buildWikiScopeFilter(options, "");
|
|
7340
7352
|
sql += scope.clause;
|
|
7341
7353
|
args2.push(...scope.args);
|
|
7354
|
+
const rawVisibility = buildRawVisibilityFilter(options, "");
|
|
7355
|
+
sql += rawVisibility.clause;
|
|
7356
|
+
args2.push(...rawVisibility.args);
|
|
7342
7357
|
if (options?.projectName) {
|
|
7343
7358
|
sql += ` AND project_name = ?`;
|
|
7344
7359
|
args2.push(options.projectName);
|
|
@@ -9259,6 +9274,16 @@ var init_tmux_transport = __esm({
|
|
|
9259
9274
|
sendKeys(target, keys) {
|
|
9260
9275
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
9261
9276
|
}
|
|
9277
|
+
/**
|
|
9278
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
9279
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
9280
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
9281
|
+
* the submit keystroke arrives.
|
|
9282
|
+
*/
|
|
9283
|
+
sendKeysLiteral(target, text) {
|
|
9284
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
9285
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
9286
|
+
}
|
|
9262
9287
|
capturePane(target, lines) {
|
|
9263
9288
|
const args2 = ["capture-pane", "-t", target, "-p"];
|
|
9264
9289
|
if (lines) args2.push("-S", `-${lines}`);
|
|
@@ -12080,10 +12105,11 @@ function sendIntercom(targetSession) {
|
|
|
12080
12105
|
const agentName = baseAgentName(rawAgentName);
|
|
12081
12106
|
const rtConfig = getAgentRuntime(agentName);
|
|
12082
12107
|
if (rtConfig.runtime === "codex" || rtConfig.runtime === "opencode") {
|
|
12083
|
-
|
|
12084
|
-
|
|
12085
|
-
|
|
12086
|
-
}
|
|
12108
|
+
const msg = "You have a new P0 task. Run list_tasks to find it.";
|
|
12109
|
+
if (transport.sendKeysLiteral) {
|
|
12110
|
+
transport.sendKeysLiteral(targetSession, msg);
|
|
12111
|
+
} else {
|
|
12112
|
+
transport.sendKeys(targetSession, msg);
|
|
12087
12113
|
}
|
|
12088
12114
|
} else {
|
|
12089
12115
|
transport.sendKeys(targetSession, "/exe-intercom");
|
|
@@ -12368,6 +12394,9 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
|
|
|
12368
12394
|
}
|
|
12369
12395
|
}
|
|
12370
12396
|
envPrefix = `${envPrefix} EXE_AGENT_MODEL=${agentRtConfig.model}`;
|
|
12397
|
+
if (agentRtConfig.reasoning_effort) {
|
|
12398
|
+
envPrefix = `${envPrefix} EXE_AGENT_REASONING_EFFORT=${agentRtConfig.reasoning_effort}`;
|
|
12399
|
+
}
|
|
12371
12400
|
}
|
|
12372
12401
|
if (useOpencode) {
|
|
12373
12402
|
const ocCfg = PROVIDER_TABLE.opencode;
|
|
@@ -173,7 +173,7 @@ function getAgentRuntime(agentId) {
|
|
|
173
173
|
if (orgDefault) return orgDefault;
|
|
174
174
|
return { runtime: DEFAULT_RUNTIME, model: DEFAULT_MODELS[DEFAULT_RUNTIME] };
|
|
175
175
|
}
|
|
176
|
-
function setAgentRuntime(agentId, runtime, model) {
|
|
176
|
+
function setAgentRuntime(agentId, runtime, model, reasoning_effort) {
|
|
177
177
|
const knownModels = KNOWN_RUNTIMES[runtime];
|
|
178
178
|
if (!knownModels) {
|
|
179
179
|
return {
|
|
@@ -188,7 +188,9 @@ function setAgentRuntime(agentId, runtime, model) {
|
|
|
188
188
|
};
|
|
189
189
|
}
|
|
190
190
|
const config = loadAgentConfig();
|
|
191
|
-
|
|
191
|
+
const entry = { runtime, model };
|
|
192
|
+
if (reasoning_effort) entry.reasoning_effort = reasoning_effort;
|
|
193
|
+
config[agentId] = entry;
|
|
192
194
|
saveAgentConfig(config);
|
|
193
195
|
return { ok: true };
|
|
194
196
|
}
|
package/dist/bin/exe-assign.js
CHANGED
|
@@ -3566,6 +3566,15 @@ function buildWikiScopeFilter(options, columnPrefix) {
|
|
|
3566
3566
|
}
|
|
3567
3567
|
return { clause, args };
|
|
3568
3568
|
}
|
|
3569
|
+
function buildRawVisibilityFilter(options, columnPrefix) {
|
|
3570
|
+
if (options?.includeRaw === false) {
|
|
3571
|
+
return {
|
|
3572
|
+
clause: ` AND COALESCE(${columnPrefix}memory_type, 'raw') != 'raw'`,
|
|
3573
|
+
args: []
|
|
3574
|
+
};
|
|
3575
|
+
}
|
|
3576
|
+
return { clause: "", args: [] };
|
|
3577
|
+
}
|
|
3569
3578
|
async function searchMemories(queryVector, agentId, options) {
|
|
3570
3579
|
let client;
|
|
3571
3580
|
try {
|
|
@@ -3598,6 +3607,9 @@ async function searchMemories(queryVector, agentId, options) {
|
|
|
3598
3607
|
const scope = buildWikiScopeFilter(options, "");
|
|
3599
3608
|
sql += scope.clause;
|
|
3600
3609
|
args.push(...scope.args);
|
|
3610
|
+
const rawVisibility = buildRawVisibilityFilter(options, "");
|
|
3611
|
+
sql += rawVisibility.clause;
|
|
3612
|
+
args.push(...rawVisibility.args);
|
|
3601
3613
|
if (options?.projectName) {
|
|
3602
3614
|
sql += ` AND project_name = ?`;
|
|
3603
3615
|
args.push(options.projectName);
|
package/dist/bin/exe-boot.js
CHANGED
|
@@ -3642,6 +3642,16 @@ var init_tmux_transport = __esm({
|
|
|
3642
3642
|
sendKeys(target, keys) {
|
|
3643
3643
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
3644
3644
|
}
|
|
3645
|
+
/**
|
|
3646
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
3647
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
3648
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
3649
|
+
* the submit keystroke arrives.
|
|
3650
|
+
*/
|
|
3651
|
+
sendKeysLiteral(target, text) {
|
|
3652
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
3653
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
3654
|
+
}
|
|
3645
3655
|
capturePane(target, lines) {
|
|
3646
3656
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
3647
3657
|
if (lines) args.push("-S", `-${lines}`);
|
|
@@ -7158,10 +7168,11 @@ function sendIntercom(targetSession) {
|
|
|
7158
7168
|
const agentName = baseAgentName(rawAgentName);
|
|
7159
7169
|
const rtConfig = getAgentRuntime(agentName);
|
|
7160
7170
|
if (rtConfig.runtime === "codex" || rtConfig.runtime === "opencode") {
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
}
|
|
7171
|
+
const msg = "You have a new P0 task. Run list_tasks to find it.";
|
|
7172
|
+
if (transport.sendKeysLiteral) {
|
|
7173
|
+
transport.sendKeysLiteral(targetSession, msg);
|
|
7174
|
+
} else {
|
|
7175
|
+
transport.sendKeys(targetSession, msg);
|
|
7165
7176
|
}
|
|
7166
7177
|
} else {
|
|
7167
7178
|
transport.sendKeys(targetSession, "/exe-intercom");
|
|
@@ -7446,6 +7457,9 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
|
|
|
7446
7457
|
}
|
|
7447
7458
|
}
|
|
7448
7459
|
envPrefix = `${envPrefix} EXE_AGENT_MODEL=${agentRtConfig.model}`;
|
|
7460
|
+
if (agentRtConfig.reasoning_effort) {
|
|
7461
|
+
envPrefix = `${envPrefix} EXE_AGENT_REASONING_EFFORT=${agentRtConfig.reasoning_effort}`;
|
|
7462
|
+
}
|
|
7449
7463
|
}
|
|
7450
7464
|
if (useOpencode) {
|
|
7451
7465
|
const ocCfg = PROVIDER_TABLE.opencode;
|
package/dist/bin/exe-call.js
CHANGED
|
@@ -190,7 +190,7 @@ function getAgentRuntime(agentId) {
|
|
|
190
190
|
if (orgDefault) return orgDefault;
|
|
191
191
|
return { runtime: DEFAULT_RUNTIME, model: DEFAULT_MODELS[DEFAULT_RUNTIME] };
|
|
192
192
|
}
|
|
193
|
-
function setAgentRuntime(agentId, runtime, model) {
|
|
193
|
+
function setAgentRuntime(agentId, runtime, model, reasoning_effort) {
|
|
194
194
|
const knownModels = KNOWN_RUNTIMES[runtime];
|
|
195
195
|
if (!knownModels) {
|
|
196
196
|
return {
|
|
@@ -205,7 +205,9 @@ function setAgentRuntime(agentId, runtime, model) {
|
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
207
|
const config = loadAgentConfig();
|
|
208
|
-
|
|
208
|
+
const entry = { runtime, model };
|
|
209
|
+
if (reasoning_effort) entry.reasoning_effort = reasoning_effort;
|
|
210
|
+
config[agentId] = entry;
|
|
209
211
|
saveAgentConfig(config);
|
|
210
212
|
return { ok: true };
|
|
211
213
|
}
|
package/dist/bin/exe-dispatch.js
CHANGED
|
@@ -174,6 +174,16 @@ var init_tmux_transport = __esm({
|
|
|
174
174
|
sendKeys(target, keys) {
|
|
175
175
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
176
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
179
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
180
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
181
|
+
* the submit keystroke arrives.
|
|
182
|
+
*/
|
|
183
|
+
sendKeysLiteral(target, text) {
|
|
184
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
185
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
186
|
+
}
|
|
177
187
|
capturePane(target, lines) {
|
|
178
188
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
179
189
|
if (lines) args.push("-S", `-${lines}`);
|
|
@@ -5107,10 +5117,11 @@ function sendIntercom(targetSession) {
|
|
|
5107
5117
|
const agentName = baseAgentName(rawAgentName);
|
|
5108
5118
|
const rtConfig = getAgentRuntime(agentName);
|
|
5109
5119
|
if (rtConfig.runtime === "codex" || rtConfig.runtime === "opencode") {
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
}
|
|
5120
|
+
const msg = "You have a new P0 task. Run list_tasks to find it.";
|
|
5121
|
+
if (transport.sendKeysLiteral) {
|
|
5122
|
+
transport.sendKeysLiteral(targetSession, msg);
|
|
5123
|
+
} else {
|
|
5124
|
+
transport.sendKeys(targetSession, msg);
|
|
5114
5125
|
}
|
|
5115
5126
|
} else {
|
|
5116
5127
|
transport.sendKeys(targetSession, "/exe-intercom");
|
|
@@ -5395,6 +5406,9 @@ function spawnEmployee(employeeName2, exeSession2, projectDir2, opts) {
|
|
|
5395
5406
|
}
|
|
5396
5407
|
}
|
|
5397
5408
|
envPrefix = `${envPrefix} EXE_AGENT_MODEL=${agentRtConfig.model}`;
|
|
5409
|
+
if (agentRtConfig.reasoning_effort) {
|
|
5410
|
+
envPrefix = `${envPrefix} EXE_AGENT_REASONING_EFFORT=${agentRtConfig.reasoning_effort}`;
|
|
5411
|
+
}
|
|
5398
5412
|
}
|
|
5399
5413
|
if (useOpencode) {
|
|
5400
5414
|
const ocCfg = PROVIDER_TABLE.opencode;
|
package/dist/bin/exe-forget.js
CHANGED
|
@@ -2669,6 +2669,15 @@ function buildWikiScopeFilter(options, columnPrefix) {
|
|
|
2669
2669
|
}
|
|
2670
2670
|
return { clause, args };
|
|
2671
2671
|
}
|
|
2672
|
+
function buildRawVisibilityFilter(options, columnPrefix) {
|
|
2673
|
+
if (options?.includeRaw === false) {
|
|
2674
|
+
return {
|
|
2675
|
+
clause: ` AND COALESCE(${columnPrefix}memory_type, 'raw') != 'raw'`,
|
|
2676
|
+
args: []
|
|
2677
|
+
};
|
|
2678
|
+
}
|
|
2679
|
+
return { clause: "", args: [] };
|
|
2680
|
+
}
|
|
2672
2681
|
async function attachDocumentMetadata(records) {
|
|
2673
2682
|
const docIds = [
|
|
2674
2683
|
...new Set(
|
|
@@ -2780,6 +2789,9 @@ async function ftsQuery(client, matchExpr, agentId, options, limit) {
|
|
|
2780
2789
|
const scope = buildWikiScopeFilter(options, "m.");
|
|
2781
2790
|
sql += scope.clause;
|
|
2782
2791
|
args.push(...scope.args);
|
|
2792
|
+
const rawVisibility = buildRawVisibilityFilter(options, "m.");
|
|
2793
|
+
sql += rawVisibility.clause;
|
|
2794
|
+
args.push(...rawVisibility.args);
|
|
2783
2795
|
if (options?.projectName) {
|
|
2784
2796
|
sql += ` AND m.project_name = ?`;
|
|
2785
2797
|
args.push(options.projectName);
|
|
@@ -2855,6 +2867,7 @@ async function recentRecords(agentId, options, limit, textFilter) {
|
|
|
2855
2867
|
WHERE agent_id = ?
|
|
2856
2868
|
AND timestamp >= ? AND timestamp <= ?
|
|
2857
2869
|
AND COALESCE(status, 'active') = 'active'
|
|
2870
|
+
AND ${options?.includeRaw === false ? "COALESCE(memory_type, 'raw') != 'raw'" : "1 = 1"}
|
|
2858
2871
|
AND COALESCE(confidence, 0.7) >= 0.3
|
|
2859
2872
|
ORDER BY timestamp DESC LIMIT ?`,
|
|
2860
2873
|
args: [agentId, windowStart, killedAt, boundarySlots]
|
|
@@ -2884,6 +2897,9 @@ async function recentRecords(agentId, options, limit, textFilter) {
|
|
|
2884
2897
|
const scope = buildWikiScopeFilter(options, "");
|
|
2885
2898
|
sql += scope.clause;
|
|
2886
2899
|
args.push(...scope.args);
|
|
2900
|
+
const rawVisibility = buildRawVisibilityFilter(options, "");
|
|
2901
|
+
sql += rawVisibility.clause;
|
|
2902
|
+
args.push(...rawVisibility.args);
|
|
2887
2903
|
if (options?.projectName) {
|
|
2888
2904
|
sql += ` AND project_name = ?`;
|
|
2889
2905
|
args.push(options.projectName);
|
package/dist/bin/exe-gateway.js
CHANGED
|
@@ -734,7 +734,7 @@ function getAgentRuntime(agentId) {
|
|
|
734
734
|
if (orgDefault) return orgDefault;
|
|
735
735
|
return { runtime: DEFAULT_RUNTIME, model: DEFAULT_MODELS[DEFAULT_RUNTIME] };
|
|
736
736
|
}
|
|
737
|
-
function setAgentRuntime(agentId, runtime, model) {
|
|
737
|
+
function setAgentRuntime(agentId, runtime, model, reasoning_effort) {
|
|
738
738
|
const knownModels = KNOWN_RUNTIMES[runtime];
|
|
739
739
|
if (!knownModels) {
|
|
740
740
|
return {
|
|
@@ -749,7 +749,9 @@ function setAgentRuntime(agentId, runtime, model) {
|
|
|
749
749
|
};
|
|
750
750
|
}
|
|
751
751
|
const config2 = loadAgentConfig();
|
|
752
|
-
|
|
752
|
+
const entry = { runtime, model };
|
|
753
|
+
if (reasoning_effort) entry.reasoning_effort = reasoning_effort;
|
|
754
|
+
config2[agentId] = entry;
|
|
753
755
|
saveAgentConfig(config2);
|
|
754
756
|
return { ok: true };
|
|
755
757
|
}
|
|
@@ -3813,6 +3815,7 @@ ${p.content}`).join("\n\n");
|
|
|
3813
3815
|
var store_exports = {};
|
|
3814
3816
|
__export(store_exports, {
|
|
3815
3817
|
attachDocumentMetadata: () => attachDocumentMetadata,
|
|
3818
|
+
buildRawVisibilityFilter: () => buildRawVisibilityFilter,
|
|
3816
3819
|
buildWikiScopeFilter: () => buildWikiScopeFilter,
|
|
3817
3820
|
classifyTier: () => classifyTier,
|
|
3818
3821
|
disposeStore: () => disposeStore,
|
|
@@ -4182,6 +4185,15 @@ function buildWikiScopeFilter(options, columnPrefix) {
|
|
|
4182
4185
|
}
|
|
4183
4186
|
return { clause, args };
|
|
4184
4187
|
}
|
|
4188
|
+
function buildRawVisibilityFilter(options, columnPrefix) {
|
|
4189
|
+
if (options?.includeRaw === false) {
|
|
4190
|
+
return {
|
|
4191
|
+
clause: ` AND COALESCE(${columnPrefix}memory_type, 'raw') != 'raw'`,
|
|
4192
|
+
args: []
|
|
4193
|
+
};
|
|
4194
|
+
}
|
|
4195
|
+
return { clause: "", args: [] };
|
|
4196
|
+
}
|
|
4185
4197
|
async function searchMemories(queryVector, agentId, options) {
|
|
4186
4198
|
let client;
|
|
4187
4199
|
try {
|
|
@@ -4214,6 +4226,9 @@ async function searchMemories(queryVector, agentId, options) {
|
|
|
4214
4226
|
const scope = buildWikiScopeFilter(options, "");
|
|
4215
4227
|
sql += scope.clause;
|
|
4216
4228
|
args.push(...scope.args);
|
|
4229
|
+
const rawVisibility = buildRawVisibilityFilter(options, "");
|
|
4230
|
+
sql += rawVisibility.clause;
|
|
4231
|
+
args.push(...rawVisibility.args);
|
|
4217
4232
|
if (options?.projectName) {
|
|
4218
4233
|
sql += ` AND project_name = ?`;
|
|
4219
4234
|
args.push(options.projectName);
|
|
@@ -7745,6 +7760,16 @@ var init_tmux_transport = __esm({
|
|
|
7745
7760
|
sendKeys(target, keys) {
|
|
7746
7761
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
7747
7762
|
}
|
|
7763
|
+
/**
|
|
7764
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
7765
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
7766
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
7767
|
+
* the submit keystroke arrives.
|
|
7768
|
+
*/
|
|
7769
|
+
sendKeysLiteral(target, text) {
|
|
7770
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
7771
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
7772
|
+
}
|
|
7748
7773
|
capturePane(target, lines) {
|
|
7749
7774
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
7750
7775
|
if (lines) args.push("-S", `-${lines}`);
|
|
@@ -10559,10 +10584,11 @@ function sendIntercom(targetSession) {
|
|
|
10559
10584
|
const agentName = baseAgentName(rawAgentName);
|
|
10560
10585
|
const rtConfig = getAgentRuntime(agentName);
|
|
10561
10586
|
if (rtConfig.runtime === "codex" || rtConfig.runtime === "opencode") {
|
|
10562
|
-
|
|
10563
|
-
|
|
10564
|
-
|
|
10565
|
-
}
|
|
10587
|
+
const msg = "You have a new P0 task. Run list_tasks to find it.";
|
|
10588
|
+
if (transport.sendKeysLiteral) {
|
|
10589
|
+
transport.sendKeysLiteral(targetSession, msg);
|
|
10590
|
+
} else {
|
|
10591
|
+
transport.sendKeys(targetSession, msg);
|
|
10566
10592
|
}
|
|
10567
10593
|
} else {
|
|
10568
10594
|
transport.sendKeys(targetSession, "/exe-intercom");
|
|
@@ -10847,6 +10873,9 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
|
|
|
10847
10873
|
}
|
|
10848
10874
|
}
|
|
10849
10875
|
envPrefix = `${envPrefix} EXE_AGENT_MODEL=${agentRtConfig.model}`;
|
|
10876
|
+
if (agentRtConfig.reasoning_effort) {
|
|
10877
|
+
envPrefix = `${envPrefix} EXE_AGENT_REASONING_EFFORT=${agentRtConfig.reasoning_effort}`;
|
|
10878
|
+
}
|
|
10850
10879
|
}
|
|
10851
10880
|
if (useOpencode) {
|
|
10852
10881
|
const ocCfg = PROVIDER_TABLE.opencode;
|
|
@@ -2671,6 +2671,16 @@ var init_tmux_transport = __esm({
|
|
|
2671
2671
|
sendKeys(target, keys) {
|
|
2672
2672
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
2673
2673
|
}
|
|
2674
|
+
/**
|
|
2675
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
2676
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
2677
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
2678
|
+
* the submit keystroke arrives.
|
|
2679
|
+
*/
|
|
2680
|
+
sendKeysLiteral(target, text) {
|
|
2681
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
2682
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
2683
|
+
}
|
|
2674
2684
|
capturePane(target, lines) {
|
|
2675
2685
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
2676
2686
|
if (lines) args.push("-S", `-${lines}`);
|
|
@@ -357,7 +357,7 @@ function getAgentRuntime(agentId) {
|
|
|
357
357
|
if (orgDefault) return orgDefault;
|
|
358
358
|
return { runtime: DEFAULT_RUNTIME, model: DEFAULT_MODELS[DEFAULT_RUNTIME] };
|
|
359
359
|
}
|
|
360
|
-
function setAgentRuntime(agentId, runtime, model) {
|
|
360
|
+
function setAgentRuntime(agentId, runtime, model, reasoning_effort) {
|
|
361
361
|
const knownModels = KNOWN_RUNTIMES[runtime];
|
|
362
362
|
if (!knownModels) {
|
|
363
363
|
return {
|
|
@@ -372,7 +372,9 @@ function setAgentRuntime(agentId, runtime, model) {
|
|
|
372
372
|
};
|
|
373
373
|
}
|
|
374
374
|
const config = loadAgentConfig();
|
|
375
|
-
|
|
375
|
+
const entry = { runtime, model };
|
|
376
|
+
if (reasoning_effort) entry.reasoning_effort = reasoning_effort;
|
|
377
|
+
config[agentId] = entry;
|
|
376
378
|
saveAgentConfig(config);
|
|
377
379
|
return { ok: true };
|
|
378
380
|
}
|
|
@@ -196,7 +196,7 @@ function getAgentRuntime(agentId) {
|
|
|
196
196
|
if (orgDefault) return orgDefault;
|
|
197
197
|
return { runtime: DEFAULT_RUNTIME, model: DEFAULT_MODELS[DEFAULT_RUNTIME] };
|
|
198
198
|
}
|
|
199
|
-
function setAgentRuntime(agentId, runtime, model) {
|
|
199
|
+
function setAgentRuntime(agentId, runtime, model, reasoning_effort) {
|
|
200
200
|
const knownModels = KNOWN_RUNTIMES[runtime];
|
|
201
201
|
if (!knownModels) {
|
|
202
202
|
return {
|
|
@@ -211,7 +211,9 @@ function setAgentRuntime(agentId, runtime, model) {
|
|
|
211
211
|
};
|
|
212
212
|
}
|
|
213
213
|
const config = loadAgentConfig();
|
|
214
|
-
|
|
214
|
+
const entry = { runtime, model };
|
|
215
|
+
if (reasoning_effort) entry.reasoning_effort = reasoning_effort;
|
|
216
|
+
config[agentId] = entry;
|
|
215
217
|
saveAgentConfig(config);
|
|
216
218
|
return { ok: true };
|
|
217
219
|
}
|
|
@@ -2651,6 +2651,16 @@ var init_tmux_transport = __esm({
|
|
|
2651
2651
|
sendKeys(target, keys) {
|
|
2652
2652
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
2653
2653
|
}
|
|
2654
|
+
/**
|
|
2655
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
2656
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
2657
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
2658
|
+
* the submit keystroke arrives.
|
|
2659
|
+
*/
|
|
2660
|
+
sendKeysLiteral(target, text) {
|
|
2661
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
2662
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
2663
|
+
}
|
|
2654
2664
|
capturePane(target, lines) {
|
|
2655
2665
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
2656
2666
|
if (lines) args.push("-S", `-${lines}`);
|
|
@@ -2652,6 +2652,16 @@ var init_tmux_transport = __esm({
|
|
|
2652
2652
|
sendKeys(target, keys) {
|
|
2653
2653
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
2654
2654
|
}
|
|
2655
|
+
/**
|
|
2656
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
2657
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
2658
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
2659
|
+
* the submit keystroke arrives.
|
|
2660
|
+
*/
|
|
2661
|
+
sendKeysLiteral(target, text) {
|
|
2662
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
2663
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
2664
|
+
}
|
|
2655
2665
|
capturePane(target, lines) {
|
|
2656
2666
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
2657
2667
|
if (lines) args.push("-S", `-${lines}`);
|
|
@@ -2652,6 +2652,16 @@ var init_tmux_transport = __esm({
|
|
|
2652
2652
|
sendKeys(target, keys) {
|
|
2653
2653
|
execFileSync("tmux", ["send-keys", "-t", target, keys, "Enter"], QUIET);
|
|
2654
2654
|
}
|
|
2655
|
+
/**
|
|
2656
|
+
* Send text as literal characters, then submit with Enter as a separate call.
|
|
2657
|
+
* Fixes Codex intercom bug: long text + Enter in one send-keys blast causes
|
|
2658
|
+
* Codex to drop the Enter. Splitting them ensures the text renders before
|
|
2659
|
+
* the submit keystroke arrives.
|
|
2660
|
+
*/
|
|
2661
|
+
sendKeysLiteral(target, text) {
|
|
2662
|
+
execFileSync("tmux", ["send-keys", "-t", target, "-l", text], QUIET);
|
|
2663
|
+
execFileSync("tmux", ["send-keys", "-t", target, "Enter"], QUIET);
|
|
2664
|
+
}
|
|
2655
2665
|
capturePane(target, lines) {
|
|
2656
2666
|
const args = ["capture-pane", "-t", target, "-p"];
|
|
2657
2667
|
if (lines) args.push("-S", `-${lines}`);
|