@raidiant/notifai 9.2.2 → 9.3.0
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 +19 -0
- package/README.md +8 -5
- package/dist/claude-wake.js +11 -0
- package/dist/claude-wake.js.map +1 -1
- package/dist/codex-wake.js +9 -0
- package/dist/codex-wake.js.map +1 -1
- package/dist/commands-core.d.ts +0 -3
- package/dist/commands-core.js.map +1 -1
- package/dist/commands-doctor.js +41 -2
- package/dist/commands-doctor.js.map +1 -1
- package/dist/commands-hook-shape.d.ts +4 -3
- package/dist/commands-hook-shape.js +19 -10
- package/dist/commands-hook-shape.js.map +1 -1
- package/dist/commands-hooks.js +64 -13
- package/dist/commands-hooks.js.map +1 -1
- package/dist/commands-init.js +12 -1
- package/dist/commands-init.js.map +1 -1
- package/dist/commands-project.d.ts +4 -0
- package/dist/commands-project.js +41 -0
- package/dist/commands-project.js.map +1 -0
- package/dist/commands-send-support.js +1 -22
- package/dist/commands-send-support.js.map +1 -1
- package/dist/commands-send.js +10 -4
- package/dist/commands-send.js.map +1 -1
- package/dist/commands-skill.js +58 -0
- package/dist/commands-skill.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/config-schema.js +2 -2
- package/dist/config-schema.js.map +1 -1
- package/dist/config.d.ts +3 -3
- package/dist/config.js +4 -7
- package/dist/config.js.map +1 -1
- package/dist/guidance-content.d.ts +3 -0
- package/dist/guidance-content.js +20 -0
- package/dist/guidance-content.js.map +1 -1
- package/dist/guidance-render.js +3 -3
- package/dist/guidance-render.js.map +1 -1
- package/dist/harnesses.js +2 -2
- package/dist/harnesses.js.map +1 -1
- package/dist/hooks.d.ts +26 -50
- package/dist/hooks.js +391 -150
- package/dist/hooks.js.map +1 -1
- package/dist/install-hooks.d.ts +7 -28
- package/dist/install-hooks.js +18 -37
- package/dist/install-hooks.js.map +1 -1
- package/dist/program.d.ts +4 -1
- package/dist/program.js +19 -1
- package/dist/program.js.map +1 -1
- package/dist/project-enablement.d.ts +15 -0
- package/dist/project-enablement.js +87 -0
- package/dist/project-enablement.js.map +1 -0
- package/dist/question-timing.d.ts +46 -0
- package/dist/question-timing.js +48 -0
- package/dist/question-timing.js.map +1 -0
- package/dist/readiness.d.ts +7 -0
- package/dist/readiness.js.map +1 -1
- package/dist/send.d.ts +2 -0
- package/dist/send.js +6 -1
- package/dist/send.js.map +1 -1
- package/dist/session-activation.d.ts +1 -1
- package/dist/session-activation.js +3 -4
- package/dist/session-activation.js.map +1 -1
- package/package.json +2 -2
- package/src/claude-wake.test.ts +1 -0
- package/src/claude-wake.ts +10 -0
- package/src/codex-wake.test.ts +1 -0
- package/src/codex-wake.ts +9 -0
- package/src/commands-core.ts +0 -3
- package/src/commands-doctor.ts +48 -4
- package/src/commands-hook-shape.ts +26 -10
- package/src/commands-hooks.ts +59 -13
- package/src/commands-init.ts +11 -1
- package/src/commands-project.ts +47 -0
- package/src/commands-send-support.ts +1 -27
- package/src/commands-send.ts +8 -3
- package/src/commands-skill.test.ts +44 -0
- package/src/commands-skill.ts +57 -0
- package/src/commands.test.ts +47 -17
- package/src/commands.ts +5 -0
- package/src/config-schema.ts +2 -2
- package/src/config.test.ts +2 -3
- package/src/config.ts +7 -10
- package/src/guidance-content.ts +22 -0
- package/src/guidance-render.ts +3 -3
- package/src/harnesses.ts +2 -2
- package/src/hook-adapter.test.ts +27 -8
- package/src/hooks.test.ts +808 -80
- package/src/hooks.ts +525 -181
- package/src/install-hooks.test.ts +8 -12
- package/src/install-hooks.ts +21 -37
- package/src/program.test.ts +18 -0
- package/src/program.ts +22 -0
- package/src/project-enablement.test.ts +55 -0
- package/src/project-enablement.ts +99 -0
- package/src/question-timing.ts +56 -0
- package/src/readiness.ts +8 -1
- package/src/send.ts +8 -1
- package/src/session-activation.ts +3 -4
- package/dist/orca-session-title.d.ts +0 -10
- package/dist/orca-session-title.js +0 -99
- package/dist/orca-session-title.js.map +0 -1
- package/src/orca-session-title.test.ts +0 -95
- package/src/orca-session-title.ts +0 -105
package/dist/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { HookHarness } from './hooks.js';
|
|
2
|
-
export declare const WORKER_ACTIVATION_CONTEXT = "Notifai worker context:
|
|
2
|
+
export declare const WORKER_ACTIVATION_CONTEXT = "Notifai worker context: an Agent Event is a meaningful occurrence in your work; a Notification Request is a deliberate User-visible message about one. Report Agent Events to the parent and do not send Notification Requests unless the parent explicitly delegated that ownership. If delegated, load the Notifai skill and run `notifai guidance` before composing one.";
|
|
3
3
|
export declare const MISSING_LIFECYCLE_GUIDANCE_CONTEXT = "Notifai is active, but lifecycle guidance could not be loaded. Run `notifai guidance` once before deciding whether or how to send a Notification Request.";
|
|
4
4
|
/** One lifecycle meaning, encoded for each harness output contract. */
|
|
5
5
|
export declare function sessionActivationOutput(harness: HookHarness | undefined, hookEventName: 'SessionStart' | 'SubagentStart', cwd?: string, env?: NodeJS.ProcessEnv): string | undefined;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
2
|
import { GUIDANCE_CONTEXT_MAX_BYTES, boundedEffectiveGuidance } from './guidance-render.js';
|
|
3
|
-
const ROOT_OWNERSHIP = 'Notifai is
|
|
4
|
-
'Missing CLI readiness is handled through `notifai init --json`.
|
|
5
|
-
|
|
6
|
-
export const WORKER_ACTIVATION_CONTEXT = 'Notifai worker context: report Agent Events to the parent; do not send User-visible Notification Requests unless the parent explicitly delegated that ownership. If delegated, load the Notifai skill and run `notifai guidance` before composing one.';
|
|
3
|
+
const ROOT_OWNERSHIP = 'Notifai is enabled for this Project. The effective, provenance-marked guidance below governs Notification Requests. ' +
|
|
4
|
+
'Missing CLI readiness is handled through `notifai init --json`.';
|
|
5
|
+
export const WORKER_ACTIVATION_CONTEXT = 'Notifai worker context: an Agent Event is a meaningful occurrence in your work; a Notification Request is a deliberate User-visible message about one. Report Agent Events to the parent and do not send Notification Requests unless the parent explicitly delegated that ownership. If delegated, load the Notifai skill and run `notifai guidance` before composing one.';
|
|
7
6
|
export const MISSING_LIFECYCLE_GUIDANCE_CONTEXT = 'Notifai is active, but lifecycle guidance could not be loaded. Run `notifai guidance` once before deciding whether or how to send a Notification Request.';
|
|
8
7
|
function rootActivationContext(cwd, env) {
|
|
9
8
|
const guidance = boundedEffectiveGuidance({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-activation.js","sourceRoot":"","sources":["../src/session-activation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE3F,MAAM,cAAc,GAClB,
|
|
1
|
+
{"version":3,"file":"session-activation.js","sourceRoot":"","sources":["../src/session-activation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE3F,MAAM,cAAc,GAClB,sHAAsH;IACtH,iEAAiE,CAAA;AAEnE,MAAM,CAAC,MAAM,yBAAyB,GACpC,6WAA6W,CAAA;AAE/W,MAAM,CAAC,MAAM,kCAAkC,GAC7C,2JAA2J,CAAA;AAE7J,SAAS,qBAAqB,CAAC,GAAW,EAAE,GAAsB;IAChE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG;QACH,GAAG;QACH,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,cAAc,MAAM,EAAE,MAAM,CAAC;KAC1F,CAAC,CAAA;IACF,OAAO,GAAG,cAAc,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;AACrF,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,aAA+C,EAC/C,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,OAAO,GAAG,aAAa,KAAK,eAAe;QAC/C,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACnC,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IAC1C,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,kBAAkB,EAAE;gBAClB,aAAa;gBACb,iBAAiB,EAAE,OAAO;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;KAClD,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raidiant/notifai",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Send native device notifications from agents and local programs",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@clack/prompts": "^1.7.0",
|
|
24
|
-
"@raidiant/notifai-protocol": "5.0.
|
|
24
|
+
"@raidiant/notifai-protocol": "5.0.2",
|
|
25
25
|
"commander": "^14.0.0",
|
|
26
26
|
"picocolors": "^1.1.1",
|
|
27
27
|
"smol-toml": "^1.4.0"
|
package/src/claude-wake.test.ts
CHANGED
package/src/claude-wake.ts
CHANGED
|
@@ -357,6 +357,7 @@ export function claudeWakeRoute(options: {
|
|
|
357
357
|
acknowledgement: 'held',
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
|
+
if (!event.commitDelivery()) return cancelledDelivery()
|
|
360
361
|
await adapters.resume(options.sessionId, sourceDescriptor.cwd, event.context)
|
|
361
362
|
return {
|
|
362
363
|
notes: ['cold-resumed the stopped Claude session with its accepted answer'],
|
|
@@ -376,6 +377,7 @@ export function claudeWakeRoute(options: {
|
|
|
376
377
|
acknowledgement: 'held',
|
|
377
378
|
}
|
|
378
379
|
}
|
|
380
|
+
if (!event.commitDelivery()) return cancelledDelivery()
|
|
379
381
|
await adapters.sendSocket(
|
|
380
382
|
observation.descriptor.messagingSocketPath,
|
|
381
383
|
socketLine(event.context),
|
|
@@ -400,6 +402,14 @@ export function claudeWakeRoute(options: {
|
|
|
400
402
|
}
|
|
401
403
|
}
|
|
402
404
|
|
|
405
|
+
function cancelledDelivery(): DeliveryOutcome {
|
|
406
|
+
return {
|
|
407
|
+
notes: ['the Agent Session ended before answer delivery; stopping this observer'],
|
|
408
|
+
log: { route: 'hold-for-next-turn', stage: 'queued', reason: 'session-ended' },
|
|
409
|
+
acknowledgement: 'held',
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
403
413
|
function runClaude(args: string[], options: { cwd?: string; env?: NodeJS.ProcessEnv } = {}): Promise<string> {
|
|
404
414
|
return new Promise((resolve, reject) => {
|
|
405
415
|
const child = spawn('claude', args, {
|
package/src/codex-wake.test.ts
CHANGED
package/src/codex-wake.ts
CHANGED
|
@@ -156,6 +156,7 @@ export function codexWakeRoute(options: {
|
|
|
156
156
|
const raced = holdForNextTurn(confirmed)
|
|
157
157
|
if (raced !== null) return raced
|
|
158
158
|
|
|
159
|
+
if (!event.commitDelivery()) return cancelledDelivery()
|
|
159
160
|
await adapters.resume(options.threadId, options.cwd, event.context)
|
|
160
161
|
return {
|
|
161
162
|
notes: ['cold-resumed the stopped Codex thread with its accepted answer'],
|
|
@@ -168,6 +169,14 @@ export function codexWakeRoute(options: {
|
|
|
168
169
|
}
|
|
169
170
|
}
|
|
170
171
|
|
|
172
|
+
function cancelledDelivery(): DeliveryOutcome {
|
|
173
|
+
return {
|
|
174
|
+
notes: ['the Agent Session ended before answer delivery; stopping this observer'],
|
|
175
|
+
log: { route: 'hold-for-next-turn', stage: 'queued', reason: 'session-ended' },
|
|
176
|
+
acknowledgement: 'held',
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
171
180
|
/** The journal, with the exact reason the thread could not be resumed. */
|
|
172
181
|
function holdForNextTurn(observation: CodexWakeObservation): DeliveryOutcome | null {
|
|
173
182
|
if (observation.state === 'stopped') return null
|
package/src/commands-core.ts
CHANGED
|
@@ -13,7 +13,6 @@ import type { CredentialStore, MachineCredential } from './credentials.js'
|
|
|
13
13
|
import { type HookAdapterTarget } from './hook-adapter.js'
|
|
14
14
|
import { logConfigResolved, logSettingsFrom, nullLogger, type Logger } from './logging.js'
|
|
15
15
|
import type { NativeSkills } from './native-skills.js'
|
|
16
|
-
import type { OrcaSessionTitleLookup } from './orca-session-title.js'
|
|
17
16
|
import { packageVersion } from './release.js'
|
|
18
17
|
import type { Tone } from './ui/theme.js'
|
|
19
18
|
|
|
@@ -82,8 +81,6 @@ export interface CommandDeps {
|
|
|
82
81
|
codexSourcePid?: number
|
|
83
82
|
/** Test seam and production adapter for the external native skills installer. */
|
|
84
83
|
nativeSkills?: NativeSkills
|
|
85
|
-
/** Test seam for Orca's exact-worktree semantic title lookup. */
|
|
86
|
-
orcaSessionTitle?: OrcaSessionTitleLookup
|
|
87
84
|
/** Test seam for registry reads; production uses fetch. */
|
|
88
85
|
fetchImpl?: typeof fetch
|
|
89
86
|
/**
|
package/src/commands-doctor.ts
CHANGED
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
readSessionState,
|
|
14
14
|
} from './hooks.js'
|
|
15
15
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS,
|
|
17
|
+
QUESTION_STOP_TIMEOUT_SECONDS,
|
|
18
18
|
codexCoexistenceNotes,
|
|
19
19
|
codexHomeNote,
|
|
20
20
|
codexLayerDir,
|
|
@@ -80,6 +80,7 @@ import {
|
|
|
80
80
|
setupProofApplies,
|
|
81
81
|
} from './commands-setup-proof.js'
|
|
82
82
|
import { skillReadiness } from './commands-skill.js'
|
|
83
|
+
import { projectBinding, projectEnabled } from './project-enablement.js'
|
|
83
84
|
|
|
84
85
|
// ---------------------------------------------------------------------------
|
|
85
86
|
// doctor
|
|
@@ -229,6 +230,37 @@ function projectReadiness(deps: CommandDeps, config: CliConfig): ReadinessState
|
|
|
229
230
|
}
|
|
230
231
|
}
|
|
231
232
|
|
|
233
|
+
function projectEnablementReadiness(deps: CommandDeps, config: CliConfig): ReadinessState {
|
|
234
|
+
const binding = projectBinding(deps.cwd, deps.env, config.project.value)
|
|
235
|
+
if (binding === null) {
|
|
236
|
+
return {
|
|
237
|
+
id: 'project-enablement',
|
|
238
|
+
title: 'Project enablement',
|
|
239
|
+
status: 'optional-gap',
|
|
240
|
+
detail: 'no Project is available here; lifecycle hooks stay silent',
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (projectEnabled(binding)) {
|
|
244
|
+
return {
|
|
245
|
+
id: 'project-enablement',
|
|
246
|
+
title: 'Project enablement',
|
|
247
|
+
status: 'ready',
|
|
248
|
+
detail: `enabled by the User for Project "${binding.project}"`,
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
id: 'project-enablement',
|
|
253
|
+
title: 'Project enablement',
|
|
254
|
+
status: 'optional-gap',
|
|
255
|
+
detail: `disabled for Project "${binding.project}"; installed lifecycle hooks will emit no model guidance`,
|
|
256
|
+
remedy: {
|
|
257
|
+
by: 'cli',
|
|
258
|
+
summary: 'enable Notifai lifecycle behavior for this Project',
|
|
259
|
+
command: 'notifai project enable',
|
|
260
|
+
},
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
232
264
|
function remoteStatesFrom(previous: Readiness): {
|
|
233
265
|
credential: ReadinessState
|
|
234
266
|
server: ReadinessState
|
|
@@ -303,6 +335,7 @@ export async function assessReadiness(
|
|
|
303
335
|
return {
|
|
304
336
|
states: [
|
|
305
337
|
cliBinReadiness(deps.env, deps.hookPlatform ?? process.platform),
|
|
338
|
+
projectEnablementReadiness(deps, config),
|
|
306
339
|
projectReadiness(deps, config),
|
|
307
340
|
reused.credential,
|
|
308
341
|
reused.server,
|
|
@@ -322,6 +355,7 @@ export async function assessReadiness(
|
|
|
322
355
|
let accountDevices: RoutableDevice[] | null = null
|
|
323
356
|
|
|
324
357
|
states.push(cliBinReadiness(deps.env, deps.hookPlatform ?? process.platform))
|
|
358
|
+
states.push(projectEnablementReadiness(deps, config))
|
|
325
359
|
states.push(projectReadiness(deps, config))
|
|
326
360
|
|
|
327
361
|
states.push(
|
|
@@ -838,7 +872,11 @@ interface HookCheck {
|
|
|
838
872
|
/** Real but not in the way: worth a line, never a blocker. */
|
|
839
873
|
informational?: boolean
|
|
840
874
|
/** A remedy truer than the generic `notifai hooks install`. */
|
|
841
|
-
remedy?: {
|
|
875
|
+
remedy?: {
|
|
876
|
+
summary: string
|
|
877
|
+
command: string
|
|
878
|
+
user_action?: { code: string; harness: string; action: string; message: string }
|
|
879
|
+
}
|
|
842
880
|
}
|
|
843
881
|
|
|
844
882
|
function hookChecks(deps: CommandDeps): HookCheck[] {
|
|
@@ -995,6 +1033,12 @@ function hookChecks(deps: CommandDeps): HookCheck[] {
|
|
|
995
1033
|
remedy: {
|
|
996
1034
|
summary: 'open `/hooks` in Codex and approve the changed Notifai handlers',
|
|
997
1035
|
command: '/hooks',
|
|
1036
|
+
user_action: {
|
|
1037
|
+
code: 'codex_hook_approval_required',
|
|
1038
|
+
harness: 'codex',
|
|
1039
|
+
action: 'approve_or_enable_notifai_hooks',
|
|
1040
|
+
message: 'Open `/hooks` in Codex, approve or enable the Notifai handlers, then tell me when it is done. I will finish setup and verify a fresh session.',
|
|
1041
|
+
},
|
|
998
1042
|
},
|
|
999
1043
|
}),
|
|
1000
1044
|
})
|
|
@@ -1010,7 +1054,7 @@ function hookChecks(deps: CommandDeps): HookCheck[] {
|
|
|
1010
1054
|
ok: shapeProblems.length === 0,
|
|
1011
1055
|
detail:
|
|
1012
1056
|
shapeProblems.length === 0
|
|
1013
|
-
? `every installed Stop handler declares the shape its harness needs: Claude Code async with an explicit ${
|
|
1057
|
+
? `every installed Stop handler declares the shape its harness needs: Claude Code async and Codex blocking with an explicit ${QUESTION_STOP_TIMEOUT_SECONDS}s full-window budget; non-routing blocking hosts ${NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS}s`
|
|
1014
1058
|
: shapeProblems.join('; '),
|
|
1015
1059
|
})
|
|
1016
1060
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
CLAUDE_ASYNC_STOP_TIMEOUT_SECONDS,
|
|
2
|
+
NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS,
|
|
4
3
|
handlerEvent,
|
|
4
|
+
QUESTION_STOP_TIMEOUT_SECONDS,
|
|
5
5
|
stopHandlerIsDetached,
|
|
6
6
|
type Installation,
|
|
7
7
|
} from './install-hooks.js'
|
|
@@ -17,15 +17,15 @@ import {
|
|
|
17
17
|
* also declare a `timeout`, because the harness default is 600 s and the
|
|
18
18
|
* kill is silent — the backgrounded waiter vanishes and the answer the
|
|
19
19
|
* user already gave is never delivered.
|
|
20
|
-
* - Codex
|
|
21
|
-
*
|
|
22
|
-
* - Everything else
|
|
20
|
+
* - Codex must declare the same full-window timeout. That changes its trusted
|
|
21
|
+
* definition and deliberately requires the User to approve it once.
|
|
22
|
+
* - Everything else cannot own asynchronous Question Routing; it receives
|
|
23
|
+
* only the shorter bounded cleanup/refusal timeout.
|
|
23
24
|
*/
|
|
24
25
|
export function stopShapeProblems(
|
|
25
26
|
installation: Installation,
|
|
26
27
|
platform: NodeJS.Platform = process.platform,
|
|
27
28
|
): string[] {
|
|
28
|
-
if (installation.harness === 'codex') return []
|
|
29
29
|
const problems: string[] = []
|
|
30
30
|
for (const handler of installation.handlers.filter(
|
|
31
31
|
(entry) => handlerEvent(entry.command) === 'stop',
|
|
@@ -36,16 +36,32 @@ export function stopShapeProblems(
|
|
|
36
36
|
`${installation.file} declares a blocking Stop handler; the Claude Code wake route needs \`async: true\` so the turn ends while the waiter runs`,
|
|
37
37
|
)
|
|
38
38
|
}
|
|
39
|
-
if (handler.timeout === undefined || handler.timeout <
|
|
39
|
+
if (handler.timeout === undefined || handler.timeout < QUESTION_STOP_TIMEOUT_SECONDS) {
|
|
40
40
|
problems.push(
|
|
41
|
-
`${installation.file} gives Stop ${handler.timeout ?? 'no'} declared seconds; Claude Code then kills the backgrounded waiter
|
|
41
|
+
`${installation.file} gives Stop ${handler.timeout ?? 'no'} declared seconds; Claude Code then kills the backgrounded waiter silently before the complete answer window, so it needs an explicit ${QUESTION_STOP_TIMEOUT_SECONDS}s`,
|
|
42
42
|
)
|
|
43
43
|
}
|
|
44
44
|
continue
|
|
45
45
|
}
|
|
46
|
-
if (
|
|
46
|
+
if (installation.harness === 'codex' || installation.harness === 'claude-code') {
|
|
47
|
+
if (handler.async === true) {
|
|
48
|
+
problems.push(
|
|
49
|
+
`${installation.file} declares an asynchronous ${installation.harness} Stop handler, but this platform needs the blocking continuation so the harness consumes the answer output`,
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
if (handler.timeout === undefined || handler.timeout < QUESTION_STOP_TIMEOUT_SECONDS) {
|
|
53
|
+
problems.push(
|
|
54
|
+
`${installation.file} gives Stop ${handler.timeout ?? 'no'}s, but ${installation.harness} Question Routing requires ${QUESTION_STOP_TIMEOUT_SECONDS}s to own the complete answer window`,
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
continue
|
|
58
|
+
}
|
|
59
|
+
if (
|
|
60
|
+
handler.timeout === undefined ||
|
|
61
|
+
handler.timeout < NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS
|
|
62
|
+
) {
|
|
47
63
|
problems.push(
|
|
48
|
-
`${installation.file} gives Stop ${handler.timeout ?? 'no'}s, but the blocking
|
|
64
|
+
`${installation.file} gives Stop ${handler.timeout ?? 'no'}s, but the non-routing blocking handler requires ${NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS}s`,
|
|
49
65
|
)
|
|
50
66
|
}
|
|
51
67
|
}
|
package/src/commands-hooks.ts
CHANGED
|
@@ -43,7 +43,6 @@ import {
|
|
|
43
43
|
readSessionState,
|
|
44
44
|
resetCursorStopActivation,
|
|
45
45
|
registerQuestion,
|
|
46
|
-
waiterCeilingSeconds,
|
|
47
46
|
withdrawUnpushedQuestions,
|
|
48
47
|
type EscalationDeliveryRoute,
|
|
49
48
|
type HookContext,
|
|
@@ -51,7 +50,7 @@ import {
|
|
|
51
50
|
type PendingQuestion,
|
|
52
51
|
} from './hooks.js'
|
|
53
52
|
import {
|
|
54
|
-
|
|
53
|
+
NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS,
|
|
55
54
|
HARNESSES,
|
|
56
55
|
applyPlan,
|
|
57
56
|
buildCursorHookConfig,
|
|
@@ -75,14 +74,16 @@ import {
|
|
|
75
74
|
removeCursorHooks,
|
|
76
75
|
removeHooks,
|
|
77
76
|
settingsFile,
|
|
78
|
-
stopHandlerIsDetached,
|
|
79
77
|
withCodexLayerTransaction,
|
|
80
78
|
type Harness,
|
|
81
79
|
type Installation,
|
|
82
80
|
} from './install-hooks.js'
|
|
81
|
+
import { QUESTION_WAITER_CEILING_SECONDS } from './question-timing.js'
|
|
82
|
+
import { inferInvocationContext } from './invocation-context.js'
|
|
83
83
|
import { logConfigResolved, logSettingsFrom } from './logging.js'
|
|
84
84
|
import { isOurOpencodePlugin, opencodePluginSource } from './opencode-plugin.js'
|
|
85
85
|
import { packageVersion } from './release.js'
|
|
86
|
+
import { enableProject, projectBinding, projectEnabled } from './project-enablement.js'
|
|
86
87
|
import { rejectAccidentalEscapedNewlines } from './send.js'
|
|
87
88
|
import {
|
|
88
89
|
cursorStopActivationOutput,
|
|
@@ -176,11 +177,10 @@ export async function hookRunCommand(
|
|
|
176
177
|
// would grant slow setup a second budget and let the harness kill us before
|
|
177
178
|
// an accepted answer is journaled or written to stdout.
|
|
178
179
|
const now = deps.now ?? Date.now
|
|
179
|
-
//
|
|
180
|
-
//
|
|
181
|
-
//
|
|
182
|
-
const
|
|
183
|
-
const processDeadlineAt = now() + waiterCeilingSeconds(detachedWaiter) * 1000
|
|
180
|
+
// One owner lifetime covers startup and the longest answer window. Claude
|
|
181
|
+
// runs it detached; Codex holds the turn. The delivery mechanism does not
|
|
182
|
+
// change how long the exact Agent Session remains reachable.
|
|
183
|
+
const processDeadlineAt = now() + QUESTION_WAITER_CEILING_SECONDS * 1000
|
|
184
184
|
|
|
185
185
|
const logger = log(deps)
|
|
186
186
|
logger.bind({ cmd: `hook ${event}` })
|
|
@@ -253,11 +253,29 @@ export async function hookRunCommand(
|
|
|
253
253
|
const cwd = envelope.cwd ?? deps.cwd
|
|
254
254
|
const sessionEnd = hookDefersDiagnosticsUntilAfterCleanup(event)
|
|
255
255
|
logger.bind({ session: envelope.session_id ?? null })
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
256
|
+
const lifecycleEnabled = (): boolean => {
|
|
257
|
+
try {
|
|
258
|
+
const activationConfig = loadConfig({ cwd, env: deps.env, sessionId: envelope.session_id })
|
|
259
|
+
return projectEnabled(projectBinding(cwd, deps.env, activationConfig.project.value))
|
|
260
|
+
} catch (err) {
|
|
261
|
+
logger.error('hook.end', { hook: event, outcome: 'enablement-unavailable', ...failureData(err) })
|
|
262
|
+
return false
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// Installation only makes lifecycle hooks available. Model-visible
|
|
266
|
+
// activation is a separate User-owned Project decision, checked anew on
|
|
267
|
+
// every run so disabling takes effect without reinstalling anything.
|
|
259
268
|
if (event === 'session-start' || event === 'subagent-start') {
|
|
260
269
|
start({ cwd, source: envelope.source ?? null })
|
|
270
|
+
if (!lifecycleEnabled()) {
|
|
271
|
+
logger.info('hook.end', {
|
|
272
|
+
hook: event,
|
|
273
|
+
outcome: 'ignored',
|
|
274
|
+
reason: 'project-disabled',
|
|
275
|
+
decided: false,
|
|
276
|
+
})
|
|
277
|
+
return EXIT.ok
|
|
278
|
+
}
|
|
261
279
|
if (event === 'session-start' && harness === 'cursor' && envelope.session_id !== undefined) {
|
|
262
280
|
try {
|
|
263
281
|
resetCursorStopActivation(envelope.session_id, deps.env)
|
|
@@ -307,6 +325,15 @@ export async function hookRunCommand(
|
|
|
307
325
|
logger.info('hook.end', { hook: event, outcome: 'unsupported-harness', decided: false })
|
|
308
326
|
return EXIT.ok
|
|
309
327
|
}
|
|
328
|
+
if (!lifecycleEnabled()) {
|
|
329
|
+
logger.info('hook.end', {
|
|
330
|
+
hook: event,
|
|
331
|
+
outcome: 'ignored',
|
|
332
|
+
reason: 'project-disabled',
|
|
333
|
+
decided: false,
|
|
334
|
+
})
|
|
335
|
+
return EXIT.ok
|
|
336
|
+
}
|
|
310
337
|
if (envelope.status === 'aborted') {
|
|
311
338
|
logger.info('hook.end', {
|
|
312
339
|
hook: event,
|
|
@@ -507,7 +534,15 @@ export async function hookRunCommand(
|
|
|
507
534
|
...outcome.log,
|
|
508
535
|
})
|
|
509
536
|
for (const note of outcome.notes) deps.io.err(`notifai: ${note}`)
|
|
510
|
-
if (outcome.stdout !== undefined)
|
|
537
|
+
if (outcome.stdout !== undefined) {
|
|
538
|
+
// No work, await, or diagnostic may sit between this cross-process
|
|
539
|
+
// SessionEnd fence and the irreversible harness stdout write.
|
|
540
|
+
if (outcome.commitStdout === undefined || outcome.commitStdout()) {
|
|
541
|
+
deps.io.out(outcome.stdout)
|
|
542
|
+
} else {
|
|
543
|
+
deps.io.err('notifai: the Agent Session ended before answer delivery; no continuation was written')
|
|
544
|
+
}
|
|
545
|
+
}
|
|
511
546
|
return EXIT.ok
|
|
512
547
|
} catch (err) {
|
|
513
548
|
// SessionEnd defers its start record until after cleanup; if cleanup itself
|
|
@@ -1028,6 +1063,17 @@ export function askCommand(
|
|
|
1028
1063
|
if (mediaInputError !== null) {
|
|
1029
1064
|
return askFailure(deps, flags, 'invalid_input', 'media', mediaInputError, 'fix the media flags and retry')
|
|
1030
1065
|
}
|
|
1066
|
+
let explicitUseConfig: CliConfig
|
|
1067
|
+
try {
|
|
1068
|
+
explicitUseConfig = loadConfig({ cwd: deps.cwd, env: deps.env })
|
|
1069
|
+
} catch (err) {
|
|
1070
|
+
return askFailure(deps, flags, 'config_invalid', 'configuration', `Question routing configuration is invalid: ${String(err)}`, 'fix the reported Notifai configuration and retry')
|
|
1071
|
+
}
|
|
1072
|
+
const explicitProject = flags.project ?? explicitUseConfig.project.value ?? inferInvocationContext(deps.cwd).project
|
|
1073
|
+
if (explicitProject !== null) {
|
|
1074
|
+
const binding = projectBinding(deps.cwd, deps.env, explicitProject)
|
|
1075
|
+
if (binding !== null) enableProject(binding)
|
|
1076
|
+
}
|
|
1031
1077
|
if (deps.store.load() === null) {
|
|
1032
1078
|
return askFailure(
|
|
1033
1079
|
deps,
|
|
@@ -1732,7 +1778,7 @@ export function hooksInstallCommand(deps: CommandDeps, flags: HooksInstallFlags)
|
|
|
1732
1778
|
if (harness === 'opencode') {
|
|
1733
1779
|
return installOpencodePlugin(deps, settingsTarget, {
|
|
1734
1780
|
adapterPath,
|
|
1735
|
-
timeoutSeconds:
|
|
1781
|
+
timeoutSeconds: NON_ROUTING_BLOCKING_STOP_TIMEOUT_SECONDS,
|
|
1736
1782
|
platform: hookPlatform,
|
|
1737
1783
|
nodePath,
|
|
1738
1784
|
...(flags.narrate === undefined ? {} : { narrate: flags.narrate }),
|
package/src/commands-init.ts
CHANGED
|
@@ -43,6 +43,7 @@ import {
|
|
|
43
43
|
writeSetupProof,
|
|
44
44
|
} from './commands-setup-proof.js'
|
|
45
45
|
import { listScopedNotifaiSkills, SKILLS_SOURCE } from './commands-skill.js'
|
|
46
|
+
import { enableProject, projectBinding } from './project-enablement.js'
|
|
46
47
|
|
|
47
48
|
// ---------------------------------------------------------------------------
|
|
48
49
|
// init
|
|
@@ -139,6 +140,14 @@ async function closeGap(
|
|
|
139
140
|
return 'closed'
|
|
140
141
|
}
|
|
141
142
|
|
|
143
|
+
if (state.id === 'project-enablement') {
|
|
144
|
+
const config = loadLoggedConfig(deps, { cwd: deps.cwd, env: deps.env })
|
|
145
|
+
const binding = projectBinding(deps.cwd, deps.env, config.project.value)
|
|
146
|
+
if (binding === null) return 'failed'
|
|
147
|
+
enableProject(binding)
|
|
148
|
+
return 'closed'
|
|
149
|
+
}
|
|
150
|
+
|
|
142
151
|
if (state.id === 'hooks') {
|
|
143
152
|
const harnesses = await pickHarnessesToInstall(deps)
|
|
144
153
|
if (harnesses === null || harnesses.length === 0) return 'failed'
|
|
@@ -534,7 +543,7 @@ async function runSetupProof(deps: CommandDeps): Promise<GapCloseResult> {
|
|
|
534
543
|
|
|
535
544
|
/** Closing a local gap cannot have changed the service, the keychain, or devices. */
|
|
536
545
|
function refreshAfterClose(id: string): readonly ReadinessRefresh[] | undefined {
|
|
537
|
-
return id === 'project' || id === 'hooks' || id === 'skill' || id === 'question-routing-settings'
|
|
546
|
+
return id === 'project' || id === 'project-enablement' || id === 'hooks' || id === 'skill' || id === 'question-routing-settings'
|
|
538
547
|
? ['local']
|
|
539
548
|
: undefined
|
|
540
549
|
}
|
|
@@ -548,6 +557,7 @@ function wantsOptional(deps: CommandDeps, state: ReadinessState, flags: InitFlag
|
|
|
548
557
|
// nothing, and is undone by editing one line — so it is done rather than
|
|
549
558
|
// asked about, for a human and an agent alike.
|
|
550
559
|
if (state.id === 'project') return Promise.resolve(true)
|
|
560
|
+
if (state.id === 'project-enablement') return Promise.resolve(true)
|
|
551
561
|
const explicit = state.id === 'hooks' ? flags.hooks : state.id === 'skill' ? flags.skills : undefined
|
|
552
562
|
if (explicit !== undefined) return Promise.resolve(explicit)
|
|
553
563
|
// An agent is never asked, and never assumed into a change it did not
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { loadLoggedConfig, EXIT, type CommandDeps } from './commands-core.js'
|
|
2
|
+
import {
|
|
3
|
+
disableProject,
|
|
4
|
+
enableProject,
|
|
5
|
+
projectBinding,
|
|
6
|
+
projectEnabled,
|
|
7
|
+
} from './project-enablement.js'
|
|
8
|
+
|
|
9
|
+
function bindingFor(deps: CommandDeps) {
|
|
10
|
+
const config = loadLoggedConfig(deps, { cwd: deps.cwd, env: deps.env })
|
|
11
|
+
return projectBinding(deps.cwd, deps.env, config.project.value)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function projectEnableCommand(deps: CommandDeps): number {
|
|
15
|
+
const binding = bindingFor(deps)
|
|
16
|
+
if (binding === null) {
|
|
17
|
+
deps.io.err('No Project can be inferred here. Run inside a Project or configure an explicit Project id.')
|
|
18
|
+
return EXIT.usage
|
|
19
|
+
}
|
|
20
|
+
enableProject(binding)
|
|
21
|
+
deps.io.out(`Notifai lifecycle behavior is enabled for Project "${binding.project}".`)
|
|
22
|
+
return EXIT.ok
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function projectDisableCommand(deps: CommandDeps): number {
|
|
26
|
+
const binding = bindingFor(deps)
|
|
27
|
+
if (binding === null) {
|
|
28
|
+
deps.io.err('No Project can be inferred here. Run inside a Project or configure an explicit Project id.')
|
|
29
|
+
return EXIT.usage
|
|
30
|
+
}
|
|
31
|
+
disableProject(binding)
|
|
32
|
+
deps.io.out(`Notifai lifecycle behavior is disabled for Project "${binding.project}".`)
|
|
33
|
+
return EXIT.ok
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function projectStatusCommand(deps: CommandDeps, json = false): number {
|
|
37
|
+
const binding = bindingFor(deps)
|
|
38
|
+
const enabled = projectEnabled(binding)
|
|
39
|
+
if (json) {
|
|
40
|
+
deps.io.out(JSON.stringify({ project: binding?.project ?? null, enabled }))
|
|
41
|
+
} else if (binding === null) {
|
|
42
|
+
deps.io.out('No Project can be inferred here; lifecycle behavior is disabled.')
|
|
43
|
+
} else {
|
|
44
|
+
deps.io.out(`Project "${binding.project}": lifecycle behavior ${enabled ? 'enabled' : 'disabled'}.`)
|
|
45
|
+
}
|
|
46
|
+
return EXIT.ok
|
|
47
|
+
}
|