@raidiant/notifai 5.0.0 → 7.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 (126) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +2 -2
  3. package/dist/atomic-file.js +13 -0
  4. package/dist/atomic-file.js.map +1 -1
  5. package/dist/client.d.ts +8 -3
  6. package/dist/client.js +24 -3
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands-auth.d.ts +14 -0
  9. package/dist/commands-auth.js +154 -0
  10. package/dist/commands-auth.js.map +1 -0
  11. package/dist/commands-config.d.ts +31 -0
  12. package/dist/commands-config.js +246 -0
  13. package/dist/commands-config.js.map +1 -0
  14. package/dist/commands-core.d.ts +102 -0
  15. package/dist/commands-core.js +135 -0
  16. package/dist/commands-core.js.map +1 -0
  17. package/dist/commands-devices.d.ts +31 -0
  18. package/dist/commands-devices.js +124 -0
  19. package/dist/commands-devices.js.map +1 -0
  20. package/dist/commands-doctor.d.ts +24 -0
  21. package/dist/commands-doctor.js +1011 -0
  22. package/dist/commands-doctor.js.map +1 -0
  23. package/dist/commands-harness-context.d.ts +65 -0
  24. package/dist/commands-harness-context.js +97 -0
  25. package/dist/commands-harness-context.js.map +1 -0
  26. package/dist/commands-hook-shape.d.ts +17 -0
  27. package/dist/commands-hook-shape.js +37 -0
  28. package/dist/commands-hook-shape.js.map +1 -0
  29. package/dist/commands-hooks.d.ts +115 -0
  30. package/dist/commands-hooks.js +1225 -0
  31. package/dist/commands-hooks.js.map +1 -0
  32. package/dist/commands-init.d.ts +35 -0
  33. package/dist/commands-init.js +580 -0
  34. package/dist/commands-init.js.map +1 -0
  35. package/dist/commands-io.d.ts +2 -0
  36. package/dist/commands-io.js +110 -0
  37. package/dist/commands-io.js.map +1 -0
  38. package/dist/commands-logs.d.ts +30 -0
  39. package/dist/commands-logs.js +201 -0
  40. package/dist/commands-logs.js.map +1 -0
  41. package/dist/commands-send-support.d.ts +44 -0
  42. package/dist/commands-send-support.js +183 -0
  43. package/dist/commands-send-support.js.map +1 -0
  44. package/dist/commands-send.d.ts +33 -0
  45. package/dist/commands-send.js +519 -0
  46. package/dist/commands-send.js.map +1 -0
  47. package/dist/commands-setup-proof.d.ts +15 -0
  48. package/dist/commands-setup-proof.js +53 -0
  49. package/dist/commands-setup-proof.js.map +1 -0
  50. package/dist/commands-skill.d.ts +10 -0
  51. package/dist/commands-skill.js +71 -0
  52. package/dist/commands-skill.js.map +1 -0
  53. package/dist/commands.d.ts +12 -387
  54. package/dist/commands.js +12 -4536
  55. package/dist/commands.js.map +1 -1
  56. package/dist/config-schema.js +1 -1
  57. package/dist/config-schema.js.map +1 -1
  58. package/dist/config.d.ts +4 -4
  59. package/dist/config.js +6 -4
  60. package/dist/config.js.map +1 -1
  61. package/dist/credentials.js +13 -3
  62. package/dist/credentials.js.map +1 -1
  63. package/dist/generated-session-label.d.ts +2 -0
  64. package/dist/generated-session-label.js +152 -0
  65. package/dist/generated-session-label.js.map +1 -0
  66. package/dist/hooks.d.ts +2 -2
  67. package/dist/hooks.js +127 -99
  68. package/dist/hooks.js.map +1 -1
  69. package/dist/interactive.js +4 -4
  70. package/dist/interactive.js.map +1 -1
  71. package/dist/invocation-context.d.ts +3 -0
  72. package/dist/invocation-context.js +23 -6
  73. package/dist/invocation-context.js.map +1 -1
  74. package/dist/logging.js +1 -0
  75. package/dist/logging.js.map +1 -1
  76. package/dist/main.js +3 -3
  77. package/dist/main.js.map +1 -1
  78. package/dist/opencode-plugin.js +18 -3
  79. package/dist/opencode-plugin.js.map +1 -1
  80. package/dist/readiness.d.ts +3 -1
  81. package/dist/readiness.js.map +1 -1
  82. package/dist/session-labels.d.ts +30 -0
  83. package/dist/session-labels.js +278 -0
  84. package/dist/session-labels.js.map +1 -0
  85. package/package.json +2 -2
  86. package/src/atomic-file.ts +12 -0
  87. package/src/client.test.ts +90 -1
  88. package/src/client.ts +35 -2
  89. package/src/commands-auth.ts +174 -0
  90. package/src/commands-config.ts +307 -0
  91. package/src/commands-core.ts +240 -0
  92. package/src/commands-devices.ts +150 -0
  93. package/src/commands-doctor.ts +1209 -0
  94. package/src/commands-harness-context.ts +134 -0
  95. package/src/commands-hook-shape.ts +53 -0
  96. package/src/commands-hooks.ts +1586 -0
  97. package/src/commands-init.ts +721 -0
  98. package/src/commands-io.ts +108 -0
  99. package/src/commands-logs.ts +243 -0
  100. package/src/commands-send-support.ts +227 -0
  101. package/src/commands-send.ts +623 -0
  102. package/src/commands-setup-proof.ts +71 -0
  103. package/src/commands-skill.ts +84 -0
  104. package/src/commands.test.ts +567 -42
  105. package/src/commands.ts +58 -5614
  106. package/src/config-schema.ts +1 -1
  107. package/src/config.test.ts +9 -0
  108. package/src/config.ts +10 -5
  109. package/src/credentials.test.ts +25 -1
  110. package/src/credentials.ts +13 -3
  111. package/src/generated-session-label.ts +155 -0
  112. package/src/hooks.test.ts +355 -16
  113. package/src/hooks.ts +145 -97
  114. package/src/install-hooks.test.ts +84 -1
  115. package/src/interactive.test.ts +19 -1
  116. package/src/interactive.ts +4 -4
  117. package/src/invocation-context.test.ts +115 -16
  118. package/src/invocation-context.ts +32 -11
  119. package/src/logging.test.ts +15 -2
  120. package/src/logging.ts +1 -0
  121. package/src/main.ts +9 -3
  122. package/src/opencode-plugin.ts +18 -3
  123. package/src/readiness.ts +3 -1
  124. package/src/session-labels.test.ts +303 -0
  125. package/src/session-labels.ts +360 -0
  126. package/src/skill.test.ts +13 -0
@@ -0,0 +1,84 @@
1
+ import type { NativeSkill, SkillScope } from './native-skills.js'
2
+ import { type ReadinessState } from './readiness.js'
3
+ import { skillsSource } from './release.js'
4
+ import type { CommandDeps } from './commands-core.js'
5
+
6
+ /**
7
+ * Where `npx skills add` fetches the optional agent skill from, derived from
8
+ * this build's own version so the pin cannot drift from the release it names.
9
+ * Null when the build cannot establish its version; see `./release.js`.
10
+ */
11
+ export const SKILLS_SOURCE: string | null = skillsSource()
12
+
13
+ /**
14
+ * How to refer to the pin in user-facing text.
15
+ *
16
+ * Only reached in a corrupted install, where naming the tag is impossible but
17
+ * saying nothing would be worse — the sentence still has to read as English.
18
+ */
19
+ const SKILLS_SOURCE_LABEL = SKILLS_SOURCE ?? 'the public release tag matching this CLI'
20
+
21
+ function skillSourceParts(): { source: string; ref: string } | null {
22
+ if (SKILLS_SOURCE === null) return null
23
+ const match = /^([^#]+)#(.+)$/.exec(SKILLS_SOURCE)
24
+ return match === null ? null : { source: match[1]!, ref: match[2]! }
25
+ }
26
+
27
+ function expectedSkill(skill: NativeSkill): boolean {
28
+ const expected = skillSourceParts()
29
+ return (
30
+ expected !== null &&
31
+ skill.name === 'notifai' &&
32
+ skill.source === expected.source &&
33
+ skill.sourceType === 'github' &&
34
+ skill.ref === expected.ref
35
+ )
36
+ }
37
+
38
+ export async function skillReadiness(
39
+ deps: CommandDeps,
40
+ selectedScope?: SkillScope,
41
+ ): Promise<ReadinessState> {
42
+ const scopes: SkillScope[] = selectedScope === undefined ? ['project', 'global'] : [selectedScope]
43
+ const results = await Promise.all(
44
+ scopes.map(async (scope) => {
45
+ if (deps.nativeSkills === undefined) return { scope, skills: [] as NativeSkill[] }
46
+ try {
47
+ return { scope, ...(await deps.nativeSkills.list(scope, deps.cwd, deps.env)) }
48
+ } catch (err) {
49
+ return { scope, skills: [] as NativeSkill[], error: String(err) }
50
+ }
51
+ }),
52
+ )
53
+ const installed = results.flatMap(({ skills }) => skills).find(expectedSkill)
54
+ if (installed !== undefined) {
55
+ return {
56
+ id: 'skill',
57
+ title: 'Agent guidance skill',
58
+ status: 'ready',
59
+ detail: `installed from ${SKILLS_SOURCE_LABEL} in the ${installed.scope} scope`,
60
+ }
61
+ }
62
+
63
+ const errors = results
64
+ .filter((result) => result.error !== undefined)
65
+ .map((result) => `${result.scope}: ${result.error}`)
66
+ const scopeText = selectedScope === undefined ? 'project or machine-global scope' : `${selectedScope} scope`
67
+ return {
68
+ id: 'skill',
69
+ title: 'Agent guidance skill',
70
+ status: 'optional-gap',
71
+ detail:
72
+ errors.length > 0
73
+ ? `could not verify installer-managed state in ${scopeText} (${errors.join('; ')})`
74
+ : `not installed from ${SKILLS_SOURCE_LABEL} in ${scopeText}`,
75
+ remedy: {
76
+ by: 'cli',
77
+ summary: 'install the skill agents follow when deciding to notify',
78
+ command:
79
+ selectedScope === undefined
80
+ ? 'notifai init --skills'
81
+ : `notifai init --skills --skills-scope ${selectedScope}`,
82
+ },
83
+ }
84
+ }