@raidiant/notifai 11.3.1 → 11.3.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 +14 -0
- package/dist/guidance-content.js +25 -32
- package/dist/guidance-content.js.map +1 -1
- package/dist/session-activation.js +3 -2
- package/dist/session-activation.js.map +1 -1
- package/dist/skill-source/manifest.json +3 -3
- package/dist/skill-source/notifai/SKILL.md +27 -26
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
|
|
9
9
|
and [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
|
|
10
10
|
|
|
11
|
+
## [11.3.2](https://github.com/Raidiant-io/notifai/compare/v11.3.1...v11.3.2) (2026-09-23)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* register owned user questions through notifai ([#190](https://github.com/Raidiant-io/notifai/issues/190)) ([c6fa124](https://github.com/Raidiant-io/notifai/commit/c6fa1249dee02d9e90c7c855c86a0c13a5bb08fe))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Dependencies
|
|
20
|
+
|
|
21
|
+
* The following workspace dependencies were updated
|
|
22
|
+
* dependencies
|
|
23
|
+
* @raidiant/notifai-protocol bumped from 8.0.2 to 8.0.3
|
|
24
|
+
|
|
11
25
|
## [11.3.1](https://github.com/Raidiant-io/notifai/compare/v11.3.0...v11.3.1) (2026-09-23)
|
|
12
26
|
|
|
13
27
|
|
package/dist/guidance-content.js
CHANGED
|
@@ -41,26 +41,23 @@ Notify when something changed for the user:
|
|
|
41
41
|
- Substantial autonomous work finished — succeeded or failed. Work is
|
|
42
42
|
substantial when it required multiple meaningful investigation, editing,
|
|
43
43
|
build, test, deployment, or coordination steps.
|
|
44
|
-
- Work
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
- Work you own or coordinate needs a User response: ask an answerable question
|
|
45
|
+
through Notifai, even while other work continues or the User was recently
|
|
46
|
+
active. The question itself is a Notification Request; conversation alone
|
|
47
|
+
does not reach an away User. One-way blocked is only for work no User reply
|
|
48
|
+
would resume.
|
|
47
49
|
- You found something that needs their attention soon.
|
|
48
|
-
- The User requested something through Notifai: return the
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
- The User requested something through Notifai: return the answer, result, or
|
|
51
|
+
actionable artifact through Notifai, even for a small task. Make it
|
|
52
|
+
self-contained; do not assume the User is at their machine.
|
|
51
53
|
|
|
52
|
-
Never notify for
|
|
53
|
-
|
|
54
|
-
- Routine progress: starting, still working, one more subtask done.
|
|
55
|
-
- A problem you hit and fixed yourself.
|
|
54
|
+
Never notify for routine progress or a problem you fixed yourself.
|
|
56
55
|
|
|
57
56
|
Completion of substantial work is an outcome, not routine progress.
|
|
58
|
-
A requested audit or diagnosis
|
|
59
|
-
|
|
60
|
-
and needs no further action.
|
|
57
|
+
A requested audit or diagnosis resolving uncertainty through several distinct
|
|
58
|
+
checks counts as substantial even when clean.
|
|
61
59
|
|
|
62
|
-
One notification per event.
|
|
63
|
-
notification rather than stacking a new one.
|
|
60
|
+
One notification per event. Replace stale status instead of stacking it.
|
|
64
61
|
`;
|
|
65
62
|
const TITLES = `# Titles
|
|
66
63
|
|
|
@@ -143,33 +140,29 @@ terminal for details".
|
|
|
143
140
|
`;
|
|
144
141
|
const QUESTIONS = `# Questions
|
|
145
142
|
|
|
146
|
-
When work needs a User response
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
143
|
+
When work you own or coordinate needs a User response, the answerable question
|
|
144
|
+
itself is a Notification Request. Register it with \`notifai ask\` in the same
|
|
145
|
+
turn you ask in the conversation, even while other work continues or the User
|
|
146
|
+
was recently active. Conversation alone does not reach an away User.
|
|
147
|
+
|
|
148
|
+
Decisions, approvals, sign-in, credential setup and physical actions count.
|
|
149
|
+
Ask for safe setup or readiness, never for credentials or other private
|
|
150
|
+
material. Readiness is an answer. Harness permission prompts and interactive
|
|
151
|
+
pickers stay in the harness. One-way blocked is only for work no User reply
|
|
152
|
+
would resume.
|
|
150
153
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
Offer closed choices whose wording carries its own consequence.
|
|
154
|
+
Make it answerable from the notification alone. The Summary asks one question;
|
|
155
|
+
optional standalone Markdown Body adds reasoning and stakes. Closed choices
|
|
156
|
+
carry their own consequence.
|
|
155
157
|
|
|
156
158
|
Good:
|
|
157
159
|
|
|
158
|
-
- \`The schema change is ready. It touches live order data — deploy now or
|
|
159
|
-
wait for off-peak?\` with choices \`Deploy now\` / \`Wait for off-peak\`
|
|
160
|
-
- \`The API key in .env.example is live. Revoke it now, or wait until the
|
|
161
|
-
replacement is provisioned?\` with \`Revoke now\` / \`Wait for the new key\`
|
|
162
160
|
- \`Is the test device unlocked and ready for the install?\` with
|
|
163
161
|
\`Ready — install now\` / \`Not yet — wait\`
|
|
164
162
|
|
|
165
163
|
Bad:
|
|
166
164
|
|
|
167
165
|
- \`What should I do?\` — nothing to answer without the terminal
|
|
168
|
-
- \`Deploy to staging and notify the team?\` with \`Yes\` / \`No\` — two
|
|
169
|
-
decisions, one answer
|
|
170
|
-
- \`Retry with --force-with-lease?\` — machinery; the real decision is
|
|
171
|
-
\`Overwrite the remote branch, or keep both versions?\`
|
|
172
|
-
- Choices \`Option A\` / \`Option B\` — labels that point back into the body
|
|
173
166
|
- \`Reply here with your choice\` — never name where the answer must arrive
|
|
174
167
|
`;
|
|
175
168
|
const ACKNOWLEDGEMENTS = `# Acknowledgements
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BjB,CAAA;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;CAoBxB,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"}
|
|
@@ -1,7 +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 enabled for this Project.
|
|
4
|
-
'
|
|
3
|
+
const ROOT_OWNERSHIP = 'Notifai is enabled for this Project. You own Notification Requests unless explicitly assigned elsewhere. Load the Notifai skill before your first Notification Request. ' +
|
|
4
|
+
'Follow the effective guidance below. Under it, when owned or coordinated work needs a User decision, approval, sign-in, credential setup or physical action, register with `notifai ask` in the same turn as the conversation question; conversation alone misses an away User. Ask for safe setup or readiness, never for credentials. Harness permission prompts stay in the harness. ' +
|
|
5
|
+
'Missing readiness: `notifai init --json`.';
|
|
5
6
|
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.';
|
|
6
7
|
export const MISSING_LIFECYCLE_GUIDANCE_CONTEXT = 'Notifai lifecycle guidance could not be loaded, so Project Enablement is unverified. Run `notifai init --json` to check setup, then `notifai guidance` before deciding whether or how to send a Notification Request.';
|
|
7
8
|
function rootActivationContext(cwd, env, notice) {
|
|
@@ -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,0KAA0K;IAC1K,0XAA0X;IAC1X,2CAA2C,CAAA;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GACpC,6WAA6W,CAAA;AAE/W,MAAM,CAAC,MAAM,kCAAkC,GAC7C,uNAAuN,CAAA;AAEzN,SAAS,qBAAqB,CAAC,GAAW,EAAE,GAAsB,EAAE,MAAe;IACjF,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,OAAO,MAAM,EAAE,CAAA;IACxF,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG;QACH,GAAG;QACH,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,MAAM,EAAE,MAAM,CAAC;KACnF,CAAC,CAAA;IACF,OAAO,GAAG,OAAO,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;AAC9E,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,aAA+C,EAC/C,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG,EACpC,MAAe;IAEf,MAAM,OAAO,GAAG,aAAa,KAAK,eAAe;QAC/C,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3C,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACpE,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,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,OAAe;IAEf,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACpE,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAA;IAChF,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,kBAAkB,EAAE;gBAClB,aAAa,EAAE,kBAAkB;gBACjC,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,EACpC,MAAe;IAEf,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
|
-
"package_version": "11.3.
|
|
3
|
+
"package_version": "11.3.2",
|
|
4
4
|
"skill": "notifai",
|
|
5
|
-
"digest": "sha256:
|
|
5
|
+
"digest": "sha256:6b5b2a43d5798a8d6095e3884046aeb0e6758fc9211a07c6130e01e99edd00d3",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
8
8
|
"path": "SKILL.md",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "7769c166269c9612bd3fdfc24fe2d884321f68959c999f109a18d82a41a01803"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"path": "references/harness-setup.md",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: notifai
|
|
3
|
-
description: Use
|
|
3
|
+
description: Use when work needs a User decision, approval, sign-in, credential setup or physical action, or substantial work finishes or fails, even if the User was recently active or does not mention Notifai. For Notification Request owners; parent owns by default, workers only by explicit delegation. Read guidance.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Notifai
|
|
@@ -112,9 +112,8 @@ saved config from inventing a Project and never enables one.
|
|
|
112
112
|
|
|
113
113
|
**Declare the kind that is true**: it decides how insistently the notification lands.
|
|
114
114
|
|
|
115
|
-
Work needs a User response
|
|
116
|
-
|
|
117
|
-
Reporting ready is a response.
|
|
115
|
+
Work needs a User response? [Ask an answerable question](#ask-a-question).
|
|
116
|
+
Use one-way blocked only when no User reply would resume the work.
|
|
118
117
|
|
|
119
118
|
`titles` and `content` guidance own each field. The wire shape:
|
|
120
119
|
|
|
@@ -160,54 +159,56 @@ the active harness proves the exact current Agent Session.
|
|
|
160
159
|
|
|
161
160
|
## Ask a question
|
|
162
161
|
|
|
163
|
-
|
|
164
|
-
question is its Summary (under 240 characters) and
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
162
|
+
Make the question answerable from the notification itself. The positional
|
|
163
|
+
question is its Summary (under 240 characters) and title. Body adds standalone
|
|
164
|
+
Markdown reasoning. Offer 2-6 closed choices, one flag each; commas are literal.
|
|
165
|
+
Typed answers are always possible; closed choices appear after pressing and
|
|
166
|
+
holding the notification.
|
|
168
167
|
|
|
169
|
-
For
|
|
170
|
-
|
|
168
|
+
For `ask` and `send --reply`, Summary is the exact question, never inferred or
|
|
169
|
+
truncated from Body.
|
|
171
170
|
|
|
172
171
|
### Default: resume when they answer
|
|
173
172
|
|
|
174
|
-
When work needs a User response
|
|
175
|
-
|
|
176
|
-
|
|
173
|
+
When work you own or coordinate needs a User response, use `notifai ask` in the
|
|
174
|
+
same turn as its conversation question, even while other work continues or after
|
|
175
|
+
recent User activity; conversation alone misses an away User.
|
|
176
|
+
Ask for safe setup or readiness, never credentials. Harness permission prompts
|
|
177
|
+
and interactive pickers stay in the harness.
|
|
178
|
+
|
|
179
|
+
`ask` keeps the exact return path for the complete answer window:
|
|
177
180
|
|
|
178
181
|
```bash
|
|
179
182
|
notifai ask "Which environment should I roll out to?" \
|
|
180
183
|
--choice Staging --choice Production --choice Cancel
|
|
181
184
|
```
|
|
182
185
|
|
|
183
|
-
|
|
186
|
+
`--json` returns choice ids and `question_id`.
|
|
184
187
|
|
|
185
188
|
`registered: true` is local only. It has not yet been submitted as a
|
|
186
189
|
Notification Request and has no Provider Acceptance. Never call a question sent
|
|
187
|
-
or delivered from registration alone. Settlement
|
|
188
|
-
`
|
|
190
|
+
or delivered from registration alone. Settlement adds `request_id`, keeping
|
|
191
|
+
`question_id`. Inspect:
|
|
189
192
|
|
|
190
193
|
```bash
|
|
191
194
|
notifai status <question_id> --json
|
|
192
195
|
```
|
|
193
196
|
|
|
194
|
-
|
|
195
|
-
promoted questions also show downstream evidence.
|
|
197
|
+
States: `local`, `frozen`, `live`, `answered`, `withdrawn`, `retired`.
|
|
196
198
|
|
|
197
199
|
**Registering is not the end of the turn.** In that same turn, ask the question
|
|
198
200
|
in the conversation and say what each answer will make you do, then end your
|
|
199
201
|
turn to start submission. Ordinary sends need no turn boundary. Continue
|
|
200
202
|
independent work in later turns; preserve supervision.
|
|
201
203
|
|
|
202
|
-
**Never say where the answer must arrive
|
|
203
|
-
this prompt". The route is the harness's concern.
|
|
204
|
+
**Never say where the answer must arrive** ("tell me here"). The harness owns routing.
|
|
204
205
|
|
|
205
|
-
|
|
206
|
-
`--image`/`--image-alt`
|
|
207
|
-
|
|
206
|
+
Use `--multi` for combined answers, `--body`/`--body-file` for Body,
|
|
207
|
+
`--image`/`--image-alt` for evidence, or `--form <path|->` for up to 10 questions
|
|
208
|
+
with a set-level `summary`.
|
|
208
209
|
|
|
209
|
-
|
|
210
|
-
|
|
210
|
+
Register independent questions separately. Retire an obsolete registration or
|
|
211
|
+
one they answer in the conversation with
|
|
211
212
|
`notifai close <question_id>` or `notifai close --pending`.
|
|
212
213
|
|
|
213
214
|
Keep every ID after a timeout or unavailable route. Inspect the original with
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raidiant/notifai",
|
|
3
|
-
"version": "11.3.
|
|
3
|
+
"version": "11.3.2",
|
|
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.0.3",
|
|
16
16
|
"commander": "^14.0.0",
|
|
17
17
|
"picocolors": "^1.1.1",
|
|
18
18
|
"smol-toml": "^1.4.0"
|