@raidiant/notifai 7.0.2 → 9.0.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.
Files changed (157) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +20 -13
  3. package/dist/atomic-file.d.ts +14 -0
  4. package/dist/atomic-file.js +27 -2
  5. package/dist/atomic-file.js.map +1 -1
  6. package/dist/cli-bin.d.ts +4 -0
  7. package/dist/cli-bin.js +62 -0
  8. package/dist/cli-bin.js.map +1 -0
  9. package/dist/cli-release.d.ts +10 -0
  10. package/dist/cli-release.js +75 -0
  11. package/dist/cli-release.js.map +1 -0
  12. package/dist/client.d.ts +1 -0
  13. package/dist/client.js +13 -3
  14. package/dist/client.js.map +1 -1
  15. package/dist/commands-auth.d.ts +6 -0
  16. package/dist/commands-auth.js +28 -3
  17. package/dist/commands-auth.js.map +1 -1
  18. package/dist/commands-config.js +22 -3
  19. package/dist/commands-config.js.map +1 -1
  20. package/dist/commands-core.d.ts +12 -0
  21. package/dist/commands-core.js +27 -3
  22. package/dist/commands-core.js.map +1 -1
  23. package/dist/commands-devices.d.ts +2 -1
  24. package/dist/commands-devices.js +20 -8
  25. package/dist/commands-devices.js.map +1 -1
  26. package/dist/commands-doctor.d.ts +1 -0
  27. package/dist/commands-doctor.js +85 -27
  28. package/dist/commands-doctor.js.map +1 -1
  29. package/dist/commands-guidance.d.ts +27 -0
  30. package/dist/commands-guidance.js +163 -0
  31. package/dist/commands-guidance.js.map +1 -0
  32. package/dist/commands-hooks.d.ts +16 -5
  33. package/dist/commands-hooks.js +433 -38
  34. package/dist/commands-hooks.js.map +1 -1
  35. package/dist/commands-init.d.ts +10 -18
  36. package/dist/commands-init.js +139 -54
  37. package/dist/commands-init.js.map +1 -1
  38. package/dist/commands-send-support.d.ts +17 -2
  39. package/dist/commands-send-support.js +66 -8
  40. package/dist/commands-send-support.js.map +1 -1
  41. package/dist/commands-send.d.ts +0 -1
  42. package/dist/commands-send.js +105 -39
  43. package/dist/commands-send.js.map +1 -1
  44. package/dist/commands-setup-proof.d.ts +8 -0
  45. package/dist/commands-setup-proof.js +31 -2
  46. package/dist/commands-setup-proof.js.map +1 -1
  47. package/dist/commands-skill.d.ts +11 -1
  48. package/dist/commands-skill.js +61 -11
  49. package/dist/commands-skill.js.map +1 -1
  50. package/dist/commands.d.ts +2 -1
  51. package/dist/commands.js +1 -0
  52. package/dist/commands.js.map +1 -1
  53. package/dist/config-schema.d.ts +1 -1
  54. package/dist/config-schema.js +30 -14
  55. package/dist/config-schema.js.map +1 -1
  56. package/dist/config.d.ts +24 -5
  57. package/dist/config.js +37 -8
  58. package/dist/config.js.map +1 -1
  59. package/dist/credentials.d.ts +10 -1
  60. package/dist/credentials.js +25 -12
  61. package/dist/credentials.js.map +1 -1
  62. package/dist/guidance-content.d.ts +50 -0
  63. package/dist/guidance-content.js +240 -0
  64. package/dist/guidance-content.js.map +1 -0
  65. package/dist/guidance.d.ts +69 -0
  66. package/dist/guidance.js +173 -0
  67. package/dist/guidance.js.map +1 -0
  68. package/dist/hook-adapter.js +37 -3
  69. package/dist/hook-adapter.js.map +1 -1
  70. package/dist/hooks.d.ts +68 -7
  71. package/dist/hooks.js +238 -92
  72. package/dist/hooks.js.map +1 -1
  73. package/dist/install-hooks.d.ts +10 -18
  74. package/dist/install-hooks.js +110 -23
  75. package/dist/install-hooks.js.map +1 -1
  76. package/dist/interactive.d.ts +1 -1
  77. package/dist/interactive.js +14 -9
  78. package/dist/interactive.js.map +1 -1
  79. package/dist/logging.d.ts +8 -1
  80. package/dist/logging.js +43 -2
  81. package/dist/logging.js.map +1 -1
  82. package/dist/main.js +5 -487
  83. package/dist/main.js.map +1 -1
  84. package/dist/native-skills.d.ts +19 -0
  85. package/dist/native-skills.js +30 -8
  86. package/dist/native-skills.js.map +1 -1
  87. package/dist/opencode-plugin.js +14 -1
  88. package/dist/opencode-plugin.js.map +1 -1
  89. package/dist/program.d.ts +49 -0
  90. package/dist/program.js +576 -0
  91. package/dist/program.js.map +1 -0
  92. package/dist/send.d.ts +12 -10
  93. package/dist/send.js +65 -29
  94. package/dist/send.js.map +1 -1
  95. package/dist/session-activation.d.ts +15 -0
  96. package/dist/session-activation.js +35 -0
  97. package/dist/session-activation.js.map +1 -0
  98. package/dist/session-labels.d.ts +9 -3
  99. package/dist/session-labels.js +38 -7
  100. package/dist/session-labels.js.map +1 -1
  101. package/dist/url-policy.d.ts +85 -0
  102. package/dist/url-policy.js +369 -0
  103. package/dist/url-policy.js.map +1 -0
  104. package/package.json +6 -4
  105. package/src/atomic-file.ts +36 -2
  106. package/src/cli-bin.test.ts +38 -0
  107. package/src/cli-bin.ts +67 -0
  108. package/src/cli-release.test.ts +46 -0
  109. package/src/cli-release.ts +78 -0
  110. package/src/client.test.ts +95 -0
  111. package/src/client.ts +16 -3
  112. package/src/commands-auth.ts +32 -3
  113. package/src/commands-config.ts +25 -2
  114. package/src/commands-core.ts +38 -3
  115. package/src/commands-devices.ts +28 -9
  116. package/src/commands-doctor.ts +116 -25
  117. package/src/commands-guidance.ts +216 -0
  118. package/src/commands-hooks.ts +513 -42
  119. package/src/commands-init.ts +170 -60
  120. package/src/commands-send-support.test.ts +156 -0
  121. package/src/commands-send-support.ts +72 -8
  122. package/src/commands-send.ts +123 -38
  123. package/src/commands-setup-proof.ts +36 -2
  124. package/src/commands-skill.ts +78 -15
  125. package/src/commands.test.ts +1490 -197
  126. package/src/commands.ts +6 -0
  127. package/src/config-schema.ts +32 -16
  128. package/src/config.test.ts +57 -2
  129. package/src/config.ts +49 -10
  130. package/src/credentials.test.ts +71 -3
  131. package/src/credentials.ts +29 -15
  132. package/src/guidance-content.ts +256 -0
  133. package/src/guidance.test.ts +299 -0
  134. package/src/guidance.ts +233 -0
  135. package/src/hook-adapter.test.ts +113 -1
  136. package/src/hook-adapter.ts +37 -3
  137. package/src/hooks.test.ts +783 -170
  138. package/src/hooks.ts +306 -131
  139. package/src/install-hooks.test.ts +135 -16
  140. package/src/install-hooks.ts +113 -25
  141. package/src/interactive.ts +14 -9
  142. package/src/logging.test.ts +66 -3
  143. package/src/logging.ts +45 -2
  144. package/src/main.ts +6 -614
  145. package/src/native-skills.test.ts +41 -1
  146. package/src/native-skills.ts +40 -6
  147. package/src/opencode-plugin.ts +14 -1
  148. package/src/program.test.ts +237 -0
  149. package/src/program.ts +751 -0
  150. package/src/send.test.ts +28 -0
  151. package/src/send.ts +81 -34
  152. package/src/session-activation.ts +45 -0
  153. package/src/session-labels.test.ts +120 -3
  154. package/src/session-labels.ts +38 -7
  155. package/src/skill.test.ts +153 -12
  156. package/src/trust-policy.test.ts +701 -0
  157. package/src/url-policy.ts +399 -0
@@ -1,3 +1,4 @@
1
+ import { SKILLS_INSTALLER_SPEC } from './native-skills.js';
1
2
  import {} from './readiness.js';
2
3
  import { skillsSource } from './release.js';
3
4
  /**
@@ -13,6 +14,7 @@ export const SKILLS_SOURCE = skillsSource();
13
14
  * saying nothing would be worse — the sentence still has to read as English.
14
15
  */
15
16
  const SKILLS_SOURCE_LABEL = SKILLS_SOURCE ?? 'the public release tag matching this CLI';
17
+ const SKILL_SCOPES = ['project', 'global'];
16
18
  function skillSourceParts() {
17
19
  if (SKILLS_SOURCE === null)
18
20
  return null;
@@ -27,9 +29,16 @@ function expectedSkill(skill) {
27
29
  skill.sourceType === 'github' &&
28
30
  skill.ref === expected.ref);
29
31
  }
30
- export async function skillReadiness(deps, selectedScope) {
31
- const scopes = selectedScope === undefined ? ['project', 'global'] : [selectedScope];
32
- const results = await Promise.all(scopes.map(async (scope) => {
32
+ function skillPin(skill) {
33
+ return skill.ref ?? 'unknown pin';
34
+ }
35
+ /**
36
+ * Installer-managed notifai skills in both scopes. Duplicate detection has to
37
+ * see the pair; a selected-scope filter would hide the copy the harness still
38
+ * lists.
39
+ */
40
+ export async function listScopedNotifaiSkills(deps) {
41
+ const results = await Promise.all(SKILL_SCOPES.map(async (scope) => {
33
42
  if (deps.nativeSkills === undefined)
34
43
  return { scope, skills: [] };
35
44
  try {
@@ -39,18 +48,59 @@ export async function skillReadiness(deps, selectedScope) {
39
48
  return { scope, skills: [], error: String(err) };
40
49
  }
41
50
  }));
42
- const installed = results.flatMap(({ skills }) => skills).find(expectedSkill);
43
- if (installed !== undefined) {
51
+ return {
52
+ installed: results.flatMap(({ skills }) => skills.filter((skill) => skill.name === 'notifai')),
53
+ errors: results
54
+ .filter((result) => result.error !== undefined)
55
+ .map((result) => `${result.scope}: ${result.error}`),
56
+ };
57
+ }
58
+ function duplicateSkillState(installed, selectedScope) {
59
+ const project = installed.find((skill) => skill.scope === 'project');
60
+ const global = installed.find((skill) => skill.scope === 'global');
61
+ const projectPin = project === undefined ? 'not installed' : skillPin(project);
62
+ const globalPin = global === undefined ? 'not installed' : skillPin(global);
63
+ return {
64
+ id: 'skill',
65
+ title: 'Agent guidance skill',
66
+ status: 'gap',
67
+ detail: `project (${projectPin}) and global (${globalPin}) are both installed, so the harness lists both. ` +
68
+ 'Keep either project or global and uninstall the other.',
69
+ technical: {
70
+ project: project === undefined
71
+ ? null
72
+ : { ref: project.ref, path: project.path, current: expectedSkill(project) },
73
+ global: global === undefined
74
+ ? null
75
+ : { ref: global.ref, path: global.path, current: expectedSkill(global) },
76
+ resolution: 'both-listed',
77
+ },
78
+ remedy: selectedScope === undefined
79
+ ? {
80
+ by: 'user-here',
81
+ summary: 'keep either the project or the machine-global skill and uninstall the other; add --global to remove the machine-global copy',
82
+ command: `npx -y ${SKILLS_INSTALLER_SPEC} remove notifai`,
83
+ }
84
+ : {
85
+ by: 'cli',
86
+ summary: `keep the ${selectedScope} skill and uninstall the other`,
87
+ command: `notifai init --skills --setup-scope ${selectedScope}`,
88
+ },
89
+ };
90
+ }
91
+ export async function skillReadiness(deps, selectedScope) {
92
+ const { installed, errors } = await listScopedNotifaiSkills(deps);
93
+ if (installed.length > 1)
94
+ return duplicateSkillState(installed, selectedScope);
95
+ const current = installed.find(expectedSkill);
96
+ if (current !== undefined) {
44
97
  return {
45
98
  id: 'skill',
46
99
  title: 'Agent guidance skill',
47
100
  status: 'ready',
48
- detail: `installed from ${SKILLS_SOURCE_LABEL} in the ${installed.scope} scope`,
101
+ detail: `installed from ${SKILLS_SOURCE_LABEL} in the ${current.scope} scope`,
49
102
  };
50
103
  }
51
- const errors = results
52
- .filter((result) => result.error !== undefined)
53
- .map((result) => `${result.scope}: ${result.error}`);
54
104
  const scopeText = selectedScope === undefined ? 'project or machine-global scope' : `${selectedScope} scope`;
55
105
  return {
56
106
  id: 'skill',
@@ -63,8 +113,8 @@ export async function skillReadiness(deps, selectedScope) {
63
113
  by: 'cli',
64
114
  summary: 'install the skill agents follow when deciding to notify',
65
115
  command: selectedScope === undefined
66
- ? 'notifai init --skills'
67
- : `notifai init --skills --skills-scope ${selectedScope}`,
116
+ ? 'notifai init --skills --setup-scope project'
117
+ : `notifai init --skills --setup-scope ${selectedScope}`,
68
118
  },
69
119
  };
70
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands-skill.js","sourceRoot":"","sources":["../src/commands-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands-skill.js","sourceRoot":"","sources":["../src/commands-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAqC,MAAM,oBAAoB,CAAA;AAC7F,OAAO,EAAuB,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,YAAY,EAAE,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,aAAa,IAAI,0CAA0C,CAAA;AAEvF,MAAM,YAAY,GAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AAEjE,SAAS,gBAAgB;IACvB,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAA;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,KAAkB;IACvC,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;IACnC,OAAO,CACL,QAAQ,KAAK,IAAI;QACjB,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAChC,KAAK,CAAC,UAAU,KAAK,QAAQ;QAC7B,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAC3B,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkB;IAClC,OAAO,KAAK,CAAC,GAAG,IAAI,aAAa,CAAA;AACnC,CAAC;AAOD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAiB;IAC7D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAmB,EAAE,CAAA;QAClF,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;QAChF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;QACnE,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC9F,MAAM,EAAE,OAAO;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;aAC9C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;KACvD,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAwB,EAAE,aAA0B;IAC/E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC9E,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC3E,OAAO;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,KAAK;QACb,MAAM,EACJ,YAAY,UAAU,iBAAiB,SAAS,mDAAmD;YACnG,wDAAwD;QAC1D,SAAS,EAAE;YACT,OAAO,EACL,OAAO,KAAK,SAAS;gBACnB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE;YAC/E,MAAM,EACJ,MAAM,KAAK,SAAS;gBAClB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;YAC5E,UAAU,EAAE,aAAa;SAC1B;QACD,MAAM,EACJ,aAAa,KAAK,SAAS;YACzB,CAAC,CAAC;gBACE,EAAE,EAAE,WAAW;gBACf,OAAO,EACL,6HAA6H;gBAC/H,OAAO,EAAE,UAAU,qBAAqB,iBAAiB;aAC1D;YACH,CAAC,CAAC;gBACE,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,YAAY,aAAa,gCAAgC;gBAClE,OAAO,EAAE,uCAAuC,aAAa,EAAE;aAChE;KACR,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAiB,EACjB,aAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAA;IACjE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE9E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,kBAAkB,mBAAmB,WAAW,OAAO,CAAC,KAAK,QAAQ;SAC9E,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,GAAG,aAAa,QAAQ,CAAA;IAC5G,OAAO;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,cAAc;QACtB,MAAM,EACJ,MAAM,CAAC,MAAM,GAAG,CAAC;YACf,CAAC,CAAC,+CAA+C,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACnF,CAAC,CAAC,sBAAsB,mBAAmB,OAAO,SAAS,EAAE;QACjE,MAAM,EAAE;YACN,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,yDAAyD;YAClE,OAAO,EACL,aAAa,KAAK,SAAS;gBACzB,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,uCAAuC,aAAa,EAAE;SAC7D;KACF,CAAA;AACH,CAAC"}
@@ -5,8 +5,9 @@ export { contradictingAnswer, repliesCommand, sendCommand, statusCommand, } from
5
5
  export { waitForReply } from './commands-send-support.js';
6
6
  export { HOOK_EVENTS, acknowledgeCommand, askCommand, buildQuestions, closeCommand, describeHookFailure, hookDefersDiagnosticsUntilAfterCleanup, hookRunCommand, hooksInstallCommand, hooksUninstallCommand, runningViaNpx, type AskFlags, type BuiltQuestions, type HookEvent, type HooksInstallFlags, } from './commands-hooks.js';
7
7
  export { configExplainCommand, configSetCommand, configShowCommand, configUnsetCommand, } from './commands-config.js';
8
+ export { guidanceSetCommand, guidanceShowCommand, guidanceUnsetCommand, } from './commands-guidance.js';
8
9
  export { logsCommand, parseSince, type LogsFlags } from './commands-logs.js';
9
10
  export { SKILLS_SOURCE } from './commands-skill.js';
10
- export { initCommand, projectSlugFrom, type InitFlags, } from './commands-init.js';
11
+ export { initCommand, projectSlugFrom, type InitFlags, type SetupScope, } from './commands-init.js';
11
12
  export { assessReadiness, doctorCommand } from './commands-doctor.js';
12
13
  export { realIo } from './commands-io.js';
package/dist/commands.js CHANGED
@@ -5,6 +5,7 @@ export { contradictingAnswer, repliesCommand, sendCommand, statusCommand, } from
5
5
  export { waitForReply } from './commands-send-support.js';
6
6
  export { HOOK_EVENTS, acknowledgeCommand, askCommand, buildQuestions, closeCommand, describeHookFailure, hookDefersDiagnosticsUntilAfterCleanup, hookRunCommand, hooksInstallCommand, hooksUninstallCommand, runningViaNpx, } from './commands-hooks.js';
7
7
  export { configExplainCommand, configSetCommand, configShowCommand, configUnsetCommand, } from './commands-config.js';
8
+ export { guidanceSetCommand, guidanceShowCommand, guidanceUnsetCommand, } from './commands-guidance.js';
8
9
  export { logsCommand, parseSince } from './commands-logs.js';
9
10
  export { SKILLS_SOURCE } from './commands-skill.js';
10
11
  export { initCommand, projectSlugFrom, } from './commands-init.js';
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,GAAG,GAIJ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sCAAsC,EACtC,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GAKd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,eAAe,GAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,GAAG,GAIJ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sCAAsC,EACtC,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GAKd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,eAAe,GAGhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA"}
@@ -4,7 +4,7 @@ export type ConfigKind = 'string' | 'url' | 'integer' | 'boolean' | 'enum' | 'li
4
4
  * Which surface a key belongs to. Grouping is the difference between a flat
5
5
  * list of keys and a few short ones a reader can hold in their head.
6
6
  */
7
- export type ConfigGroup = 'questions' | 'delivery' | 'project' | 'diagnostics';
7
+ export type ConfigGroup = 'questions' | 'delivery' | 'project' | 'trust' | 'diagnostics';
8
8
  export declare const CONFIG_GROUPS: {
9
9
  id: ConfigGroup;
10
10
  title: string;
@@ -32,7 +32,12 @@ export const CONFIG_GROUPS = [
32
32
  {
33
33
  id: 'project',
34
34
  title: 'This project',
35
- blurb: 'How work in this directory identifies itself, and the house rules agents read before notifying.',
35
+ blurb: 'How work in this directory identifies itself. House rules for agents live in `notifai guidance`.',
36
+ },
37
+ {
38
+ id: 'trust',
39
+ title: 'Network trust',
40
+ blurb: 'Origins this machine may fetch from or open beyond the safe defaults. Only you can widen these — a repository cannot.',
36
41
  },
37
42
  {
38
43
  id: 'diagnostics',
@@ -45,7 +50,7 @@ const INFO = {
45
50
  label: 'Send questions to my devices',
46
51
  group: 'questions',
47
52
  kind: 'boolean',
48
- summary: 'Whether a registered question may reach your iPhone at all',
53
+ summary: 'Whether a registered question may reach your Companion devices at all',
49
54
  detail: 'The master switch for question routing. When this is off, a question an agent registers with `notifai ask` stays in the terminal and never leaves this machine, whatever else is configured. Turn it off to stop being reached for a while without uninstalling the harness hooks.',
50
55
  example: 'true',
51
56
  },
@@ -93,9 +98,9 @@ const INFO = {
93
98
  active: 'wakes the screen and plays the sound',
94
99
  time_sensitive: 'marks the notification urgent; Focus breakthrough is not available yet',
95
100
  },
96
- summary: 'Set how insistently notifications from here arrive',
97
- detail: 'How hard a notification tries to reach you, in the operating system\'s terms. Setting this pins one level for everything sent from here; kind chooses the sound, never this.\n\nLeave this unset to omit the field and let the destination use its normal behavior. `time_sensitive` is accepted and marks the notification urgent, but Focus breakthrough is not available yet — run `notifai capabilities` for what a platform actually honours.',
98
- unsetMeans: 'not specified; the destination uses its normal behavior',
101
+ summary: 'Set how insistently notifications reach Apple devices',
102
+ detail: 'Apple interruption level controls how hard a notification tries to reach you in the operating system\'s terms. Setting this pins one Apple-only level for sends from here; kind chooses the sound, never this. Android does not accept caller-selected interruption levels: its product-owned channels and your device settings own attention.\n\nLeave this unset to omit the field and let each destination use its normal behavior. `time_sensitive` is accepted on Apple platforms and marks the notification urgent, but Focus breakthrough is not available yet — run `notifai capabilities --platform <platform>` for the exact contract.',
103
+ unsetMeans: 'not specified; each destination uses its normal behavior',
99
104
  },
100
105
  devices: {
101
106
  label: 'Default devices',
@@ -142,14 +147,25 @@ const INFO = {
142
147
  unsetMeans: 'inferred from Git or the current directory',
143
148
  example: 'my-app',
144
149
  },
145
- notify_criteria: {
146
- label: 'House rules for agents',
147
- group: 'project',
148
- kind: 'string',
149
- summary: 'Free text an agent reads before deciding whether to notify you',
150
- detail: 'Your own guidance, in your own words, about what is worth a notification in this project — read by agents before they send. Something like "only tell me about failures and finished deploys; never per-file progress".\n\nIt is advice to the agent, not a filter the service enforces. Agents follow it as your literal standing word, so an agent may write it only when you ask for a preference to be remembered — and only in your words, never its own summary.',
151
- unsetMeans: 'agents fall back to their default judgement',
152
- example: 'Only failures and completed deploys',
150
+ media_origins: {
151
+ label: 'Extra image origins',
152
+ group: 'trust',
153
+ kind: 'list',
154
+ summary: 'Origins remote --image URLs may use beyond public HTTPS',
155
+ detail: 'By default a remote `--image` URL must be HTTPS to a publicly routable host, and every redirect hop is held to the same rule — an agent given a hostile URL cannot be used to reach this machine\'s local network. List an exact origin (`scheme://host[:port]`) here to allow a self-hosted or intranet image server, including plain-http ones.\n\nThis key is yours alone: it is read from your machine and personal-project configuration and ignored in the repository\'s shared `.notifai/config.toml`, so a cloned repository can never widen it.',
156
+ unsetMeans: 'public HTTPS only',
157
+ example: 'http://imgs.intranet.example:8080',
158
+ advanced: true,
159
+ },
160
+ approve_origins: {
161
+ label: 'Extra approval origins',
162
+ group: 'trust',
163
+ kind: 'list',
164
+ summary: 'Dashboard origins a pairing approval link may open',
165
+ detail: 'During `notifai login` the server names the browser page where you approve this machine. The CLI opens that link only when it is the Notifai dashboard, the origin you are pairing with, or loopback. If you self-host with the dashboard on its own origin, list that exact origin (`scheme://host[:port]`) here.\n\nThis key is yours alone: it is read from your machine and personal-project configuration and ignored in the repository\'s shared `.notifai/config.toml`, so a cloned repository can never widen it.',
166
+ unsetMeans: 'the Notifai dashboard, the pairing origin, and loopback',
167
+ example: 'https://dash.selfhost.example',
168
+ advanced: true,
153
169
  },
154
170
  log_level: {
155
171
  label: 'Log level',
@@ -163,7 +179,7 @@ const INFO = {
163
179
  debug: 'adds config resolution and per-request detail',
164
180
  },
165
181
  summary: 'How much this machine records about what it did',
166
- detail: 'Notifai keeps a local record of what it did — every command, every notification, and in particular every decision a harness hook made about whether a question could leave the terminal. Hooks run headless, so without this there is no account of them at all: `notifai logs` is how an agent finds out afterwards why a question never reached your phone.\n\nThe log never leaves this machine. It is not uploaded, and nothing sends it anywhere.\n\n`debug` also records which config layer won and the detail of each request, which is what to turn on when something is behaving in a way the ordinary log does not explain.',
182
+ detail: 'Notifai keeps a local record of what it did — every command, every notification, and in particular every decision a harness hook made about whether a question could leave the terminal. Hooks run headless, so without this there is no account of them at all: `notifai logs` is how an agent finds out afterwards why a question never reached your device.\n\nThe log never leaves this machine. It is not uploaded, and nothing sends it anywhere.\n\n`debug` also records which config layer won and the detail of each request, which is what to turn on when something is behaving in a way the ordinary log does not explain.',
167
183
  example: 'info',
168
184
  },
169
185
  log_max_bytes: {
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -39,8 +39,6 @@ export interface CliConfig {
39
39
  interruption_level: ResolvedValue<CliInterruptionLevel | null>;
40
40
  /** Project identifier stamped on sends; typically set in .notifai/config.toml. */
41
41
  project: ResolvedValue<string | null>;
42
- /** Free-text notification criteria agents consult before sending. */
43
- notify_criteria: ResolvedValue<string | null>;
44
42
  /** Whether a registered agent question may reach companion devices at all. */
45
43
  ask_notifications: ResolvedValue<boolean>;
46
44
  /**
@@ -73,9 +71,30 @@ export interface CliConfig {
73
71
  reply_window_seconds: ResolvedValue<number>;
74
72
  /** Log files kept in total, the active one included. */
75
73
  log_max_files: ResolvedValue<number>;
74
+ /**
75
+ * Extra origins remote `--image` URLs may use beyond the default public
76
+ * HTTPS policy — the self-host and intranet escape hatch. User-owned: the
77
+ * repository layer cannot supply it (see `USER_OWNED_CONFIG_KEYS`).
78
+ */
79
+ media_origins: ResolvedValue<string[]>;
80
+ /**
81
+ * Extra dashboard origins a pairing approval URL may open, for self-hosts
82
+ * whose dashboard lives on a different origin than the API. User-owned.
83
+ */
84
+ approve_origins: ResolvedValue<string[]>;
76
85
  }
77
- export declare const CONFIG_KEYS: readonly ["wait_seconds", "ttl_seconds", "collapse_key", "devices", "sound", "interruption_level", "project", "notify_criteria", "ask_notifications", "ask_grace_seconds", "reply_window_seconds", "log_level", "log_max_bytes", "log_max_files"];
86
+ export declare const CONFIG_KEYS: readonly ["wait_seconds", "ttl_seconds", "collapse_key", "devices", "sound", "interruption_level", "project", "ask_notifications", "ask_grace_seconds", "reply_window_seconds", "log_level", "log_max_bytes", "log_max_files", "media_origins", "approve_origins"];
78
87
  export type ConfigKey = (typeof CONFIG_KEYS)[number];
88
+ /**
89
+ * Keys only the User may set. The shared `.notifai/config.toml` arrives with
90
+ * a clone, so for most keys an unwanted value is at worst a clamped nuisance —
91
+ * but these keys widen which network destinations this machine will touch,
92
+ * and a hostile repository must not be able to widen them. Resolution skips
93
+ * the repository layer for them entirely.
94
+ */
95
+ export declare const USER_OWNED_CONFIG_KEYS: readonly ConfigKey[];
96
+ /** Keys whose TOML value must be a list of normalized http(s) origins. */
97
+ export declare const ORIGIN_LIST_CONFIG_KEYS: readonly ConfigKey[];
79
98
  /** Keys whose TOML value must parse as a boolean; used by `config set`. */
80
99
  export declare const BOOLEAN_CONFIG_KEYS: readonly ConfigKey[];
81
100
  /** Keys whose TOML value must parse as an integer within its configured bounds. */
@@ -88,8 +107,8 @@ export declare const NUMERIC_CONFIG_KEYS: readonly ConfigKey[];
88
107
  * is the same discipline the numeric bounds follow.
89
108
  */
90
109
  export declare const ENUM_CONFIG_VALUES: Partial<Record<ConfigKey, readonly string[]>>;
91
- /** Compiled service origin. Not a user-facing setting; override with `--base-url` or `NOTIFAI_BASE_URL`. */
92
- export declare const DEFAULT_BASE_URL = "https://notifai.fly.dev";
110
+ /** Compiled service origin. Not a user-facing setting; login may override with `--base-url` or `NOTIFAI_BASE_URL`. */
111
+ export declare const DEFAULT_BASE_URL = "https://api.notifai.sh";
93
112
  /** The shipped value beneath every user-controlled configuration layer. */
94
113
  export declare function configDefaultValue(key: ConfigKey): unknown;
95
114
  export declare function globalConfigDir(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string;
package/dist/config.js CHANGED
@@ -4,6 +4,7 @@ import { existsSync, readFileSync, realpathSync } from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { parse as parseToml } from 'smol-toml';
6
6
  import { configHome, stateHome } from './platform.js';
7
+ import { normalizeOrigin } from './url-policy.js';
7
8
  /**
8
9
  * How much the local log records. Defined here rather than in `logging.ts`
9
10
  * because it is a configuration vocabulary first — `logging.ts` reads config,
@@ -18,14 +19,25 @@ export const CONFIG_KEYS = [
18
19
  'sound',
19
20
  'interruption_level',
20
21
  'project',
21
- 'notify_criteria',
22
22
  'ask_notifications',
23
23
  'ask_grace_seconds',
24
24
  'reply_window_seconds',
25
25
  'log_level',
26
26
  'log_max_bytes',
27
27
  'log_max_files',
28
+ 'media_origins',
29
+ 'approve_origins',
28
30
  ];
31
+ /**
32
+ * Keys only the User may set. The shared `.notifai/config.toml` arrives with
33
+ * a clone, so for most keys an unwanted value is at worst a clamped nuisance —
34
+ * but these keys widen which network destinations this machine will touch,
35
+ * and a hostile repository must not be able to widen them. Resolution skips
36
+ * the repository layer for them entirely.
37
+ */
38
+ export const USER_OWNED_CONFIG_KEYS = ['media_origins', 'approve_origins'];
39
+ /** Keys whose TOML value must be a list of normalized http(s) origins. */
40
+ export const ORIGIN_LIST_CONFIG_KEYS = ['media_origins', 'approve_origins'];
29
41
  /** Keys whose TOML value must parse as a boolean; used by `config set`. */
30
42
  export const BOOLEAN_CONFIG_KEYS = ['ask_notifications'];
31
43
  /** Keys whose TOML value must parse as an integer within its configured bounds. */
@@ -49,8 +61,8 @@ export const ENUM_CONFIG_VALUES = {
49
61
  interruption_level: INTERRUPTION_LEVELS,
50
62
  log_level: LOG_LEVELS,
51
63
  };
52
- /** Compiled service origin. Not a user-facing setting; override with `--base-url` or `NOTIFAI_BASE_URL`. */
53
- export const DEFAULT_BASE_URL = 'https://notifai.fly.dev';
64
+ /** Compiled service origin. Not a user-facing setting; login may override with `--base-url` or `NOTIFAI_BASE_URL`. */
65
+ export const DEFAULT_BASE_URL = 'https://api.notifai.sh';
54
66
  const DEFAULTS = {
55
67
  wait_seconds: 10,
56
68
  ttl_seconds: 86400,
@@ -59,7 +71,6 @@ const DEFAULTS = {
59
71
  sound: null,
60
72
  interruption_level: null,
61
73
  project: null,
62
- notify_criteria: null,
63
74
  // Installing the hooks is the opt-in; these exist to switch the behaviour
64
75
  // back off for a project or a session without uninstalling anything.
65
76
  ask_notifications: true,
@@ -76,6 +87,11 @@ const DEFAULTS = {
76
87
  // agent traffic and small enough that nobody has to think about it.
77
88
  log_max_bytes: 2_000_000,
78
89
  log_max_files: 3,
90
+ // Empty by default: remote images use public HTTPS and pairing approval
91
+ // uses the canonical dashboard, the pairing origin, or loopback. Entries
92
+ // here are the User widening that, never a repository.
93
+ media_origins: [],
94
+ approve_origins: [],
79
95
  };
80
96
  /** The shipped value beneath every user-controlled configuration layer. */
81
97
  export function configDefaultValue(key) {
@@ -219,6 +235,14 @@ function coerce(key, value) {
219
235
  }
220
236
  if (BOOLEAN_CONFIG_KEYS.includes(key))
221
237
  return typeof value === 'boolean' ? value : undefined;
238
+ if (ORIGIN_LIST_CONFIG_KEYS.includes(key)) {
239
+ // A trust rule is all-or-nothing: one malformed entry drops the whole
240
+ // value rather than silently enforcing a subset of what was written.
241
+ if (!Array.isArray(value))
242
+ return undefined;
243
+ const origins = value.map((entry) => (typeof entry === 'string' ? normalizeOrigin(entry) : null));
244
+ return origins.every((origin) => origin !== null) ? origins : undefined;
245
+ }
222
246
  const allowed = ENUM_CONFIG_VALUES[key];
223
247
  if (allowed !== undefined) {
224
248
  return typeof value === 'string' && allowed.includes(value) ? value : undefined;
@@ -237,8 +261,9 @@ function readTomlFile(filePath) {
237
261
  }
238
262
  }
239
263
  /**
240
- * Service origin is not a user setting. Flag and env are developer/self-host
241
- * overrides; signed-in traffic still pins to the credential origin elsewhere.
264
+ * Service origin is not a user setting. Flag and env are pairing/self-host
265
+ * overrides for unsigned-in traffic (login). Signed-in traffic always uses
266
+ * the origin stored with the Machine Credential.
242
267
  */
243
268
  function resolveServiceUrl(flags, env) {
244
269
  if (typeof flags.base_url === 'string' && flags.base_url !== '') {
@@ -264,11 +289,14 @@ export function loadConfig(options) {
264
289
  const sessionPath = sessionId ? sessionConfigPath(sessionId, env) : null;
265
290
  const sessionRaw = sessionPath && existsSync(sessionPath) ? readTomlFile(sessionPath) : {};
266
291
  function resolve(key) {
292
+ // The shared project file arrives with a clone, so keys that widen
293
+ // network trust never read from it — whatever a repository writes there.
294
+ const repositoryLayerReadable = !USER_OWNED_CONFIG_KEYS.includes(key);
267
295
  const layers = [
268
296
  [flags[key], 'flag'],
269
297
  [sessionPath ? sessionRaw[key] : undefined, `session:${sessionPath ?? ''}`],
270
298
  [projectLocalPath ? projectLocalRaw[key] : undefined, `project-local:${projectLocalPath ?? ''}`],
271
- [projectPath ? projectRaw[key] : undefined, `project:${projectPath ?? ''}`],
299
+ [projectPath && repositoryLayerReadable ? projectRaw[key] : undefined, `project:${projectPath ?? ''}`],
272
300
  [globalRaw[key], `global:${globalPath}`],
273
301
  ];
274
302
  for (const [raw, source] of layers) {
@@ -290,13 +318,14 @@ export function loadConfig(options) {
290
318
  sound: resolve('sound'),
291
319
  interruption_level: resolve('interruption_level'),
292
320
  project: resolve('project'),
293
- notify_criteria: resolve('notify_criteria'),
294
321
  ask_notifications: resolve('ask_notifications'),
295
322
  ask_grace_seconds: resolve('ask_grace_seconds'),
296
323
  reply_window_seconds: resolve('reply_window_seconds'),
297
324
  log_level: resolve('log_level'),
298
325
  log_max_bytes: resolve('log_max_bytes'),
299
326
  log_max_files: resolve('log_max_files'),
327
+ media_origins: resolve('media_origins'),
328
+ approve_origins: resolve('approve_origins'),
300
329
  };
301
330
  }
302
331
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -34,8 +34,17 @@ export interface CredentialStoreOptions {
34
34
  /** Which DPAPI operation a process invocation asked for. Args never carry secrets. */
35
35
  export declare function windowsDpapiOperation(args: readonly string[]): 'protect' | 'unprotect' | null;
36
36
  export declare const defaultProcessRunner: ProcessRunner;
37
- /** macOS Keychain via the `security` CLI — no native addons (proposal concern). */
37
+ /**
38
+ * macOS Keychain via the first-party `security` Security.framework client.
39
+ *
40
+ * `security add-generic-password -w <value>` puts the value in process argv.
41
+ * Interactive mode instead parses a command from stdin, so the credential
42
+ * crosses the helper boundary only through the pipe. `-X` keeps arbitrary
43
+ * serialized bytes out of the command parser's quoting rules.
44
+ */
38
45
  export declare class KeychainStore implements CredentialStore {
46
+ private readonly run;
47
+ constructor(options?: CredentialStoreOptions);
39
48
  load(): MachineCredential | null;
40
49
  save(credential: MachineCredential): void;
41
50
  clear(): void;
@@ -9,6 +9,7 @@ const DPAPI_FORMAT = 'notifai.dpapi.current-user.v1';
9
9
  const DPAPI_ENTROPY = 'io.notifai.cli';
10
10
  const DPAPI_TIMEOUT_MS = 15_000;
11
11
  const DPAPI_FILE = 'credentials.dpapi';
12
+ const KEYCHAIN_TIMEOUT_MS = 15_000;
12
13
  const PROTECT_SCRIPT = [
13
14
  "$ErrorActionPreference = 'Stop'",
14
15
  'Add-Type -AssemblyName System.Security',
@@ -64,8 +65,19 @@ export const defaultProcessRunner = {
64
65
  return { status: result.status ?? 1, stdout };
65
66
  },
66
67
  };
67
- /** macOS Keychain via the `security` CLI — no native addons (proposal concern). */
68
+ /**
69
+ * macOS Keychain via the first-party `security` Security.framework client.
70
+ *
71
+ * `security add-generic-password -w <value>` puts the value in process argv.
72
+ * Interactive mode instead parses a command from stdin, so the credential
73
+ * crosses the helper boundary only through the pipe. `-X` keeps arbitrary
74
+ * serialized bytes out of the command parser's quoting rules.
75
+ */
68
76
  export class KeychainStore {
77
+ run;
78
+ constructor(options = {}) {
79
+ this.run = options.run ?? defaultProcessRunner;
80
+ }
69
81
  load() {
70
82
  try {
71
83
  const raw = execFileSync('security', ['find-generic-password', '-s', SERVICE, '-a', 'machine', '-w'], { stdio: ['ignore', 'pipe', 'ignore'] })
@@ -78,16 +90,17 @@ export class KeychainStore {
78
90
  }
79
91
  }
80
92
  save(credential) {
81
- execFileSync('security', [
82
- 'add-generic-password',
83
- '-U',
84
- '-s',
85
- SERVICE,
86
- '-a',
87
- 'machine',
88
- '-w',
89
- JSON.stringify(serializeCredential(credential)),
90
- ], { stdio: 'ignore' });
93
+ const serialized = Buffer.from(JSON.stringify(serializeCredential(credential)), 'utf8');
94
+ const command = Buffer.from(`add-generic-password -U -s ${SERVICE} -a machine -X ${serialized.toString('hex')}\n`, 'ascii');
95
+ const result = this.run.run({
96
+ command: 'security',
97
+ args: ['-q', '-i'],
98
+ input: command,
99
+ timeoutMs: KEYCHAIN_TIMEOUT_MS,
100
+ });
101
+ if (result.status !== 0) {
102
+ throw new Error('macOS Keychain credential save failed');
103
+ }
91
104
  }
92
105
  clear() {
93
106
  try {
@@ -317,7 +330,7 @@ export function defaultCredentialStore(env = process.env, options = {}) {
317
330
  ? options.keychainAvailable
318
331
  : platform === 'darwin' && keychainProbeSucceeds();
319
332
  if (keychain)
320
- return new KeychainStore();
333
+ return new KeychainStore(options);
321
334
  return new FileStore(env, { platform });
322
335
  }
323
336
  //# sourceMappingURL=credentials.js.map