@zerwiz/ymir 0.1.16 → 0.1.18

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 (171) hide show
  1. package/.agents/config/app-repos.yaml +38 -0
  2. package/.claude/settings.json +31 -0
  3. package/.codex/hooks.json +43 -0
  4. package/.cursor/hooks.json +33 -0
  5. package/.pi/extensions/README.md +39 -0
  6. package/.pi/extensions/gna-pi-watch.ts +15 -0
  7. package/.pi/extensions/lib/ro-assistant-layout.ts +96 -0
  8. package/.pi/extensions/lib/ro-operational-user-layout.ts +145 -0
  9. package/.pi/extensions/lib/ro-visibility.ts +99 -0
  10. package/.pi/extensions/lib/ro-working-ship.ts +243 -0
  11. package/.pi/extensions/lib/rodd-operational-input.ts +62 -0
  12. package/.pi/extensions/lib/skuld-branch-dispatch.ts +252 -0
  13. package/.pi/extensions/lib/skuld-branch-model-picker.ts +77 -0
  14. package/.pi/extensions/lib/vordr-sessionstart-supervisor.mjs +48 -0
  15. package/.pi/extensions/ro.ts +11 -0
  16. package/.pi/extensions/skuld-branch-supervision.ts +11 -0
  17. package/.pi/extensions/syn-turnend-guard.ts +11 -0
  18. package/.pi/mcp.json +16 -0
  19. package/.pi/mcp.json.example +11 -0
  20. package/.pi/npm/.gitignore +2 -0
  21. package/.pi/settings.json +8 -0
  22. package/.pi/shared/extensions/gna-pi-watch.ts +750 -0
  23. package/.pi/shared/extensions/herdr-agent-state.ts +257 -0
  24. package/.pi/shared/extensions/open-editor.ts +509 -0
  25. package/.pi/shared/extensions/ro.ts +504 -0
  26. package/.pi/shared/extensions/skuld-branch-supervision.ts +1535 -0
  27. package/.pi/shared/extensions/syn-turnend-guard.ts +683 -0
  28. package/.pi/shared/extensions/todo.ts +133 -0
  29. package/.pi/shared/extensions/ymir-subagents.ts +287 -0
  30. package/.pi/shared/extensions/ymir-well.ts +130 -0
  31. package/CHANGELOG.md +23 -0
  32. package/assets/Ymir.md +4654 -0
  33. package/assets/healer.html +717 -0
  34. package/assets/icon-family/family-sheet.png +0 -0
  35. package/assets/icon-family/hlidskjalf.svg +1 -0
  36. package/assets/icon-family/sessrumnir.svg +1 -0
  37. package/assets/icon-family/smidja.svg +1 -0
  38. package/assets/icon-family/ymir.svg +1 -0
  39. package/assets/mimirswell.html +880 -0
  40. package/assets/mock/README.md +16 -0
  41. package/assets/mock/feeds.ts +175 -0
  42. package/assets/mock/mock.ts +408 -0
  43. package/assets/reference/docs/agent-control.md +122 -0
  44. package/assets/reference/docs/apodex/Appdex_as_Orchestrator_Planner_Reviewer_Assessment.md +176 -0
  45. package/assets/reference/docs/apodex/Final Report(1).md +198 -0
  46. package/assets/reference/docs/apodex/Final Report(2).md +54 -0
  47. package/assets/reference/docs/apodex/Final Report(3).md +40 -0
  48. package/assets/reference/docs/apodex/Final Report(4).md +234 -0
  49. package/assets/reference/docs/apodex/Final Report(5).md +13 -0
  50. package/assets/reference/docs/apodex/Final Report.md +82 -0
  51. package/assets/reference/docs/architecture.md +392 -0
  52. package/assets/reference/docs/arm-pretool-check.md +247 -0
  53. package/assets/reference/docs/calm-mode-feasibility.md +541 -0
  54. package/assets/reference/docs/calm.md +59 -0
  55. package/assets/reference/docs/captain-hold-lifecycle.md +96 -0
  56. package/assets/reference/docs/cd-guard.md +165 -0
  57. package/assets/reference/docs/cmux-backend.md +133 -0
  58. package/assets/reference/docs/codex-app-backend.md +57 -0
  59. package/assets/reference/docs/configuration.md +924 -0
  60. package/assets/reference/docs/documentation-audiences.json +468 -0
  61. package/assets/reference/docs/documentation-audiences.md +28 -0
  62. package/assets/reference/docs/examples/crew-dispatch.json +26 -0
  63. package/assets/reference/docs/examples/process-event-extension/file-signal.mjs +96 -0
  64. package/assets/reference/docs/examples/process-event-extension/firstmate-extension.json +15 -0
  65. package/assets/reference/docs/examples/watched-tools.json +24 -0
  66. package/assets/reference/docs/examples/wedge-alarm +22 -0
  67. package/assets/reference/docs/extension-bindings.md +237 -0
  68. package/assets/reference/docs/fm-test-isolation-proof.json +37 -0
  69. package/assets/reference/docs/fm-test-isolation-proof.md +149 -0
  70. package/assets/reference/docs/fm-test-portable-shards.md +118 -0
  71. package/assets/reference/docs/gitlab-merge-watch.md +275 -0
  72. package/assets/reference/docs/herdr-backend.md +346 -0
  73. package/assets/reference/docs/orca-backend.md +84 -0
  74. package/assets/reference/docs/pi-supervision-branch-poster.svg +125 -0
  75. package/assets/reference/docs/pi-supervision-branch.md +96 -0
  76. package/assets/reference/docs/plans/agentic-engineering-workflow.md +395 -0
  77. package/assets/reference/docs/plans/agentic-factory-implementation-plan.md +615 -0
  78. package/assets/reference/docs/plans/command-factory-enhancement-plan.md +420 -0
  79. package/assets/reference/docs/plans/phase-1-layer3-program-design.md +134 -0
  80. package/assets/reference/docs/plans/phase-2-vertical-slices.md +100 -0
  81. package/assets/reference/docs/plans/phase-3-measurable-goals.md +106 -0
  82. package/assets/reference/docs/plans/phase-4-context-budget.md +106 -0
  83. package/assets/reference/docs/plans/phase-5-pre-mortem-confidence.md +100 -0
  84. package/assets/reference/docs/plans/phase-6-incident-to-agent.md +109 -0
  85. package/assets/reference/docs/remote-secondmates.md +268 -0
  86. package/assets/reference/docs/scripts.md +146 -0
  87. package/assets/reference/docs/sessionstart-nudge.md +115 -0
  88. package/assets/reference/docs/subagent-guard.md +383 -0
  89. package/assets/reference/docs/supervision-protocols/claude.md +27 -0
  90. package/assets/reference/docs/supervision-protocols/codex.md +16 -0
  91. package/assets/reference/docs/supervision-protocols/cursor.md +31 -0
  92. package/assets/reference/docs/supervision-protocols/grok.md +39 -0
  93. package/assets/reference/docs/supervision-protocols/opencode.md +17 -0
  94. package/assets/reference/docs/supervision-protocols/pi.md +33 -0
  95. package/assets/reference/docs/supervision-protocols/unknown.md +13 -0
  96. package/assets/reference/docs/tmux-backend.md +115 -0
  97. package/assets/reference/docs/trace-context.md +117 -0
  98. package/assets/reference/docs/turnend-guard.md +170 -0
  99. package/assets/reference/docs/verification/dispatch-auth.md +204 -0
  100. package/assets/reference/docs/verification/muse.md +221 -0
  101. package/assets/reference/docs/verification/process-event-sources.md +208 -0
  102. package/assets/reference/docs/verification/public-followup.md +119 -0
  103. package/assets/reference/docs/verification/runtime-backends.md +1022 -0
  104. package/assets/reference/docs/verification/stow-memory.md +53 -0
  105. package/assets/reference/docs/verification/supervision.md +534 -0
  106. package/assets/reference/docs/verification/trace-context.md +31 -0
  107. package/assets/reference/docs/voice-relay.md +295 -0
  108. package/assets/reference/docs/watcher-continuity.md +119 -0
  109. package/assets/reference/docs/wedge-alarm.md +39 -0
  110. package/assets/reference/docs/zellij-backend.md +114 -0
  111. package/assets/reference/index.html +1172 -0
  112. package/assets/reference/skills/afk/SKILL.md +241 -0
  113. package/assets/reference/skills/ahoy/SKILL.md +56 -0
  114. package/assets/reference/skills/ask-user-authority/SKILL.md +56 -0
  115. package/assets/reference/skills/bearings/SKILL.md +161 -0
  116. package/assets/reference/skills/bearings/assets/board-template.html +731 -0
  117. package/assets/reference/skills/bootstrap-diagnostics/SKILL.md +68 -0
  118. package/assets/reference/skills/captain-hold-lifecycle/SKILL.md +54 -0
  119. package/assets/reference/skills/decision-hold-lifecycle/SKILL.md +15 -0
  120. package/assets/reference/skills/diagnostic-reasoning/SKILL.md +53 -0
  121. package/assets/reference/skills/firstmate-codexapp/SKILL.md +110 -0
  122. package/assets/reference/skills/firstmate-codexapp/agents/openai.yaml +4 -0
  123. package/assets/reference/skills/firstmate-coding-guidelines/SKILL.md +127 -0
  124. package/assets/reference/skills/firstmate-orca/SKILL.md +92 -0
  125. package/assets/reference/skills/fmx-respond/SKILL.md +283 -0
  126. package/assets/reference/skills/harness-adapters/SKILL.md +95 -0
  127. package/assets/reference/skills/harness-adapters/references/common/control-and-recovery.md +37 -0
  128. package/assets/reference/skills/harness-adapters/references/common/dispatch.md +32 -0
  129. package/assets/reference/skills/harness-adapters/references/common/model-and-effort.md +42 -0
  130. package/assets/reference/skills/harness-adapters/references/common/primary-hooks.md +40 -0
  131. package/assets/reference/skills/harness-adapters/references/harness/claude.md +55 -0
  132. package/assets/reference/skills/harness-adapters/references/harness/codex.md +43 -0
  133. package/assets/reference/skills/harness-adapters/references/harness/cursor.md +75 -0
  134. package/assets/reference/skills/harness-adapters/references/harness/grok.md +69 -0
  135. package/assets/reference/skills/harness-adapters/references/harness/kimi.md +51 -0
  136. package/assets/reference/skills/harness-adapters/references/harness/muse.md +70 -0
  137. package/assets/reference/skills/harness-adapters/references/harness/opencode.md +42 -0
  138. package/assets/reference/skills/harness-adapters/references/harness/pi.md +56 -0
  139. package/assets/reference/skills/process-event-sources/SKILL.md +137 -0
  140. package/assets/reference/skills/project-management/SKILL.md +92 -0
  141. package/assets/reference/skills/quota-array-dispatch/SKILL.md +131 -0
  142. package/assets/reference/skills/secondmate-provisioning/SKILL.md +254 -0
  143. package/assets/reference/skills/stow/SKILL.md +309 -0
  144. package/assets/reference/skills/stuck-crewmate-recovery/SKILL.md +54 -0
  145. package/assets/reference/skills/updatefirstmate/SKILL.md +64 -0
  146. package/assets/skills/README.md +5 -0
  147. package/assets/yggdrasil.html +649 -0
  148. package/assets/ymir-banner-01.png +0 -0
  149. package/assets/ymir-banner-02.png +0 -0
  150. package/assets/ymir-banner-03.png +0 -0
  151. package/assets/ymir-banner-04.png +0 -0
  152. package/assets/ymir-banner-05.png +0 -0
  153. package/assets/ymir-banner-06.png +0 -0
  154. package/assets/ymir-emblem-darksteel.svg +63 -0
  155. package/assets/ymir-emblem-forged.svg +55 -0
  156. package/assets/ymir-emblem-slate.svg +55 -0
  157. package/assets/ymir-mark-algiz-anvil.svg +9 -0
  158. package/assets/ymir-stave.svg +53 -0
  159. package/assets/ymir.html +563 -0
  160. package/bin/ymir-install.sh +6 -1
  161. package/data/learnings.md +33 -0
  162. package/data/local-models.md +34 -0
  163. package/data/operator.md +15 -0
  164. package/data/projects.md +28 -0
  165. package/data/realm.md +1 -0
  166. package/deploy/Containerfile +27 -0
  167. package/deploy/README.md +104 -0
  168. package/deploy/compose/compose.yaml +45 -0
  169. package/deploy/env.example +30 -0
  170. package/deploy/quadlet/ymir.container +57 -0
  171. package/package.json +10 -8
@@ -0,0 +1,468 @@
1
+ {
2
+ "version": 1,
3
+ "scope": {
4
+ "trackedPatterns": [
5
+ "*.md",
6
+ "*.mdx",
7
+ "*.rst",
8
+ "*.txt",
9
+ "docs/examples/*"
10
+ ],
11
+ "description": "Tracked Markdown-like prose, including symlinked aliases, plus copyable documentation examples. Script headers, executable configuration, generated JSON evidence, and legal text keep their existing code/config/legal owners."
12
+ },
13
+ "allowedAudiences": [
14
+ "public-product",
15
+ "operator-current",
16
+ "operator-example",
17
+ "maintainer-architecture",
18
+ "maintainer-verification",
19
+ "agent-runtime"
20
+ ],
21
+ "setupAudiences": [
22
+ "public-product",
23
+ "operator-current",
24
+ "operator-example"
25
+ ],
26
+ "readmeSetupTargets": [
27
+ "docs/configuration.md",
28
+ "docs/wedge-alarm.md",
29
+ ".agents/skills/herdr-panes/assets/tmux-backend.md",
30
+ ".agents/skills/herdr-panes/assets/herdr-backend.md",
31
+ "docs/zellij-backend.md",
32
+ "docs/orca-backend.md",
33
+ "docs/cmux-backend.md",
34
+ "docs/remote-secondmates.md"
35
+ ],
36
+ "requiredOwnerPointers": [
37
+ {
38
+ "source": ".agents/skills/firstmate-coding-guidelines/SKILL.md",
39
+ "target": "docs/documentation-audiences.md"
40
+ },
41
+ {
42
+ "source": ".no-mistakes.yaml",
43
+ "target": "docs/documentation-audiences.md"
44
+ },
45
+ {
46
+ "source": "CONTRIBUTING.md",
47
+ "target": "docs/documentation-audiences.md"
48
+ },
49
+ {
50
+ "source": "README.md",
51
+ "target": "docs/documentation-audiences.md"
52
+ },
53
+ {
54
+ "source": "docs/documentation-audiences.md",
55
+ "target": "docs/documentation-audiences.json"
56
+ },
57
+ {
58
+ "source": "docs/calm.md",
59
+ "target": "docs/calm-mode-feasibility.md"
60
+ },
61
+ {
62
+ "source": "docs/calm-mode-feasibility.md",
63
+ "target": "docs/calm.md"
64
+ },
65
+ {
66
+ "source": "docs/sessionstart-nudge.md",
67
+ "target": "docs/verification/supervision.md"
68
+ },
69
+ {
70
+ "source": "docs/turnend-guard.md",
71
+ "target": "docs/verification/supervision.md"
72
+ },
73
+ {
74
+ "source": "docs/watcher-continuity.md",
75
+ "target": "docs/verification/supervision.md"
76
+ },
77
+ {
78
+ "source": "docs/wedge-alarm.md",
79
+ "target": "docs/verification/supervision.md"
80
+ },
81
+ {
82
+ "source": ".agents/skills/herdr-panes/assets/tmux-backend.md",
83
+ "target": "docs/verification/runtime-backends.md"
84
+ },
85
+ {
86
+ "source": ".agents/skills/herdr-panes/assets/herdr-backend.md",
87
+ "target": "docs/verification/runtime-backends.md"
88
+ },
89
+ {
90
+ "source": "docs/zellij-backend.md",
91
+ "target": "docs/verification/runtime-backends.md"
92
+ },
93
+ {
94
+ "source": "docs/orca-backend.md",
95
+ "target": "docs/verification/runtime-backends.md"
96
+ },
97
+ {
98
+ "source": "docs/cmux-backend.md",
99
+ "target": "docs/verification/runtime-backends.md"
100
+ },
101
+ {
102
+ "source": "docs/codex-app-backend.md",
103
+ "target": "docs/verification/runtime-backends.md"
104
+ },
105
+ {
106
+ "source": "docs/trace-context.md",
107
+ "target": "docs/verification/trace-context.md"
108
+ }
109
+ ],
110
+ "surfaces": [
111
+ {
112
+ "path": ".agents/skills/afk/SKILL.md",
113
+ "audience": "agent-runtime"
114
+ },
115
+ {
116
+ "path": ".agents/skills/ahoy/SKILL.md",
117
+ "audience": "agent-runtime"
118
+ },
119
+ {
120
+ "path": ".agents/skills/ask-user-authority/SKILL.md",
121
+ "audience": "agent-runtime"
122
+ },
123
+ {
124
+ "path": ".agents/skills/bearings/SKILL.md",
125
+ "audience": "agent-runtime"
126
+ },
127
+ {
128
+ "path": ".agents/skills/bootstrap-diagnostics/SKILL.md",
129
+ "audience": "agent-runtime"
130
+ },
131
+ {
132
+ "path": ".agents/skills/captain-hold-lifecycle/SKILL.md",
133
+ "audience": "agent-runtime"
134
+ },
135
+ {
136
+ "path": ".agents/skills/decision-hold-lifecycle/SKILL.md",
137
+ "audience": "agent-runtime"
138
+ },
139
+ {
140
+ "path": ".agents/skills/diagnostic-reasoning/SKILL.md",
141
+ "audience": "agent-runtime"
142
+ },
143
+ {
144
+ "path": ".agents/skills/firstmate-codexapp/SKILL.md",
145
+ "audience": "agent-runtime"
146
+ },
147
+ {
148
+ "path": ".agents/skills/firstmate-coding-guidelines/SKILL.md",
149
+ "audience": "agent-runtime"
150
+ },
151
+ {
152
+ "path": ".agents/skills/firstmate-orca/SKILL.md",
153
+ "audience": "agent-runtime"
154
+ },
155
+ {
156
+ "path": ".agents/skills/fmx-respond/SKILL.md",
157
+ "audience": "agent-runtime"
158
+ },
159
+ {
160
+ "path": ".agents/skills/harness-adapters/SKILL.md",
161
+ "audience": "agent-runtime"
162
+ },
163
+ {
164
+ "path": ".agents/skills/harness-adapters/references/common/control-and-recovery.md",
165
+ "audience": "agent-runtime"
166
+ },
167
+ {
168
+ "path": ".agents/skills/harness-adapters/references/common/dispatch.md",
169
+ "audience": "agent-runtime"
170
+ },
171
+ {
172
+ "path": ".agents/skills/harness-adapters/references/common/model-and-effort.md",
173
+ "audience": "agent-runtime"
174
+ },
175
+ {
176
+ "path": ".agents/skills/harness-adapters/references/common/primary-hooks.md",
177
+ "audience": "agent-runtime"
178
+ },
179
+ {
180
+ "path": ".agents/skills/harness-adapters/references/harness/claude.md",
181
+ "audience": "agent-runtime"
182
+ },
183
+ {
184
+ "path": ".agents/skills/harness-adapters/references/harness/codex.md",
185
+ "audience": "agent-runtime"
186
+ },
187
+ {
188
+ "path": ".agents/skills/harness-adapters/references/harness/cursor.md",
189
+ "audience": "agent-runtime"
190
+ },
191
+ {
192
+ "path": ".agents/skills/harness-adapters/references/harness/grok.md",
193
+ "audience": "agent-runtime"
194
+ },
195
+ {
196
+ "path": ".agents/skills/harness-adapters/references/harness/kimi.md",
197
+ "audience": "agent-runtime"
198
+ },
199
+ {
200
+ "path": ".agents/skills/harness-adapters/references/harness/muse.md",
201
+ "audience": "agent-runtime"
202
+ },
203
+ {
204
+ "path": ".agents/skills/harness-adapters/references/harness/opencode.md",
205
+ "audience": "agent-runtime"
206
+ },
207
+ {
208
+ "path": ".agents/skills/harness-adapters/references/harness/pi.md",
209
+ "audience": "agent-runtime"
210
+ },
211
+ {
212
+ "path": ".agents/skills/process-event-sources/SKILL.md",
213
+ "audience": "agent-runtime"
214
+ },
215
+ {
216
+ "path": ".agents/skills/project-management/SKILL.md",
217
+ "audience": "agent-runtime"
218
+ },
219
+ {
220
+ "path": ".agents/skills/quota-array-dispatch/SKILL.md",
221
+ "audience": "agent-runtime"
222
+ },
223
+ {
224
+ "path": ".agents/skills/secondmate-provisioning/SKILL.md",
225
+ "audience": "agent-runtime"
226
+ },
227
+ {
228
+ "path": ".agents/skills/stow/SKILL.md",
229
+ "audience": "agent-runtime"
230
+ },
231
+ {
232
+ "path": ".agents/skills/stuck-crewmate-recovery/SKILL.md",
233
+ "audience": "agent-runtime"
234
+ },
235
+ {
236
+ "path": ".agents/skills/updatefirstmate/SKILL.md",
237
+ "audience": "agent-runtime"
238
+ },
239
+ {
240
+ "path": ".greptile/rules.md",
241
+ "audience": "maintainer-architecture"
242
+ },
243
+ {
244
+ "path": "AGENTS.md",
245
+ "audience": "agent-runtime"
246
+ },
247
+ {
248
+ "path": "CLAUDE.md",
249
+ "audience": "agent-runtime"
250
+ },
251
+ {
252
+ "path": "CONTRIBUTING.md",
253
+ "audience": "maintainer-architecture"
254
+ },
255
+ {
256
+ "path": "GROK_BOT.md",
257
+ "audience": "public-product"
258
+ },
259
+ {
260
+ "path": "README.md",
261
+ "audience": "public-product"
262
+ },
263
+ {
264
+ "path": "VISION.md",
265
+ "audience": "public-product"
266
+ },
267
+ {
268
+ "path": ".agents/skills/eindri-homes/assets/control-plane.md",
269
+ "audience": "maintainer-architecture"
270
+ },
271
+ {
272
+ "path": "docs/architecture.md",
273
+ "audience": "maintainer-architecture"
274
+ },
275
+ {
276
+ "path": "docs/arm-pretool-check.md",
277
+ "audience": "maintainer-architecture"
278
+ },
279
+ {
280
+ "path": "docs/calm-mode-feasibility.md",
281
+ "audience": "maintainer-verification"
282
+ },
283
+ {
284
+ "path": "docs/calm.md",
285
+ "audience": "operator-current"
286
+ },
287
+ {
288
+ "path": "docs/cd-guard.md",
289
+ "audience": "maintainer-architecture"
290
+ },
291
+ {
292
+ "path": "docs/cmux-backend.md",
293
+ "audience": "operator-current"
294
+ },
295
+ {
296
+ "path": "docs/codex-app-backend.md",
297
+ "audience": "operator-current"
298
+ },
299
+ {
300
+ "path": "docs/configuration.md",
301
+ "audience": "operator-current"
302
+ },
303
+ {
304
+ "path": "docs/captain-hold-lifecycle.md",
305
+ "audience": "maintainer-architecture"
306
+ },
307
+ {
308
+ "path": "docs/documentation-audiences.md",
309
+ "audience": "maintainer-architecture"
310
+ },
311
+ {
312
+ "path": "docs/extension-bindings.md",
313
+ "audience": "maintainer-architecture"
314
+ },
315
+ {
316
+ "path": "docs/examples/crew-dispatch.json",
317
+ "audience": "operator-example"
318
+ },
319
+ {
320
+ "path": "docs/examples/process-event-extension/file-signal.mjs",
321
+ "audience": "operator-example"
322
+ },
323
+ {
324
+ "path": "docs/examples/process-event-extension/firstmate-extension.json",
325
+ "audience": "operator-example"
326
+ },
327
+ {
328
+ "path": "docs/examples/watched-tools.json",
329
+ "audience": "operator-example"
330
+ },
331
+ {
332
+ "path": "docs/examples/wedge-alarm",
333
+ "audience": "operator-example"
334
+ },
335
+ {
336
+ "path": "docs/fm-test-isolation-proof.md",
337
+ "audience": "maintainer-verification"
338
+ },
339
+ {
340
+ "path": "docs/fm-test-portable-shards.md",
341
+ "audience": "maintainer-verification"
342
+ },
343
+ {
344
+ "path": "docs/gitlab-merge-watch.md",
345
+ "audience": "maintainer-verification"
346
+ },
347
+ {
348
+ "path": ".agents/skills/herdr-panes/assets/herdr-backend.md",
349
+ "audience": "operator-current"
350
+ },
351
+ {
352
+ "path": "docs/orca-backend.md",
353
+ "audience": "operator-current"
354
+ },
355
+ {
356
+ "path": "docs/pi-supervision-branch.md",
357
+ "audience": "maintainer-architecture"
358
+ },
359
+ {
360
+ "path": "docs/remote-secondmates.md",
361
+ "audience": "operator-current"
362
+ },
363
+ {
364
+ "path": "docs/scripts.md",
365
+ "audience": "operator-current"
366
+ },
367
+ {
368
+ "path": "docs/sessionstart-nudge.md",
369
+ "audience": "operator-current"
370
+ },
371
+ {
372
+ "path": "docs/subagent-guard.md",
373
+ "audience": "maintainer-architecture"
374
+ },
375
+ {
376
+ "path": "docs/supervision-protocols/claude.md",
377
+ "audience": "agent-runtime"
378
+ },
379
+ {
380
+ "path": "docs/supervision-protocols/codex.md",
381
+ "audience": "agent-runtime"
382
+ },
383
+ {
384
+ "path": "docs/supervision-protocols/cursor.md",
385
+ "audience": "agent-runtime"
386
+ },
387
+ {
388
+ "path": "docs/supervision-protocols/grok.md",
389
+ "audience": "agent-runtime"
390
+ },
391
+ {
392
+ "path": "docs/supervision-protocols/opencode.md",
393
+ "audience": "agent-runtime"
394
+ },
395
+ {
396
+ "path": "docs/supervision-protocols/pi.md",
397
+ "audience": "agent-runtime"
398
+ },
399
+ {
400
+ "path": "docs/supervision-protocols/unknown.md",
401
+ "audience": "agent-runtime"
402
+ },
403
+ {
404
+ "path": ".agents/skills/herdr-panes/assets/tmux-backend.md",
405
+ "audience": "operator-current"
406
+ },
407
+ {
408
+ "path": "docs/trace-context.md",
409
+ "audience": "maintainer-architecture"
410
+ },
411
+ {
412
+ "path": "docs/turnend-guard.md",
413
+ "audience": "operator-current"
414
+ },
415
+ {
416
+ "path": "docs/verification/dispatch-auth.md",
417
+ "audience": "maintainer-verification"
418
+ },
419
+ {
420
+ "path": "docs/verification/muse.md",
421
+ "audience": "maintainer-verification"
422
+ },
423
+ {
424
+ "path": "docs/verification/process-event-sources.md",
425
+ "audience": "maintainer-verification"
426
+ },
427
+ {
428
+ "path": "docs/verification/public-followup.md",
429
+ "audience": "maintainer-verification"
430
+ },
431
+ {
432
+ "path": "docs/verification/runtime-backends.md",
433
+ "audience": "maintainer-verification"
434
+ },
435
+ {
436
+ "path": "docs/verification/stow-memory.md",
437
+ "audience": "maintainer-verification"
438
+ },
439
+ {
440
+ "path": "docs/verification/supervision.md",
441
+ "audience": "maintainer-verification"
442
+ },
443
+ {
444
+ "path": "docs/verification/trace-context.md",
445
+ "audience": "maintainer-verification"
446
+ },
447
+ {
448
+ "path": "docs/voice-relay.md",
449
+ "audience": "operator-current"
450
+ },
451
+ {
452
+ "path": "docs/watcher-continuity.md",
453
+ "audience": "operator-current"
454
+ },
455
+ {
456
+ "path": "docs/wedge-alarm.md",
457
+ "audience": "operator-current"
458
+ },
459
+ {
460
+ "path": "docs/zellij-backend.md",
461
+ "audience": "operator-current"
462
+ },
463
+ {
464
+ "path": "skills/stow/SKILL.md",
465
+ "audience": "public-product"
466
+ }
467
+ ]
468
+ }
@@ -0,0 +1,28 @@
1
+ # Documentation audiences
2
+
3
+ [`documentation-audiences.json`](documentation-audiences.json) is the machine-consumed classification owner for every maintained prose surface.
4
+ `bin/fm-doc-audience-check.sh` validates exact inventory coverage, README setup routing, required owner pointers, and local link targets.
5
+ Audience metadata is centralized there rather than copied into front matter on every page.
6
+
7
+ The audience classes have one placement purpose each:
8
+
9
+ - `public-product` introduces the product or provides standalone public material.
10
+ - `operator-current` explains current behavior, setup, supported limits, stable invariants, concise rationale, and current verification entry points.
11
+ - `operator-example` is copyable current setup material.
12
+ - `maintainer-architecture` explains stable ownership, extension points, mechanism boundaries, and safety rationale for contributors.
13
+ - `maintainer-verification` records repeatable evidence for an active guarantee and may include dates, versions, exact commands, and exact output.
14
+ - `agent-runtime` is loaded or rendered as an operating contract for Firstmate agents rather than read as product documentation.
15
+
16
+ The knowledge-placement policy is owned by [`firstmate-coding-guidelines`](../.agents/skills/firstmate-coding-guidelines/SKILL.md).
17
+ Task-specific chronology, delivery transcripts, temporary paths, branches, failed hypotheses, and one-off process identifiers stay in private task reports or PR evidence by default.
18
+ Before removing that evidence from a tracked page, distill every unique current fact into its classified owner and retain a focused regression pointer.
19
+
20
+ Run the structural check directly with:
21
+
22
+ ```sh
23
+ bin/fm-doc-audience-check.sh
24
+ ```
25
+
26
+ The check intentionally does not lint dates, versions, commands, paths, incident language, or transcript-like prose.
27
+ Those forms are legitimate in maintainer verification and require semantic review rather than keyword heuristics.
28
+ For every changed prose surface, review its audience, authoritative owner, current relevance, evidence destination, and unique safety facts, then repeat that review over the complete branch diff after all fixes.
@@ -0,0 +1,26 @@
1
+ {
2
+ "rules": [
3
+ {
4
+ "when": "The task depends on fresh news, current events, live public facts, or recent market and product changes.",
5
+ "use": { "harness": "grok" },
6
+ "why": "Grok is the preferred dispatch when current web-connected context is central to the work."
7
+ },
8
+ {
9
+ "when": "The task is a trivial mechanical edit such as a rote rename, formatting sweep, targeted typo fix, or simple file gathering.",
10
+ "use": { "harness": "claude", "model": "haiku", "effort": "low" },
11
+ "why": "Use the cheapest fast profile when the task is narrow and low ambiguity."
12
+ },
13
+ {
14
+ "when": "The task is a big or ambiguous multi-file feature, a risky refactor, or work that requires holding many moving parts in mind.",
15
+ "use": [
16
+ { "harness": "claude", "model": "claude-sonnet-5", "effort": "high" },
17
+ { "harness": "codex", "model": "gpt-5.5", "effort": "high" }
18
+ ],
19
+ "why": "Use a strong coding profile for big, ambiguous work; resolve the alternatives through quota-array-dispatch."
20
+ }
21
+ ],
22
+ "default": [
23
+ { "harness": "codex", "model": "gpt-5.5", "effort": "medium" },
24
+ { "harness": "pi", "model": "anthropic/claude-sonnet-5", "effort": "medium" }
25
+ ]
26
+ }
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env node
2
+ // Minimal process-event-adapter/1 example.
3
+ //
4
+ // A source configuration reference has the form file:/absolute/path.
5
+ // source.poll waits until that regular file exists, then returns its bounded
6
+ // UTF-8 contents as external evidence.
7
+ // The result is terminal and classifies as file-signal.
8
+
9
+ import { readFile, stat } from "node:fs/promises";
10
+ import path from "node:path";
11
+
12
+ const MAX_INPUT_BYTES = 65536;
13
+ const MAX_RESULT_BYTES = 16384;
14
+
15
+ async function readRequest() {
16
+ const chunks = [];
17
+ let size = 0;
18
+ for await (const chunk of process.stdin) {
19
+ size += chunk.length;
20
+ if (size > MAX_INPUT_BYTES) throw new Error("request is oversized");
21
+ chunks.push(chunk);
22
+ }
23
+ return JSON.parse(Buffer.concat(chunks).toString("utf8"));
24
+ }
25
+
26
+ function reply(requestId, result) {
27
+ process.stdout.write(`${JSON.stringify({
28
+ schema: "firstmate.extension-response.v1",
29
+ request_id: requestId,
30
+ ok: true,
31
+ result,
32
+ error: null,
33
+ })}\n`);
34
+ }
35
+
36
+ function handshake(request) {
37
+ process.stdout.write(`${JSON.stringify({
38
+ schema: "firstmate.extension-handshake-response.v1",
39
+ request_id: request.request_id,
40
+ extension_id: "org.firstmate.example.file-signal",
41
+ extension_version: "1.0.0",
42
+ host_protocol: 1,
43
+ capability: "process-event-adapter",
44
+ capability_version: 1,
45
+ adapter_names: request.capability.adapter_names,
46
+ })}\n`);
47
+ }
48
+
49
+ async function waitForFile(reference) {
50
+ if (typeof reference !== "string" || !reference.startsWith("file:")) {
51
+ throw new Error("config_ref must have the form file:/absolute/path");
52
+ }
53
+ const file = reference.slice("file:".length);
54
+ if (!path.isAbsolute(file) || path.normalize(file) !== file) {
55
+ throw new Error("config_ref file path must be normalized and absolute");
56
+ }
57
+ const deadline = Date.now() + 55000;
58
+ while (Date.now() < deadline) {
59
+ try {
60
+ const info = await stat(file);
61
+ if (!info.isFile()) throw new Error("configured path is not a regular file");
62
+ const bytes = await readFile(file);
63
+ if (bytes.length === 0 || bytes.length > MAX_RESULT_BYTES) {
64
+ throw new Error(`configured result must contain 1-${MAX_RESULT_BYTES} bytes`);
65
+ }
66
+ const output = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
67
+ return output;
68
+ } catch (error) {
69
+ if (error && error.code === "ENOENT") {
70
+ await new Promise((resolve) => setTimeout(resolve, 100));
71
+ continue;
72
+ }
73
+ throw error;
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+
79
+ const verb = process.argv[2] || "";
80
+ const request = await readRequest();
81
+ if (verb === "handshake") {
82
+ handshake(request);
83
+ } else if (verb === "invoke" && request.operation === "source.poll") {
84
+ const output = await waitForFile(request.input.config_ref);
85
+ reply(request.request_id, output === null
86
+ ? { status: "no-result", output: "" }
87
+ : { status: "result", output });
88
+ } else if (verb === "invoke" && request.operation === "result.classify") {
89
+ reply(request.request_id, { classification: "file-signal" });
90
+ } else if (verb === "invoke" && request.operation === "result.terminal") {
91
+ reply(request.request_id, { value: true });
92
+ } else if (verb === "invoke" && request.operation === "result.silent") {
93
+ reply(request.request_id, { value: false });
94
+ } else {
95
+ throw new Error("unsupported extension verb or operation");
96
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schema": "firstmate.extension-manifest.v1",
3
+ "id": "org.firstmate.example.file-signal",
4
+ "version": "1.0.0",
5
+ "host_protocols": [1],
6
+ "entrypoint": "file-signal.mjs",
7
+ "capabilities": [
8
+ {
9
+ "name": "process-event-adapter",
10
+ "versions": [1],
11
+ "adapter_names": ["file-signal"]
12
+ }
13
+ ],
14
+ "required_consents": ["artifact-references"]
15
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "tools": [
3
+ {
4
+ "name": "firstmate",
5
+ "git": { "repo": "/absolute/path/to/firstmate", "remote": "origin" }
6
+ },
7
+ {
8
+ "name": "agents-on-the-go",
9
+ "git": { "repo": "/absolute/path/to/agents-on-the-go", "remote": "origin", "branch": "mainline" }
10
+ },
11
+ {
12
+ "name": "herdr",
13
+ "command": "herdr",
14
+ "version_args": ["--version"]
15
+ },
16
+ {
17
+ "name": "no-mistakes",
18
+ "command": "no-mistakes",
19
+ "version_args": ["--version"],
20
+ "announce_args": ["--help"],
21
+ "announce_pattern": "A new version of no-mistakes is available: [^ ]+ -> [^ ]+"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,22 @@
1
+ # config/wedge-alarm - active alert channels for the away-mode injection wedge
2
+ # alarm (bin/fm-supervise-daemon.sh's inject_wedge_alarm). Copy this into a
3
+ # local, gitignored config/wedge-alarm and edit. One channel directive per
4
+ # non-empty, non-comment line; every listed non-off channel fires, best-effort.
5
+ #
6
+ # Directives:
7
+ # off position-independent kill switch: disable every active
8
+ # alert (the durable marker and tmux status-line flash remain)
9
+ # auto | default platform default: macOS -> osascript; other platforms have
10
+ # no built-in OS channel (configure a command: line instead)
11
+ # osascript macOS Notification Center banner (backend-independent)
12
+ # herdr herdr UI notification (herdr notification show)
13
+ # command:<cmd> run <cmd> via `sh -c`; the alarm summary is passed as $1 and
14
+ # on stdin, so it can reach a phone/pager while you are away
15
+ #
16
+ # An ABSENT config/wedge-alarm behaves as `auto` (default-on on macOS): the
17
+ # alarm exists precisely so a wedged away-mode primary is never silent.
18
+ #
19
+ # Example: a macOS banner plus a push to a phone via ntfy.sh, so a wedge that
20
+ # happens overnight reaches you even away from the machine.
21
+ osascript
22
+ command: curl -fsS -H "Title: firstmate wedge alarm" -d "$1" https://ntfy.sh/replace-with-your-topic