@nexrall/code-core 1.4.73 → 1.4.74
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/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +17 -13
- package/dist/agent/hooks.d.ts +13 -0
- package/dist/agent/hooks.d.ts.map +1 -1
- package/dist/agent/hooks.js +1 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +67 -2
- package/dist/agent/sharedTasks.d.ts +21 -6
- package/dist/agent/sharedTasks.d.ts.map +1 -1
- package/dist/agent/sharedTasks.js +69 -17
- package/dist/agent/taskEvents.d.ts +73 -0
- package/dist/agent/taskEvents.d.ts.map +1 -0
- package/dist/agent/taskEvents.js +297 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/tools/executor.d.ts +6 -0
- package/dist/tools/executor.d.ts.map +1 -1
- package/dist/tools/executor.js +116 -6
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/agent/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgB,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAIpF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAiCnE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0CvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvD;
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/agent/compaction.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/compaction.js
CHANGED
|
@@ -150,20 +150,23 @@ function envFraction(name, fallback) {
|
|
|
150
150
|
}
|
|
151
151
|
// Where auto-compaction fires, in TOKENS — Claude Code's rule, not a fraction of a 1M window.
|
|
152
152
|
//
|
|
153
|
-
// Claude Code summarises at `window − min(maxOutput, 20K) − 13K buffer
|
|
154
|
-
//
|
|
155
|
-
//
|
|
156
|
-
// the same
|
|
157
|
-
//
|
|
158
|
-
// the
|
|
153
|
+
// Claude Code summarises at `window − min(maxOutput, 20K) − 13K buffer` on the MODEL's own
|
|
154
|
+
// window. That window used to be a flat 200K (~167K tokens) — and so was ours, matching the
|
|
155
|
+
// 200K-window era. Since Claude Code 2.1.197 its 1M-context models (Sonnet 5, Opus 4.7+,
|
|
156
|
+
// Fable) put the same line near ~967K, only dropping back to 200K when a model fallback
|
|
157
|
+
// swaps the window out; a flat 200K cap beside a 1M model summarised at roughly a sixth of
|
|
158
|
+
// the conversation Claude Code keeps. The default now follows the model's real window.
|
|
159
159
|
//
|
|
160
|
-
//
|
|
161
|
-
//
|
|
162
|
-
//
|
|
163
|
-
|
|
160
|
+
// The cost note that motivated the old cap still stands (a long prefix re-read from cache
|
|
161
|
+
// every turn is real money), so an explicit cap is one setting away:
|
|
162
|
+
//
|
|
163
|
+
// NEXRALL_COMPACT_WINDOW / settings.json "autoCompactWindow": an explicit cap (tokens).
|
|
164
|
+
// e.g. 200000 tidies up early (the pre-2026-10-04 default), 1000000 allows a full window.
|
|
165
|
+
// NEXRALL_PRUNE_THRESHOLD / NEXRALL_COMPACT_THRESHOLD: fractions of the effective window.
|
|
164
166
|
const COMPACT_OUTPUT_RESERVE = 20000; // Claude Code: min(model max output, 20K)
|
|
165
167
|
const COMPACT_BUFFER_TOKENS = 13000; // Claude Code's autocompact buffer
|
|
166
|
-
const DEFAULT_PRUNE_FRACTION = 0.6; // cheap lossless prune
|
|
168
|
+
const DEFAULT_PRUNE_FRACTION = 0.6; // cheap lossless prune at 0.6x the window, before the summarise
|
|
169
|
+
/** Explicit cap from env/settings, or undefined to use the model's own window. */
|
|
167
170
|
function compactWindowCap(settingsRaw) {
|
|
168
171
|
const fromEnv = Number(process.env.NEXRALL_COMPACT_WINDOW);
|
|
169
172
|
if (Number.isFinite(fromEnv) && fromEnv >= 50000)
|
|
@@ -171,11 +174,12 @@ function compactWindowCap(settingsRaw) {
|
|
|
171
174
|
const fromSettings = Number(settingsRaw?.autoCompactWindow);
|
|
172
175
|
if (Number.isFinite(fromSettings) && fromSettings >= 50000)
|
|
173
176
|
return fromSettings;
|
|
174
|
-
return
|
|
177
|
+
return undefined;
|
|
175
178
|
}
|
|
176
179
|
/** Token counts at which auto-prune and auto-compact (summarise) fire for a model window. */
|
|
177
180
|
function compactionLimits(contextWindow, settingsRaw) {
|
|
178
|
-
const
|
|
181
|
+
const cap = compactWindowCap(settingsRaw);
|
|
182
|
+
const eff = cap === undefined ? contextWindow : Math.min(contextWindow, cap);
|
|
179
183
|
const compactFrac = envFraction('NEXRALL_COMPACT_THRESHOLD', 0);
|
|
180
184
|
const pruneFrac = envFraction('NEXRALL_PRUNE_THRESHOLD', 0);
|
|
181
185
|
const compact = compactFrac
|
package/dist/agent/hooks.d.ts
CHANGED
|
@@ -153,6 +153,19 @@ export interface HooksConfig {
|
|
|
153
153
|
* the task stays open. No matcher.
|
|
154
154
|
*/
|
|
155
155
|
TaskCompleted?: Array<HookEntry | HookDef>;
|
|
156
|
+
/**
|
|
157
|
+
* ANOTHER process changed the shared task board and this session noticed — the
|
|
158
|
+
* cross-session counterpart of TaskCreated/TaskCompleted, which only ever fire
|
|
159
|
+
* inside the session that acted. Delivered at the loop's normal drain points
|
|
160
|
+
* (before the next model request / with tool results), never for this process's
|
|
161
|
+
* own writes, and never for events that predate the session. Matcher = event
|
|
162
|
+
* type: `created`, `claimed`, `released`, `reopened`, `completed`, `removed`.
|
|
163
|
+
* Payload: `task_id`, `task_subject`, `task_event`, `actor?`, plus
|
|
164
|
+
* `unblocked_task_ids` when a completion freed tasks up. Observer: exit code is
|
|
165
|
+
* ignored; `additionalContext` / `systemMessage` ride along with the board
|
|
166
|
+
* note the model receives.
|
|
167
|
+
*/
|
|
168
|
+
TaskUpdated?: Array<HookEntry | HookDef>;
|
|
156
169
|
/**
|
|
157
170
|
* An MCP server asked the user for input mid-tool-call (its `elicitation/create`
|
|
158
171
|
* request). Runs BEFORE the interactive dialog: a hook whose stdout carries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/agent/hooks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/agent/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/hooks.js
CHANGED
package/dist/agent/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAKP,UAAU,EACV,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/loop.js
CHANGED
|
@@ -15,6 +15,7 @@ const types_1 = require("../types");
|
|
|
15
15
|
const client_1 = require("../api/client");
|
|
16
16
|
const executor_1 = require("../tools/executor");
|
|
17
17
|
const sharedTasks_1 = require("./sharedTasks");
|
|
18
|
+
const taskEvents_1 = require("./taskEvents");
|
|
18
19
|
const agentTypes_1 = require("./agentTypes");
|
|
19
20
|
const skills_1 = require("./skills");
|
|
20
21
|
const nestedInstructions_1 = require("./nestedInstructions");
|
|
@@ -669,6 +670,54 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
669
670
|
const readDedupe = new readDedupe_1.ReadDedupe(options.workDir);
|
|
670
671
|
// Only the main agent owns background agents (runSubTask never passes the hub down).
|
|
671
672
|
const drainBackgroundNotifications = () => (depth === 0 ? (options.backgroundAgents?.takeNotifications() ?? []) : []);
|
|
673
|
+
// Cross-session task-board events (see agent/taskEvents.ts): board changes
|
|
674
|
+
// OTHER processes made on this project — "the task you were waiting on just
|
|
675
|
+
// completed" — rendered as notes the model can act on, and fed through this
|
|
676
|
+
// session's TaskUpdated hooks on the way. Drained at the same boundaries as
|
|
677
|
+
// peer messages, for the same reason: never mid-tool-call, always before the
|
|
678
|
+
// next request. depth>0 returns [] BEFORE touching the cursor: a sub-agent
|
|
679
|
+
// shares this process's event cursor, and a child's drain would consume
|
|
680
|
+
// events the parent session was about to see.
|
|
681
|
+
const collectTaskEventTexts = async () => {
|
|
682
|
+
if (depth > 0)
|
|
683
|
+
return [];
|
|
684
|
+
const events = (0, taskEvents_1.takeNewTaskEvents)(options.workDir, { sessionKey: options.sessionId });
|
|
685
|
+
if (!events.length)
|
|
686
|
+
return [];
|
|
687
|
+
const notes = (0, taskEvents_1.formatTaskEventNotes)(events, (0, sharedTasks_1.listSharedTasks)(options.workDir));
|
|
688
|
+
// Hand the same notes to the host's UI (chat.ts prints a dim one-liner)
|
|
689
|
+
// BEFORE rendering hook additions: the UI shows the board fact, the model
|
|
690
|
+
// additionally gets whatever TaskUpdated hooks add below.
|
|
691
|
+
if (notes.length)
|
|
692
|
+
options.onTaskNotes?.(notes);
|
|
693
|
+
const noteFor = (id, ts, type) => notes.find((n) => n.event.taskId === id && n.event.ts === ts && n.event.type === type);
|
|
694
|
+
const texts = [];
|
|
695
|
+
for (const ev of events) {
|
|
696
|
+
const note = noteFor(ev.taskId, ev.ts, ev.type);
|
|
697
|
+
let text = note?.text ?? '';
|
|
698
|
+
if (hooks.TaskUpdated?.length) {
|
|
699
|
+
// Observer (exit code ignored): the board change already happened in
|
|
700
|
+
// another process — there is nothing here to veto. Matcher = event type.
|
|
701
|
+
const outcome = await (0, hooks_1.runLifecycleHooks)(hooks.TaskUpdated, 'TaskUpdated', options.workDir, {
|
|
702
|
+
task_id: ev.taskId,
|
|
703
|
+
task_subject: ev.subject,
|
|
704
|
+
task_event: ev.type,
|
|
705
|
+
...(ev.actor ? { actor: ev.actor } : {}),
|
|
706
|
+
unblocked_task_ids: note?.unblocked ?? [],
|
|
707
|
+
}, ev.type, (0, hooks_1.hookRunOptsFor)(options));
|
|
708
|
+
const extra = [outcome.context, outcome.systemMessage].filter(Boolean).join('\n');
|
|
709
|
+
// A hook that bothers to say something outranks the default note: its
|
|
710
|
+
// text rides along WITH the note when there is one, or becomes the
|
|
711
|
+
// delivered message on its own for events no note would have covered
|
|
712
|
+
// (e.g. a `created` matcher that wants the model told about new work).
|
|
713
|
+
if (extra)
|
|
714
|
+
text = text ? `${text}\n\n${extra}` : extra;
|
|
715
|
+
}
|
|
716
|
+
if (text)
|
|
717
|
+
texts.push(text);
|
|
718
|
+
}
|
|
719
|
+
return texts;
|
|
720
|
+
};
|
|
672
721
|
// Live prompt-size estimate, updated from usage events after every stream.
|
|
673
722
|
let lastPromptTokens = 0;
|
|
674
723
|
let compacting = false; // re-entrancy guard — compaction itself calls streamChat
|
|
@@ -1122,7 +1171,9 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
1122
1171
|
const bgDone = drainBackgroundNotifications();
|
|
1123
1172
|
// Background hooks (async / asyncRewake) queued since the last request.
|
|
1124
1173
|
const hookMsgs = (0, hooks_1.drainHookDeliveries)();
|
|
1125
|
-
|
|
1174
|
+
// Board changes from other sessions/scripts (see taskEvents.ts).
|
|
1175
|
+
const taskEvts = await collectTaskEventTexts();
|
|
1176
|
+
if (queued.length || peerMsgs.length || bgDone.length || hookMsgs.length || taskEvts.length) {
|
|
1126
1177
|
const parts = [];
|
|
1127
1178
|
if (queued.length) {
|
|
1128
1179
|
parts.push(queued.join('\n\n'));
|
|
@@ -1136,6 +1187,8 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
1136
1187
|
parts.push((0, backgroundAgents_1.formatBackgroundNotifications)(bgDone));
|
|
1137
1188
|
if (hookMsgs.length)
|
|
1138
1189
|
parts.push((0, hooks_1.formatHookDeliveries)(hookMsgs));
|
|
1190
|
+
if (taskEvts.length)
|
|
1191
|
+
parts.push(taskEvts.join('\n\n'));
|
|
1139
1192
|
messages.push({ role: 'user', content: [{ type: 'text', text: parts.join('\n\n') }] });
|
|
1140
1193
|
continue;
|
|
1141
1194
|
}
|
|
@@ -1235,7 +1288,9 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
1235
1288
|
// A background hook may have landed while this turn ran — the model must see it
|
|
1236
1289
|
// before the session would otherwise go idle.
|
|
1237
1290
|
const hookMsgs = (0, hooks_1.drainHookDeliveries)();
|
|
1238
|
-
|
|
1291
|
+
// Board changes from other sessions/scripts (see taskEvents.ts).
|
|
1292
|
+
const taskEvts = await collectTaskEventTexts();
|
|
1293
|
+
if (queued.length || peerMsgs.length || bgDone.length || hookMsgs.length || taskEvts.length) {
|
|
1239
1294
|
const parts = [];
|
|
1240
1295
|
if (queued.length) {
|
|
1241
1296
|
parts.push(queued.join('\n\n'));
|
|
@@ -1249,6 +1304,8 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
1249
1304
|
parts.push((0, backgroundAgents_1.formatBackgroundNotifications)(bgDone));
|
|
1250
1305
|
if (hookMsgs.length)
|
|
1251
1306
|
parts.push((0, hooks_1.formatHookDeliveries)(hookMsgs));
|
|
1307
|
+
if (taskEvts.length)
|
|
1308
|
+
parts.push(taskEvts.join('\n\n'));
|
|
1252
1309
|
messages.push({ role: 'user', content: [{ type: 'text', text: parts.join('\n\n') }] });
|
|
1253
1310
|
continue;
|
|
1254
1311
|
}
|
|
@@ -1855,6 +1912,14 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
1855
1912
|
if (hookDeliveries.length) {
|
|
1856
1913
|
toolResultContent.push({ type: 'text', text: (0, hooks_1.formatHookDeliveries)(hookDeliveries) });
|
|
1857
1914
|
}
|
|
1915
|
+
// Cross-session task-board events (see taskEvents.ts) — same boundary as
|
|
1916
|
+
// the peer messages above, and for the same reason: a board change made
|
|
1917
|
+
// by another process while our tools ran is news the model should have
|
|
1918
|
+
// before it decides what to do next.
|
|
1919
|
+
const taskEvts = await collectTaskEventTexts();
|
|
1920
|
+
if (taskEvts.length) {
|
|
1921
|
+
toolResultContent.push({ type: 'text', text: taskEvts.join('\n\n') });
|
|
1922
|
+
}
|
|
1858
1923
|
// PostToolBatch (Claude Code): fires exactly ONCE per batch, after every call resolved
|
|
1859
1924
|
// and before the next model call — the place for context that depends on the SET of
|
|
1860
1925
|
// tools that ran, where PostToolUse could only see one at a time (and would race itself
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { taskScopeDir as scopeDir, taskScopeRoot as tasksRoot } from './taskEvents';
|
|
1
2
|
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'blocked';
|
|
2
3
|
export interface SharedTask {
|
|
3
4
|
id: string;
|
|
@@ -13,11 +14,17 @@ export interface SharedTask {
|
|
|
13
14
|
updatedAt: number;
|
|
14
15
|
claimedAt?: number;
|
|
15
16
|
}
|
|
16
|
-
declare function tasksRoot(): string;
|
|
17
|
-
declare function scopeDir(workDir: string): string;
|
|
18
17
|
declare function taskPath(workDir: string, taskId: string): string;
|
|
19
|
-
/**
|
|
20
|
-
|
|
18
|
+
/**
|
|
19
|
+
* A claimed task whose owning process is gone, or whose claim has gone stale with
|
|
20
|
+
* no update, is treated as abandoned.
|
|
21
|
+
*
|
|
22
|
+
* Public because more than the claim path itself needs this verdict: `nex tasks`
|
|
23
|
+
* prints it — a board that shows a dead claim as plainly "in progress" is lying
|
|
24
|
+
* about what a session would actually be allowed to take — and any UI that
|
|
25
|
+
* renders `in_progress` should ask this rather than re-deriving the rule.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isClaimAbandoned(task: SharedTask): boolean;
|
|
21
28
|
/** Whether every task ID in `blockedBy` is `completed` — i.e. this task is actually claimable right now. */
|
|
22
29
|
declare function isUnblocked(workDir: string, task: SharedTask): boolean;
|
|
23
30
|
/** List every task registered for `workDir`, newest first isn't guaranteed — sort by createdAt if display order matters to the caller. */
|
|
@@ -38,8 +45,14 @@ export type ClaimResult = {
|
|
|
38
45
|
* Atomically claim `taskId` for `claimedBy` (a peer/session name). Race-free
|
|
39
46
|
* against another process calling this at the same instant — see this
|
|
40
47
|
* module's header comment for exactly why.
|
|
48
|
+
*
|
|
49
|
+
* `opts.trackPid` (default true) records `process.pid` so a crashed session's
|
|
50
|
+
* claim is detectable. Pass false for a claim typed from a short-lived shell
|
|
51
|
+
* process (`nex tasks claim`) — see the spread comment in the body.
|
|
41
52
|
*/
|
|
42
|
-
export declare function claimTask(workDir: string, taskId: string, claimedBy: string
|
|
53
|
+
export declare function claimTask(workDir: string, taskId: string, claimedBy: string, opts?: {
|
|
54
|
+
trackPid?: boolean;
|
|
55
|
+
}): Promise<ClaimResult>;
|
|
43
56
|
/**
|
|
44
57
|
* Update a task's status. Used for both normal progress (in_progress →
|
|
45
58
|
* completed) and releasing a claim early (in_progress → pending, e.g. a
|
|
@@ -65,6 +78,8 @@ export declare const _sharedTasksInternal: {
|
|
|
65
78
|
* model as the tool's error; so "no task remains" is the observable contract of a veto,
|
|
66
79
|
* and this is the only place that needs to make it true.
|
|
67
80
|
*/
|
|
68
|
-
export declare function deleteSharedTask(workDir: string, taskId: string
|
|
81
|
+
export declare function deleteSharedTask(workDir: string, taskId: string, opts?: {
|
|
82
|
+
actor?: string;
|
|
83
|
+
}): boolean;
|
|
69
84
|
export {};
|
|
70
85
|
//# sourceMappingURL=sharedTasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedTasks.d.ts","sourceRoot":"","sources":["../../src/agent/sharedTasks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sharedTasks.d.ts","sourceRoot":"","sources":["../../src/agent/sharedTasks.ts"],"names":[],"mappings":"AA+DA,OAAO,EAAE,YAAY,IAAI,QAAQ,EAAE,aAAa,IAAI,SAAS,EAAqC,MAAM,cAAc,CAAC;AAEvH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,4HAA4H;IAC5H,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8HAA8H;IAC9H,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD,iBAAS,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAe1D;AAED,4GAA4G;AAC5G,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAG/D;AAED,0IAA0I;AAC1I,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAe7D;AAED,sJAAsJ;AACtJ,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAC/C,UAAU,CAcZ;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,CAAA;CAAE,CAAC;AAEvF;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC,WAAW,CAAC,CAiDtB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,WAAW,CAAC,CA8CtB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;CAQhC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAexG"}
|
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports._sharedTasksInternal = void 0;
|
|
37
|
+
exports.isClaimAbandoned = isClaimAbandoned;
|
|
37
38
|
exports.listSharedTasks = listSharedTasks;
|
|
38
39
|
exports.createSharedTask = createSharedTask;
|
|
39
40
|
exports.claimTask = claimTask;
|
|
@@ -95,10 +96,14 @@ exports.deleteSharedTask = deleteSharedTask;
|
|
|
95
96
|
* same race-free claim path above.
|
|
96
97
|
*/
|
|
97
98
|
const fs = __importStar(require("fs"));
|
|
98
|
-
const os = __importStar(require("os"));
|
|
99
99
|
const path = __importStar(require("path"));
|
|
100
100
|
const crypto = __importStar(require("crypto"));
|
|
101
101
|
const crossProcessLock_1 = require("./crossProcessLock");
|
|
102
|
+
// taskEvents owns the scope-directory hash — one canonical function, so this
|
|
103
|
+
// module's task files and its event log always land in the same directory
|
|
104
|
+
// without importing the mutators back (the dependency arrow points THIS WAY
|
|
105
|
+
// only: sharedTasks → taskEvents, never the reverse).
|
|
106
|
+
const taskEvents_1 = require("./taskEvents");
|
|
102
107
|
// A claim older than this with no update is treated the same as a dead-pid
|
|
103
108
|
// claim — reclaimable. Longer than crossProcessLock's STALE_MS (that guards a
|
|
104
109
|
// single tool call; this guards an entire unit of work a session might
|
|
@@ -121,15 +126,8 @@ const CLAIM_STALE_MS = 30 * 60 * 1000; // 30 minutes
|
|
|
121
126
|
// mode of "wait a couple seconds longer to reclaim a genuinely dead claim" is
|
|
122
127
|
// far cheaper than "two sessions think they both own the same unit of work".
|
|
123
128
|
const MIN_CLAIM_AGE_FOR_DEATH_CHECK_MS = 2000;
|
|
124
|
-
function tasksRoot() {
|
|
125
|
-
return process.env.NEXRALL_SHARED_TASKS_DIR || path.join(os.homedir(), '.nexrall', 'peers', 'tasks');
|
|
126
|
-
}
|
|
127
|
-
function scopeDir(workDir) {
|
|
128
|
-
const hash = crypto.createHash('sha256').update(path.resolve(workDir)).digest('hex').slice(0, 24);
|
|
129
|
-
return path.join(tasksRoot(), hash);
|
|
130
|
-
}
|
|
131
129
|
function taskPath(workDir, taskId) {
|
|
132
|
-
return path.join(
|
|
130
|
+
return path.join((0, taskEvents_1.taskScopeDir)(workDir), `${taskId}.json`);
|
|
133
131
|
}
|
|
134
132
|
function readTask(workDir, taskId) {
|
|
135
133
|
try {
|
|
@@ -143,7 +141,7 @@ function readTask(workDir, taskId) {
|
|
|
143
141
|
}
|
|
144
142
|
}
|
|
145
143
|
function writeTask(workDir, task) {
|
|
146
|
-
const dir =
|
|
144
|
+
const dir = (0, taskEvents_1.taskScopeDir)(workDir);
|
|
147
145
|
fs.mkdirSync(dir, { recursive: true });
|
|
148
146
|
const p = taskPath(workDir, task.id);
|
|
149
147
|
// Same atomic-write-via-temp-then-rename reasoning as core's
|
|
@@ -162,7 +160,15 @@ function isPidAlive(pid) {
|
|
|
162
160
|
return false;
|
|
163
161
|
}
|
|
164
162
|
}
|
|
165
|
-
/**
|
|
163
|
+
/**
|
|
164
|
+
* A claimed task whose owning process is gone, or whose claim has gone stale with
|
|
165
|
+
* no update, is treated as abandoned.
|
|
166
|
+
*
|
|
167
|
+
* Public because more than the claim path itself needs this verdict: `nex tasks`
|
|
168
|
+
* prints it — a board that shows a dead claim as plainly "in progress" is lying
|
|
169
|
+
* about what a session would actually be allowed to take — and any UI that
|
|
170
|
+
* renders `in_progress` should ask this rather than re-deriving the rule.
|
|
171
|
+
*/
|
|
166
172
|
function isClaimAbandoned(task) {
|
|
167
173
|
if (task.status !== 'in_progress')
|
|
168
174
|
return false;
|
|
@@ -189,7 +195,7 @@ function isUnblocked(workDir, task) {
|
|
|
189
195
|
function listSharedTasks(workDir) {
|
|
190
196
|
let entries;
|
|
191
197
|
try {
|
|
192
|
-
entries = fs.readdirSync(
|
|
198
|
+
entries = fs.readdirSync((0, taskEvents_1.taskScopeDir)(workDir));
|
|
193
199
|
}
|
|
194
200
|
catch {
|
|
195
201
|
return [];
|
|
@@ -218,14 +224,19 @@ function createSharedTask(workDir, content, opts = {}) {
|
|
|
218
224
|
updatedAt: now,
|
|
219
225
|
};
|
|
220
226
|
writeTask(workDir, task);
|
|
227
|
+
(0, taskEvents_1.emitTaskEvent)((0, taskEvents_1.taskScopeDir)(workDir), { type: 'created', taskId: task.id, subject: task.content });
|
|
221
228
|
return task;
|
|
222
229
|
}
|
|
223
230
|
/**
|
|
224
231
|
* Atomically claim `taskId` for `claimedBy` (a peer/session name). Race-free
|
|
225
232
|
* against another process calling this at the same instant — see this
|
|
226
233
|
* module's header comment for exactly why.
|
|
234
|
+
*
|
|
235
|
+
* `opts.trackPid` (default true) records `process.pid` so a crashed session's
|
|
236
|
+
* claim is detectable. Pass false for a claim typed from a short-lived shell
|
|
237
|
+
* process (`nex tasks claim`) — see the spread comment in the body.
|
|
227
238
|
*/
|
|
228
|
-
async function claimTask(workDir, taskId, claimedBy) {
|
|
239
|
+
async function claimTask(workDir, taskId, claimedBy, opts = {}) {
|
|
229
240
|
// Lock scoped to (workDir, taskId) specifically — via crossProcessLock's
|
|
230
241
|
// opaque-key + workDir scoping (see its own header) — so claiming task A
|
|
231
242
|
// never blocks a concurrent claim of unrelated task B in the same project.
|
|
@@ -249,11 +260,25 @@ async function claimTask(workDir, taskId, claimedBy) {
|
|
|
249
260
|
...task,
|
|
250
261
|
status: 'in_progress',
|
|
251
262
|
claimedBy,
|
|
252
|
-
|
|
263
|
+
// A session that claims through the task tools records its pid so a crash
|
|
264
|
+
// is detectable (isClaimAbandoned's liveness check). A claim typed from a
|
|
265
|
+
// one-shot shell (`nex tasks claim`) passes trackPid: false: that process
|
|
266
|
+
// exits milliseconds later, and a dead pid would make a perfectly valid
|
|
267
|
+
// human-held claim look abandoned almost immediately (after only
|
|
268
|
+
// MIN_CLAIM_AGE_FOR_DEATH_CHECK_MS). Without a pid the claim rests on the
|
|
269
|
+
// CLAIM_STALE_MS window alone. `undefined` also CLEARS any pid left by an
|
|
270
|
+
// abandoned claim being re-claimed (JSON.stringify drops the key).
|
|
271
|
+
...(opts.trackPid === false ? { claimedByPid: undefined } : { claimedByPid: process.pid }),
|
|
253
272
|
claimedAt: now,
|
|
254
273
|
updatedAt: now,
|
|
255
274
|
};
|
|
256
275
|
writeTask(workDir, updated);
|
|
276
|
+
(0, taskEvents_1.emitTaskEvent)((0, taskEvents_1.taskScopeDir)(workDir), {
|
|
277
|
+
type: 'claimed',
|
|
278
|
+
taskId: updated.id,
|
|
279
|
+
subject: updated.content,
|
|
280
|
+
actor: claimedBy,
|
|
281
|
+
});
|
|
257
282
|
return { ok: true, task: updated };
|
|
258
283
|
}, workDir);
|
|
259
284
|
}
|
|
@@ -285,12 +310,31 @@ async function updateSharedTaskStatus(workDir, taskId, status, opts = {}) {
|
|
|
285
310
|
: {}),
|
|
286
311
|
};
|
|
287
312
|
writeTask(workDir, updated);
|
|
313
|
+
// Emit only on a real transition: calling `done` on an already-completed
|
|
314
|
+
// task is a no-op write (existing behaviour, kept), and a no-op must not
|
|
315
|
+
// fire an event — every other session would get a duplicate notification
|
|
316
|
+
// for a state that did not change.
|
|
317
|
+
if (task.status !== status) {
|
|
318
|
+
const type = status === 'completed'
|
|
319
|
+
? 'completed'
|
|
320
|
+
: status === 'in_progress'
|
|
321
|
+
? 'claimed'
|
|
322
|
+
: task.status === 'completed'
|
|
323
|
+
? 'reopened'
|
|
324
|
+
: 'released';
|
|
325
|
+
(0, taskEvents_1.emitTaskEvent)((0, taskEvents_1.taskScopeDir)(workDir), {
|
|
326
|
+
type,
|
|
327
|
+
taskId: updated.id,
|
|
328
|
+
subject: updated.content,
|
|
329
|
+
actor: opts.claimedBy ?? task.claimedBy,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
288
332
|
return { ok: true, task: updated };
|
|
289
333
|
}, workDir);
|
|
290
334
|
}
|
|
291
335
|
exports._sharedTasksInternal = {
|
|
292
|
-
tasksRoot,
|
|
293
|
-
scopeDir,
|
|
336
|
+
tasksRoot: taskEvents_1.taskScopeRoot,
|
|
337
|
+
scopeDir: taskEvents_1.taskScopeDir,
|
|
294
338
|
taskPath,
|
|
295
339
|
isClaimAbandoned,
|
|
296
340
|
isUnblocked,
|
|
@@ -303,9 +347,17 @@ exports._sharedTasksInternal = {
|
|
|
303
347
|
* model as the tool's error; so "no task remains" is the observable contract of a veto,
|
|
304
348
|
* and this is the only place that needs to make it true.
|
|
305
349
|
*/
|
|
306
|
-
function deleteSharedTask(workDir, taskId) {
|
|
350
|
+
function deleteSharedTask(workDir, taskId, opts = {}) {
|
|
351
|
+
// Read BEFORE unlinking: the `removed` event is the only place outside the
|
|
352
|
+
// task file that can still carry the subject, and a watcher rendering
|
|
353
|
+
// "[id] was removed" with no subject would send people looking for a task
|
|
354
|
+
// that no longer exists to explain itself.
|
|
355
|
+
const task = readTask(workDir, taskId);
|
|
307
356
|
try {
|
|
308
357
|
fs.unlinkSync(taskPath(workDir, taskId));
|
|
358
|
+
if (task) {
|
|
359
|
+
(0, taskEvents_1.emitTaskEvent)((0, taskEvents_1.taskScopeDir)(workDir), { type: 'removed', taskId, subject: task.content, actor: opts.actor });
|
|
360
|
+
}
|
|
309
361
|
return true;
|
|
310
362
|
}
|
|
311
363
|
catch {
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { SharedTask } from './sharedTasks';
|
|
2
|
+
export type TaskEventType = 'created' | 'claimed' | 'released' | 'reopened' | 'completed' | 'removed';
|
|
3
|
+
export interface TaskEvent {
|
|
4
|
+
/** Milliseconds since epoch, from the mutating process's clock. */
|
|
5
|
+
ts: number;
|
|
6
|
+
type: TaskEventType;
|
|
7
|
+
taskId: string;
|
|
8
|
+
/** The task's subject at the time of the event — the only place a `removed` event can carry it. */
|
|
9
|
+
subject: string;
|
|
10
|
+
/** Who performed it: a claim name (`shell:henry`, a peer name); absent when the caller had no identity. */
|
|
11
|
+
actor?: string;
|
|
12
|
+
/** pid of the mutating process; readers use it to skip their own actions. */
|
|
13
|
+
pid: number;
|
|
14
|
+
}
|
|
15
|
+
/** The root directory all board scopes live under (env-overridable — tests redirect it). */
|
|
16
|
+
export declare function taskScopeRoot(): string;
|
|
17
|
+
/** The board scope directory for a project — one per resolved workDir, shared by every process. */
|
|
18
|
+
export declare function taskScopeDir(workDir: string): string;
|
|
19
|
+
export declare function taskEventsFile(workDir: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Append one event to the board's log. Called by every mutator in sharedTasks
|
|
22
|
+
* right after its atomic write lands. Best-effort by contract: a failure here
|
|
23
|
+
* must NEVER surface to the caller — the mutation itself already succeeded.
|
|
24
|
+
*/
|
|
25
|
+
export declare function emitTaskEvent(dir: string, event: Omit<TaskEvent, 'ts' | 'pid'> & {
|
|
26
|
+
ts?: number;
|
|
27
|
+
pid?: number;
|
|
28
|
+
}): void;
|
|
29
|
+
declare function eventsFileIn(dir: string): string;
|
|
30
|
+
export interface TakeTaskEventsOptions {
|
|
31
|
+
/** Disambiguates readers that share a process (two VS Code panels on one workspace). */
|
|
32
|
+
sessionKey?: string;
|
|
33
|
+
/** Override for tests; defaults to this process's pid. */
|
|
34
|
+
selfPid?: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* New events for this reader — everything appended since the last call, minus
|
|
38
|
+
* this process's own writes. The FIRST call for a (scope, session) adopts the
|
|
39
|
+
* current end of the log and returns nothing: events describe change relative
|
|
40
|
+
* to when you started looking, never the board's backstory.
|
|
41
|
+
*/
|
|
42
|
+
export declare function takeNewTaskEvents(workDir: string, opts?: TakeTaskEventsOptions): TaskEvent[];
|
|
43
|
+
export interface TaskEventNote {
|
|
44
|
+
event: TaskEvent;
|
|
45
|
+
/** The text injected into the receiving session's conversation. */
|
|
46
|
+
text: string;
|
|
47
|
+
/** Deps this event just unblocked (`completed` only) — also handed to the receiving session's TaskUpdated hooks. */
|
|
48
|
+
unblocked: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Turn raw events into model-bound notes — but only for the events that
|
|
52
|
+
* actually changed what somebody can DO, because the rest are board gossip:
|
|
53
|
+
*
|
|
54
|
+
* completed → every open task waiting on it is now unblocked (or one dep
|
|
55
|
+
* closer), for whoever gets there first;
|
|
56
|
+
* reopened → the reverse: waiting tasks are stuck again;
|
|
57
|
+
* removed → waiting tasks are stuck FOREVER (a dep that can never
|
|
58
|
+
* complete) unless it comes back — the one case the board
|
|
59
|
+
* itself cannot express, since the task file is gone.
|
|
60
|
+
*
|
|
61
|
+
* created / claimed / released produce no note: they change no one's options
|
|
62
|
+
* (released → the task is pending again, which its `blockedBy` already gates).
|
|
63
|
+
* Hooks still see every event — the matcher decides — but the model only gets
|
|
64
|
+
* told about consequences.
|
|
65
|
+
*/
|
|
66
|
+
export declare function formatTaskEventNotes(events: TaskEvent[], tasks: SharedTask[]): TaskEventNote[];
|
|
67
|
+
/** Test-only handles — the cursor map is module state and must be observable/resettable. */
|
|
68
|
+
export declare const _taskEventsInternal: {
|
|
69
|
+
_cursors: Map<string, number>;
|
|
70
|
+
eventsFileIn: typeof eventsFileIn;
|
|
71
|
+
};
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=taskEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskEvents.d.ts","sourceRoot":"","sources":["../../src/agent/taskEvents.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAEtG,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;CACb;AAWD,4FAA4F;AAC5F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAWrH;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAOD,MAAM,WAAW,qBAAqB;IACpC,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,SAAS,EAAE,CAgEhG;AAID,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,oHAAoH;IACpH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAkD9F;AAWD,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports._taskEventsInternal = void 0;
|
|
37
|
+
exports.taskScopeRoot = taskScopeRoot;
|
|
38
|
+
exports.taskScopeDir = taskScopeDir;
|
|
39
|
+
exports.taskEventsFile = taskEventsFile;
|
|
40
|
+
exports.emitTaskEvent = emitTaskEvent;
|
|
41
|
+
exports.takeNewTaskEvents = takeNewTaskEvents;
|
|
42
|
+
exports.formatTaskEventNotes = formatTaskEventNotes;
|
|
43
|
+
/**
|
|
44
|
+
* Task board events — the notification side of the shared task list
|
|
45
|
+
* (@see ./sharedTasks.ts for the board itself).
|
|
46
|
+
*
|
|
47
|
+
* WHY THIS EXISTS: the board is a directory of files, so a change made by one
|
|
48
|
+
* session becomes visible to every other session the moment it lands — and
|
|
49
|
+
* visibility with no signal is a poll tax. The concrete failure it removes:
|
|
50
|
+
* session B creates "write the release notes" blocked by "cut the release",
|
|
51
|
+
* session A runs `nex tasks done cut-the-release` (or its own tool call), and
|
|
52
|
+
* B — sitting at its prompt or mid-turn — has no way to learn its task just
|
|
53
|
+
* became claimable except by re-listing the board on a hunch. Claude Code's
|
|
54
|
+
* agent teams has no cross-session signal at all: teammates learn about each
|
|
55
|
+
* other's progress only by polling the task files.
|
|
56
|
+
*
|
|
57
|
+
* HOW: every mutation appends one JSON line to `events.jsonl` in the board
|
|
58
|
+
* scope directory (same directory as the task files; `listSharedTasks` skips
|
|
59
|
+
* it — it only reads `*.json`). Readers keep a per-(scope, session) BYTE
|
|
60
|
+
* cursor and pull what is new; there is no watcher, no socket and no queue,
|
|
61
|
+
* which is what lets the same mechanism work no matter who made the change —
|
|
62
|
+
* a tool call inside another interactive session, a headless `nex --bg` run,
|
|
63
|
+
* a VS Code window, or a person typing `nex tasks done` in a shell.
|
|
64
|
+
*
|
|
65
|
+
* DELIVERY SEMANTICS, on purpose:
|
|
66
|
+
* • A reader adopts the CURRENT end of the file the first time it looks, so
|
|
67
|
+
* a fresh session is never handed a replay of the board's history — the
|
|
68
|
+
* board STATE is what tools read; events are only about what changed
|
|
69
|
+
* while you were watching. (chat.ts primes the cursor at session start —
|
|
70
|
+
* see the takeNewTaskEvents call next to its CheckpointManager — rather
|
|
71
|
+
* than letting the first in-loop drain anchor, so an event that lands
|
|
72
|
+
* while the session's opening request is in flight is still delivered.)
|
|
73
|
+
* • A session never hears about its own actions: events carry the writing
|
|
74
|
+
* process's pid and readers drop their own pid. (Frame: events are
|
|
75
|
+
* notifications from OTHER processes. Within one process, e.g. two VS
|
|
76
|
+
* Code chat panels on the same workspace, the panel that made a change
|
|
77
|
+
* will not self-notify — its own tool result already said what happened.)
|
|
78
|
+
* • A torn line (a reader racing a writer mid-append) is never half-parsed:
|
|
79
|
+
* the cursor only advances past the last complete line.
|
|
80
|
+
*
|
|
81
|
+
* The module must never make a board mutation fail — every write here is
|
|
82
|
+
* best-effort and swallows its own errors. The board is the product; the
|
|
83
|
+
* events are a courtesy on top of it.
|
|
84
|
+
*/
|
|
85
|
+
const crypto = __importStar(require("crypto"));
|
|
86
|
+
const fs = __importStar(require("fs"));
|
|
87
|
+
const os = __importStar(require("os"));
|
|
88
|
+
const path = __importStar(require("path"));
|
|
89
|
+
// ─── scope ────────────────────────────────────────────────────────────────────
|
|
90
|
+
// Moved here (from sharedTasks.ts) so this module can address the board
|
|
91
|
+
// directory without importing the mutators — one canonical hash, no cycle:
|
|
92
|
+
// sharedTasks imports THIS module, never the other way round.
|
|
93
|
+
function tasksRoot() {
|
|
94
|
+
return process.env.NEXRALL_SHARED_TASKS_DIR || path.join(os.homedir(), '.nexrall', 'peers', 'tasks');
|
|
95
|
+
}
|
|
96
|
+
/** The root directory all board scopes live under (env-overridable — tests redirect it). */
|
|
97
|
+
function taskScopeRoot() {
|
|
98
|
+
return tasksRoot();
|
|
99
|
+
}
|
|
100
|
+
/** The board scope directory for a project — one per resolved workDir, shared by every process. */
|
|
101
|
+
function taskScopeDir(workDir) {
|
|
102
|
+
const hash = crypto.createHash('sha256').update(path.resolve(workDir)).digest('hex').slice(0, 24);
|
|
103
|
+
return path.join(tasksRoot(), hash);
|
|
104
|
+
}
|
|
105
|
+
function taskEventsFile(workDir) {
|
|
106
|
+
return path.join(taskScopeDir(workDir), 'events.jsonl');
|
|
107
|
+
}
|
|
108
|
+
// ─── write ────────────────────────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* Append one event to the board's log. Called by every mutator in sharedTasks
|
|
111
|
+
* right after its atomic write lands. Best-effort by contract: a failure here
|
|
112
|
+
* must NEVER surface to the caller — the mutation itself already succeeded.
|
|
113
|
+
*/
|
|
114
|
+
function emitTaskEvent(dir, event) {
|
|
115
|
+
try {
|
|
116
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
117
|
+
const line = JSON.stringify({ ...event, ts: event.ts ?? Date.now(), pid: event.pid ?? process.pid }) + '\n';
|
|
118
|
+
// One appendFileSync per event: O_APPEND, so concurrent writers cannot
|
|
119
|
+
// overwrite each other, and a single small write lands whole (readers
|
|
120
|
+
// still guard against the torn-line case rather than trusting that).
|
|
121
|
+
fs.appendFileSync(eventsFileIn(dir), line);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
/* courtesy, not contract */
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function eventsFileIn(dir) {
|
|
128
|
+
return path.join(dir, 'events.jsonl');
|
|
129
|
+
}
|
|
130
|
+
// ─── read ─────────────────────────────────────────────────────────────────────
|
|
131
|
+
/** Per-(scope, session) byte cursors, in memory: a process restarts → a session restarts. */
|
|
132
|
+
const _cursors = new Map();
|
|
133
|
+
/**
|
|
134
|
+
* New events for this reader — everything appended since the last call, minus
|
|
135
|
+
* this process's own writes. The FIRST call for a (scope, session) adopts the
|
|
136
|
+
* current end of the log and returns nothing: events describe change relative
|
|
137
|
+
* to when you started looking, never the board's backstory.
|
|
138
|
+
*/
|
|
139
|
+
function takeNewTaskEvents(workDir, opts = {}) {
|
|
140
|
+
const dir = taskScopeDir(workDir);
|
|
141
|
+
const key = `${dir}|${opts.sessionKey ?? ''}`;
|
|
142
|
+
const file = eventsFileIn(dir);
|
|
143
|
+
let size;
|
|
144
|
+
try {
|
|
145
|
+
size = fs.statSync(file).size;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// No log yet. Still ANCHOR (at zero): the file appearing later is exactly
|
|
149
|
+
// the "new events" case — without this, a brand-new board's first activity
|
|
150
|
+
// would be adopted-away by the next call's first-sight rule.
|
|
151
|
+
if (!_cursors.has(key))
|
|
152
|
+
_cursors.set(key, 0);
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
const from = _cursors.get(key);
|
|
156
|
+
if (from === undefined) {
|
|
157
|
+
_cursors.set(key, size);
|
|
158
|
+
return [];
|
|
159
|
+
}
|
|
160
|
+
if (size <= from) {
|
|
161
|
+
// Equal: nothing new. Shrunk: the log was replaced under us (someone
|
|
162
|
+
// cleared the scope directory) — re-anchor rather than replay, the only
|
|
163
|
+
// two options that cannot double-deliver.
|
|
164
|
+
if (size < from)
|
|
165
|
+
_cursors.set(key, size);
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
const length = size - from;
|
|
169
|
+
let buf;
|
|
170
|
+
try {
|
|
171
|
+
const fd = fs.openSync(file, 'r');
|
|
172
|
+
try {
|
|
173
|
+
buf = Buffer.alloc(length);
|
|
174
|
+
const read = fs.readSync(fd, buf, 0, length, from);
|
|
175
|
+
if (read < length)
|
|
176
|
+
buf = buf.subarray(0, read);
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
fs.closeSync(fd);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
// Only advance past the last COMPLETE line — a writer may be mid-append.
|
|
186
|
+
const lastNewline = buf.lastIndexOf(0x0a);
|
|
187
|
+
if (lastNewline === -1)
|
|
188
|
+
return [];
|
|
189
|
+
const complete = buf.subarray(0, lastNewline + 1);
|
|
190
|
+
_cursors.set(key, from + complete.length);
|
|
191
|
+
const selfPid = opts.selfPid ?? process.pid;
|
|
192
|
+
const events = [];
|
|
193
|
+
for (const line of complete.toString('utf-8').split('\n')) {
|
|
194
|
+
if (!line.trim())
|
|
195
|
+
continue;
|
|
196
|
+
try {
|
|
197
|
+
const ev = JSON.parse(line);
|
|
198
|
+
if (ev && typeof ev.taskId === 'string' && typeof ev.type === 'string' && typeof ev.subject === 'string') {
|
|
199
|
+
events.push(ev);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
/* a corrupt line is skipped, never fatal */
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return events.filter((ev) => ev.pid !== selfPid);
|
|
207
|
+
}
|
|
208
|
+
/** Deps of `task` still NOT completed, given the live board. */
|
|
209
|
+
function unmetDeps(task, byId) {
|
|
210
|
+
return (task.blockedBy ?? []).filter((id) => byId.get(id)?.status !== 'completed');
|
|
211
|
+
}
|
|
212
|
+
function quoteRef(id, content) {
|
|
213
|
+
const subject = content.replace(/\s+/g, ' ').trim();
|
|
214
|
+
return `[${id}] "${subject.length > 80 ? subject.slice(0, 79) + '…' : subject}"`;
|
|
215
|
+
}
|
|
216
|
+
function quote(t) {
|
|
217
|
+
return quoteRef(t.id, t.content);
|
|
218
|
+
}
|
|
219
|
+
/** An event carries the subject directly — the task file may already be gone (removed). */
|
|
220
|
+
function quoteEvent(e) {
|
|
221
|
+
return quoteRef(e.taskId, e.subject);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Turn raw events into model-bound notes — but only for the events that
|
|
225
|
+
* actually changed what somebody can DO, because the rest are board gossip:
|
|
226
|
+
*
|
|
227
|
+
* completed → every open task waiting on it is now unblocked (or one dep
|
|
228
|
+
* closer), for whoever gets there first;
|
|
229
|
+
* reopened → the reverse: waiting tasks are stuck again;
|
|
230
|
+
* removed → waiting tasks are stuck FOREVER (a dep that can never
|
|
231
|
+
* complete) unless it comes back — the one case the board
|
|
232
|
+
* itself cannot express, since the task file is gone.
|
|
233
|
+
*
|
|
234
|
+
* created / claimed / released produce no note: they change no one's options
|
|
235
|
+
* (released → the task is pending again, which its `blockedBy` already gates).
|
|
236
|
+
* Hooks still see every event — the matcher decides — but the model only gets
|
|
237
|
+
* told about consequences.
|
|
238
|
+
*/
|
|
239
|
+
function formatTaskEventNotes(events, tasks) {
|
|
240
|
+
const byId = new Map(tasks.map((t) => [t.id, t]));
|
|
241
|
+
const open = tasks.filter((t) => t.status !== 'completed');
|
|
242
|
+
const notes = [];
|
|
243
|
+
for (const event of events) {
|
|
244
|
+
if (event.type !== 'completed' && event.type !== 'reopened' && event.type !== 'removed')
|
|
245
|
+
continue;
|
|
246
|
+
const waiters = open.filter((t) => t.id !== event.taskId && (t.blockedBy ?? []).includes(event.taskId));
|
|
247
|
+
if (!waiters.length)
|
|
248
|
+
continue;
|
|
249
|
+
const actor = event.actor ? ` by ${event.actor}` : '';
|
|
250
|
+
if (event.type === 'completed') {
|
|
251
|
+
const nowFree = [];
|
|
252
|
+
const stillStuck = [];
|
|
253
|
+
for (const t of waiters) {
|
|
254
|
+
(unmetDeps(t, byId).length === 0 ? nowFree : stillStuck).push(quote(t));
|
|
255
|
+
}
|
|
256
|
+
const lines = [`Task ${quoteEvent(event)} was completed${actor}.`];
|
|
257
|
+
if (nowFree.length) {
|
|
258
|
+
lines.push(`Now unblocked: ${nowFree.join(', ')} — claim${nowFree.length === 1 ? ' it' : ' them'} when ready.`);
|
|
259
|
+
}
|
|
260
|
+
if (stillStuck.length) {
|
|
261
|
+
lines.push(`Still waiting on other tasks: ${stillStuck.join(', ')}.`);
|
|
262
|
+
}
|
|
263
|
+
notes.push({
|
|
264
|
+
event,
|
|
265
|
+
text: envelope(lines.join('\n')),
|
|
266
|
+
unblocked: waiters.filter((t) => unmetDeps(t, byId).length === 0).map((t) => t.id),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
else if (event.type === 'reopened') {
|
|
270
|
+
notes.push({
|
|
271
|
+
event,
|
|
272
|
+
text: envelope(`Task ${quoteEvent(event)} was reopened${actor} — it must be completed again before: ${waiters.map(quote).join(', ')}.`),
|
|
273
|
+
unblocked: [],
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
notes.push({
|
|
278
|
+
event,
|
|
279
|
+
text: envelope(`Task ${quoteEvent(event)} was removed${actor} while ${waiters.map(quote).join(', ')} still ${waiters.length === 1 ? 'waits' : 'wait'} on it. A removed task can never complete, so those stay blocked until it is recreated (or they are re-created without it).`),
|
|
280
|
+
unblocked: [],
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return notes;
|
|
285
|
+
}
|
|
286
|
+
function envelope(body) {
|
|
287
|
+
return (`<task-event source="shared-tasks">\n` +
|
|
288
|
+
`${body}\n` +
|
|
289
|
+
`This is an automated notification, not a message from the user.\n` +
|
|
290
|
+
`</task-event>`);
|
|
291
|
+
}
|
|
292
|
+
/** Test-only handles — the cursor map is module state and must be observable/resettable. */
|
|
293
|
+
exports._taskEventsInternal = {
|
|
294
|
+
_cursors,
|
|
295
|
+
eventsFileIn,
|
|
296
|
+
};
|
|
297
|
+
//# sourceMappingURL=taskEvents.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export * from './agent/crossProcessLock';
|
|
|
41
41
|
export * from './agent/worktree';
|
|
42
42
|
export * from './agent/worktreeEnforcement';
|
|
43
43
|
export * from './agent/sharedTasks';
|
|
44
|
+
export * from './agent/taskEvents';
|
|
44
45
|
export * from './agent/peerRegistry';
|
|
45
46
|
export * from './agent/peerTransport';
|
|
46
47
|
export * from './agent/askOnce';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -57,6 +57,7 @@ __exportStar(require("./agent/crossProcessLock"), exports);
|
|
|
57
57
|
__exportStar(require("./agent/worktree"), exports);
|
|
58
58
|
__exportStar(require("./agent/worktreeEnforcement"), exports);
|
|
59
59
|
__exportStar(require("./agent/sharedTasks"), exports);
|
|
60
|
+
__exportStar(require("./agent/taskEvents"), exports);
|
|
60
61
|
__exportStar(require("./agent/peerRegistry"), exports);
|
|
61
62
|
__exportStar(require("./agent/peerTransport"), exports);
|
|
62
63
|
__exportStar(require("./agent/askOnce"), exports);
|
package/dist/tools/executor.d.ts
CHANGED
|
@@ -29,6 +29,12 @@ export declare function runCapture(cmd: string, args: string[], opts: {
|
|
|
29
29
|
timeout: number;
|
|
30
30
|
maxBuffer: number;
|
|
31
31
|
}): Promise<CaptureResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Path of the ripgrep binary this process would use — the NEXRALL_RG_PATH override, `rg`
|
|
34
|
+
* from PATH, or an editor-bundled copy — or undefined when the grep fallback is in charge.
|
|
35
|
+
* `nex doctor` reports through this so its verdict matches what the search tools do.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveRipgrepBinary(): string | undefined;
|
|
32
38
|
/**
|
|
33
39
|
* Glob → anchored RegExp. Scans the pattern once, so the `*` / `?` rules can never
|
|
34
40
|
* rewrite the regex emitted for `**` (the old chained .replace() calls turned
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/tools/executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAyuCtE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,MAAM,CAgBpG;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AACD,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,aAAa,CAAC,CAmDxB;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/tools/executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAyuCtE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,MAAM,CAgBpG;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AACD,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,aAAa,CAAC,CAmDxB;AAqID;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAEzD;AA2zCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuCnD;AAq8BD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,WAAW,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAMlC,QAAQ,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC,OAAO,CAAC,UAAU,CAAC,CAmCrB"}
|
package/dist/tools/executor.js
CHANGED
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.capExternalOutput = capExternalOutput;
|
|
37
37
|
exports.runCapture = runCapture;
|
|
38
|
+
exports.resolveRipgrepBinary = resolveRipgrepBinary;
|
|
38
39
|
exports.globToRegex = globToRegex;
|
|
39
40
|
exports.executeTool = executeTool;
|
|
40
41
|
const fs = __importStar(require("fs"));
|
|
@@ -1314,18 +1315,119 @@ function runCapture(cmd, args, opts) {
|
|
|
1314
1315
|
}
|
|
1315
1316
|
// Detect ripgrep once per process — preferred over grep (faster, respects .gitignore).
|
|
1316
1317
|
//
|
|
1317
|
-
// Binary resolution
|
|
1318
|
-
//
|
|
1319
|
-
//
|
|
1320
|
-
//
|
|
1318
|
+
// Binary resolution, in order:
|
|
1319
|
+
// 1. NEXRALL_RG_PATH (the VS Code extension points it at its own bundled rg),
|
|
1320
|
+
// 2. `rg` on PATH,
|
|
1321
|
+
// 3. the copy bundled inside every VS Code-family editor — the one ripgrep most dev
|
|
1322
|
+
// machines actually have, even when nothing put it on PATH. Layouts differ by
|
|
1323
|
+
// editor and version (asar.unpacked vs plain node_modules, per-arch subdir), so
|
|
1324
|
+
// probe a short list of known shapes instead of trusting any single path,
|
|
1325
|
+
// 4. common user-install dirs (Homebrew, cargo, /usr/local, snap).
|
|
1326
|
+
// Before the editor probe, a machine with no rg on PATH silently fell back to grep and
|
|
1327
|
+
// a full, ignore-unaware directory walk even though an editor next door shipped rg 15.
|
|
1321
1328
|
let _rgChecked = false;
|
|
1322
1329
|
let _rgAvailable = false;
|
|
1323
1330
|
let _rgBin = 'rg';
|
|
1331
|
+
/** One editor's bundled-ripgrep candidates, given its `Resources/app`-equivalent dir. */
|
|
1332
|
+
function bundledRipgrepPaths(appDir, platform, arch) {
|
|
1333
|
+
const exe = platform === 'win32' ? 'rg.exe' : 'rg';
|
|
1334
|
+
const other = arch === 'arm64' ? 'x64' : 'arm64';
|
|
1335
|
+
const out = [];
|
|
1336
|
+
for (const nm of ['node_modules.asar.unpacked', 'node_modules']) {
|
|
1337
|
+
out.push(path.join(appDir, nm, '@vscode', 'ripgrep', 'bin', exe));
|
|
1338
|
+
for (const tag of [`${platform}-${arch}`, `${platform}-${other}`]) {
|
|
1339
|
+
out.push(path.join(appDir, nm, '@vscode', 'ripgrep-universal', 'bin', tag, exe));
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
return out;
|
|
1343
|
+
}
|
|
1344
|
+
function listDirsSafe(dir) {
|
|
1345
|
+
try {
|
|
1346
|
+
return fs
|
|
1347
|
+
.readdirSync(dir, { withFileTypes: true })
|
|
1348
|
+
.filter((d) => d.isDirectory())
|
|
1349
|
+
.map((d) => d.name);
|
|
1350
|
+
}
|
|
1351
|
+
catch {
|
|
1352
|
+
return [];
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
function editorRipgrepCandidates(platform, arch) {
|
|
1356
|
+
const out = [];
|
|
1357
|
+
if (platform === 'darwin') {
|
|
1358
|
+
const apps = [
|
|
1359
|
+
'Visual Studio Code.app',
|
|
1360
|
+
'Visual Studio Code - Insiders.app',
|
|
1361
|
+
'VSCodium.app',
|
|
1362
|
+
'Cursor.app',
|
|
1363
|
+
'Windsurf.app',
|
|
1364
|
+
'Antigravity IDE.app',
|
|
1365
|
+
];
|
|
1366
|
+
for (const root of ['/Applications', path.join(os.homedir(), 'Applications')]) {
|
|
1367
|
+
for (const app of apps) {
|
|
1368
|
+
out.push(...bundledRipgrepPaths(path.join(root, app, 'Contents', 'Resources', 'app'), platform, arch));
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
else if (platform === 'win32') {
|
|
1373
|
+
const appDirs = [];
|
|
1374
|
+
if (process.env.LOCALAPPDATA) {
|
|
1375
|
+
appDirs.push(path.join(process.env.LOCALAPPDATA, 'Programs', 'Microsoft VS Code'));
|
|
1376
|
+
}
|
|
1377
|
+
if (process.env.ProgramFiles) {
|
|
1378
|
+
appDirs.push(path.join(process.env.ProgramFiles, 'Microsoft VS Code'));
|
|
1379
|
+
}
|
|
1380
|
+
appDirs.push(path.join(os.homedir(), 'AppData', 'Local', 'Programs', 'Microsoft VS Code'));
|
|
1381
|
+
for (const dir of appDirs)
|
|
1382
|
+
out.push(...bundledRipgrepPaths(path.join(dir, 'resources', 'app'), platform, arch));
|
|
1383
|
+
}
|
|
1384
|
+
else {
|
|
1385
|
+
for (const root of ['/usr/share/code', '/usr/lib/code', '/opt/visual-studio-code', '/snap/code/current']) {
|
|
1386
|
+
out.push(...bundledRipgrepPaths(path.join(root, 'resources', 'app'), platform, arch));
|
|
1387
|
+
}
|
|
1388
|
+
// Remote/server installs keep one directory per commit hash or server name.
|
|
1389
|
+
for (const base of ['.vscode-server', '.cursor-server', '.windsurf-server', '.vscodium-server']) {
|
|
1390
|
+
const home = path.join(os.homedir(), base);
|
|
1391
|
+
for (const dir of listDirsSafe(path.join(home, 'bin'))) {
|
|
1392
|
+
out.push(...bundledRipgrepPaths(path.join(home, 'bin', dir), platform, arch));
|
|
1393
|
+
}
|
|
1394
|
+
for (const dir of listDirsSafe(path.join(home, 'cli', 'servers'))) {
|
|
1395
|
+
out.push(...bundledRipgrepPaths(path.join(home, 'cli', 'servers', dir, 'server'), platform, arch));
|
|
1396
|
+
out.push(...bundledRipgrepPaths(path.join(home, 'cli', 'servers', dir), platform, arch));
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
}
|
|
1400
|
+
return out;
|
|
1401
|
+
}
|
|
1402
|
+
function ripgrepCandidates() {
|
|
1403
|
+
const out = [];
|
|
1404
|
+
const env = process.env.NEXRALL_RG_PATH?.trim();
|
|
1405
|
+
if (env)
|
|
1406
|
+
out.push(env);
|
|
1407
|
+
out.push('rg');
|
|
1408
|
+
if (process.platform === 'win32')
|
|
1409
|
+
out.push('rg.exe');
|
|
1410
|
+
out.push(...editorRipgrepCandidates(process.platform, process.arch));
|
|
1411
|
+
const home = os.homedir();
|
|
1412
|
+
if (process.platform === 'darwin') {
|
|
1413
|
+
out.push('/opt/homebrew/bin/rg', '/usr/local/bin/rg', path.join(home, '.cargo', 'bin', 'rg'));
|
|
1414
|
+
}
|
|
1415
|
+
else if (process.platform === 'win32') {
|
|
1416
|
+
out.push(path.join(home, '.cargo', 'bin', 'rg.exe'));
|
|
1417
|
+
}
|
|
1418
|
+
else {
|
|
1419
|
+
out.push('/usr/bin/rg', '/usr/local/bin/rg', '/snap/bin/rg', path.join(home, '.local', 'bin', 'rg'), path.join(home, '.cargo', 'bin', 'rg'));
|
|
1420
|
+
}
|
|
1421
|
+
return [...new Set(out)];
|
|
1422
|
+
}
|
|
1324
1423
|
function ripgrepAvailable() {
|
|
1325
1424
|
if (!_rgChecked) {
|
|
1326
1425
|
_rgChecked = true;
|
|
1327
|
-
const
|
|
1328
|
-
|
|
1426
|
+
for (const bin of ripgrepCandidates()) {
|
|
1427
|
+
// Skip absolute paths that plainly don't exist (other machines' editor bundles):
|
|
1428
|
+
// a miss still costs a spawnSync, and the editor list alone can hold dozens.
|
|
1429
|
+
if (path.isAbsolute(bin) && !fs.existsSync(bin))
|
|
1430
|
+
continue;
|
|
1329
1431
|
const probe = (0, child_process_1.spawnSync)(bin, ['--version'], { encoding: 'utf-8', timeout: 3000 });
|
|
1330
1432
|
if (probe.status === 0) {
|
|
1331
1433
|
_rgBin = bin;
|
|
@@ -1340,6 +1442,14 @@ function ripgrepAvailable() {
|
|
|
1340
1442
|
function rgBin() {
|
|
1341
1443
|
return _rgBin;
|
|
1342
1444
|
}
|
|
1445
|
+
/**
|
|
1446
|
+
* Path of the ripgrep binary this process would use — the NEXRALL_RG_PATH override, `rg`
|
|
1447
|
+
* from PATH, or an editor-bundled copy — or undefined when the grep fallback is in charge.
|
|
1448
|
+
* `nex doctor` reports through this so its verdict matches what the search tools do.
|
|
1449
|
+
*/
|
|
1450
|
+
function resolveRipgrepBinary() {
|
|
1451
|
+
return ripgrepAvailable() ? _rgBin : undefined;
|
|
1452
|
+
}
|
|
1343
1453
|
// ── Cross-file breakage warning ──────────────────────────────────────────────
|
|
1344
1454
|
// After an edit removes/renames an exported symbol, scan the rest of the repo for
|
|
1345
1455
|
// surviving references. Returns a short warning string (or '' when clean). Best-
|
package/dist/types.d.ts
CHANGED
|
@@ -495,6 +495,16 @@ export interface AgentLoopOptions {
|
|
|
495
495
|
* @peer-name: ...") the way Claude Code's own inline preview does.
|
|
496
496
|
*/
|
|
497
497
|
onPeerMessage?: (messages: import('./agent/peerTransport').PeerMessage[]) => void;
|
|
498
|
+
/**
|
|
499
|
+
* Fired once per turn boundary where cross-session task-board notes (see
|
|
500
|
+
* agent/taskEvents.ts) are being folded into the conversation — lets a UI
|
|
501
|
+
* show the same event the model is about to see ("the task you were
|
|
502
|
+
* waiting on just completed") instead of the user having to run `nex tasks`
|
|
503
|
+
* to find out. Only CONSEQUENTIAL events produce notes (`completed` /
|
|
504
|
+
* `reopened` / `removed` with live waiters), so a UI on this callback is
|
|
505
|
+
* exactly as quiet as the model is.
|
|
506
|
+
*/
|
|
507
|
+
onTaskNotes?: (notes: import('./agent/taskEvents').TaskEventNote[]) => void;
|
|
498
508
|
/**
|
|
499
509
|
* This session's own peer identity (see agent/peerRegistry.ts's
|
|
500
510
|
* registerPeer), if it registered as a discoverable peer at all —
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexrall/code-core",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.74",
|
|
4
4
|
"description": "Core agent loop, tools, and extension primitives for Nexrall Code — embed an AI coding agent in any Node.js application.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Nexrall <support@nexrall.com> (https://nexrall.com)",
|