@raidiant/notifai 11.5.0 → 11.6.0-beta.3
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/CHANGELOG.md +9 -0
- package/dist/commands-acknowledge.js +5 -2
- package/dist/commands-acknowledge.js.map +1 -1
- package/dist/commands-ask.js +9 -2
- package/dist/commands-ask.js.map +1 -1
- package/dist/commands-doctor.js +21 -15
- package/dist/commands-doctor.js.map +1 -1
- package/dist/commands-hook-attend.js +42 -6
- package/dist/commands-hook-attend.js.map +1 -1
- package/dist/commands-hook-install.js +1 -1
- package/dist/commands-hook-install.js.map +1 -1
- package/dist/commands-hook-run.js +79 -8
- package/dist/commands-hook-run.js.map +1 -1
- package/dist/commands-send-support.js +3 -0
- package/dist/commands-send-support.js.map +1 -1
- package/dist/commands-update-check.d.ts +1 -1
- package/dist/commands-update-check.js +12 -4
- package/dist/commands-update-check.js.map +1 -1
- package/dist/commands-update-resume.d.ts +7 -0
- package/dist/commands-update-resume.js +133 -0
- package/dist/commands-update-resume.js.map +1 -0
- package/dist/commands-update.js +25 -11
- package/dist/commands-update.js.map +1 -1
- package/dist/commands.d.ts +1 -0
- package/dist/commands.js +1 -0
- package/dist/commands.js.map +1 -1
- package/dist/harnesses.d.ts +8 -3
- package/dist/harnesses.js +16 -4
- package/dist/harnesses.js.map +1 -1
- package/dist/hermes-attendant.d.ts +38 -0
- package/dist/hermes-attendant.js +333 -0
- package/dist/hermes-attendant.js.map +1 -0
- package/dist/hermes-plugin.js +142 -4
- package/dist/hermes-plugin.js.map +1 -1
- package/dist/hook-lifecycle.d.ts +1 -1
- package/dist/hook-lifecycle.js +22 -11
- package/dist/hook-lifecycle.js.map +1 -1
- package/dist/hook-types.d.ts +3 -0
- package/dist/integration-health.d.ts +26 -0
- package/dist/integration-health.js +133 -0
- package/dist/integration-health.js.map +1 -0
- package/dist/invocation-context.d.ts +1 -0
- package/dist/invocation-context.js +3 -0
- package/dist/invocation-context.js.map +1 -1
- package/dist/native-skills.d.ts +1 -0
- package/dist/native-skills.js +30 -3
- package/dist/native-skills.js.map +1 -1
- package/dist/openclaw-generation.d.ts +5 -1
- package/dist/openclaw-generation.js +27 -5
- package/dist/openclaw-generation.js.map +1 -1
- package/dist/openclaw-message-bridge.d.ts +8 -0
- package/dist/openclaw-message-bridge.js +93 -0
- package/dist/openclaw-message-bridge.js.map +1 -0
- package/dist/openclaw-pending.d.ts +1 -1
- package/dist/openclaw-pending.js +1 -6
- package/dist/openclaw-pending.js.map +1 -1
- package/dist/openclaw-plugin.js +385 -14
- package/dist/openclaw-plugin.js.map +1 -1
- package/dist/openclaw-session-access.d.ts +2 -0
- package/dist/openclaw-session-access.js +10 -0
- package/dist/openclaw-session-access.js.map +1 -1
- package/dist/program.d.ts +2 -1
- package/dist/program.js +17 -10
- package/dist/program.js.map +1 -1
- package/dist/session-activation.js +1 -0
- package/dist/session-activation.js.map +1 -1
- package/dist/session-attendant-probe.d.ts +1 -0
- package/dist/session-attendant-probe.js +11 -1
- package/dist/session-attendant-probe.js.map +1 -1
- package/dist/session-attendant-state.d.ts +3 -0
- package/dist/session-attendant-state.js +8 -0
- package/dist/session-attendant-state.js.map +1 -1
- package/dist/session-attendant.d.ts +6 -0
- package/dist/session-attendant.js +12 -0
- package/dist/session-attendant.js.map +1 -1
- package/dist/session-labels.d.ts +2 -0
- package/dist/session-labels.js +5 -0
- package/dist/session-labels.js.map +1 -1
- package/dist/session-message-handoff.d.ts +3 -1
- package/dist/session-message-handoff.js +2 -1
- package/dist/session-message-handoff.js.map +1 -1
- package/dist/skill-integrity.d.ts +8 -3
- package/dist/skill-integrity.js +18 -8
- package/dist/skill-integrity.js.map +1 -1
- package/dist/skill-source/manifest.json +7 -7
- package/dist/skill-source/notifai/SKILL.md +66 -61
- package/dist/skill-source/notifai/references/diagnostics.md +5 -0
- package/dist/skill-source/notifai/references/harness-setup.md +24 -8
- package/dist/skill-source/notifai/references/notes-and-edits.md +6 -0
- package/dist/skill-source/notifai/references/updates.md +44 -10
- package/dist/update-handoff.js +1 -1
- package/dist/update-handoff.js.map +1 -1
- package/package.json +1 -1
package/dist/openclaw-plugin.js
CHANGED
|
@@ -27,7 +27,7 @@ export const OPENCLAW_PLUGIN_ID = 'notifai';
|
|
|
27
27
|
export const OPENCLAW_PLUGIN_FILENAME = 'index.js';
|
|
28
28
|
export const OPENCLAW_PLUGIN_MANIFEST = 'openclaw.plugin.json';
|
|
29
29
|
export const OPENCLAW_PLUGIN_PACKAGE = 'package.json';
|
|
30
|
-
const OPENCLAW_ADAPTER_VERSION =
|
|
30
|
+
const OPENCLAW_ADAPTER_VERSION = 5;
|
|
31
31
|
export function openclawStateDir(env = process.env, platform = process.platform) {
|
|
32
32
|
const override = env['OPENCLAW_STATE_DIR'];
|
|
33
33
|
if (override !== undefined && override !== '')
|
|
@@ -62,6 +62,10 @@ function openclawContinuationServiceSource() {
|
|
|
62
62
|
return `
|
|
63
63
|
let continuationService = null
|
|
64
64
|
let JOURNAL_DIR = null
|
|
65
|
+
let MESSAGE_JOURNAL_DIR = null
|
|
66
|
+
let pendingMessageJournals = null
|
|
67
|
+
let awaitingMessageContexts = new Map()
|
|
68
|
+
const GATEWAY_BOOT_ID = randomUUID()
|
|
65
69
|
|
|
66
70
|
function readinessPath() {
|
|
67
71
|
return path.join(path.dirname(JOURNAL_DIR), "continuation-ready.json")
|
|
@@ -77,7 +81,7 @@ function writeReadiness(target) {
|
|
|
77
81
|
const file = readinessPath()
|
|
78
82
|
mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 })
|
|
79
83
|
const temp = file + "." + randomUUID() + ".tmp"
|
|
80
|
-
writeFileSync(temp, JSON.stringify({ pid: process.pid, start,
|
|
84
|
+
writeFileSync(temp, JSON.stringify({ pid: process.pid, start, boot_id: GATEWAY_BOOT_ID,
|
|
81
85
|
script: target.script, script_mtime: statSync(target.script).mtimeMs }) + "\\n",
|
|
82
86
|
{ mode: 0o600, flag: "wx" })
|
|
83
87
|
renameSync(temp, file)
|
|
@@ -124,6 +128,109 @@ function existingJournal(deliveryId) {
|
|
|
124
128
|
} catch { return null }
|
|
125
129
|
}
|
|
126
130
|
|
|
131
|
+
function messageJournalPath(deliveryId) {
|
|
132
|
+
return path.join(MESSAGE_JOURNAL_DIR, deliveryId + ".json")
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function messageContextMarkerPath(deliveryId) {
|
|
136
|
+
return path.join(MESSAGE_JOURNAL_DIR, deliveryId + ".context-used")
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function saveMessageJournal(record) {
|
|
140
|
+
mkdirSync(MESSAGE_JOURNAL_DIR, { recursive: true, mode: 0o700 })
|
|
141
|
+
const file = messageJournalPath(record.delivery_id)
|
|
142
|
+
const temp = file + "." + randomUUID() + ".tmp"
|
|
143
|
+
const { text: _text, ...withoutText } = record
|
|
144
|
+
const stored = existsSync(messageContextMarkerPath(record.delivery_id)) ? withoutText : record
|
|
145
|
+
writeFileSync(temp, JSON.stringify(stored) + "\\n", { mode: 0o600, flag: "wx" })
|
|
146
|
+
const fd = openSync(temp, "r")
|
|
147
|
+
try { fsyncSync(fd) } finally { closeSync(fd) }
|
|
148
|
+
renameSync(temp, file)
|
|
149
|
+
if (pendingMessageJournals !== null) {
|
|
150
|
+
if (stored.phase === "transcript" || stored.phase === "unconfirmed") pendingMessageJournals.delete(stored.delivery_id)
|
|
151
|
+
else pendingMessageJournals.set(stored.delivery_id, stored)
|
|
152
|
+
}
|
|
153
|
+
if (stored.phase === "transcript" && stored.text !== undefined) {
|
|
154
|
+
awaitingMessageContexts.set(stored.delivery_id, stored)
|
|
155
|
+
} else {
|
|
156
|
+
awaitingMessageContexts.delete(stored.delivery_id)
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
const directory = openSync(MESSAGE_JOURNAL_DIR, "r")
|
|
160
|
+
try { fsyncSync(directory) } finally { closeSync(directory) }
|
|
161
|
+
} catch { /* Directory fsync is unavailable on some hosts. */ }
|
|
162
|
+
// The prompt hook runs in another plugin process. If it consumed the context
|
|
163
|
+
// during this synchronous save, its marker wins and text is redacted again.
|
|
164
|
+
if (stored.text !== undefined && existsSync(messageContextMarkerPath(record.delivery_id))) {
|
|
165
|
+
saveMessageJournal(withoutText)
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function readMessageJournal(deliveryId) {
|
|
170
|
+
try {
|
|
171
|
+
const record = JSON.parse(readFileSync(messageJournalPath(deliveryId), "utf8"))
|
|
172
|
+
if (!record || record.delivery_id !== deliveryId) throw new Error("Invalid message journal")
|
|
173
|
+
return record
|
|
174
|
+
} catch (error) {
|
|
175
|
+
if (error?.code === "ENOENT") return null
|
|
176
|
+
throw error
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function retryMessageJournals() {
|
|
181
|
+
if (pendingMessageJournals === null) {
|
|
182
|
+
let names
|
|
183
|
+
try { names = readdirSync(MESSAGE_JOURNAL_DIR) }
|
|
184
|
+
catch (error) { if (error?.code !== "ENOENT") throw error; names = [] }
|
|
185
|
+
const pending = new Map()
|
|
186
|
+
awaitingMessageContexts = new Map()
|
|
187
|
+
for (const name of names.filter((value) => value.endsWith(".json"))) {
|
|
188
|
+
const record = readMessageJournal(name.slice(0, -5))
|
|
189
|
+
if (record !== null && record.boot_id !== GATEWAY_BOOT_ID) {
|
|
190
|
+
if (record.text !== undefined) {
|
|
191
|
+
settleMessageJournal(record, record.phase === "transcript" ? "transcript" : "unconfirmed")
|
|
192
|
+
}
|
|
193
|
+
continue
|
|
194
|
+
}
|
|
195
|
+
if (record !== null && record.phase !== "transcript" && record.phase !== "unconfirmed") {
|
|
196
|
+
pending.set(record.delivery_id, record)
|
|
197
|
+
} else if (record !== null && record.phase === "transcript" &&
|
|
198
|
+
record.text !== undefined) {
|
|
199
|
+
awaitingMessageContexts.set(record.delivery_id, record)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
pendingMessageJournals = pending
|
|
203
|
+
}
|
|
204
|
+
return [...pendingMessageJournals.values()]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function settleMessageJournal(record, phase) {
|
|
208
|
+
const { text: _text, ...rest } = record
|
|
209
|
+
// A committed pointer can begin its model turn after chat.history sees the
|
|
210
|
+
// user transcript. Keep context until that exact turn claims it once.
|
|
211
|
+
saveMessageJournal(phase === "transcript" && record.boot_id === GATEWAY_BOOT_ID &&
|
|
212
|
+
!existsSync(messageContextMarkerPath(record.delivery_id))
|
|
213
|
+
? { ...record, phase } : { ...rest, phase })
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function nativeSessionRevision(api, sessionKey, sessionId) {
|
|
217
|
+
if (typeof sessionId !== "string" || sessionId === "") return null
|
|
218
|
+
try {
|
|
219
|
+
const entry = api.runtime?.agent?.session?.getSessionEntry?.({
|
|
220
|
+
sessionKey, readConsistency: "latest",
|
|
221
|
+
})
|
|
222
|
+
return entry?.sessionId === sessionId &&
|
|
223
|
+
typeof entry.lifecycleRevision === "string" && entry.lifecycleRevision !== ""
|
|
224
|
+
? entry.lifecycleRevision : null
|
|
225
|
+
} catch { return null }
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function claimTimeAvailable(record) {
|
|
229
|
+
return typeof record.deadline_ns === "string" &&
|
|
230
|
+
record.deadline_ns.length <= 32 && /^[0-9]+$/.test(record.deadline_ns) &&
|
|
231
|
+
BigInt(record.deadline_ns) > process.hrtime.bigint()
|
|
232
|
+
}
|
|
233
|
+
|
|
127
234
|
function openclawCliTarget(config) {
|
|
128
235
|
if (process.env.OPENCLAW_SHELL === "exec") return null
|
|
129
236
|
const gateway = config?.gateway ?? {}
|
|
@@ -261,11 +368,79 @@ function pointerMessage(record) {
|
|
|
261
368
|
" with the concrete work you will do.").join(" ")
|
|
262
369
|
}
|
|
263
370
|
|
|
371
|
+
function messagePointer(record) {
|
|
372
|
+
return "Notifai Session Message " + record.message_id +
|
|
373
|
+
" should appear in this turn's context. If its full context is absent, " +
|
|
374
|
+
"say that this Session Message is missing and do not acknowledge it. " +
|
|
375
|
+
"If present, read it and run notifai acknowledge " + record.message_id +
|
|
376
|
+
" with the concrete work you will do when text is required."
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/** Attach private text only to the admitted pointer turn of its native generation. */
|
|
380
|
+
async function messageContextForPointer(api, event, ctx, sessionKey, nativeRevision) {
|
|
381
|
+
if (MESSAGE_JOURNAL_DIR === null || JOURNAL_DIR === null || nativeRevision === null) return null
|
|
382
|
+
const prompt = typeof event?.currentUserMessage === "string"
|
|
383
|
+
? event.currentUserMessage : event?.prompt
|
|
384
|
+
if (typeof prompt !== "string" || !prompt.startsWith("Notifai Session Message ")) return null
|
|
385
|
+
const messageId = prompt.slice("Notifai Session Message ".length).split(" ", 1)[0]
|
|
386
|
+
if (!/^sm_[A-Za-z0-9_-]+$/.test(messageId)) return null
|
|
387
|
+
const envelope = { ...envelopeFor(sessionKey, event, ctx, "BeforePromptBuild"),
|
|
388
|
+
openclaw_lifecycle_revision: nativeRevision }
|
|
389
|
+
const generation = (await runHook("openclaw-generation", envelope))?.trim()
|
|
390
|
+
if (typeof generation !== "string" || !/^[0-9a-f-]{36}$/i.test(generation)) return null
|
|
391
|
+
const deliveryId = createHash("sha256").update(generation + "\\0" + messageId)
|
|
392
|
+
.digest("hex").slice(0, 32)
|
|
393
|
+
try {
|
|
394
|
+
const record = readMessageJournal(deliveryId)
|
|
395
|
+
const readiness = JSON.parse(readFileSync(readinessPath(), "utf8"))
|
|
396
|
+
if (record === null || record.message_id !== messageId ||
|
|
397
|
+
record.session_key !== sessionKey || record.generation !== generation ||
|
|
398
|
+
record.native_revision !== nativeRevision ||
|
|
399
|
+
record.openclaw_session_id !== sessionIdOf(event, ctx) ||
|
|
400
|
+
record.boot_id !== readiness?.boot_id ||
|
|
401
|
+
typeof record.text !== "string" ||
|
|
402
|
+
(record.phase !== "submitting" && record.phase !== "admitted" &&
|
|
403
|
+
record.phase !== "transcript") ||
|
|
404
|
+
prompt !== messagePointer(record) ||
|
|
405
|
+
existsSync(messageContextMarkerPath(deliveryId)) ||
|
|
406
|
+
nativeSessionRevision(api, sessionKey, sessionIdOf(event, ctx)) !== nativeRevision) return null
|
|
407
|
+
ctx?.hookInvocation?.assertActive?.()
|
|
408
|
+
writeFileSync(messageContextMarkerPath(deliveryId), "used\\n", { mode: 0o600, flag: "wx" })
|
|
409
|
+
saveMessageJournal(record)
|
|
410
|
+
return record.text
|
|
411
|
+
} catch { return null }
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
async function gatewaySessions(target) {
|
|
415
|
+
let offset = 0
|
|
416
|
+
const sessions = new Map()
|
|
417
|
+
for (let page = 0; page < 1000; page += 1) {
|
|
418
|
+
const result = await gatewayCall(target, "sessions.list", { limit: 200, offset })
|
|
419
|
+
if (!Array.isArray(result?.sessions) || typeof result?.hasMore !== "boolean") return null
|
|
420
|
+
for (const session of result.sessions) {
|
|
421
|
+
if (typeof session?.key === "string") sessions.set(session.key, session)
|
|
422
|
+
}
|
|
423
|
+
if (!result.hasMore) return sessions
|
|
424
|
+
if (!Number.isInteger(result.nextOffset) || result.nextOffset <= offset) return null
|
|
425
|
+
offset = result.nextOffset
|
|
426
|
+
}
|
|
427
|
+
return null
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async function currentSession(target, record) {
|
|
431
|
+
const sessions = await gatewaySessions(target)
|
|
432
|
+
const session = sessions?.get(record.session_key)
|
|
433
|
+
return typeof record.openclaw_session_id === "string" &&
|
|
434
|
+
session?.sessionId === record.openclaw_session_id &&
|
|
435
|
+
session.archived !== true ? session : null
|
|
436
|
+
}
|
|
437
|
+
|
|
264
438
|
function spawnOwnedHook(event, envelope, extraFds = false) {
|
|
265
439
|
const child = spawn(HOOK_COMMAND, [...HOOK_PREFIX, "hook", event,
|
|
266
440
|
"--owner", "notifai", "--harness", "openclaw"], {
|
|
267
441
|
cwd: envelope.cwd,
|
|
268
|
-
env: { ...process.env, NOTIFAI_HOOK_SOURCE_PID: String(process.pid)
|
|
442
|
+
env: { ...process.env, NOTIFAI_HOOK_SOURCE_PID: String(process.pid),
|
|
443
|
+
...(event === "attend" && extraFds ? { NOTIFAI_OPENCLAW_MESSAGE_BRIDGE: "1" } : {}) },
|
|
269
444
|
shell: false, windowsHide: true,
|
|
270
445
|
stdio: extraFds ? ["pipe", "ignore", "ignore", "pipe", "pipe"] : ["pipe", "ignore", "ignore"],
|
|
271
446
|
})
|
|
@@ -273,14 +448,16 @@ function spawnOwnedHook(event, envelope, extraFds = false) {
|
|
|
273
448
|
return child
|
|
274
449
|
}
|
|
275
450
|
|
|
276
|
-
function makeContinuationService(config, logger) {
|
|
451
|
+
function makeContinuationService(config, logger, api) {
|
|
277
452
|
const active = new Map()
|
|
278
453
|
const delivering = new Set()
|
|
279
454
|
const reported = new Map()
|
|
455
|
+
const deliveringMessages = new Map()
|
|
280
456
|
let stopped = false
|
|
281
457
|
let timer = null
|
|
282
458
|
let scanning = false
|
|
283
459
|
let ready = false
|
|
460
|
+
let gatewayTarget = null
|
|
284
461
|
|
|
285
462
|
function report(record, reason) {
|
|
286
463
|
if (reported.get(record.delivery_id) === reason) return
|
|
@@ -335,6 +512,138 @@ function makeContinuationService(config, logger) {
|
|
|
335
512
|
}
|
|
336
513
|
}
|
|
337
514
|
|
|
515
|
+
async function deliverMessageOnce(record) {
|
|
516
|
+
try {
|
|
517
|
+
if (record.boot_id !== GATEWAY_BOOT_ID) {
|
|
518
|
+
settleMessageJournal(record, "unconfirmed")
|
|
519
|
+
return false
|
|
520
|
+
}
|
|
521
|
+
if (!claimTimeAvailable(record) && record.phase !== "admitted" &&
|
|
522
|
+
record.phase !== "transcript") {
|
|
523
|
+
settleMessageJournal(record, "unconfirmed")
|
|
524
|
+
return false
|
|
525
|
+
}
|
|
526
|
+
const envelope = { session_id: record.session_key, cwd: record.cwd,
|
|
527
|
+
openclaw_session_id: record.openclaw_session_id,
|
|
528
|
+
openclaw_lifecycle_revision: record.native_revision }
|
|
529
|
+
if (nativeSessionRevision(api, record.session_key, record.openclaw_session_id) !==
|
|
530
|
+
record.native_revision) {
|
|
531
|
+
settleMessageJournal(record, "unconfirmed")
|
|
532
|
+
return false
|
|
533
|
+
}
|
|
534
|
+
const generation = (await runHook("openclaw-generation", envelope))?.trim()
|
|
535
|
+
if (generation !== record.generation) {
|
|
536
|
+
settleMessageJournal(record, "unconfirmed")
|
|
537
|
+
return false
|
|
538
|
+
}
|
|
539
|
+
const attendance = (await runHook("openclaw-attendance-ready", envelope))?.trim()
|
|
540
|
+
if (attendance !== "ready") return false
|
|
541
|
+
const target = await verifiedGatewayTarget(config, logger)
|
|
542
|
+
if (target === null) return false
|
|
543
|
+
const session = await currentSession(target, record)
|
|
544
|
+
if (session === null) return false
|
|
545
|
+
const state = await inspectSubmission(target, record)
|
|
546
|
+
if (state === "transcript") {
|
|
547
|
+
settleMessageJournal(record, "transcript")
|
|
548
|
+
return true
|
|
549
|
+
}
|
|
550
|
+
if (state === "pending") return true
|
|
551
|
+
if (state !== "absent" || record.phase === "admitted" ||
|
|
552
|
+
record.phase === "submitting") {
|
|
553
|
+
settleMessageJournal(record, "unconfirmed")
|
|
554
|
+
return false
|
|
555
|
+
}
|
|
556
|
+
if (!claimTimeAvailable(record)) {
|
|
557
|
+
settleMessageJournal(record, "unconfirmed")
|
|
558
|
+
return false
|
|
559
|
+
}
|
|
560
|
+
if ((await runHook("openclaw-generation", envelope))?.trim() !== record.generation) {
|
|
561
|
+
settleMessageJournal(record, "unconfirmed")
|
|
562
|
+
return false
|
|
563
|
+
}
|
|
564
|
+
if (nativeSessionRevision(api, record.session_key, record.openclaw_session_id) !==
|
|
565
|
+
record.native_revision) {
|
|
566
|
+
settleMessageJournal(record, "unconfirmed")
|
|
567
|
+
return false
|
|
568
|
+
}
|
|
569
|
+
if (await currentSession(target, record) === null) return false
|
|
570
|
+
saveMessageJournal({ ...record, phase: "submitting" })
|
|
571
|
+
await gatewayCall(target, "chat.send", {
|
|
572
|
+
sessionKey: record.session_key, message: messagePointer(record),
|
|
573
|
+
queueMode: "followup",
|
|
574
|
+
idempotencyKey: submissionKey(record),
|
|
575
|
+
})
|
|
576
|
+
saveMessageJournal({ ...record, phase: "admitted" })
|
|
577
|
+
return true
|
|
578
|
+
} catch {
|
|
579
|
+
// An uncertain admission is reconciled by identity, never blindly replayed.
|
|
580
|
+
return false
|
|
581
|
+
} finally { /* The wrapper removes the in-flight entry. */ }
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
function deliverMessage(record) {
|
|
585
|
+
if (record.phase === "transcript" || record.phase === "unconfirmed") return Promise.resolve(false)
|
|
586
|
+
const existing = deliveringMessages.get(record.delivery_id)
|
|
587
|
+
if (existing) return existing
|
|
588
|
+
const run = deliverMessageOnce(record).finally(() => deliveringMessages.delete(record.delivery_id))
|
|
589
|
+
deliveringMessages.set(record.delivery_id, run)
|
|
590
|
+
return run
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
function startMessageBridge(session, child) {
|
|
594
|
+
let buffer = ""
|
|
595
|
+
let queue = Promise.resolve()
|
|
596
|
+
child.stdio[4].on("error", () => { /* A closed attendant cannot accept a result. */ })
|
|
597
|
+
child.stdio[3].setEncoding("utf8")
|
|
598
|
+
child.stdio[3].on("data", (chunk) => {
|
|
599
|
+
buffer += chunk
|
|
600
|
+
if (buffer.length > 100_000) { child.kill("SIGTERM"); return }
|
|
601
|
+
for (;;) {
|
|
602
|
+
const end = buffer.indexOf("\\n")
|
|
603
|
+
if (end < 0) break
|
|
604
|
+
const line = buffer.slice(0, end)
|
|
605
|
+
buffer = buffer.slice(end + 1)
|
|
606
|
+
let payload
|
|
607
|
+
try { payload = JSON.parse(line) } catch { continue }
|
|
608
|
+
if (payload?.type !== "message" ||
|
|
609
|
+
!/^sm_[A-Za-z0-9_-]+$/.test(payload.message_id) ||
|
|
610
|
+
payload.session_key !== session.session_key ||
|
|
611
|
+
payload.generation !== session.generation ||
|
|
612
|
+
typeof payload.text !== "string" || payload.text.length > 32768 ||
|
|
613
|
+
typeof payload.deadline_ns !== "string" ||
|
|
614
|
+
payload.deadline_ns.length > 32 ||
|
|
615
|
+
!/^[0-9]+$/.test(payload.deadline_ns)) continue
|
|
616
|
+
queue = queue.then(async () => {
|
|
617
|
+
const deliveryId = createHash("sha256")
|
|
618
|
+
.update(session.generation + "\\0" + payload.message_id)
|
|
619
|
+
.digest("hex").slice(0, 32)
|
|
620
|
+
const record = { delivery_id: deliveryId, message_id: payload.message_id,
|
|
621
|
+
session_key: session.session_key, cwd: session.cwd,
|
|
622
|
+
openclaw_session_id: session.session_id, generation: session.generation,
|
|
623
|
+
native_revision: nativeSessionRevision(api, session.session_key, session.session_id),
|
|
624
|
+
boot_id: GATEWAY_BOOT_ID, text: payload.text, deadline_ns: payload.deadline_ns,
|
|
625
|
+
attempt: 1, phase: "prepared" }
|
|
626
|
+
const existing = readMessageJournal(deliveryId)
|
|
627
|
+
const current = active.get(session.session_key)
|
|
628
|
+
let written = false
|
|
629
|
+
if (current?.attendant === child && record.native_revision !== null &&
|
|
630
|
+
(existing === null ||
|
|
631
|
+
(existing.message_id === record.message_id &&
|
|
632
|
+
existing.session_key === record.session_key &&
|
|
633
|
+
existing.generation === record.generation))) {
|
|
634
|
+
if (existing === null) saveMessageJournal(record)
|
|
635
|
+
written = await deliverMessage(existing ?? record)
|
|
636
|
+
}
|
|
637
|
+
child.stdio[4].write(JSON.stringify({ message_id: payload.message_id,
|
|
638
|
+
status: written ? "written" : "unconfirmed" }) + "\\n")
|
|
639
|
+
}).catch(() => {
|
|
640
|
+
child.stdio[4].write(JSON.stringify({ message_id: payload.message_id,
|
|
641
|
+
status: "unconfirmed" }) + "\\n")
|
|
642
|
+
})
|
|
643
|
+
}
|
|
644
|
+
})
|
|
645
|
+
}
|
|
646
|
+
|
|
338
647
|
function startSettlement(session, entry) {
|
|
339
648
|
const envelope = { session_id: session.session_key, cwd: session.cwd,
|
|
340
649
|
openclaw_session_id: session.session_id, hook_event_name: "SessionStart" }
|
|
@@ -393,11 +702,19 @@ function makeContinuationService(config, logger) {
|
|
|
393
702
|
const envelope = { session_id: session.session_key, cwd: session.cwd,
|
|
394
703
|
openclaw_session_id: session.session_id, hook_event_name: "SessionStart" }
|
|
395
704
|
const entry = { generation: session.generation,
|
|
396
|
-
attendant: spawnOwnedHook("attend", envelope), child: null }
|
|
705
|
+
attendant: spawnOwnedHook("attend", envelope, true), child: null }
|
|
397
706
|
active.set(session.session_key, entry)
|
|
707
|
+
startMessageBridge(session, entry.attendant)
|
|
398
708
|
startSettlement(session, entry)
|
|
399
709
|
}
|
|
400
710
|
|
|
711
|
+
function sendActivity(entry, session) {
|
|
712
|
+
if (entry.attendant.exitCode === null && entry.attendant.stdio[4].writable) {
|
|
713
|
+
entry.attendant.stdio[4].write(JSON.stringify({ type: "activity",
|
|
714
|
+
activity: session.hasActiveRun === true ? "working" : "idle" }) + "\\n")
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
401
718
|
async function tick() {
|
|
402
719
|
if (stopped || scanning) return
|
|
403
720
|
scanning = true
|
|
@@ -405,26 +722,38 @@ function makeContinuationService(config, logger) {
|
|
|
405
722
|
if (!ready) {
|
|
406
723
|
const target = await verifiedGatewayTarget(config, logger)
|
|
407
724
|
if (target === null || !writeReadiness(target)) return
|
|
725
|
+
gatewayTarget = target
|
|
408
726
|
ready = true
|
|
409
727
|
}
|
|
410
728
|
const raw = await runHook("openclaw-list-pending", { cwd: process.cwd() })
|
|
411
|
-
|
|
729
|
+
if (raw === null) return
|
|
730
|
+
const pending = JSON.parse(raw)
|
|
731
|
+
const sessions = await gatewaySessions(gatewayTarget)
|
|
732
|
+
if (sessions === null) return
|
|
733
|
+
const seen = new Set()
|
|
412
734
|
if (Array.isArray(pending)) for (const session of pending) {
|
|
413
735
|
if (typeof session?.session_key !== "string" ||
|
|
414
736
|
typeof session?.cwd !== "string" ||
|
|
415
737
|
typeof session?.generation !== "string") continue
|
|
738
|
+
const gatewaySession = sessions.get(session.session_key)
|
|
739
|
+
if (typeof session.session_id !== "string" ||
|
|
740
|
+
gatewaySession?.sessionId !== session.session_id ||
|
|
741
|
+
gatewaySession.archived === true) continue
|
|
742
|
+
seen.add(session.session_key)
|
|
416
743
|
const current = active.get(session.session_key)
|
|
417
744
|
if (current?.generation === session.generation) {
|
|
418
745
|
if (current.attendant.exitCode !== null) {
|
|
419
746
|
active.delete(session.session_key)
|
|
420
747
|
if (current.child !== null) current.child.kill("SIGTERM")
|
|
421
748
|
startSession(session)
|
|
749
|
+
sendActivity(active.get(session.session_key), gatewaySession)
|
|
422
750
|
} else if (current.child === null) {
|
|
423
751
|
const ready = await runHook("openclaw-attendance-ready", {
|
|
424
752
|
session_id: session.session_key, cwd: session.cwd,
|
|
425
753
|
openclaw_session_id: session.session_id })
|
|
426
754
|
if (ready?.trim() === "ready") startSettlement(session, current)
|
|
427
755
|
}
|
|
756
|
+
if (active.get(session.session_key) === current) sendActivity(current, gatewaySession)
|
|
428
757
|
continue
|
|
429
758
|
}
|
|
430
759
|
if (current) {
|
|
@@ -432,14 +761,41 @@ function makeContinuationService(config, logger) {
|
|
|
432
761
|
current.attendant.kill("SIGTERM")
|
|
433
762
|
}
|
|
434
763
|
startSession(session)
|
|
764
|
+
sendActivity(active.get(session.session_key), gatewaySession)
|
|
765
|
+
}
|
|
766
|
+
for (const [key, entry] of active) {
|
|
767
|
+
if (seen.has(key)) continue
|
|
768
|
+
if (entry.child !== null) entry.child.kill("SIGTERM")
|
|
769
|
+
entry.attendant.kill("SIGTERM")
|
|
770
|
+
active.delete(key)
|
|
435
771
|
}
|
|
436
772
|
for (const record of readJournals()) void deliver(record)
|
|
773
|
+
for (const [deliveryId] of awaitingMessageContexts) {
|
|
774
|
+
const record = readMessageJournal(deliveryId)
|
|
775
|
+
if (record === null || record.text === undefined) {
|
|
776
|
+
awaitingMessageContexts.delete(deliveryId)
|
|
777
|
+
} else if (record.boot_id !== GATEWAY_BOOT_ID ||
|
|
778
|
+
nativeSessionRevision(api, record.session_key, record.openclaw_session_id) !==
|
|
779
|
+
record.native_revision) {
|
|
780
|
+
const { text: _text, ...withoutText } = record
|
|
781
|
+
saveMessageJournal(withoutText)
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
for (const pending of retryMessageJournals()) {
|
|
785
|
+
const record = readMessageJournal(pending.delivery_id)
|
|
786
|
+
if (record === null) continue
|
|
787
|
+
if (record.phase === "transcript" || record.phase === "unconfirmed") {
|
|
788
|
+
pendingMessageJournals?.delete(record.delivery_id)
|
|
789
|
+
continue
|
|
790
|
+
}
|
|
791
|
+
void deliverMessage(record)
|
|
792
|
+
}
|
|
437
793
|
} catch { /* The next Gateway tick retries discovery. */ }
|
|
438
794
|
finally { scanning = false }
|
|
439
795
|
}
|
|
440
796
|
|
|
441
797
|
return {
|
|
442
|
-
start() { timer = setInterval(() => { void tick() }, 2_000); void tick() },
|
|
798
|
+
start() { pendingMessageJournals = null; timer = setInterval(() => { void tick() }, 2_000); void tick() },
|
|
443
799
|
stop() {
|
|
444
800
|
stopped = true
|
|
445
801
|
clearReadiness()
|
|
@@ -605,12 +961,20 @@ function onIfSupported(api, name, handler) {
|
|
|
605
961
|
${openclawContinuationServiceSource()}
|
|
606
962
|
|
|
607
963
|
function register(api) {
|
|
964
|
+
try {
|
|
965
|
+
const stateDir = api.runtime?.state?.resolveStateDir?.()
|
|
966
|
+
if (typeof stateDir === "string" && path.isAbsolute(stateDir)) {
|
|
967
|
+
JOURNAL_DIR = path.join(stateDir, "notifai", "continuation-journal")
|
|
968
|
+
MESSAGE_JOURNAL_DIR = path.join(stateDir, "notifai", "message-journal")
|
|
969
|
+
}
|
|
970
|
+
} catch { /* No private journal is available in this plugin instance. */ }
|
|
608
971
|
api.registerService?.({
|
|
609
972
|
id: "notifai-continuation",
|
|
610
973
|
start(ctx) {
|
|
611
974
|
if (typeof ctx.stateDir !== "string" || !path.isAbsolute(ctx.stateDir)) return
|
|
612
975
|
JOURNAL_DIR = path.join(ctx.stateDir, "notifai", "continuation-journal")
|
|
613
|
-
|
|
976
|
+
MESSAGE_JOURNAL_DIR = path.join(ctx.stateDir, "notifai", "message-journal")
|
|
977
|
+
continuationService = makeContinuationService(ctx.config, ctx.logger, api)
|
|
614
978
|
continuationService.start()
|
|
615
979
|
},
|
|
616
980
|
stop() {
|
|
@@ -627,25 +991,32 @@ function register(api) {
|
|
|
627
991
|
onIfSupported(api, "before_reset", async (event, ctx) => {
|
|
628
992
|
const sessionKey = sessionKeyOf(event, ctx)
|
|
629
993
|
if (sessionKey === "") return
|
|
630
|
-
|
|
994
|
+
const nativeRevision = nativeSessionRevision(api, sessionKey, sessionIdOf(event, ctx))
|
|
995
|
+
await runHook("openclaw-lifecycle", { ...envelopeFor(sessionKey, event, ctx, "BeforeReset"),
|
|
996
|
+
...(nativeRevision === null ? {} : { openclaw_lifecycle_revision: nativeRevision }) })
|
|
631
997
|
})
|
|
632
998
|
|
|
633
999
|
api.on("before_prompt_build", async (event, ctx) => {
|
|
634
1000
|
const sessionKey = sessionKeyOf(event, ctx)
|
|
635
1001
|
if (sessionKey === "") return { prependContext: WORKER_ACTIVATION_CONTEXT }
|
|
636
1002
|
const worker = isWorkerSession(sessionKey, ctx)
|
|
1003
|
+
const nativeRevision = nativeSessionRevision(api, sessionKey, sessionIdOf(event, ctx))
|
|
1004
|
+
const envelope = { ...envelopeFor(sessionKey, event, ctx, "BeforePromptBuild"),
|
|
1005
|
+
...(nativeRevision === null ? {} : { openclaw_lifecycle_revision: nativeRevision }) }
|
|
637
1006
|
const resolved = await runHook(worker ? "subagent-start" : "session-start",
|
|
638
|
-
|
|
1007
|
+
{ ...envelope, hook_event_name: worker ? "SubagentStart" : "SessionStart" })
|
|
639
1008
|
// chat.send does not emit message_received on this supported Gateway path.
|
|
640
1009
|
// The prompt build is the exact session's authoritative turn-start seam.
|
|
641
|
-
await runHook("openclaw-turn-start",
|
|
1010
|
+
await runHook("openclaw-turn-start", envelope)
|
|
1011
|
+
const messageContext = worker ? null :
|
|
1012
|
+
await messageContextForPointer(api, event, ctx, sessionKey, nativeRevision)
|
|
642
1013
|
// Successful empty output means this Project is disabled or this
|
|
643
1014
|
// generation was already activated. A later prompt rechecks enablement.
|
|
644
|
-
if (resolved !== null && resolved.trim().length === 0) return
|
|
1015
|
+
if (resolved !== null && resolved.trim().length === 0 && messageContext === null) return
|
|
645
1016
|
const context = typeof resolved === "string" && resolved.trim().length > 0
|
|
646
1017
|
? resolved.trim()
|
|
647
|
-
: worker ? WORKER_ACTIVATION_CONTEXT : MISSING_LIFECYCLE_GUIDANCE_CONTEXT
|
|
648
|
-
return { prependContext: context }
|
|
1018
|
+
: resolved === null ? worker ? WORKER_ACTIVATION_CONTEXT : MISSING_LIFECYCLE_GUIDANCE_CONTEXT : ""
|
|
1019
|
+
return { prependContext: [context, messageContext].filter(Boolean).join("\\n\\n") }
|
|
649
1020
|
})
|
|
650
1021
|
|
|
651
1022
|
api.on("message_received", async (event, ctx) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-plugin.js","sourceRoot":"","sources":["../src/openclaw-plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openclaw-plugin.js","sourceRoot":"","sources":["../src/openclaw-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,7 @@
|
|
|
6
6
|
export declare function activeOpenclawGeneration(sessionKey: string, env: NodeJS.ProcessEnv, cwd?: string): string | null;
|
|
7
7
|
/** A pointer may reveal User text only to the active generation that owns it. */
|
|
8
8
|
export declare function openclawOwnsReply(sessionKey: string, requestId: string, env: NodeJS.ProcessEnv, cwd?: string): boolean;
|
|
9
|
+
/** A Session Message belongs to the generation that accepted its acknowledgement debt. */
|
|
10
|
+
export declare function openclawOwnsMessage(sessionKey: string, messageId: string, env: NodeJS.ProcessEnv, cwd?: string): boolean;
|
|
9
11
|
/** Record ownership as soon as a foreground submission returns its request ID. */
|
|
10
12
|
export declare function recordOpenclawForegroundReply(sessionKey: string, requestId: string, generation: string, env: NodeJS.ProcessEnv, cwd: string): boolean;
|
|
@@ -48,6 +48,16 @@ export function openclawOwnsReply(sessionKey, requestId, env, cwd) {
|
|
|
48
48
|
(state.openclaw_foreground_replies ?? []).some((entry) => entry.request_id === requestId && entry.generation === generation);
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
+
/** A Session Message belongs to the generation that accepted its acknowledgement debt. */
|
|
52
|
+
export function openclawOwnsMessage(sessionKey, messageId, env, cwd) {
|
|
53
|
+
return withFileLock(openclawGenerationLockPath(sessionKey, env), () => {
|
|
54
|
+
const generation = activeOpenclawGeneration(sessionKey, env, cwd);
|
|
55
|
+
if (generation === null)
|
|
56
|
+
return false;
|
|
57
|
+
return (readSessionState(sessionKey, env).message_acknowledgement_due ?? [])
|
|
58
|
+
.some((entry) => entry.message_id === messageId && entry.openclaw_generation === generation);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
51
61
|
/** Record ownership as soon as a foreground submission returns its request ID. */
|
|
52
62
|
export function recordOpenclawForegroundReply(sessionKey, requestId, generation, env, cwd) {
|
|
53
63
|
return withFileLock(openclawGenerationLockPath(sessionKey, env), () => {
|