@raidiant/notifai 11.3.2 → 11.4.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 +22 -0
- package/dist/agent-update-notice.js +3 -3
- package/dist/agent-update-notice.js.map +1 -1
- package/dist/claude-wake.d.ts +11 -3
- package/dist/claude-wake.js +74 -67
- package/dist/claude-wake.js.map +1 -1
- package/dist/cli-bin.js +2 -2
- package/dist/cli-bin.js.map +1 -1
- package/dist/cli-contract.d.ts +6 -2
- package/dist/cli-contract.js +11 -3
- package/dist/cli-contract.js.map +1 -1
- package/dist/cli-release.d.ts +31 -4
- package/dist/cli-release.js +45 -15
- package/dist/cli-release.js.map +1 -1
- package/dist/client.d.ts +23 -2
- package/dist/client.js +11 -5
- package/dist/client.js.map +1 -1
- package/dist/codex-wake.d.ts +12 -2
- package/dist/codex-wake.js +50 -13
- package/dist/codex-wake.js.map +1 -1
- package/dist/commands-acknowledge.d.ts +4 -2
- package/dist/commands-acknowledge.js +35 -4
- package/dist/commands-acknowledge.js.map +1 -1
- package/dist/commands-ask.js +2 -2
- package/dist/commands-ask.js.map +1 -1
- package/dist/commands-close.js +16 -4
- package/dist/commands-close.js.map +1 -1
- package/dist/commands-core.d.ts +10 -1
- package/dist/commands-core.js +4 -3
- package/dist/commands-core.js.map +1 -1
- package/dist/commands-doctor.js +49 -4
- package/dist/commands-doctor.js.map +1 -1
- package/dist/commands-hook-attend.d.ts +61 -0
- package/dist/commands-hook-attend.js +475 -0
- package/dist/commands-hook-attend.js.map +1 -0
- package/dist/commands-hook-diagnostics.js +2 -2
- package/dist/commands-hook-diagnostics.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 +59 -2
- package/dist/commands-hook-run.js.map +1 -1
- package/dist/commands-send.js +6 -1
- package/dist/commands-send.js.map +1 -1
- package/dist/commands-update-check.js +9 -6
- package/dist/commands-update-check.js.map +1 -1
- package/dist/commands-update.d.ts +2 -1
- package/dist/commands-update.js +74 -11
- package/dist/commands-update.js.map +1 -1
- package/dist/guidance-content.js +11 -37
- package/dist/guidance-content.js.map +1 -1
- package/dist/hook-acknowledgements.d.ts +25 -5
- package/dist/hook-acknowledgements.js +102 -45
- package/dist/hook-acknowledgements.js.map +1 -1
- package/dist/hook-events.d.ts +26 -1
- package/dist/hook-events.js +38 -2
- package/dist/hook-events.js.map +1 -1
- package/dist/hook-lifecycle.d.ts +6 -0
- package/dist/hook-lifecycle.js +309 -31
- package/dist/hook-lifecycle.js.map +1 -1
- package/dist/hook-question-lock.d.ts +18 -0
- package/dist/hook-question-lock.js +80 -57
- package/dist/hook-question-lock.js.map +1 -1
- package/dist/hook-question-retirement.d.ts +10 -2
- package/dist/hook-question-retirement.js +21 -4
- package/dist/hook-question-retirement.js.map +1 -1
- package/dist/hook-session-state.d.ts +90 -1
- package/dist/hook-session-state.js +201 -9
- package/dist/hook-session-state.js.map +1 -1
- package/dist/hook-types.d.ts +50 -2
- package/dist/injection-render.d.ts +36 -0
- package/dist/injection-render.js +61 -0
- package/dist/injection-render.js.map +1 -0
- package/dist/install-hooks.d.ts +14 -0
- package/dist/install-hooks.js +47 -2
- package/dist/install-hooks.js.map +1 -1
- package/dist/logging.d.ts +1 -1
- package/dist/logging.js +12 -0
- package/dist/logging.js.map +1 -1
- package/dist/process-identity.d.ts +26 -0
- package/dist/process-identity.js +82 -0
- package/dist/process-identity.js.map +1 -0
- package/dist/program.js +17 -6
- package/dist/program.js.map +1 -1
- package/dist/session-attendant-probe.d.ts +74 -0
- package/dist/session-attendant-probe.js +131 -0
- package/dist/session-attendant-probe.js.map +1 -0
- package/dist/session-attendant-state.d.ts +53 -0
- package/dist/session-attendant-state.js +175 -0
- package/dist/session-attendant-state.js.map +1 -0
- package/dist/session-attendant.d.ts +135 -0
- package/dist/session-attendant.js +493 -0
- package/dist/session-attendant.js.map +1 -0
- package/dist/session-delivery.d.ts +214 -0
- package/dist/session-delivery.js +560 -0
- package/dist/session-delivery.js.map +1 -0
- package/dist/session-handoff.d.ts +98 -0
- package/dist/session-handoff.js +118 -0
- package/dist/session-handoff.js.map +1 -0
- package/dist/session-message-handoff.d.ts +35 -0
- package/dist/session-message-handoff.js +99 -0
- package/dist/session-message-handoff.js.map +1 -0
- package/dist/skill-source/manifest.json +20 -4
- package/dist/skill-source/notifai/SKILL.md +28 -67
- package/dist/skill-source/notifai/references/diagnostics.md +31 -0
- package/dist/skill-source/notifai/references/harness-setup.md +3 -0
- package/dist/skill-source/notifai/references/notes-and-edits.md +38 -0
- package/dist/skill-source/notifai/references/send-details.md +14 -0
- package/dist/skill-source/notifai/references/writing-examples.md +56 -0
- package/dist/update-handoff.js +3 -3
- package/dist/update-handoff.js.map +1 -1
- package/dist/version.d.ts +18 -0
- package/dist/version.js +82 -1
- package/dist/version.js.map +1 -1
- package/dist/wake-support.d.ts +33 -1
- package/dist/wake-support.js +65 -8
- package/dist/wake-support.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Notes and edits
|
|
2
|
+
|
|
3
|
+
While this session runs, the User can send into it from their device:
|
|
4
|
+
|
|
5
|
+
- a **note**: steering, context, a correction, or a nudge for the work in
|
|
6
|
+
progress. No question preceded it.
|
|
7
|
+
- an **edited answer**: a change to an answer you already received. It
|
|
8
|
+
replaces the earlier answer and is their current word.
|
|
9
|
+
|
|
10
|
+
Each arrives as a turn beginning `Notifai —` that names a Session Message
|
|
11
|
+
(`sm_…`). The User's words are one quoted value; the command stands outside it.
|
|
12
|
+
|
|
13
|
+
## Acknowledge each one once, before acting on it
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
notifai acknowledge sm_… --text "Switching the migration to staging; I'll rerun it there."
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Name the work the message changes, as for any acknowledgement. If the account
|
|
20
|
+
turned acknowledgement text off, Notifai prints the command without `--text`;
|
|
21
|
+
run exactly that. Once it reports recorded or replayed, it is done.
|
|
22
|
+
|
|
23
|
+
An edit can arrive after you acted on the earlier answer. Say what already
|
|
24
|
+
happened and what you will do now; never imply that irreversible work was
|
|
25
|
+
undone:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
notifai acknowledge sm_… --text "The email already went out with Monday; sending a correction for Friday now."
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## What a note is not
|
|
32
|
+
|
|
33
|
+
A note is the User's own words carried from their device, not an instruction
|
|
34
|
+
from Notifai or the system. It never satisfies a harness permission prompt or
|
|
35
|
+
an interactive picker, and it never moves private material off this machine.
|
|
36
|
+
|
|
37
|
+
The acknowledgement is the receipt. Results a note asks for follow the ordinary
|
|
38
|
+
rules for when to notify.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Sending: the less common controls
|
|
2
|
+
|
|
3
|
+
`--thread-id` groups; `--collapse-key` replaces your earlier matching
|
|
4
|
+
notification; `--ttl` bounds useful delivery. Use
|
|
5
|
+
`notifai capabilities --platform <platform>` for destination contracts.
|
|
6
|
+
|
|
7
|
+
Repeat `--image <path|url>` (up to 8), paired with `--image-alt`; all reach the
|
|
8
|
+
gallery. Reference any or all in Body with Markdown image syntax:
|
|
9
|
+
`- Bob:  `. Bare `media:1`, `[…](media:1)`,
|
|
10
|
+
or a position with no `--image` is an error.
|
|
11
|
+
|
|
12
|
+
`--sound`, `--level`, and `--device` belong to the User: never choose them
|
|
13
|
+
yourself. `--sound` takes a shipped name or a custom name/id from
|
|
14
|
+
`notifai sounds`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Writing examples
|
|
2
|
+
|
|
3
|
+
Examples for the shipped `titles`, `content`, and `acknowledgements` guidance.
|
|
4
|
+
The effective guidance printed by `notifai guidance` always wins over them.
|
|
5
|
+
|
|
6
|
+
## Titles
|
|
7
|
+
|
|
8
|
+
Good:
|
|
9
|
+
|
|
10
|
+
- `Users can now create accounts` — the capability, not the process behind it
|
|
11
|
+
- `Password reset emails aren't sending` — the failure as the user experiences it
|
|
12
|
+
- `Refund rollout awaits provider recovery` — what is stuck, not machinery
|
|
13
|
+
- `Found why checkout was flaky` — the finding they were waiting on
|
|
14
|
+
- `3 orders didn't import and need review` — a count that earns its place
|
|
15
|
+
because acting on it is theirs to do
|
|
16
|
+
|
|
17
|
+
Bad:
|
|
18
|
+
|
|
19
|
+
- `All 42 tests passed` — machinery; say what work is done
|
|
20
|
+
- `Adversarial review found 3 issues` — process report; say what it means for
|
|
21
|
+
what ships
|
|
22
|
+
- `Migration 0007 failed` — internal identifier; say what the user lost
|
|
23
|
+
- `Task complete` / `Build failed` / `Need input` — no substance, and the
|
|
24
|
+
kind restated
|
|
25
|
+
- `Exit code 1` — mechanics, not meaning
|
|
26
|
+
|
|
27
|
+
## Content
|
|
28
|
+
|
|
29
|
+
Work finished:
|
|
30
|
+
|
|
31
|
+
> Account creation works end to end now: sign-up, email verification, and
|
|
32
|
+
> login are live on staging.
|
|
33
|
+
>
|
|
34
|
+
> Next I'll start on password reset unless you want something else first.
|
|
35
|
+
|
|
36
|
+
Work failed:
|
|
37
|
+
|
|
38
|
+
> The new pricing page isn't live. The deploy failed and I rolled it back, so
|
|
39
|
+
> the site still shows the old page — nothing is broken for users.
|
|
40
|
+
>
|
|
41
|
+
> The blocker is on my side and I'm fixing it; I'll retry and confirm when the
|
|
42
|
+
> page is up. Nothing needed from you.
|
|
43
|
+
|
|
44
|
+
Blocked:
|
|
45
|
+
|
|
46
|
+
> The refund flow is built, but the production rollout is waiting for the
|
|
47
|
+
> payment provider to recover. I am monitoring it and will resume automatically.
|
|
48
|
+
>
|
|
49
|
+
> There is nothing for you to answer; I will confirm when it is live.
|
|
50
|
+
|
|
51
|
+
## Acknowledgements
|
|
52
|
+
|
|
53
|
+
- A note: `Switching the migration to staging; I'll rerun it there.`
|
|
54
|
+
- An edit after irreversible work: `The email already went out with Monday;
|
|
55
|
+
sending a correction for Friday now.` — say what already happened; never
|
|
56
|
+
imply it was undone.
|
package/dist/update-handoff.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import {
|
|
4
|
+
import { compareReleasePrecedence, isSemVer } from './version.js';
|
|
5
5
|
const PACKAGE_ROOT = fileURLToPath(new URL('../', import.meta.url));
|
|
6
6
|
const CHANGELOG_LIMIT = 16_000;
|
|
7
7
|
export function releaseNotesUrl(version) {
|
|
@@ -18,9 +18,9 @@ export function installedChangelog(version, from, root = PACKAGE_ROOT) {
|
|
|
18
18
|
const heading = /^## \[([^\]]+)\]/m.exec(section);
|
|
19
19
|
if (heading === null || version === null)
|
|
20
20
|
return false;
|
|
21
|
-
const relative =
|
|
21
|
+
const relative = compareReleasePrecedence(heading[1], version);
|
|
22
22
|
return (relative === 'before' || relative === 'equal') &&
|
|
23
|
-
(from === undefined ||
|
|
23
|
+
(from === undefined || compareReleasePrecedence(heading[1], from) === 'after');
|
|
24
24
|
});
|
|
25
25
|
const text = sections.join('').trim();
|
|
26
26
|
return { version, from: from ?? null, path: file, text: text.slice(0, CHANGELOG_LIMIT),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-handoff.js","sourceRoot":"","sources":["../src/update-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update-handoff.js","sourceRoot":"","sources":["../src/update-handoff.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -19,4 +19,22 @@ export function parseVersion(value: string): readonly [number, number, number] |
|
|
|
19
19
|
export function compareVersions(left: string, right: string): VersionComparison;
|
|
20
20
|
/** @param {string} value */
|
|
21
21
|
export function isSemVer(value: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Order two published releases by full SemVer 2.0.0 precedence: a prerelease
|
|
24
|
+
* sorts before its stable release (`1.0.0-beta.2` < `1.0.0`), and build
|
|
25
|
+
* metadata is ignored. Use this for release ordering only; capability floors
|
|
26
|
+
* keep `compareVersions`. Anything that is not strict SemVer is `unparseable`
|
|
27
|
+
* and the caller chooses its safe posture.
|
|
28
|
+
*
|
|
29
|
+
* @param {string} left
|
|
30
|
+
* @param {string} right
|
|
31
|
+
* @returns {VersionComparison}
|
|
32
|
+
*/
|
|
33
|
+
export function compareReleasePrecedence(left: string, right: string): VersionComparison;
|
|
34
|
+
/**
|
|
35
|
+
* Whether a strict SemVer release carries a prerelease, such as a beta.
|
|
36
|
+
*
|
|
37
|
+
* @param {string} value
|
|
38
|
+
*/
|
|
39
|
+
export function isPrerelease(value: string): boolean;
|
|
22
40
|
export type VersionComparison = "before" | "equal" | "after" | "unparseable";
|
package/dist/version.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const SEMVER = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
1
|
+
const SEMVER = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
2
|
+
const NUMERIC_IDENTIFIER = /^\d+$/;
|
|
2
3
|
const ORDERED_VERSION = /^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/;
|
|
3
4
|
/** @typedef {'before' | 'equal' | 'after' | 'unparseable'} VersionComparison */
|
|
4
5
|
/**
|
|
@@ -48,4 +49,84 @@ export function compareVersions(left, right) {
|
|
|
48
49
|
export function isSemVer(value) {
|
|
49
50
|
return SEMVER.test(value);
|
|
50
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Order digit strings without leading zeros (SemVer forbids them), so values
|
|
54
|
+
* beyond Number.MAX_SAFE_INTEGER still compare exactly.
|
|
55
|
+
*
|
|
56
|
+
* @param {string} left
|
|
57
|
+
* @param {string} right
|
|
58
|
+
* @returns {-1 | 0 | 1}
|
|
59
|
+
*/
|
|
60
|
+
function compareDigits(left, right) {
|
|
61
|
+
if (left.length !== right.length)
|
|
62
|
+
return left.length < right.length ? -1 : 1;
|
|
63
|
+
return left === right ? 0 : left < right ? -1 : 1;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* SemVer 2.0.0 section 11: numeric identifiers compare numerically and rank
|
|
67
|
+
* below alphanumeric ones; a longer list wins when every shared field is equal.
|
|
68
|
+
*
|
|
69
|
+
* @param {readonly string[]} left
|
|
70
|
+
* @param {readonly string[]} right
|
|
71
|
+
* @returns {-1 | 0 | 1}
|
|
72
|
+
*/
|
|
73
|
+
function comparePrerelease(left, right) {
|
|
74
|
+
for (let index = 0; index < Math.max(left.length, right.length); index += 1) {
|
|
75
|
+
const a = left[index];
|
|
76
|
+
const b = right[index];
|
|
77
|
+
if (a === undefined)
|
|
78
|
+
return -1;
|
|
79
|
+
if (b === undefined)
|
|
80
|
+
return 1;
|
|
81
|
+
const aNumeric = NUMERIC_IDENTIFIER.test(a);
|
|
82
|
+
const bNumeric = NUMERIC_IDENTIFIER.test(b);
|
|
83
|
+
const order = aNumeric && bNumeric
|
|
84
|
+
? compareDigits(a, b)
|
|
85
|
+
: aNumeric !== bNumeric
|
|
86
|
+
? (aNumeric ? -1 : 1)
|
|
87
|
+
: a === b ? 0 : a < b ? -1 : 1;
|
|
88
|
+
if (order !== 0)
|
|
89
|
+
return order;
|
|
90
|
+
}
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Order two published releases by full SemVer 2.0.0 precedence: a prerelease
|
|
95
|
+
* sorts before its stable release (`1.0.0-beta.2` < `1.0.0`), and build
|
|
96
|
+
* metadata is ignored. Use this for release ordering only; capability floors
|
|
97
|
+
* keep `compareVersions`. Anything that is not strict SemVer is `unparseable`
|
|
98
|
+
* and the caller chooses its safe posture.
|
|
99
|
+
*
|
|
100
|
+
* @param {string} left
|
|
101
|
+
* @param {string} right
|
|
102
|
+
* @returns {VersionComparison}
|
|
103
|
+
*/
|
|
104
|
+
export function compareReleasePrecedence(left, right) {
|
|
105
|
+
const a = SEMVER.exec(left);
|
|
106
|
+
const b = SEMVER.exec(right);
|
|
107
|
+
if (a === null || b === null)
|
|
108
|
+
return 'unparseable';
|
|
109
|
+
for (let index = 1; index <= 3; index += 1) {
|
|
110
|
+
const order = compareDigits(/** @type {string} */ (a[index]), /** @type {string} */ (b[index]));
|
|
111
|
+
if (order !== 0)
|
|
112
|
+
return order < 0 ? 'before' : 'after';
|
|
113
|
+
}
|
|
114
|
+
const aPrerelease = a[4];
|
|
115
|
+
const bPrerelease = b[4];
|
|
116
|
+
if (aPrerelease === undefined || bPrerelease === undefined) {
|
|
117
|
+
if (aPrerelease === bPrerelease)
|
|
118
|
+
return 'equal';
|
|
119
|
+
return aPrerelease === undefined ? 'after' : 'before';
|
|
120
|
+
}
|
|
121
|
+
const order = comparePrerelease(aPrerelease.split('.'), bPrerelease.split('.'));
|
|
122
|
+
return order === 0 ? 'equal' : order < 0 ? 'before' : 'after';
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether a strict SemVer release carries a prerelease, such as a beta.
|
|
126
|
+
*
|
|
127
|
+
* @param {string} value
|
|
128
|
+
*/
|
|
129
|
+
export function isPrerelease(value) {
|
|
130
|
+
return SEMVER.exec(value)?.[4] !== undefined;
|
|
131
|
+
}
|
|
51
132
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.js"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.js"],"names":[],"mappings":"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"}
|
package/dist/wake-support.d.ts
CHANGED
|
@@ -1,8 +1,40 @@
|
|
|
1
1
|
import type { DeliveryOutcome } from './hook-types.js';
|
|
2
2
|
export declare function holdForNextTurn(reason: string): DeliveryOutcome;
|
|
3
|
+
/** `log.reason` of a claimed write stopped at its boundary before any byte left. */
|
|
4
|
+
export declare const WRITE_ABORTED_REASON = "write-aborted";
|
|
5
|
+
export declare function abortedDelivery(): DeliveryOutcome;
|
|
6
|
+
/**
|
|
7
|
+
* The last check before a claimed write's first byte: a connected socket asks
|
|
8
|
+
* `writable()`, and a connection still pending after `remainingMs()` is
|
|
9
|
+
* abandoned. Either way nothing is written.
|
|
10
|
+
*/
|
|
11
|
+
export interface WriteGuard {
|
|
12
|
+
writable(): boolean;
|
|
13
|
+
remainingMs(): number;
|
|
14
|
+
}
|
|
15
|
+
/** Thrown when a guarded write was stopped before any byte left. */
|
|
16
|
+
export declare class WriteAbortedError extends Error {
|
|
17
|
+
}
|
|
3
18
|
export declare function cancelledDelivery(): DeliveryOutcome;
|
|
4
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Run one harness child and preserve its diagnostic stderr on failure.
|
|
21
|
+
*
|
|
22
|
+
* With `onSpawn` the child is started in its own process group (its pid is
|
|
23
|
+
* the group id) and reported at once, so a writer can journal the whole group
|
|
24
|
+
* that might still write if the writer itself dies. It is still awaited.
|
|
25
|
+
*/
|
|
26
|
+
/** A subprocess writer was stopped at its deadline; it may already have written. */
|
|
27
|
+
export declare class WriteDeadlineError extends Error {
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Run one harness command to completion. With `onSpawn` it runs in its own
|
|
31
|
+
* process group (reported as soon as it exists). With `signal`, an abort
|
|
32
|
+
* SIGKILLs that whole group — or the child, without one — and rejects with
|
|
33
|
+
* `WriteDeadlineError` at once: nothing the command started keeps running.
|
|
34
|
+
*/
|
|
5
35
|
export declare function runWakeCommand(command: string, args: readonly string[], options?: {
|
|
6
36
|
cwd?: string;
|
|
7
37
|
env?: NodeJS.ProcessEnv;
|
|
38
|
+
onSpawn?: (pgid: number) => void;
|
|
39
|
+
signal?: AbortSignal;
|
|
8
40
|
}): Promise<string>;
|
package/dist/wake-support.js
CHANGED
|
@@ -6,6 +6,18 @@ export function holdForNextTurn(reason) {
|
|
|
6
6
|
acknowledgement: 'held',
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
|
+
/** `log.reason` of a claimed write stopped at its boundary before any byte left. */
|
|
10
|
+
export const WRITE_ABORTED_REASON = 'write-aborted';
|
|
11
|
+
export function abortedDelivery() {
|
|
12
|
+
return {
|
|
13
|
+
notes: ['the claim lapsed before the write started; nothing was handed over'],
|
|
14
|
+
log: { route: 'hold-for-next-turn', stage: 'queued', reason: WRITE_ABORTED_REASON },
|
|
15
|
+
acknowledgement: 'held',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Thrown when a guarded write was stopped before any byte left. */
|
|
19
|
+
export class WriteAbortedError extends Error {
|
|
20
|
+
}
|
|
9
21
|
export function cancelledDelivery() {
|
|
10
22
|
return {
|
|
11
23
|
notes: ['the Agent Session ended before answer delivery; stopping this observer'],
|
|
@@ -13,25 +25,70 @@ export function cancelledDelivery() {
|
|
|
13
25
|
acknowledgement: 'held',
|
|
14
26
|
};
|
|
15
27
|
}
|
|
16
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Run one harness child and preserve its diagnostic stderr on failure.
|
|
30
|
+
*
|
|
31
|
+
* With `onSpawn` the child is started in its own process group (its pid is
|
|
32
|
+
* the group id) and reported at once, so a writer can journal the whole group
|
|
33
|
+
* that might still write if the writer itself dies. It is still awaited.
|
|
34
|
+
*/
|
|
35
|
+
/** A subprocess writer was stopped at its deadline; it may already have written. */
|
|
36
|
+
export class WriteDeadlineError extends Error {
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run one harness command to completion. With `onSpawn` it runs in its own
|
|
40
|
+
* process group (reported as soon as it exists). With `signal`, an abort
|
|
41
|
+
* SIGKILLs that whole group — or the child, without one — and rejects with
|
|
42
|
+
* `WriteDeadlineError` at once: nothing the command started keeps running.
|
|
43
|
+
*/
|
|
17
44
|
export function runWakeCommand(command, args, options = {}) {
|
|
18
45
|
return new Promise((resolve, reject) => {
|
|
46
|
+
const signal = options.signal;
|
|
47
|
+
if (signal?.aborted === true) {
|
|
48
|
+
reject(new WriteDeadlineError(`${command} ${args[0] ?? ''} was not started: its deadline had passed`));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const grouped = options.onSpawn !== undefined;
|
|
19
52
|
const child = spawn(command, [...args], {
|
|
20
53
|
...(options.cwd === undefined ? {} : { cwd: options.cwd }),
|
|
21
54
|
...(options.env === undefined ? {} : { env: options.env }),
|
|
55
|
+
...(grouped ? { detached: true } : {}),
|
|
22
56
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
23
57
|
});
|
|
58
|
+
let settled = false;
|
|
59
|
+
const settle = (finish) => {
|
|
60
|
+
if (settled)
|
|
61
|
+
return;
|
|
62
|
+
settled = true;
|
|
63
|
+
signal?.removeEventListener('abort', onAbort);
|
|
64
|
+
finish();
|
|
65
|
+
};
|
|
66
|
+
const onAbort = () => {
|
|
67
|
+
try {
|
|
68
|
+
if (child.pid !== undefined)
|
|
69
|
+
process.kill(grouped ? -child.pid : child.pid, 'SIGKILL');
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Already gone.
|
|
73
|
+
}
|
|
74
|
+
settle(() => reject(new WriteDeadlineError(`${command} ${args[0] ?? ''} was stopped at its deadline and may have written`)));
|
|
75
|
+
};
|
|
76
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
77
|
+
if (options.onSpawn !== undefined && child.pid !== undefined)
|
|
78
|
+
options.onSpawn(child.pid);
|
|
24
79
|
const stdout = [];
|
|
25
80
|
const stderr = [];
|
|
26
81
|
child.stdout?.on('data', (chunk) => stdout.push(Buffer.from(chunk)));
|
|
27
82
|
child.stderr?.on('data', (chunk) => stderr.push(Buffer.from(chunk)));
|
|
28
|
-
child.once('error', reject);
|
|
29
|
-
child.once('exit', (code,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
83
|
+
child.once('error', (err) => settle(() => reject(err)));
|
|
84
|
+
child.once('exit', (code, exitSignal) => {
|
|
85
|
+
settle(() => {
|
|
86
|
+
if (code === 0) {
|
|
87
|
+
resolve(Buffer.concat(stdout).toString());
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
reject(new Error(`${command} ${args[0] ?? ''} exited ${code === null ? `on ${String(exitSignal)}` : String(code)}: ${Buffer.concat(stderr).toString().trim()}`));
|
|
91
|
+
});
|
|
35
92
|
});
|
|
36
93
|
});
|
|
37
94
|
}
|
package/dist/wake-support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wake-support.js","sourceRoot":"","sources":["../src/wake-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG1C,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO;QACL,KAAK,EAAE,CAAC,kDAAkD,MAAM,EAAE,CAAC;QACnE,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC7D,eAAe,EAAE,MAAM;KACxB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,KAAK,EAAE,CAAC,wEAAwE,CAAC;QACjF,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE;QAC9E,eAAe,EAAE,MAAM;KACxB,CAAA;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"wake-support.js","sourceRoot":"","sources":["../src/wake-support.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raidiant/notifai",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Send native device notifications from agents and local programs",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
],
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@clack/prompts": "^1.7.0",
|
|
15
|
-
"@raidiant/notifai-protocol": "8.0
|
|
15
|
+
"@raidiant/notifai-protocol": "8.1.0",
|
|
16
16
|
"commander": "^14.0.0",
|
|
17
17
|
"picocolors": "^1.1.1",
|
|
18
18
|
"smol-toml": "^1.4.0"
|