@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 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
 
@@ -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 cannot proceed: ask an answerable question when continuing needs a User
45
- response; send a one-way blocked notification only when no User reply would
46
- resume the work.
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 requested answer,
49
- result, or actionable artifact through Notifai, even for a small task. Make
50
- it self-contained; do not assume the User is at their machine.
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 that resolves the user's uncertainty through
59
- several distinct checks counts as substantial even when the result is clean
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. When a status changes, replace your stale
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 before it can continue, ask an answerable
147
- question. A one-way blocked Notification Request is only for work that no User
148
- reply would resume. If the User must act and then tell you it is ready, that
149
- readiness is an answer — ask for it.
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
- A question is answerable from the notification alone, in the user's terms, not
152
- the machinery's. Its one askable sentence is the Summary. Put reasoning and
153
- stakes in an optional standalone Markdown Body when they are needed.
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;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtB,CAAA;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAA;AAED,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDf,CAAA;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjB,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
+ {"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. The effective, provenance-marked guidance below governs Notification Requests. ' +
4
- 'Missing CLI readiness is handled through `notifai init --json`.';
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,sHAAsH;IACtH,iEAAiE,CAAA;AAEnE,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
+ {"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.1",
3
+ "package_version": "11.3.2",
4
4
  "skill": "notifai",
5
- "digest": "sha256:9c172bbc3bbd127dab05b135a6172e446699bfe4b78a0e7d88802049c94011bb",
5
+ "digest": "sha256:6b5b2a43d5798a8d6095e3884046aeb0e6758fc9211a07c6130e01e99edd00d3",
6
6
  "files": [
7
7
  {
8
8
  "path": "SKILL.md",
9
- "sha256": "99c919520d43c785e8fb7e108ae8dbec702a48d89ebde8ecea50b98f0ce1ae5c"
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 Notifai proactively in every agent session that owns User-visible Notification Requests, even when the user does not mention it. The parent owns by default; use it in a worker only when ownership is explicitly delegated. Read guidance.
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 to continue? Ask an answerable question — even if
116
- blocked. Use one-way blocked only when no User reply would resume the work.
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
- A question must be answerable from the notification itself. The positional
164
- question is its Summary (under 240 characters) and supplies the notification
165
- title. Put reasoning in the optional standalone Markdown Body. Offer 2-6 closed choices, one
166
- flag per choice — commas inside a label are literal. A typed answer is always
167
- possible; closed choices appear after pressing and holding the notification.
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 both `ask` and `send --reply`, the Summary is the exact answerable question.
170
- Notifai never infers or truncates it from Body.
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 before it can continue, use `ask`. It preserves
175
- the exact return path for the complete answer window without making the
176
- foreground command its owner:
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
- Add `--json` for choice ids and the `question_id`.
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 preserves its `question_id` and adds a
188
- `request_id`. Inspect without changing it:
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
- State is `local`, `frozen`, `live`, `answered`, `withdrawn`, or `retired`;
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:** not "tell me here" or "type it at
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
- Other surfaces: `--multi` combines answers; `--body`/`--body-file` adds Body;
206
- `--image`/`--image-alt` adds evidence; `--form <path|->` groups up to 10
207
- questions and requires a set-level `summary`.
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
- Keep independent questions as separate `ask` calls. Retire a registration
210
- that is obsolete or that they answer in the conversation with
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.1",
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.2",
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"