@raidiant/notifai 10.1.7 → 11.0.2
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 +56 -0
- package/README.md +23 -13
- package/dist/claude-wake.d.ts +1 -2
- package/dist/claude-wake.js +15 -61
- package/dist/claude-wake.js.map +1 -1
- package/dist/cli-bin.js +3 -14
- package/dist/cli-bin.js.map +1 -1
- package/dist/cli-contract.d.ts +12 -0
- package/dist/cli-contract.js +19 -0
- package/dist/cli-contract.js.map +1 -0
- package/dist/cli-release.d.ts +0 -1
- package/dist/cli-release.js +5 -21
- package/dist/cli-release.js.map +1 -1
- package/dist/client.d.ts +2 -2
- package/dist/codex-wake.d.ts +1 -1
- package/dist/codex-wake.js +8 -36
- package/dist/codex-wake.js.map +1 -1
- package/dist/command-session.js +2 -1
- package/dist/command-session.js.map +1 -1
- package/dist/commands-acknowledge.d.ts +13 -0
- package/dist/commands-acknowledge.js +67 -0
- package/dist/commands-acknowledge.js.map +1 -0
- package/dist/commands-ask.d.ts +63 -0
- package/dist/commands-ask.js +407 -0
- package/dist/commands-ask.js.map +1 -0
- package/dist/commands-close.d.ts +6 -0
- package/dist/commands-close.js +197 -0
- package/dist/commands-close.js.map +1 -0
- package/dist/commands-config.js +2 -2
- package/dist/commands-config.js.map +1 -1
- package/dist/commands-core.js +2 -2
- package/dist/commands-core.js.map +1 -1
- package/dist/commands-doctor.js +61 -120
- package/dist/commands-doctor.js.map +1 -1
- package/dist/commands-harness-context.d.ts +0 -1
- package/dist/commands-harness-context.js +2 -4
- package/dist/commands-harness-context.js.map +1 -1
- package/dist/commands-hook-diagnostics.d.ts +27 -0
- package/dist/commands-hook-diagnostics.js +97 -0
- package/dist/commands-hook-diagnostics.js.map +1 -0
- package/dist/commands-hook-install.d.ts +26 -0
- package/dist/commands-hook-install.js +551 -0
- package/dist/commands-hook-install.js.map +1 -0
- package/dist/commands-hook-run.d.ts +29 -0
- package/dist/commands-hook-run.js +517 -0
- package/dist/commands-hook-run.js.map +1 -0
- package/dist/commands-init.d.ts +2 -7
- package/dist/commands-init.js +59 -92
- package/dist/commands-init.js.map +1 -1
- package/dist/commands-send.js +35 -3
- package/dist/commands-send.js.map +1 -1
- package/dist/commands-skill.js +5 -5
- package/dist/commands-skill.js.map +1 -1
- package/dist/commands-update.js +17 -31
- package/dist/commands-update.js.map +1 -1
- package/dist/commands.d.ts +11 -6
- package/dist/commands.js +9 -4
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts +14 -4
- package/dist/config.js +35 -9
- package/dist/config.js.map +1 -1
- package/dist/file-lock.d.ts +3 -0
- package/dist/file-lock.js +33 -17
- package/dist/file-lock.js.map +1 -1
- package/dist/guidance-content.js +30 -15
- package/dist/guidance-content.js.map +1 -1
- package/dist/hook-acknowledgements.d.ts +42 -0
- package/dist/hook-acknowledgements.js +316 -0
- package/dist/hook-acknowledgements.js.map +1 -0
- package/dist/hook-events.d.ts +6 -0
- package/dist/hook-events.js +22 -0
- package/dist/hook-events.js.map +1 -0
- package/dist/hook-gates.d.ts +7 -0
- package/dist/hook-gates.js +21 -0
- package/dist/hook-gates.js.map +1 -0
- package/dist/hook-lifecycle.d.ts +93 -0
- package/dist/{hooks.js → hook-lifecycle.js} +61 -1359
- package/dist/hook-lifecycle.js.map +1 -0
- package/dist/hook-project-sessions.d.ts +28 -0
- package/dist/hook-project-sessions.js +141 -0
- package/dist/hook-project-sessions.js.map +1 -0
- package/dist/hook-question-lock.d.ts +7 -0
- package/dist/hook-question-lock.js +173 -0
- package/dist/hook-question-lock.js.map +1 -0
- package/dist/hook-question-retirement.d.ts +57 -0
- package/dist/hook-question-retirement.js +261 -0
- package/dist/hook-question-retirement.js.map +1 -0
- package/dist/hook-question-state.d.ts +45 -0
- package/dist/hook-question-state.js +196 -0
- package/dist/hook-question-state.js.map +1 -0
- package/dist/hook-session-state.d.ts +31 -0
- package/dist/hook-session-state.js +249 -0
- package/dist/hook-session-state.js.map +1 -0
- package/dist/{hooks.d.ts → hook-types.d.ts} +17 -236
- package/dist/hook-types.js +4 -0
- package/dist/hook-types.js.map +1 -0
- package/dist/install-hooks.d.ts +75 -60
- package/dist/install-hooks.js +299 -209
- package/dist/install-hooks.js.map +1 -1
- package/dist/interactive.d.ts +3 -16
- package/dist/interactive.js +19 -95
- package/dist/interactive.js.map +1 -1
- package/dist/local-path.d.ts +7 -0
- package/dist/local-path.js +27 -0
- package/dist/local-path.js.map +1 -0
- package/dist/node-floor.js +3 -10
- package/dist/node-floor.js.map +1 -1
- package/dist/npm-invocation.d.ts +34 -0
- package/dist/npm-invocation.js +53 -0
- package/dist/npm-invocation.js.map +1 -0
- package/dist/openclaw-plugin.d.ts +12 -3
- package/dist/openclaw-plugin.js +42 -16
- package/dist/openclaw-plugin.js.map +1 -1
- package/dist/opencode-plugin.d.ts +2 -2
- package/dist/opencode-plugin.js +4 -6
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/program.js +11 -13
- package/dist/program.js.map +1 -1
- package/dist/project-enablement.d.ts +6 -0
- package/dist/project-enablement.js +11 -27
- package/dist/project-enablement.js.map +1 -1
- package/dist/question-settlement-process.d.ts +1 -1
- package/dist/readiness.d.ts +0 -2
- package/dist/readiness.js +0 -4
- package/dist/readiness.js.map +1 -1
- package/dist/send.d.ts +8 -4
- package/dist/send.js +145 -26
- package/dist/send.js.map +1 -1
- package/dist/session-activation.d.ts +3 -1
- package/dist/session-activation.js +16 -0
- package/dist/session-activation.js.map +1 -1
- package/dist/skill-source/manifest.json +4 -4
- package/dist/skill-source/notifai/SKILL.md +60 -60
- package/dist/skill-source/notifai/references/harness-setup.md +42 -16
- package/dist/ui/config-view.d.ts +0 -2
- package/dist/ui/config-view.js +1 -5
- package/dist/ui/config-view.js.map +1 -1
- package/dist/ui/theme.d.ts +0 -3
- package/dist/ui/theme.js +0 -1
- package/dist/ui/theme.js.map +1 -1
- package/dist/version.d.ts +22 -0
- package/dist/version.js +51 -0
- package/dist/version.js.map +1 -0
- package/dist/wake-support.d.ts +8 -0
- package/dist/wake-support.js +38 -0
- package/dist/wake-support.js.map +1 -0
- package/package.json +2 -2
- package/dist/cli-update-contract.d.ts +0 -7
- package/dist/cli-update-contract.js +0 -10
- package/dist/cli-update-contract.js.map +0 -1
- package/dist/commands-hooks.d.ts +0 -160
- package/dist/commands-hooks.js +0 -1800
- package/dist/commands-hooks.js.map +0 -1
- package/dist/hooks.js.map +0 -1
package/dist/file-lock.js
CHANGED
|
@@ -115,23 +115,39 @@ function sameEntryIdentity(file, expected) {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
/** Live protocol entries, pruning only unique paths whose process is gone. */
|
|
118
|
-
function
|
|
118
|
+
function liveEntryStat(entryPath, lstatEntry, deadline) {
|
|
119
|
+
for (;;) {
|
|
120
|
+
try {
|
|
121
|
+
return lstatEntry(entryPath);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const code = err.code;
|
|
125
|
+
if (code === 'ENOENT')
|
|
126
|
+
return null;
|
|
127
|
+
if (code !== 'EPERM')
|
|
128
|
+
throw err;
|
|
129
|
+
// Windows can report EPERM while another contender's just-renamed or
|
|
130
|
+
// just-unlinked entry is still leaving the directory. Retry only within
|
|
131
|
+
// the lock's existing acquisition budget; a persistently inaccessible
|
|
132
|
+
// entry remains a hard failure rather than disappearing from ordering.
|
|
133
|
+
if (Date.now() >= deadline)
|
|
134
|
+
throw err;
|
|
135
|
+
Atomics.wait(lockSleep, 0, 0, Math.min(FILE_LOCK_POLL_MS, Math.max(1, deadline - Date.now())));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function liveEntries(directory, directoryIdentity, options, deadline) {
|
|
119
140
|
assertSameDirectory(directory, directoryIdentity);
|
|
120
141
|
const live = [];
|
|
142
|
+
const lstatEntry = options.lstatEntry ?? ((file) => lstatSync(file));
|
|
121
143
|
for (const name of readdirSync(directory)) {
|
|
122
144
|
const entry = parseEntry(name);
|
|
123
145
|
if (entry === null)
|
|
124
146
|
continue;
|
|
125
147
|
const entryPath = path.join(directory, name);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
if (err.code === 'ENOENT')
|
|
132
|
-
continue;
|
|
133
|
-
throw err;
|
|
134
|
-
}
|
|
148
|
+
const stat = liveEntryStat(entryPath, lstatEntry, deadline);
|
|
149
|
+
if (stat === null)
|
|
150
|
+
continue;
|
|
135
151
|
const uid = currentUid();
|
|
136
152
|
if (stat.isSymbolicLink() || !stat.isFile() || (uid !== undefined && stat.uid !== uid)) {
|
|
137
153
|
throw new Error(`${entryPath} is not a current-user-owned regular file-lock entry.`);
|
|
@@ -140,7 +156,7 @@ function liveEntries(directory, directoryIdentity, observe) {
|
|
|
140
156
|
live.push(entry);
|
|
141
157
|
continue;
|
|
142
158
|
}
|
|
143
|
-
observe?.({ phase: 'stale-entry', entry: name });
|
|
159
|
+
options.observe?.({ phase: 'stale-entry', entry: name });
|
|
144
160
|
try {
|
|
145
161
|
// Recheck the unique dead owner's inode so delayed recovery cannot reap
|
|
146
162
|
// a replacement published at the same path by external interference.
|
|
@@ -181,7 +197,7 @@ function lostTheRendezvous(err) {
|
|
|
181
197
|
const code = err.code;
|
|
182
198
|
return code === 'ENOENT' || code === 'EINVAL';
|
|
183
199
|
}
|
|
184
|
-
function publishChoosing(directory, name, deadline,
|
|
200
|
+
function publishChoosing(directory, name, deadline, options) {
|
|
185
201
|
const file = path.join(directory, name);
|
|
186
202
|
for (;;) {
|
|
187
203
|
try {
|
|
@@ -190,8 +206,8 @@ function publishChoosing(directory, name, deadline, observe) {
|
|
|
190
206
|
chmodSync(directory, 0o700);
|
|
191
207
|
// Recover before registration so a delayed stale cleanup can only name an
|
|
192
208
|
// old owner's unique path, never this contender's future one.
|
|
193
|
-
liveEntries(directory, registrar,
|
|
194
|
-
observe?.({ phase: 'registering', entry: name });
|
|
209
|
+
liveEntries(directory, registrar, options, deadline);
|
|
210
|
+
options.observe?.({ phase: 'registering', entry: name });
|
|
195
211
|
const fileIdentity = publishEmpty(file);
|
|
196
212
|
// Pin the rendezvous that holds the entry, not the one scanned before it
|
|
197
213
|
// existed. `open` resolves the path atomically, so the entry lands in
|
|
@@ -236,13 +252,13 @@ export function withFileLock(file, action, options = {}) {
|
|
|
236
252
|
let directoryIdentity = null;
|
|
237
253
|
let operationFailed = false;
|
|
238
254
|
try {
|
|
239
|
-
const published = publishChoosing(file, choosingName, deadline, options
|
|
255
|
+
const published = publishChoosing(file, choosingName, deadline, options);
|
|
240
256
|
ownedPath = published.file;
|
|
241
257
|
ownedIdentity = published.fileIdentity;
|
|
242
258
|
directoryIdentity = published.directoryIdentity;
|
|
243
259
|
options.observe?.({ phase: 'choosing-published', entry: choosingName });
|
|
244
260
|
let highest = 0n;
|
|
245
|
-
for (const entry of liveEntries(file, directoryIdentity, options
|
|
261
|
+
for (const entry of liveEntries(file, directoryIdentity, options, deadline)) {
|
|
246
262
|
if (entry.kind === 'ticket' && entry.ticket > highest)
|
|
247
263
|
highest = entry.ticket;
|
|
248
264
|
}
|
|
@@ -256,7 +272,7 @@ export function withFileLock(file, action, options = {}) {
|
|
|
256
272
|
ownedIdentity = entryIdentity(lstatSync(ticketPath, { bigint: true }));
|
|
257
273
|
for (;;) {
|
|
258
274
|
const blockers = [];
|
|
259
|
-
for (const entry of liveEntries(file, directoryIdentity, options
|
|
275
|
+
for (const entry of liveEntries(file, directoryIdentity, options, deadline)) {
|
|
260
276
|
if (entry.pid === pid && entry.token === token)
|
|
261
277
|
continue;
|
|
262
278
|
if (entry.kind === 'choosing' || comesBefore(entry, ticket, pid, token)) {
|
package/dist/file-lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../src/file-lock.ts"],"names":[],"mappings":"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"}
|
package/dist/guidance-content.js
CHANGED
|
@@ -85,12 +85,31 @@ Bad:
|
|
|
85
85
|
kind restated
|
|
86
86
|
- \`Exit code 1\` — mechanics, not meaning
|
|
87
87
|
`;
|
|
88
|
-
const
|
|
88
|
+
const CONTENT = `# Content
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
Every Notification Request has two distinct content roles:
|
|
91
|
+
|
|
92
|
+
- **Summary** is required one-line plain text for native banners and notification
|
|
93
|
+
lists. Write it specifically for that constrained surface: short, high-level,
|
|
94
|
+
immediately understandable, and useful without Markdown. It has a hard limit
|
|
95
|
+
of 240 Unicode characters; aim for one short sentence rather than filling it.
|
|
96
|
+
- **Body** is optional standalone Markdown for focused detail. Use it when the
|
|
97
|
+
User needs more than the Summary. It must communicate everything the Summary
|
|
98
|
+
communicates, information-wise, then add the useful detail. It need not repeat
|
|
99
|
+
the Summary literally.
|
|
100
|
+
|
|
101
|
+
The focused view shows the Body when one exists, otherwise the Summary. It never
|
|
102
|
+
shows both together, so do not write a Body that depends on the Summary sitting
|
|
103
|
+
above it. Never put partial Markdown in Summary.
|
|
104
|
+
|
|
105
|
+
Use Markdown proportionately to make a Body easy to scan: paragraphs for simple
|
|
106
|
+
prose; headings, lists, links, tables, code, and media references when those
|
|
107
|
+
structures genuinely clarify the content. All attached media may be referenced
|
|
108
|
+
from the Body. Summary contains no media markup.
|
|
109
|
+
|
|
110
|
+
Keep both fields about what changes for the User and what is needed from them,
|
|
111
|
+
never how many tests ran, how long a step took, or which internal stage produced
|
|
112
|
+
it. Keep wording channel-neutral: no device names, no gestures.
|
|
94
113
|
|
|
95
114
|
Work finished:
|
|
96
115
|
|
|
@@ -114,15 +133,10 @@ Blocked:
|
|
|
114
133
|
>
|
|
115
134
|
> There is nothing for you to answer; I will confirm when it is live.
|
|
116
135
|
|
|
117
|
-
Bad
|
|
136
|
+
Bad content: a build report (\`42/42 green, coverage 87%, rebased onto main\`)
|
|
118
137
|
where the news is "users can now create accounts"; the journey ("first I
|
|
119
138
|
tried…") instead of the result; a log with the conclusion at the bottom; "see
|
|
120
139
|
terminal for details".
|
|
121
|
-
|
|
122
|
-
Add a summary line only when the body is long enough that its first line is
|
|
123
|
-
not a fair summary of what is inside: one short line answering what the title
|
|
124
|
-
raises, such as \`Rolled back cleanly; production is untouched\` over a long
|
|
125
|
-
failure report.
|
|
126
140
|
`;
|
|
127
141
|
const QUESTIONS = `# Questions
|
|
128
142
|
|
|
@@ -132,7 +146,8 @@ reply would resume. If the User must act and then tell you it is ready, that
|
|
|
132
146
|
readiness is an answer — ask for it.
|
|
133
147
|
|
|
134
148
|
A question is answerable from the notification alone, in the user's terms, not
|
|
135
|
-
the machinery's.
|
|
149
|
+
the machinery's. Its one askable sentence is the Summary. Put reasoning and
|
|
150
|
+
stakes in an optional standalone Markdown Body when they are needed.
|
|
136
151
|
Offer closed choices whose wording carries its own consequence.
|
|
137
152
|
|
|
138
153
|
Good:
|
|
@@ -188,9 +203,9 @@ export const SHIPPED_GUIDANCE = [
|
|
|
188
203
|
content: TITLES,
|
|
189
204
|
},
|
|
190
205
|
{
|
|
191
|
-
name: '
|
|
192
|
-
summary: '
|
|
193
|
-
content:
|
|
206
|
+
name: 'content',
|
|
207
|
+
summary: 'How the required Summary and optional Markdown Body differ',
|
|
208
|
+
content: CONTENT,
|
|
194
209
|
},
|
|
195
210
|
{
|
|
196
211
|
name: 'questions',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance-content.js","sourceRoot":"","sources":["../src/guidance-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;4DAawB,CAAA;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;gEAI4B,CAAA;AAEhE,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBtB,CAAA;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAA;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"guidance-content.js","sourceRoot":"","sources":["../src/guidance-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;4DAawB,CAAA;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;gEAI4B,CAAA;AAEhE,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBtB,CAAA;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAA;AAED,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDf,CAAA;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjB,CAAA;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;CAiBxB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,cAAc;KACxB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,MAAM;KAChB;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,4DAA4D;QACrE,OAAO,EAAE,OAAO;KACjB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,2CAA2C;QACpD,OAAO,EAAE,SAAS;KACnB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE,gBAAgB;KAC1B;CACF,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA+BJ,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AcceptedAnswerDelivery, AcknowledgementDue, AnsweredPending, HookContext, HookOutcome } from './hook-types.js';
|
|
2
|
+
export declare function answersContext(answered: AnsweredPending[], remaining: number): string;
|
|
3
|
+
export declare function stopAnswerOutput(context: string): string;
|
|
4
|
+
/**
|
|
5
|
+
* Close, truthfully retire, and forget every answered pending question in one
|
|
6
|
+
* state write, without dropping any other retirement debt or any question
|
|
7
|
+
* still waiting. Stop answers also open one bounded continuation generation;
|
|
8
|
+
* UserPromptSubmit answers ride the user's new turn.
|
|
9
|
+
*/
|
|
10
|
+
export declare function stageAcceptedAnswers(ctx: HookContext, sessionId: string, answered: AnsweredPending[], remaining: number): AcceptedAnswerDelivery;
|
|
11
|
+
/** Amend the live accepted record in place, without resurrecting a settled one. */
|
|
12
|
+
export declare function amendAcceptedAnswers(ctx: HookContext, sessionId: string, amend: (accepted: AcceptedAnswerDelivery) => AcceptedAnswerDelivery): void;
|
|
13
|
+
/**
|
|
14
|
+
* Finish a route write that linearized before SessionEnd.
|
|
15
|
+
*
|
|
16
|
+
* Ordinary state writers stop at the ended marker. This one narrow completion
|
|
17
|
+
* is allowed through because the journal's own `delivery_committed_at` proves
|
|
18
|
+
* the irreversible write won the ordering first; without the matching finish,
|
|
19
|
+
* a later SessionStart would replay a write that already reached the harness.
|
|
20
|
+
*/
|
|
21
|
+
export declare function finishCommittedDelivery(ctx: HookContext, sessionId: string, accepted: AcceptedAnswerDelivery, deliveredRoute: string): void;
|
|
22
|
+
export declare function clearAcknowledgementObligation(sessionId: string, env: NodeJS.ProcessEnv, requestId: string): boolean;
|
|
23
|
+
export declare function acknowledgementBlockContext(due: readonly AcknowledgementDue[]): string;
|
|
24
|
+
/**
|
|
25
|
+
* Hold the turn for an outstanding acknowledgement, or give up and let it
|
|
26
|
+
* through once holding has stopped being worth its cost.
|
|
27
|
+
*
|
|
28
|
+
* Returns the outcome that blocks the turn, or `null` to carry on.
|
|
29
|
+
*/
|
|
30
|
+
export declare function holdForAcknowledgement(ctx: HookContext, sessionId: string, due: readonly AcknowledgementDue[], notes: string[]): HookOutcome | null;
|
|
31
|
+
/** A turn that was not held resets the streak; only consecutive holds count. */
|
|
32
|
+
export declare function resetAcknowledgementBlocks(sessionId: string, env: NodeJS.ProcessEnv): void;
|
|
33
|
+
export declare function reconcileAcknowledgementObligations(ctx: HookContext, sessionId: string, due: readonly AcknowledgementDue[]): Promise<AcknowledgementDue[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Retire the answered questions and close the journal.
|
|
36
|
+
*
|
|
37
|
+
* Called once an answer's delivery is acknowledged — by the route's own write,
|
|
38
|
+
* or by the successor Stop of a blocking continuation. The continuation counter
|
|
39
|
+
* grows with each settled generation, so the cap that bounds chained
|
|
40
|
+
* answer-to-question loops is a real count rather than a constant 1.
|
|
41
|
+
*/
|
|
42
|
+
export declare function settleAcceptedAnswers(ctx: HookContext, sessionId: string, accepted: AcceptedAnswerDelivery, cwd?: string): void;
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/** Accepted-answer delivery and required Agent Acknowledgement obligations. */
|
|
2
|
+
import { withFileLock } from './file-lock.js';
|
|
3
|
+
import { gate } from './hook-gates.js';
|
|
4
|
+
import { retiringQuestion } from './hook-question-retirement.js';
|
|
5
|
+
import { isSamePending, pendingHasChoices, rememberQuestionState } from './hook-question-state.js';
|
|
6
|
+
import { pendingList, readSessionState, sessionStatePath, updateSessionState, writeSessionStateUnlocked, } from './hook-session-state.js';
|
|
7
|
+
/**
|
|
8
|
+
* The answer as the agent should read it. For a question with choices the
|
|
9
|
+
* latest reply IS the answer — an earlier conflicting one was corrected by
|
|
10
|
+
* it. Free-text answers can arrive in parts, and every part reaches the
|
|
11
|
+
* agent in the order it was written, so it can tell expansion from
|
|
12
|
+
* correction itself.
|
|
13
|
+
*
|
|
14
|
+
* The continuation repeats only identity the agent actually registered and
|
|
15
|
+
* the answer the server accepted. It never invents trust, urgency, permission,
|
|
16
|
+
* or approval claims for the transport to assert.
|
|
17
|
+
*/
|
|
18
|
+
function answerContext(answered) {
|
|
19
|
+
const { pending, replies } = answered;
|
|
20
|
+
const latest = replies.at(-1);
|
|
21
|
+
if (latest === undefined)
|
|
22
|
+
return 'Notifai — no answer was recorded.';
|
|
23
|
+
const answeredQuestionIds = [...new Set(latest.answers.map((answer) => answer.question_id))];
|
|
24
|
+
const identity = answeredQuestionIds.length === 0
|
|
25
|
+
? ''
|
|
26
|
+
: `question_id${answeredQuestionIds.length === 1 ? '' : 's'} ${answeredQuestionIds.join(', ')}, `;
|
|
27
|
+
const question = `question ${JSON.stringify(pending.question)}`;
|
|
28
|
+
if (replies.length === 1 || pendingHasChoices(pending)) {
|
|
29
|
+
return `Notifai — ${identity}${question}; the user answered ${JSON.stringify(latest.text)}.`;
|
|
30
|
+
}
|
|
31
|
+
const parts = replies.map((reply) => JSON.stringify(reply.text)).join(', then ');
|
|
32
|
+
return (`Notifai — ${identity}${question}; the user answered in ${replies.length} parts, ` +
|
|
33
|
+
`in the order written: ${parts}. Later parts extend or correct earlier ones.`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Every answer that has arrived, as one message. Several registered questions
|
|
37
|
+
* may resolve in one hook pass; the agent reads them together, each answer
|
|
38
|
+
* tied to the question that asked it, with a truthful note about anything
|
|
39
|
+
* still waiting.
|
|
40
|
+
*/
|
|
41
|
+
function acknowledgementCommand(requestId, textRequired = true) {
|
|
42
|
+
return textRequired
|
|
43
|
+
? `notifai acknowledge ${requestId} --text <text>`
|
|
44
|
+
: `notifai acknowledge ${requestId}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The acknowledgement is owed either way; only its text is conditional. So the
|
|
48
|
+
* instruction never says "you may skip this" — it says what to run.
|
|
49
|
+
*/
|
|
50
|
+
function acknowledgementDemand(textRequired) {
|
|
51
|
+
return textRequired
|
|
52
|
+
? ' with non-empty text saying what concrete work you will do because of the reply; a bare acknowledgement is insufficient'
|
|
53
|
+
: ' exactly as shown; this account turned acknowledgement text off, so the receipt carries no words';
|
|
54
|
+
}
|
|
55
|
+
function acknowledgementContext(answered) {
|
|
56
|
+
const due = answered.filter((entry) => entry.agent_acknowledgement_required === true && entry.pending.request_id !== undefined);
|
|
57
|
+
if (due.length === 0) {
|
|
58
|
+
return ' Agent Acknowledgement is not required for the answered request(s).';
|
|
59
|
+
}
|
|
60
|
+
if (due.length === 1) {
|
|
61
|
+
const entry = due[0];
|
|
62
|
+
const requestId = entry.pending.request_id;
|
|
63
|
+
const textRequired = entry.agent_acknowledgement_text_required !== false;
|
|
64
|
+
return (` Agent Acknowledgement is required for request ${requestId}. Immediately, before doing the resumed work or ending this turn, run ` +
|
|
65
|
+
`\`${acknowledgementCommand(requestId, textRequired)}\`${acknowledgementDemand(textRequired)}.`);
|
|
66
|
+
}
|
|
67
|
+
const anyTextRequired = due.some((entry) => entry.agent_acknowledgement_text_required !== false);
|
|
68
|
+
const commands = due
|
|
69
|
+
.map((entry) => {
|
|
70
|
+
const requestId = entry.pending.request_id;
|
|
71
|
+
return `- ${requestId}: \`${acknowledgementCommand(requestId, entry.agent_acknowledgement_text_required !== false)}\``;
|
|
72
|
+
})
|
|
73
|
+
.join('\n');
|
|
74
|
+
return (` Agent Acknowledgement is required for ${due.length} requests. Immediately, before doing the resumed work or ending this turn, run every command below${acknowledgementDemand(anyTextRequired)}:\n` +
|
|
75
|
+
commands);
|
|
76
|
+
}
|
|
77
|
+
export function answersContext(answered, remaining) {
|
|
78
|
+
const tail = remaining > 0
|
|
79
|
+
? ` (${remaining} more registered question${remaining === 1 ? ' is' : 's are'} still waiting for an answer.)`
|
|
80
|
+
: '';
|
|
81
|
+
const guidance = acknowledgementContext(answered);
|
|
82
|
+
if (answered.length === 1) {
|
|
83
|
+
return answerContext(answered[0]) + tail + guidance;
|
|
84
|
+
}
|
|
85
|
+
const lines = answered.map(({ pending, replies }) => {
|
|
86
|
+
const latest = replies.at(-1);
|
|
87
|
+
const answer = replies.length === 1 || pendingHasChoices(pending)
|
|
88
|
+
? JSON.stringify(latest.text)
|
|
89
|
+
: `${replies.map((reply) => JSON.stringify(reply.text)).join(', then ')} (parts in the order written; later parts extend or correct earlier ones)`;
|
|
90
|
+
const ids = [...new Set(latest.answers.map((entry) => entry.question_id))];
|
|
91
|
+
const identity = ids.length === 0 ? '' : `question_id${ids.length === 1 ? '' : 's'} ${ids.join(', ')}: `;
|
|
92
|
+
return `- ${identity}${JSON.stringify(pending.question)} → ${answer}`;
|
|
93
|
+
});
|
|
94
|
+
return `Notifai — the user answered ${answered.length} questions:\n${lines.join('\n')}${tail}${guidance}`;
|
|
95
|
+
}
|
|
96
|
+
export function stopAnswerOutput(context) {
|
|
97
|
+
return JSON.stringify({
|
|
98
|
+
decision: 'block',
|
|
99
|
+
reason: context,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Close, truthfully retire, and forget every answered pending question in one
|
|
104
|
+
* state write, without dropping any other retirement debt or any question
|
|
105
|
+
* still waiting. Stop answers also open one bounded continuation generation;
|
|
106
|
+
* UserPromptSubmit answers ride the user's new turn.
|
|
107
|
+
*/
|
|
108
|
+
export function stageAcceptedAnswers(ctx, sessionId, answered, remaining) {
|
|
109
|
+
const accepted = {
|
|
110
|
+
answers: answered,
|
|
111
|
+
remaining,
|
|
112
|
+
recorded_at: ctx.now(),
|
|
113
|
+
};
|
|
114
|
+
updateSessionState(sessionId, ctx.env, (current) => {
|
|
115
|
+
const pendingRemaining = pendingList(current).filter((entry) => !answered.some(({ pending }) => isSamePending(entry, pending)));
|
|
116
|
+
const acknowledgementDue = [...(current.acknowledgement_due ?? [])];
|
|
117
|
+
for (const answer of answered) {
|
|
118
|
+
const requestId = answer.pending.request_id;
|
|
119
|
+
if (answer.agent_acknowledgement_required === true &&
|
|
120
|
+
requestId !== undefined &&
|
|
121
|
+
!acknowledgementDue.some((entry) => entry.request_id === requestId)) {
|
|
122
|
+
acknowledgementDue.push({
|
|
123
|
+
request_id: requestId,
|
|
124
|
+
recorded_at: accepted.recorded_at,
|
|
125
|
+
text_required: answer.agent_acknowledgement_text_required !== false,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const next = {
|
|
130
|
+
...current,
|
|
131
|
+
accepted,
|
|
132
|
+
};
|
|
133
|
+
if (pendingRemaining.length > 0)
|
|
134
|
+
next.pending = pendingRemaining;
|
|
135
|
+
else
|
|
136
|
+
delete next.pending;
|
|
137
|
+
if (acknowledgementDue.length > 0)
|
|
138
|
+
next.acknowledgement_due = acknowledgementDue;
|
|
139
|
+
else
|
|
140
|
+
delete next.acknowledgement_due;
|
|
141
|
+
return answered.reduce((remembered, answer) => rememberQuestionState(remembered, answer.pending, 'answered'), next);
|
|
142
|
+
});
|
|
143
|
+
return accepted;
|
|
144
|
+
}
|
|
145
|
+
/** Amend the live accepted record in place, without resurrecting a settled one. */
|
|
146
|
+
export function amendAcceptedAnswers(ctx, sessionId, amend) {
|
|
147
|
+
updateSessionState(sessionId, ctx.env, (current) => current.accepted === undefined ? current : { ...current, accepted: amend(current.accepted) });
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Finish a route write that linearized before SessionEnd.
|
|
151
|
+
*
|
|
152
|
+
* Ordinary state writers stop at the ended marker. This one narrow completion
|
|
153
|
+
* is allowed through because the journal's own `delivery_committed_at` proves
|
|
154
|
+
* the irreversible write won the ordering first; without the matching finish,
|
|
155
|
+
* a later SessionStart would replay a write that already reached the harness.
|
|
156
|
+
*/
|
|
157
|
+
export function finishCommittedDelivery(ctx, sessionId, accepted, deliveredRoute) {
|
|
158
|
+
const file = sessionStatePath(sessionId, ctx.env);
|
|
159
|
+
withFileLock(`${file}.lock`, () => {
|
|
160
|
+
const current = readSessionState(sessionId, ctx.env);
|
|
161
|
+
if (current.accepted?.recorded_at !== accepted.recorded_at ||
|
|
162
|
+
current.accepted.delivery_committed_at === undefined) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
writeSessionStateUnlocked(file, sessionId, {
|
|
166
|
+
...current,
|
|
167
|
+
accepted: {
|
|
168
|
+
...current.accepted,
|
|
169
|
+
delivered_at: ctx.now(),
|
|
170
|
+
delivered_route: deliveredRoute,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
export function clearAcknowledgementObligation(sessionId, env, requestId) {
|
|
176
|
+
let cleared = false;
|
|
177
|
+
updateSessionState(sessionId, env, (current) => {
|
|
178
|
+
const due = current.acknowledgement_due ?? [];
|
|
179
|
+
const remaining = due.filter((entry) => entry.request_id !== requestId);
|
|
180
|
+
cleared = remaining.length !== due.length;
|
|
181
|
+
if (!cleared)
|
|
182
|
+
return current;
|
|
183
|
+
const next = { ...current };
|
|
184
|
+
if (remaining.length > 0)
|
|
185
|
+
next.acknowledgement_due = remaining;
|
|
186
|
+
else
|
|
187
|
+
delete next.acknowledgement_due;
|
|
188
|
+
return next;
|
|
189
|
+
});
|
|
190
|
+
return cleared;
|
|
191
|
+
}
|
|
192
|
+
export function acknowledgementBlockContext(due) {
|
|
193
|
+
const commands = due
|
|
194
|
+
.map((entry) => `- ${entry.request_id}: \`${acknowledgementCommand(entry.request_id, entry.text_required !== false)}\``)
|
|
195
|
+
.join('\n');
|
|
196
|
+
const anyTextRequired = due.some((entry) => entry.text_required !== false);
|
|
197
|
+
return (`Notifai — required Agent Acknowledgement${due.length === 1 ? '' : 's'} still missing for request${due.length === 1 ? '' : 's'} ${due.map((entry) => entry.request_id).join(', ')}. ` +
|
|
198
|
+
`Before doing more resumed work or ending this turn, run ${due.length === 1 ? 'this command' : 'every command'}${acknowledgementDemand(anyTextRequired)}:\n${commands}`);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* How many turns in a row a session may be held waiting for an acknowledgement.
|
|
202
|
+
*
|
|
203
|
+
* The gate is the one place hooks deliberately break the fail-open rule, and it
|
|
204
|
+
* had no bound at all: an agent that could not or would not acknowledge — or a
|
|
205
|
+
* server that stayed unreachable, since an error here counts as unresolved —
|
|
206
|
+
* held every turn of that session for ever. Blocking a user's agent
|
|
207
|
+
* indefinitely does not get them an acknowledgement; it costs them the agent as
|
|
208
|
+
* well as the acknowledgement.
|
|
209
|
+
*/
|
|
210
|
+
const MAX_ACKNOWLEDGEMENT_BLOCKS = 3;
|
|
211
|
+
/**
|
|
212
|
+
* Hold the turn for an outstanding acknowledgement, or give up and let it
|
|
213
|
+
* through once holding has stopped being worth its cost.
|
|
214
|
+
*
|
|
215
|
+
* Returns the outcome that blocks the turn, or `null` to carry on.
|
|
216
|
+
*/
|
|
217
|
+
export function holdForAcknowledgement(ctx, sessionId, due, notes) {
|
|
218
|
+
if (due.length === 0)
|
|
219
|
+
return null;
|
|
220
|
+
const requestIds = due.map((entry) => entry.request_id);
|
|
221
|
+
const blocks = (readSessionState(sessionId, ctx.env).acknowledgement_blocks ?? 0) + 1;
|
|
222
|
+
if (blocks > MAX_ACKNOWLEDGEMENT_BLOCKS) {
|
|
223
|
+
// Drop the obligation with the reason recorded. The answer was already
|
|
224
|
+
// delivered; what is lost is the agent's receipt for it, and the log is
|
|
225
|
+
// where that loss stays visible.
|
|
226
|
+
for (const requestId of requestIds)
|
|
227
|
+
clearAcknowledgementObligation(sessionId, ctx.env, requestId);
|
|
228
|
+
resetAcknowledgementBlocks(sessionId, ctx.env);
|
|
229
|
+
gate(ctx, 'proceeding', 'acknowledgement-abandoned', {
|
|
230
|
+
request_ids: requestIds,
|
|
231
|
+
blocks: blocks - 1,
|
|
232
|
+
limit: MAX_ACKNOWLEDGEMENT_BLOCKS,
|
|
233
|
+
});
|
|
234
|
+
notes.push(`no acknowledgement after ${MAX_ACKNOWLEDGEMENT_BLOCKS} turns; continuing without one rather than holding this session for ever`);
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
updateSessionState(sessionId, ctx.env, (current) => ({
|
|
238
|
+
...current,
|
|
239
|
+
acknowledgement_blocks: blocks,
|
|
240
|
+
}));
|
|
241
|
+
gate(ctx, 'held', 'acknowledgement-required', { request_ids: requestIds, blocks });
|
|
242
|
+
return {
|
|
243
|
+
stdout: stopAnswerOutput(acknowledgementBlockContext(due)),
|
|
244
|
+
notes,
|
|
245
|
+
log: { stage: 'acknowledgement-required', request_ids: requestIds },
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/** A turn that was not held resets the streak; only consecutive holds count. */
|
|
249
|
+
export function resetAcknowledgementBlocks(sessionId, env) {
|
|
250
|
+
updateSessionState(sessionId, env, (current) => {
|
|
251
|
+
if (current.acknowledgement_blocks === undefined)
|
|
252
|
+
return current;
|
|
253
|
+
const next = { ...current };
|
|
254
|
+
delete next.acknowledgement_blocks;
|
|
255
|
+
return next;
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
export async function reconcileAcknowledgementObligations(ctx, sessionId, due) {
|
|
259
|
+
const unresolved = [];
|
|
260
|
+
for (const obligation of due) {
|
|
261
|
+
try {
|
|
262
|
+
const snapshot = await ctx.client.agentAcknowledgement(obligation.request_id, {
|
|
263
|
+
waitSeconds: 0,
|
|
264
|
+
});
|
|
265
|
+
if (snapshot.agent_acknowledgement_required === false ||
|
|
266
|
+
snapshot.agent_acknowledgement !== null) {
|
|
267
|
+
clearAcknowledgementObligation(sessionId, ctx.env, obligation.request_id);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
unresolved.push(obligation);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
unresolved.push(obligation);
|
|
275
|
+
ctx.log?.error('hook.gate', {
|
|
276
|
+
verdict: 'held',
|
|
277
|
+
reason: 'acknowledgement-required',
|
|
278
|
+
stage: 'reconcile-failed',
|
|
279
|
+
request_id: obligation.request_id,
|
|
280
|
+
message: err instanceof Error ? err.message : String(err),
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return unresolved;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Retire the answered questions and close the journal.
|
|
288
|
+
*
|
|
289
|
+
* Called once an answer's delivery is acknowledged — by the route's own write,
|
|
290
|
+
* or by the successor Stop of a blocking continuation. The continuation counter
|
|
291
|
+
* grows with each settled generation, so the cap that bounds chained
|
|
292
|
+
* answer-to-question loops is a real count rather than a constant 1.
|
|
293
|
+
*/
|
|
294
|
+
export function settleAcceptedAnswers(ctx, sessionId, accepted, cwd) {
|
|
295
|
+
const retirements = accepted.answers
|
|
296
|
+
.map(({ pending }) => retiringQuestion(pending, 'answered', cwd))
|
|
297
|
+
.filter((entry) => entry !== null);
|
|
298
|
+
updateSessionState(sessionId, ctx.env, (current) => {
|
|
299
|
+
const retiring = [...(current.retiring ?? [])];
|
|
300
|
+
for (const retirement of retirements) {
|
|
301
|
+
const existing = retiring.findIndex((entry) => entry.request_id === retirement.request_id);
|
|
302
|
+
if (existing < 0)
|
|
303
|
+
retiring.push(retirement);
|
|
304
|
+
else
|
|
305
|
+
retiring[existing] = retirement;
|
|
306
|
+
}
|
|
307
|
+
const next = { ...current, retiring };
|
|
308
|
+
delete next.accepted;
|
|
309
|
+
next.continuation = {
|
|
310
|
+
answered_at: accepted.recorded_at,
|
|
311
|
+
count: (current.continuation?.count ?? 0) + 1,
|
|
312
|
+
};
|
|
313
|
+
return next;
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=hook-acknowledgements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-acknowledgements.js","sourceRoot":"","sources":["../src/hook-acknowledgements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Canonical lifecycle event vocabulary shared by installation and execution. */
|
|
2
|
+
import { type HookInstallableHarness } from './harnesses.js';
|
|
3
|
+
export declare const HOOK_EVENTS: readonly ["session-start", "subagent-start", "activation-stop", "user-prompt-submit", "stop", "session-end"];
|
|
4
|
+
export type HookEvent = (typeof HOOK_EVENTS)[number];
|
|
5
|
+
/** Lifecycle handlers one installed harness must carry in this CLI build. */
|
|
6
|
+
export declare function requiredHookEvents(harness: HookInstallableHarness): readonly HookEvent[];
|