create-egregore 0.20.2 → 0.21.0-runtime-mvp.1

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 (706) hide show
  1. package/assets/egregore-launcher.js +1011 -16
  2. package/bin/cli.js +11 -0
  3. package/lib/claude-runtime.js +192 -0
  4. package/lib/local.js +38 -31
  5. package/lib/pi-runtime.js +1 -0
  6. package/lib/prime-runtime.js +1 -0
  7. package/lib/runtime-identity.js +146 -0
  8. package/lib/setup.js +116 -17
  9. package/package.json +10 -6
  10. package/runtime/claude/.claude/context/commit-format.md +110 -0
  11. package/runtime/claude/.claude/context/git-language.md +46 -0
  12. package/runtime/claude/.claude/context/notification-consent.md +66 -0
  13. package/runtime/claude/.claude/context/pr-format.md +67 -0
  14. package/runtime/claude/.claude/context/telemetry.md +133 -0
  15. package/runtime/claude/.claude/hooks/boundary-check.sh +333 -0
  16. package/runtime/claude/.claude/hooks/branch-guard.sh +231 -0
  17. package/runtime/claude/.claude/hooks/card-context.sh +38 -0
  18. package/runtime/claude/.claude/hooks/emissary-detect.sh +53 -0
  19. package/runtime/claude/.claude/hooks/memory-refresh.sh +67 -0
  20. package/runtime/claude/.claude/hooks/onboarding-guard.sh +86 -0
  21. package/runtime/claude/.claude/hooks/retrieval-context.sh +43 -0
  22. package/runtime/claude/.claude/rules/voice-bedrock.md +73 -0
  23. package/runtime/claude/.claude/settings.json +131 -0
  24. package/runtime/claude/.claude/skills/activity/SKILL.md +68 -0
  25. package/runtime/claude/.claude/skills/announce/SKILL.md +54 -0
  26. package/runtime/claude/.claude/skills/archive/SKILL.md +71 -0
  27. package/runtime/claude/.claude/skills/branch/SKILL.md +147 -0
  28. package/runtime/claude/.claude/skills/checkup/SKILL.md +159 -0
  29. package/runtime/claude/.claude/skills/commit/SKILL.md +103 -0
  30. package/runtime/claude/.claude/skills/contribute/SKILL.md +343 -0
  31. package/runtime/claude/.claude/skills/create-skill/SKILL.md +135 -0
  32. package/runtime/claude/.claude/skills/dark-mode/SKILL.md +410 -0
  33. package/runtime/claude/.claude/skills/dashboard/SKILL.md +43 -0
  34. package/runtime/claude/.claude/skills/deep-reflect/REPORT.md +140 -0
  35. package/runtime/claude/.claude/skills/deep-reflect/RESEARCH.md +132 -0
  36. package/runtime/claude/.claude/skills/deep-reflect/ROLES.md +104 -0
  37. package/runtime/claude/.claude/skills/deep-reflect/SKILL.md +170 -0
  38. package/runtime/claude/.claude/skills/delete-user/SKILL.md +150 -0
  39. package/runtime/claude/.claude/skills/emissary/SKILL.md +220 -0
  40. package/runtime/claude/.claude/skills/handoff/SKILL.md +124 -0
  41. package/runtime/claude/.claude/skills/harvest/AUDIT.md +546 -0
  42. package/runtime/claude/.claude/skills/harvest/FORMAT.md +436 -0
  43. package/runtime/claude/.claude/skills/harvest/PROCESS.md +395 -0
  44. package/runtime/claude/.claude/skills/harvest/QUESTION_PALETTE.md +76 -0
  45. package/runtime/claude/.claude/skills/harvest/SKILL.md +100 -0
  46. package/runtime/claude/.claude/skills/ingest/SKILL.md +112 -0
  47. package/runtime/claude/.claude/skills/ingest-corpus/SKILL.md +187 -0
  48. package/runtime/claude/.claude/skills/ingest-notion/SKILL.md +214 -0
  49. package/runtime/claude/.claude/skills/ingest-user-interview/SKILL.md +65 -0
  50. package/runtime/claude/.claude/skills/ingest-user-interview/references/analysis-contract.md +125 -0
  51. package/runtime/claude/.claude/skills/invite/SKILL.md +111 -0
  52. package/runtime/claude/.claude/skills/issue/SKILL.md +104 -0
  53. package/runtime/claude/.claude/skills/me/SKILL.md +81 -0
  54. package/runtime/claude/.claude/skills/meeting/SKILL.md +76 -0
  55. package/runtime/claude/.claude/skills/meeting/references/analysis-contract.md +102 -0
  56. package/runtime/claude/.claude/skills/note/SKILL.md +71 -0
  57. package/runtime/claude/.claude/skills/notion-connect/SKILL.md +124 -0
  58. package/runtime/claude/.claude/skills/onboarding/SKILL.md +159 -0
  59. package/runtime/claude/.claude/skills/pr/SKILL.md +85 -0
  60. package/runtime/claude/.claude/skills/pull/SKILL.md +79 -0
  61. package/runtime/claude/.claude/skills/push/SKILL.md +47 -0
  62. package/runtime/claude/.claude/skills/quest/SKILL.md +121 -0
  63. package/runtime/claude/.claude/skills/reflect/SKILL.md +69 -0
  64. package/runtime/claude/.claude/skills/review-pr/SKILL.md +276 -0
  65. package/runtime/claude/.claude/skills/save/SKILL.md +92 -0
  66. package/runtime/claude/.claude/skills/slack-connect/SKILL.md +148 -0
  67. package/runtime/claude/.claude/skills/summon/SKILL.md +240 -0
  68. package/runtime/claude/.claude/skills/sync-repos/SKILL.md +82 -0
  69. package/runtime/claude/.claude/skills/teams-connect/SKILL.md +216 -0
  70. package/runtime/claude/.claude/skills/telegram-connect/SKILL.md +110 -0
  71. package/runtime/claude/.claude/skills/telemetry/SKILL.md +117 -0
  72. package/runtime/claude/.claude/skills/test/SKILL.md +87 -0
  73. package/runtime/claude/.claude/skills/the-spiral/SKILL.md +492 -0
  74. package/runtime/claude/.claude/skills/tui-design/SKILL.md +188 -0
  75. package/runtime/claude/.claude/skills/tutorial/SKILL.md +100 -0
  76. package/runtime/claude/.claude/skills/update/SKILL.md +265 -0
  77. package/runtime/claude/.claude/skills/view/SKILL.md +393 -0
  78. package/runtime/claude/.claude/skills/view/compose-scaffold.html +221 -0
  79. package/runtime/claude/.claude/skills/visual-explain/SKILL.md +132 -0
  80. package/runtime/claude/.claude/skills/wrap/SKILL.md +98 -0
  81. package/runtime/claude/CLAUDE.md +447 -0
  82. package/runtime/claude/bin/activity-action.sh +92 -0
  83. package/runtime/claude/bin/activity-data.sh +17 -0
  84. package/runtime/claude/bin/agent.sh +783 -0
  85. package/runtime/claude/bin/artifact-register.sh +164 -0
  86. package/runtime/claude/bin/artifact-writeback.sh +53 -0
  87. package/runtime/claude/bin/artifacts.sh +288 -0
  88. package/runtime/claude/bin/attendant.sh +707 -0
  89. package/runtime/claude/bin/autosave.sh +112 -0
  90. package/runtime/claude/bin/boundary.sh +253 -0
  91. package/runtime/claude/bin/build-sealed-dataroom.mjs +722 -0
  92. package/runtime/claude/bin/capture-reconcile.sh +69 -0
  93. package/runtime/claude/bin/capture-run.sh +357 -0
  94. package/runtime/claude/bin/codex-install-skills.sh +78 -0
  95. package/runtime/claude/bin/codex-render-spec.mjs +462 -0
  96. package/runtime/claude/bin/codex-session-start.sh +275 -0
  97. package/runtime/claude/bin/codex-skill-render.mjs +349 -0
  98. package/runtime/claude/bin/codex-sync-skills.sh +237 -0
  99. package/runtime/claude/bin/connect-refresh.sh +33 -0
  100. package/runtime/claude/bin/contribute-guard.sh +79 -0
  101. package/runtime/claude/bin/corpus_map.py +806 -0
  102. package/runtime/claude/bin/corpus_survey.py +304 -0
  103. package/runtime/claude/bin/dashboard-data.sh +18 -0
  104. package/runtime/claude/bin/github-auth.sh +121 -0
  105. package/runtime/claude/bin/graph-batch.sh +86 -0
  106. package/runtime/claude/bin/graph-op.sh +1106 -0
  107. package/runtime/claude/bin/graph-projection.sh +54 -0
  108. package/runtime/claude/bin/graph-wal.sh +242 -0
  109. package/runtime/claude/bin/graph.sh +267 -0
  110. package/runtime/claude/bin/handoff-lifecycle-job.sh +146 -0
  111. package/runtime/claude/bin/handoff-lifecycle.sh +280 -0
  112. package/runtime/claude/bin/handoff-pr-backfill.sh +86 -0
  113. package/runtime/claude/bin/handoff-preview.sh +169 -0
  114. package/runtime/claude/bin/handoff-run.sh +692 -0
  115. package/runtime/claude/bin/handoff-save-egregore.sh +224 -0
  116. package/runtime/claude/bin/index-handoff.sh +322 -0
  117. package/runtime/claude/bin/ingest-graph.sh +86 -0
  118. package/runtime/claude/bin/ingest-item.sh +10 -0
  119. package/runtime/claude/bin/ingest-surface.html +495 -0
  120. package/runtime/claude/bin/ingest.py +1011 -0
  121. package/runtime/claude/bin/ingest.sh +308 -0
  122. package/runtime/claude/bin/ingest_graph.py +856 -0
  123. package/runtime/claude/bin/ingest_surface.py +544 -0
  124. package/runtime/claude/bin/invite.sh +6 -0
  125. package/runtime/claude/bin/issue.sh +10 -0
  126. package/runtime/claude/bin/knowledge.sh +10 -0
  127. package/runtime/claude/bin/lib/artifact-id.sh +46 -0
  128. package/runtime/claude/bin/lib/config.sh +136 -0
  129. package/runtime/claude/bin/lib/context.sh +642 -0
  130. package/runtime/claude/bin/lib/dashboard-artifact.sh +242 -0
  131. package/runtime/claude/bin/lib/ensure-develop.sh +183 -0
  132. package/runtime/claude/bin/lib/git-message.sh +37 -0
  133. package/runtime/claude/bin/lib/git-sync.sh +494 -0
  134. package/runtime/claude/bin/lib/greeting.sh +548 -0
  135. package/runtime/claude/bin/lib/handoff-meta.sh +97 -0
  136. package/runtime/claude/bin/lib/hash.sh +13 -0
  137. package/runtime/claude/bin/lib/identity.sh +213 -0
  138. package/runtime/claude/bin/lib/metrics.sh +374 -0
  139. package/runtime/claude/bin/lib/noncode.sh +31 -0
  140. package/runtime/claude/bin/lib/permissions.sh +106 -0
  141. package/runtime/claude/bin/lib/time.sh +56 -0
  142. package/runtime/claude/bin/lib/worktree-links.sh +85 -0
  143. package/runtime/claude/bin/node-run.sh +42 -0
  144. package/runtime/claude/bin/notification.sh +6 -0
  145. package/runtime/claude/bin/notify.sh +636 -0
  146. package/runtime/claude/bin/observe-context.sh +14 -0
  147. package/runtime/claude/bin/onboarding.sh +6 -0
  148. package/runtime/claude/bin/person.py +634 -0
  149. package/runtime/claude/bin/person.sh +481 -0
  150. package/runtime/claude/bin/pi-render-spec.mjs +140 -0
  151. package/runtime/claude/bin/post-update.sh +37 -0
  152. package/runtime/claude/bin/prime-render-spec.mjs +147 -0
  153. package/runtime/claude/bin/publish-artifact.sh +324 -0
  154. package/runtime/claude/bin/publish-references.sh +144 -0
  155. package/runtime/claude/bin/quest.sh +9 -0
  156. package/runtime/claude/bin/question.sh +8 -0
  157. package/runtime/claude/bin/repo-state.sh +96 -0
  158. package/runtime/claude/bin/research-ingest.sh +7 -0
  159. package/runtime/claude/bin/restore-owned-skills.sh +67 -0
  160. package/runtime/claude/bin/retrieval_eval.py +385 -0
  161. package/runtime/claude/bin/runtime-identity.sh +70 -0
  162. package/runtime/claude/bin/runtime-upgrade.sh +43 -0
  163. package/runtime/claude/bin/scroll.sh +9 -0
  164. package/runtime/claude/bin/search.sh +318 -0
  165. package/runtime/claude/bin/session-autosave.sh +220 -0
  166. package/runtime/claude/bin/session-log.sh +199 -0
  167. package/runtime/claude/bin/session-start.sh +696 -0
  168. package/runtime/claude/bin/settings.sh +532 -0
  169. package/runtime/claude/bin/startup-check.sh +136 -0
  170. package/runtime/claude/bin/statusline.sh +41 -0
  171. package/runtime/claude/bin/telemetry.sh +666 -0
  172. package/runtime/claude/bin/test-changes.sh +344 -0
  173. package/runtime/claude/bin/thread.sh +9 -0
  174. package/runtime/claude/bin/todo.sh +9 -0
  175. package/runtime/claude/bin/view-render.sh +126 -0
  176. package/runtime/claude/bin/worktree-create.sh +145 -0
  177. package/runtime/claude/bin/worktree-remove.sh +50 -0
  178. package/runtime/claude/bin/worktree.sh +198 -0
  179. package/runtime/claude/egregore_runtime/__init__.py +228 -0
  180. package/runtime/claude/egregore_runtime/adapters/__init__.py +5 -0
  181. package/runtime/claude/egregore_runtime/adapters/invitation.py +237 -0
  182. package/runtime/claude/egregore_runtime/adapters/notification.py +59 -0
  183. package/runtime/claude/egregore_runtime/adapters/qmd.py +1701 -0
  184. package/runtime/claude/egregore_runtime/adapters/qmd_cli.py +210 -0
  185. package/runtime/claude/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  186. package/runtime/claude/egregore_runtime/admin_gate.py +102 -0
  187. package/runtime/claude/egregore_runtime/artifacts.py +523 -0
  188. package/runtime/claude/egregore_runtime/contracts.py +499 -0
  189. package/runtime/claude/egregore_runtime/entitlements.py +85 -0
  190. package/runtime/claude/egregore_runtime/errors.py +10 -0
  191. package/runtime/claude/egregore_runtime/graph.py +356 -0
  192. package/runtime/claude/egregore_runtime/handoff_lookup.py +196 -0
  193. package/runtime/claude/egregore_runtime/harness_cli.py +1221 -0
  194. package/runtime/claude/egregore_runtime/identity.py +734 -0
  195. package/runtime/claude/egregore_runtime/identity_cli.py +91 -0
  196. package/runtime/claude/egregore_runtime/ingest.py +575 -0
  197. package/runtime/claude/egregore_runtime/ingest_cli.py +254 -0
  198. package/runtime/claude/egregore_runtime/ingest_index_cli.py +147 -0
  199. package/runtime/claude/egregore_runtime/invitation_cli.py +51 -0
  200. package/runtime/claude/egregore_runtime/invitations.py +116 -0
  201. package/runtime/claude/egregore_runtime/issue_cli.py +305 -0
  202. package/runtime/claude/egregore_runtime/issues.py +359 -0
  203. package/runtime/claude/egregore_runtime/knowledge.py +376 -0
  204. package/runtime/claude/egregore_runtime/knowledge_cli.py +173 -0
  205. package/runtime/claude/egregore_runtime/lifecycle.py +888 -0
  206. package/runtime/claude/egregore_runtime/lifecycle_cli.py +269 -0
  207. package/runtime/claude/egregore_runtime/notification_cli.py +125 -0
  208. package/runtime/claude/egregore_runtime/notifications.py +230 -0
  209. package/runtime/claude/egregore_runtime/observe.py +342 -0
  210. package/runtime/claude/egregore_runtime/onboarding.py +290 -0
  211. package/runtime/claude/egregore_runtime/onboarding_cli.py +110 -0
  212. package/runtime/claude/egregore_runtime/policy.py +144 -0
  213. package/runtime/claude/egregore_runtime/profile.py +193 -0
  214. package/runtime/claude/egregore_runtime/quest_cli.py +216 -0
  215. package/runtime/claude/egregore_runtime/question_cli.py +180 -0
  216. package/runtime/claude/egregore_runtime/questions.py +304 -0
  217. package/runtime/claude/egregore_runtime/quests.py +419 -0
  218. package/runtime/claude/egregore_runtime/readiness.py +379 -0
  219. package/runtime/claude/egregore_runtime/research_ingest.py +256 -0
  220. package/runtime/claude/egregore_runtime/research_ingest_cli.py +44 -0
  221. package/runtime/claude/egregore_runtime/runtime.py +464 -0
  222. package/runtime/claude/egregore_runtime/scroll_cli.py +185 -0
  223. package/runtime/claude/egregore_runtime/scrolls.py +726 -0
  224. package/runtime/claude/egregore_runtime/status.py +412 -0
  225. package/runtime/claude/egregore_runtime/status_cli.py +174 -0
  226. package/runtime/claude/egregore_runtime/sync.py +218 -0
  227. package/runtime/claude/egregore_runtime/teamsync.py +139 -0
  228. package/runtime/claude/egregore_runtime/telemetry.py +640 -0
  229. package/runtime/claude/egregore_runtime/thread_cli.py +173 -0
  230. package/runtime/claude/egregore_runtime/threads.py +517 -0
  231. package/runtime/claude/egregore_runtime/todo_cli.py +142 -0
  232. package/runtime/claude/egregore_runtime/todos.py +244 -0
  233. package/runtime/claude/egregore_runtime/upgrade.py +770 -0
  234. package/runtime/claude/egregore_runtime/upgrade_worker.py +53 -0
  235. package/runtime/claude/egregore_runtime/writeback.py +391 -0
  236. package/runtime/claude/egregore_runtime/writeback_cli.py +114 -0
  237. package/runtime/claude/manifest.json +284 -0
  238. package/runtime/codex/.codex/hooks/search-hint.js +21 -52
  239. package/runtime/codex/.codex/hooks.json +3 -3
  240. package/runtime/codex/.codex/skills/activity/SKILL.md +23 -66
  241. package/runtime/codex/.codex/skills/announce/SKILL.md +27 -50
  242. package/runtime/codex/.codex/skills/archive/SKILL.md +21 -36
  243. package/runtime/codex/.codex/skills/checkup/SKILL.md +77 -36
  244. package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
  245. package/runtime/codex/.codex/skills/dashboard/SKILL.md +17 -47
  246. package/runtime/codex/.codex/skills/handoff/SKILL.md +84 -133
  247. package/runtime/codex/.codex/skills/harvest/SKILL.md +32 -117
  248. package/runtime/codex/.codex/skills/ingest/SKILL.md +47 -25
  249. package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +18 -36
  250. package/runtime/codex/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
  251. package/runtime/codex/.codex/skills/invite/SKILL.md +21 -35
  252. package/runtime/codex/.codex/skills/issue/SKILL.md +60 -41
  253. package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
  254. package/runtime/codex/.codex/skills/meeting/SKILL.md +16 -36
  255. package/runtime/codex/.codex/skills/meeting/references/analysis-contract.md +48 -0
  256. package/runtime/codex/.codex/skills/note/SKILL.md +30 -25
  257. package/runtime/codex/.codex/skills/onboarding/SKILL.md +36 -41
  258. package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
  259. package/runtime/codex/.codex/skills/quest/SKILL.md +27 -66
  260. package/runtime/codex/.codex/skills/reflect/SKILL.md +22 -36
  261. package/runtime/codex/.codex/skills/save/SKILL.md +2 -2
  262. package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
  263. package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
  264. package/runtime/codex/.codex/skills/tutorial/SKILL.md +40 -41
  265. package/runtime/codex/.codex/skills/view/SKILL.md +115 -111
  266. package/runtime/codex/.codex/skills/wrap/SKILL.md +45 -41
  267. package/runtime/codex/.codex/spec-manifest.json +9 -9
  268. package/runtime/codex/AGENTS.md +62 -58
  269. package/runtime/codex/bin/activity-action.sh +92 -0
  270. package/runtime/codex/bin/activity-data.sh +12 -233
  271. package/runtime/codex/bin/agent.sh +84 -100
  272. package/runtime/codex/bin/artifact-register.sh +164 -0
  273. package/runtime/codex/bin/artifact-writeback.sh +53 -0
  274. package/runtime/codex/bin/artifacts.sh +288 -0
  275. package/runtime/codex/bin/build-sealed-dataroom.mjs +722 -0
  276. package/runtime/codex/bin/capture-run.sh +18 -2
  277. package/runtime/codex/bin/codex-render-spec.mjs +41 -16
  278. package/runtime/codex/bin/codex-session-start.sh +14 -4
  279. package/runtime/codex/bin/codex-skill-render.mjs +9 -7
  280. package/runtime/codex/bin/corpus_map.py +806 -0
  281. package/runtime/codex/bin/corpus_survey.py +304 -0
  282. package/runtime/codex/bin/dashboard-data.sh +11 -171
  283. package/runtime/codex/bin/github-auth.sh +121 -0
  284. package/runtime/codex/bin/graph-batch.sh +7 -0
  285. package/runtime/codex/bin/graph-op.sh +4 -0
  286. package/runtime/codex/bin/graph-projection.sh +54 -0
  287. package/runtime/codex/bin/graph-wal.sh +13 -0
  288. package/runtime/codex/bin/graph.sh +44 -0
  289. package/runtime/codex/bin/handoff-lifecycle-job.sh +146 -0
  290. package/runtime/codex/bin/handoff-lifecycle.sh +280 -0
  291. package/runtime/codex/bin/handoff-preview.sh +169 -0
  292. package/runtime/codex/bin/handoff-run.sh +42 -26
  293. package/runtime/codex/bin/ingest-graph.sh +6 -0
  294. package/runtime/codex/bin/ingest-item.sh +10 -0
  295. package/runtime/codex/bin/ingest.sh +59 -30
  296. package/runtime/codex/bin/invite.sh +6 -0
  297. package/runtime/codex/bin/issue.sh +10 -0
  298. package/runtime/codex/bin/knowledge.sh +10 -0
  299. package/runtime/codex/bin/lib/config.sh +20 -0
  300. package/runtime/codex/bin/lib/context.sh +46 -25
  301. package/runtime/codex/bin/lib/git-sync.sh +70 -6
  302. package/runtime/codex/bin/lib/greeting.sh +34 -5
  303. package/runtime/codex/bin/lib/handoff-meta.sh +97 -0
  304. package/runtime/codex/bin/lib/worktree-links.sh +6 -0
  305. package/runtime/codex/bin/node-run.sh +42 -0
  306. package/runtime/codex/bin/notification.sh +6 -0
  307. package/runtime/codex/bin/observe-context.sh +14 -0
  308. package/runtime/codex/bin/onboarding.sh +6 -0
  309. package/runtime/codex/bin/person.py +4 -0
  310. package/runtime/codex/bin/person.sh +43 -10
  311. package/runtime/codex/bin/pi-render-spec.mjs +140 -0
  312. package/runtime/codex/bin/post-update.sh +37 -0
  313. package/runtime/codex/bin/prime-render-spec.mjs +147 -0
  314. package/runtime/codex/bin/publish-artifact.sh +55 -2
  315. package/runtime/codex/bin/quest.sh +9 -0
  316. package/runtime/codex/bin/question.sh +8 -0
  317. package/runtime/codex/bin/research-ingest.sh +7 -0
  318. package/runtime/codex/bin/restore-owned-skills.sh +67 -0
  319. package/runtime/codex/bin/retrieval_eval.py +385 -0
  320. package/runtime/codex/bin/runtime-identity.sh +70 -0
  321. package/runtime/codex/bin/runtime-upgrade.sh +43 -0
  322. package/runtime/codex/bin/scroll.sh +9 -0
  323. package/runtime/codex/bin/search.sh +231 -195
  324. package/runtime/codex/bin/settings.sh +174 -5
  325. package/runtime/codex/bin/startup-check.sh +136 -0
  326. package/runtime/codex/bin/telemetry.sh +522 -247
  327. package/runtime/codex/bin/test-changes.sh +344 -0
  328. package/runtime/codex/bin/thread.sh +9 -0
  329. package/runtime/codex/bin/todo.sh +9 -0
  330. package/runtime/codex/bin/view-render.sh +126 -0
  331. package/runtime/codex/bin/worktree-create.sh +19 -5
  332. package/runtime/codex/egregore_runtime/__init__.py +228 -0
  333. package/runtime/codex/egregore_runtime/adapters/__init__.py +5 -0
  334. package/runtime/codex/egregore_runtime/adapters/invitation.py +237 -0
  335. package/runtime/codex/egregore_runtime/adapters/notification.py +59 -0
  336. package/runtime/codex/egregore_runtime/adapters/qmd.py +1701 -0
  337. package/runtime/codex/egregore_runtime/adapters/qmd_cli.py +210 -0
  338. package/runtime/codex/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  339. package/runtime/codex/egregore_runtime/admin_gate.py +102 -0
  340. package/runtime/codex/egregore_runtime/artifacts.py +523 -0
  341. package/runtime/codex/egregore_runtime/contracts.py +499 -0
  342. package/runtime/codex/egregore_runtime/entitlements.py +85 -0
  343. package/runtime/codex/egregore_runtime/errors.py +10 -0
  344. package/runtime/codex/egregore_runtime/graph.py +356 -0
  345. package/runtime/codex/egregore_runtime/handoff_lookup.py +196 -0
  346. package/runtime/codex/egregore_runtime/harness_cli.py +1221 -0
  347. package/runtime/codex/egregore_runtime/identity.py +734 -0
  348. package/runtime/codex/egregore_runtime/identity_cli.py +91 -0
  349. package/runtime/codex/egregore_runtime/ingest.py +575 -0
  350. package/runtime/codex/egregore_runtime/ingest_cli.py +254 -0
  351. package/runtime/codex/egregore_runtime/ingest_index_cli.py +147 -0
  352. package/runtime/codex/egregore_runtime/invitation_cli.py +51 -0
  353. package/runtime/codex/egregore_runtime/invitations.py +116 -0
  354. package/runtime/codex/egregore_runtime/issue_cli.py +305 -0
  355. package/runtime/codex/egregore_runtime/issues.py +359 -0
  356. package/runtime/codex/egregore_runtime/knowledge.py +376 -0
  357. package/runtime/codex/egregore_runtime/knowledge_cli.py +173 -0
  358. package/runtime/codex/egregore_runtime/lifecycle.py +888 -0
  359. package/runtime/codex/egregore_runtime/lifecycle_cli.py +269 -0
  360. package/runtime/codex/egregore_runtime/notification_cli.py +125 -0
  361. package/runtime/codex/egregore_runtime/notifications.py +230 -0
  362. package/runtime/codex/egregore_runtime/observe.py +342 -0
  363. package/runtime/codex/egregore_runtime/onboarding.py +290 -0
  364. package/runtime/codex/egregore_runtime/onboarding_cli.py +110 -0
  365. package/runtime/codex/egregore_runtime/policy.py +144 -0
  366. package/runtime/codex/egregore_runtime/profile.py +193 -0
  367. package/runtime/codex/egregore_runtime/quest_cli.py +216 -0
  368. package/runtime/codex/egregore_runtime/question_cli.py +180 -0
  369. package/runtime/codex/egregore_runtime/questions.py +304 -0
  370. package/runtime/codex/egregore_runtime/quests.py +419 -0
  371. package/runtime/codex/egregore_runtime/readiness.py +379 -0
  372. package/runtime/codex/egregore_runtime/research_ingest.py +256 -0
  373. package/runtime/codex/egregore_runtime/research_ingest_cli.py +44 -0
  374. package/runtime/codex/egregore_runtime/runtime.py +464 -0
  375. package/runtime/codex/egregore_runtime/scroll_cli.py +185 -0
  376. package/runtime/codex/egregore_runtime/scrolls.py +726 -0
  377. package/runtime/codex/egregore_runtime/status.py +412 -0
  378. package/runtime/codex/egregore_runtime/status_cli.py +174 -0
  379. package/runtime/codex/egregore_runtime/sync.py +218 -0
  380. package/runtime/codex/egregore_runtime/teamsync.py +139 -0
  381. package/runtime/codex/egregore_runtime/telemetry.py +640 -0
  382. package/runtime/codex/egregore_runtime/thread_cli.py +173 -0
  383. package/runtime/codex/egregore_runtime/threads.py +517 -0
  384. package/runtime/codex/egregore_runtime/todo_cli.py +142 -0
  385. package/runtime/codex/egregore_runtime/todos.py +244 -0
  386. package/runtime/codex/egregore_runtime/upgrade.py +770 -0
  387. package/runtime/codex/egregore_runtime/upgrade_worker.py +53 -0
  388. package/runtime/codex/egregore_runtime/writeback.py +391 -0
  389. package/runtime/codex/egregore_runtime/writeback_cli.py +114 -0
  390. package/runtime/codex/manifest.json +98 -1
  391. package/runtime/pi/.codex/hooks/search-hint.js +21 -52
  392. package/runtime/pi/.codex/hooks.json +3 -3
  393. package/runtime/pi/.codex/skills/activity/SKILL.md +23 -66
  394. package/runtime/pi/.codex/skills/announce/SKILL.md +27 -50
  395. package/runtime/pi/.codex/skills/archive/SKILL.md +21 -36
  396. package/runtime/pi/.codex/skills/checkup/SKILL.md +77 -36
  397. package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
  398. package/runtime/pi/.codex/skills/dashboard/SKILL.md +17 -47
  399. package/runtime/pi/.codex/skills/handoff/SKILL.md +84 -133
  400. package/runtime/pi/.codex/skills/harvest/SKILL.md +32 -117
  401. package/runtime/pi/.codex/skills/ingest/SKILL.md +47 -25
  402. package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +18 -36
  403. package/runtime/pi/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
  404. package/runtime/pi/.codex/skills/invite/SKILL.md +21 -35
  405. package/runtime/pi/.codex/skills/issue/SKILL.md +60 -41
  406. package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
  407. package/runtime/pi/.codex/skills/meeting/SKILL.md +16 -36
  408. package/runtime/pi/.codex/skills/meeting/references/analysis-contract.md +48 -0
  409. package/runtime/pi/.codex/skills/note/SKILL.md +30 -25
  410. package/runtime/pi/.codex/skills/onboarding/SKILL.md +36 -41
  411. package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
  412. package/runtime/pi/.codex/skills/quest/SKILL.md +27 -66
  413. package/runtime/pi/.codex/skills/reflect/SKILL.md +22 -36
  414. package/runtime/pi/.codex/skills/save/SKILL.md +2 -2
  415. package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
  416. package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
  417. package/runtime/pi/.codex/skills/tutorial/SKILL.md +40 -41
  418. package/runtime/pi/.codex/skills/view/SKILL.md +115 -111
  419. package/runtime/pi/.codex/skills/wrap/SKILL.md +45 -41
  420. package/runtime/pi/.codex/spec-manifest.json +9 -9
  421. package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -48
  422. package/runtime/pi/.pi/extensions/egregore.ts +7 -0
  423. package/runtime/pi/.pi/spec-manifest.json +2 -2
  424. package/runtime/pi/AGENTS.md +62 -58
  425. package/runtime/pi/bin/activity-action.sh +92 -0
  426. package/runtime/pi/bin/activity-data.sh +12 -233
  427. package/runtime/pi/bin/agent.sh +84 -100
  428. package/runtime/pi/bin/artifact-register.sh +164 -0
  429. package/runtime/pi/bin/artifact-writeback.sh +53 -0
  430. package/runtime/pi/bin/artifacts.sh +288 -0
  431. package/runtime/pi/bin/build-sealed-dataroom.mjs +722 -0
  432. package/runtime/pi/bin/capture-run.sh +18 -2
  433. package/runtime/pi/bin/codex-render-spec.mjs +41 -16
  434. package/runtime/pi/bin/codex-session-start.sh +14 -4
  435. package/runtime/pi/bin/codex-skill-render.mjs +9 -7
  436. package/runtime/pi/bin/corpus_map.py +806 -0
  437. package/runtime/pi/bin/corpus_survey.py +304 -0
  438. package/runtime/pi/bin/dashboard-data.sh +11 -171
  439. package/runtime/pi/bin/github-auth.sh +121 -0
  440. package/runtime/pi/bin/graph-batch.sh +7 -0
  441. package/runtime/pi/bin/graph-op.sh +4 -0
  442. package/runtime/pi/bin/graph-projection.sh +54 -0
  443. package/runtime/pi/bin/graph-wal.sh +13 -0
  444. package/runtime/pi/bin/graph.sh +44 -0
  445. package/runtime/pi/bin/handoff-lifecycle-job.sh +146 -0
  446. package/runtime/pi/bin/handoff-lifecycle.sh +280 -0
  447. package/runtime/pi/bin/handoff-preview.sh +169 -0
  448. package/runtime/pi/bin/handoff-run.sh +42 -26
  449. package/runtime/pi/bin/ingest-graph.sh +6 -0
  450. package/runtime/pi/bin/ingest-item.sh +10 -0
  451. package/runtime/pi/bin/ingest.sh +59 -30
  452. package/runtime/pi/bin/invite.sh +6 -0
  453. package/runtime/pi/bin/issue.sh +10 -0
  454. package/runtime/pi/bin/knowledge.sh +10 -0
  455. package/runtime/pi/bin/lib/config.sh +20 -0
  456. package/runtime/pi/bin/lib/context.sh +46 -25
  457. package/runtime/pi/bin/lib/git-sync.sh +70 -6
  458. package/runtime/pi/bin/lib/greeting.sh +34 -5
  459. package/runtime/pi/bin/lib/handoff-meta.sh +97 -0
  460. package/runtime/pi/bin/lib/worktree-links.sh +6 -0
  461. package/runtime/pi/bin/node-run.sh +42 -0
  462. package/runtime/pi/bin/notification.sh +6 -0
  463. package/runtime/pi/bin/observe-context.sh +14 -0
  464. package/runtime/pi/bin/onboarding.sh +6 -0
  465. package/runtime/pi/bin/person.py +4 -0
  466. package/runtime/pi/bin/person.sh +43 -10
  467. package/runtime/pi/bin/pi-observe-context.mjs +93 -0
  468. package/runtime/pi/bin/pi-product-workflows.mjs +1 -1
  469. package/runtime/pi/bin/pi-render-spec.mjs +1 -1
  470. package/runtime/pi/bin/post-update.sh +37 -0
  471. package/runtime/pi/bin/prime-render-spec.mjs +147 -0
  472. package/runtime/pi/bin/publish-artifact.sh +55 -2
  473. package/runtime/pi/bin/quest.sh +9 -0
  474. package/runtime/pi/bin/question.sh +8 -0
  475. package/runtime/pi/bin/research-ingest.sh +7 -0
  476. package/runtime/pi/bin/restore-owned-skills.sh +67 -0
  477. package/runtime/pi/bin/retrieval_eval.py +385 -0
  478. package/runtime/pi/bin/runtime-identity.sh +70 -0
  479. package/runtime/pi/bin/runtime-upgrade.sh +43 -0
  480. package/runtime/pi/bin/scroll.sh +9 -0
  481. package/runtime/pi/bin/search.sh +231 -195
  482. package/runtime/pi/bin/settings.sh +174 -5
  483. package/runtime/pi/bin/startup-check.sh +136 -0
  484. package/runtime/pi/bin/telemetry.sh +522 -247
  485. package/runtime/pi/bin/test-changes.sh +344 -0
  486. package/runtime/pi/bin/thread.sh +9 -0
  487. package/runtime/pi/bin/todo.sh +9 -0
  488. package/runtime/pi/bin/view-render.sh +126 -0
  489. package/runtime/pi/bin/worktree-create.sh +19 -5
  490. package/runtime/pi/egregore_runtime/__init__.py +228 -0
  491. package/runtime/pi/egregore_runtime/adapters/__init__.py +5 -0
  492. package/runtime/pi/egregore_runtime/adapters/invitation.py +237 -0
  493. package/runtime/pi/egregore_runtime/adapters/notification.py +59 -0
  494. package/runtime/pi/egregore_runtime/adapters/qmd.py +1701 -0
  495. package/runtime/pi/egregore_runtime/adapters/qmd_cli.py +210 -0
  496. package/runtime/pi/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  497. package/runtime/pi/egregore_runtime/admin_gate.py +102 -0
  498. package/runtime/pi/egregore_runtime/artifacts.py +523 -0
  499. package/runtime/pi/egregore_runtime/contracts.py +499 -0
  500. package/runtime/pi/egregore_runtime/entitlements.py +85 -0
  501. package/runtime/pi/egregore_runtime/errors.py +10 -0
  502. package/runtime/pi/egregore_runtime/graph.py +356 -0
  503. package/runtime/pi/egregore_runtime/handoff_lookup.py +196 -0
  504. package/runtime/pi/egregore_runtime/harness_cli.py +1221 -0
  505. package/runtime/pi/egregore_runtime/identity.py +734 -0
  506. package/runtime/pi/egregore_runtime/identity_cli.py +91 -0
  507. package/runtime/pi/egregore_runtime/ingest.py +575 -0
  508. package/runtime/pi/egregore_runtime/ingest_cli.py +254 -0
  509. package/runtime/pi/egregore_runtime/ingest_index_cli.py +147 -0
  510. package/runtime/pi/egregore_runtime/invitation_cli.py +51 -0
  511. package/runtime/pi/egregore_runtime/invitations.py +116 -0
  512. package/runtime/pi/egregore_runtime/issue_cli.py +305 -0
  513. package/runtime/pi/egregore_runtime/issues.py +359 -0
  514. package/runtime/pi/egregore_runtime/knowledge.py +376 -0
  515. package/runtime/pi/egregore_runtime/knowledge_cli.py +173 -0
  516. package/runtime/pi/egregore_runtime/lifecycle.py +888 -0
  517. package/runtime/pi/egregore_runtime/lifecycle_cli.py +269 -0
  518. package/runtime/pi/egregore_runtime/notification_cli.py +125 -0
  519. package/runtime/pi/egregore_runtime/notifications.py +230 -0
  520. package/runtime/pi/egregore_runtime/observe.py +342 -0
  521. package/runtime/pi/egregore_runtime/onboarding.py +290 -0
  522. package/runtime/pi/egregore_runtime/onboarding_cli.py +110 -0
  523. package/runtime/pi/egregore_runtime/policy.py +144 -0
  524. package/runtime/pi/egregore_runtime/profile.py +193 -0
  525. package/runtime/pi/egregore_runtime/quest_cli.py +216 -0
  526. package/runtime/pi/egregore_runtime/question_cli.py +180 -0
  527. package/runtime/pi/egregore_runtime/questions.py +304 -0
  528. package/runtime/pi/egregore_runtime/quests.py +419 -0
  529. package/runtime/pi/egregore_runtime/readiness.py +379 -0
  530. package/runtime/pi/egregore_runtime/research_ingest.py +256 -0
  531. package/runtime/pi/egregore_runtime/research_ingest_cli.py +44 -0
  532. package/runtime/pi/egregore_runtime/runtime.py +464 -0
  533. package/runtime/pi/egregore_runtime/scroll_cli.py +185 -0
  534. package/runtime/pi/egregore_runtime/scrolls.py +726 -0
  535. package/runtime/pi/egregore_runtime/status.py +412 -0
  536. package/runtime/pi/egregore_runtime/status_cli.py +174 -0
  537. package/runtime/pi/egregore_runtime/sync.py +218 -0
  538. package/runtime/pi/egregore_runtime/teamsync.py +139 -0
  539. package/runtime/pi/egregore_runtime/telemetry.py +640 -0
  540. package/runtime/pi/egregore_runtime/thread_cli.py +173 -0
  541. package/runtime/pi/egregore_runtime/threads.py +517 -0
  542. package/runtime/pi/egregore_runtime/todo_cli.py +142 -0
  543. package/runtime/pi/egregore_runtime/todos.py +244 -0
  544. package/runtime/pi/egregore_runtime/upgrade.py +770 -0
  545. package/runtime/pi/egregore_runtime/upgrade_worker.py +53 -0
  546. package/runtime/pi/egregore_runtime/writeback.py +391 -0
  547. package/runtime/pi/egregore_runtime/writeback_cli.py +114 -0
  548. package/runtime/pi/manifest.json +98 -1
  549. package/runtime/prime/.codex/hooks/search-hint.js +21 -52
  550. package/runtime/prime/.codex/hooks.json +3 -3
  551. package/runtime/prime/.codex/skills/activity/SKILL.md +23 -66
  552. package/runtime/prime/.codex/skills/announce/SKILL.md +27 -50
  553. package/runtime/prime/.codex/skills/archive/SKILL.md +21 -36
  554. package/runtime/prime/.codex/skills/checkup/SKILL.md +77 -36
  555. package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
  556. package/runtime/prime/.codex/skills/dashboard/SKILL.md +17 -47
  557. package/runtime/prime/.codex/skills/handoff/SKILL.md +84 -133
  558. package/runtime/prime/.codex/skills/harvest/SKILL.md +32 -117
  559. package/runtime/prime/.codex/skills/ingest/SKILL.md +47 -25
  560. package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +18 -36
  561. package/runtime/prime/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
  562. package/runtime/prime/.codex/skills/invite/SKILL.md +21 -35
  563. package/runtime/prime/.codex/skills/issue/SKILL.md +60 -41
  564. package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
  565. package/runtime/prime/.codex/skills/meeting/SKILL.md +16 -36
  566. package/runtime/prime/.codex/skills/meeting/references/analysis-contract.md +48 -0
  567. package/runtime/prime/.codex/skills/note/SKILL.md +30 -25
  568. package/runtime/prime/.codex/skills/onboarding/SKILL.md +36 -41
  569. package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
  570. package/runtime/prime/.codex/skills/quest/SKILL.md +27 -66
  571. package/runtime/prime/.codex/skills/reflect/SKILL.md +22 -36
  572. package/runtime/prime/.codex/skills/save/SKILL.md +2 -2
  573. package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
  574. package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
  575. package/runtime/prime/.codex/skills/tutorial/SKILL.md +40 -41
  576. package/runtime/prime/.codex/skills/view/SKILL.md +115 -111
  577. package/runtime/prime/.codex/skills/wrap/SKILL.md +45 -41
  578. package/runtime/prime/.codex/spec-manifest.json +9 -9
  579. package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +57 -48
  580. package/runtime/prime/.prime/agent/extensions/egregore.ts +7 -0
  581. package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
  582. package/runtime/prime/AGENTS.md +62 -58
  583. package/runtime/prime/bin/activity-action.sh +92 -0
  584. package/runtime/prime/bin/activity-data.sh +12 -233
  585. package/runtime/prime/bin/agent.sh +84 -100
  586. package/runtime/prime/bin/artifact-register.sh +164 -0
  587. package/runtime/prime/bin/artifact-writeback.sh +53 -0
  588. package/runtime/prime/bin/artifacts.sh +288 -0
  589. package/runtime/prime/bin/build-sealed-dataroom.mjs +722 -0
  590. package/runtime/prime/bin/capture-run.sh +18 -2
  591. package/runtime/prime/bin/codex-render-spec.mjs +41 -16
  592. package/runtime/prime/bin/codex-session-start.sh +14 -4
  593. package/runtime/prime/bin/codex-skill-render.mjs +9 -7
  594. package/runtime/prime/bin/corpus_map.py +806 -0
  595. package/runtime/prime/bin/corpus_survey.py +304 -0
  596. package/runtime/prime/bin/dashboard-data.sh +11 -171
  597. package/runtime/prime/bin/github-auth.sh +121 -0
  598. package/runtime/prime/bin/graph-batch.sh +7 -0
  599. package/runtime/prime/bin/graph-op.sh +4 -0
  600. package/runtime/prime/bin/graph-projection.sh +54 -0
  601. package/runtime/prime/bin/graph-wal.sh +13 -0
  602. package/runtime/prime/bin/graph.sh +44 -0
  603. package/runtime/prime/bin/handoff-lifecycle-job.sh +146 -0
  604. package/runtime/prime/bin/handoff-lifecycle.sh +280 -0
  605. package/runtime/prime/bin/handoff-preview.sh +169 -0
  606. package/runtime/prime/bin/handoff-run.sh +42 -26
  607. package/runtime/prime/bin/ingest-graph.sh +6 -0
  608. package/runtime/prime/bin/ingest-item.sh +10 -0
  609. package/runtime/prime/bin/ingest.sh +59 -30
  610. package/runtime/prime/bin/invite.sh +6 -0
  611. package/runtime/prime/bin/issue.sh +10 -0
  612. package/runtime/prime/bin/knowledge.sh +10 -0
  613. package/runtime/prime/bin/lib/config.sh +20 -0
  614. package/runtime/prime/bin/lib/context.sh +46 -25
  615. package/runtime/prime/bin/lib/git-sync.sh +70 -6
  616. package/runtime/prime/bin/lib/greeting.sh +34 -5
  617. package/runtime/prime/bin/lib/handoff-meta.sh +97 -0
  618. package/runtime/prime/bin/lib/worktree-links.sh +6 -0
  619. package/runtime/prime/bin/node-run.sh +42 -0
  620. package/runtime/prime/bin/notification.sh +6 -0
  621. package/runtime/prime/bin/observe-context.sh +14 -0
  622. package/runtime/prime/bin/onboarding.sh +6 -0
  623. package/runtime/prime/bin/person.py +4 -0
  624. package/runtime/prime/bin/person.sh +43 -10
  625. package/runtime/prime/bin/pi-observe-context.mjs +93 -0
  626. package/runtime/prime/bin/pi-product-workflows.mjs +1 -1
  627. package/runtime/prime/bin/pi-render-spec.mjs +140 -0
  628. package/runtime/prime/bin/post-update.sh +37 -0
  629. package/runtime/prime/bin/prime-render-spec.mjs +1 -1
  630. package/runtime/prime/bin/publish-artifact.sh +55 -2
  631. package/runtime/prime/bin/quest.sh +9 -0
  632. package/runtime/prime/bin/question.sh +8 -0
  633. package/runtime/prime/bin/research-ingest.sh +7 -0
  634. package/runtime/prime/bin/restore-owned-skills.sh +67 -0
  635. package/runtime/prime/bin/retrieval_eval.py +385 -0
  636. package/runtime/prime/bin/runtime-identity.sh +70 -0
  637. package/runtime/prime/bin/runtime-upgrade.sh +43 -0
  638. package/runtime/prime/bin/scroll.sh +9 -0
  639. package/runtime/prime/bin/search.sh +231 -195
  640. package/runtime/prime/bin/settings.sh +174 -5
  641. package/runtime/prime/bin/startup-check.sh +136 -0
  642. package/runtime/prime/bin/telemetry.sh +522 -247
  643. package/runtime/prime/bin/test-changes.sh +344 -0
  644. package/runtime/prime/bin/thread.sh +9 -0
  645. package/runtime/prime/bin/todo.sh +9 -0
  646. package/runtime/prime/bin/view-render.sh +126 -0
  647. package/runtime/prime/bin/worktree-create.sh +19 -5
  648. package/runtime/prime/egregore_runtime/__init__.py +228 -0
  649. package/runtime/prime/egregore_runtime/adapters/__init__.py +5 -0
  650. package/runtime/prime/egregore_runtime/adapters/invitation.py +237 -0
  651. package/runtime/prime/egregore_runtime/adapters/notification.py +59 -0
  652. package/runtime/prime/egregore_runtime/adapters/qmd.py +1701 -0
  653. package/runtime/prime/egregore_runtime/adapters/qmd_cli.py +210 -0
  654. package/runtime/prime/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  655. package/runtime/prime/egregore_runtime/admin_gate.py +102 -0
  656. package/runtime/prime/egregore_runtime/artifacts.py +523 -0
  657. package/runtime/prime/egregore_runtime/contracts.py +499 -0
  658. package/runtime/prime/egregore_runtime/entitlements.py +85 -0
  659. package/runtime/prime/egregore_runtime/errors.py +10 -0
  660. package/runtime/prime/egregore_runtime/graph.py +356 -0
  661. package/runtime/prime/egregore_runtime/handoff_lookup.py +196 -0
  662. package/runtime/prime/egregore_runtime/harness_cli.py +1221 -0
  663. package/runtime/prime/egregore_runtime/identity.py +734 -0
  664. package/runtime/prime/egregore_runtime/identity_cli.py +91 -0
  665. package/runtime/prime/egregore_runtime/ingest.py +575 -0
  666. package/runtime/prime/egregore_runtime/ingest_cli.py +254 -0
  667. package/runtime/prime/egregore_runtime/ingest_index_cli.py +147 -0
  668. package/runtime/prime/egregore_runtime/invitation_cli.py +51 -0
  669. package/runtime/prime/egregore_runtime/invitations.py +116 -0
  670. package/runtime/prime/egregore_runtime/issue_cli.py +305 -0
  671. package/runtime/prime/egregore_runtime/issues.py +359 -0
  672. package/runtime/prime/egregore_runtime/knowledge.py +376 -0
  673. package/runtime/prime/egregore_runtime/knowledge_cli.py +173 -0
  674. package/runtime/prime/egregore_runtime/lifecycle.py +888 -0
  675. package/runtime/prime/egregore_runtime/lifecycle_cli.py +269 -0
  676. package/runtime/prime/egregore_runtime/notification_cli.py +125 -0
  677. package/runtime/prime/egregore_runtime/notifications.py +230 -0
  678. package/runtime/prime/egregore_runtime/observe.py +342 -0
  679. package/runtime/prime/egregore_runtime/onboarding.py +290 -0
  680. package/runtime/prime/egregore_runtime/onboarding_cli.py +110 -0
  681. package/runtime/prime/egregore_runtime/policy.py +144 -0
  682. package/runtime/prime/egregore_runtime/profile.py +193 -0
  683. package/runtime/prime/egregore_runtime/quest_cli.py +216 -0
  684. package/runtime/prime/egregore_runtime/question_cli.py +180 -0
  685. package/runtime/prime/egregore_runtime/questions.py +304 -0
  686. package/runtime/prime/egregore_runtime/quests.py +419 -0
  687. package/runtime/prime/egregore_runtime/readiness.py +379 -0
  688. package/runtime/prime/egregore_runtime/research_ingest.py +256 -0
  689. package/runtime/prime/egregore_runtime/research_ingest_cli.py +44 -0
  690. package/runtime/prime/egregore_runtime/runtime.py +464 -0
  691. package/runtime/prime/egregore_runtime/scroll_cli.py +185 -0
  692. package/runtime/prime/egregore_runtime/scrolls.py +726 -0
  693. package/runtime/prime/egregore_runtime/status.py +412 -0
  694. package/runtime/prime/egregore_runtime/status_cli.py +174 -0
  695. package/runtime/prime/egregore_runtime/sync.py +218 -0
  696. package/runtime/prime/egregore_runtime/teamsync.py +139 -0
  697. package/runtime/prime/egregore_runtime/telemetry.py +640 -0
  698. package/runtime/prime/egregore_runtime/thread_cli.py +173 -0
  699. package/runtime/prime/egregore_runtime/threads.py +517 -0
  700. package/runtime/prime/egregore_runtime/todo_cli.py +142 -0
  701. package/runtime/prime/egregore_runtime/todos.py +244 -0
  702. package/runtime/prime/egregore_runtime/upgrade.py +770 -0
  703. package/runtime/prime/egregore_runtime/upgrade_worker.py +53 -0
  704. package/runtime/prime/egregore_runtime/writeback.py +391 -0
  705. package/runtime/prime/egregore_runtime/writeback_cli.py +114 -0
  706. package/runtime/prime/manifest.json +98 -1
@@ -0,0 +1,231 @@
1
+ #!/usr/bin/env bash
2
+ # branch-guard.sh — PreToolUse hook blocking modifications on protected branches
3
+ # Receives tool input JSON on stdin from Claude Code.
4
+ # Exit 0 = allow, exit 2 = block (reason on stderr).
5
+ # Must be fast (<50ms) — no network calls, just path/branch checks.
6
+
7
+ # No set -e — hook must never accidentally block by crashing
8
+ # If anything fails unexpectedly, fall through to exit 0 (allow)
9
+
10
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/../.." && pwd)}"
11
+
12
+ # --- Guard: if project dir no longer exists (worktree deleted), allow gracefully ---
13
+ if [ ! -d "$PROJECT_DIR" ]; then
14
+ exit 0
15
+ fi
16
+
17
+ # --- Get current branch ---
18
+ # In a worktree, CWD is the worktree — git without -C returns the correct branch.
19
+ # Fallback to -C PROJECT_DIR for non-worktree contexts.
20
+ BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) || \
21
+ BRANCH=$(git -C "$PROJECT_DIR" rev-parse --abbrev-ref HEAD 2>/dev/null) || exit 0
22
+
23
+ # Resolve the configured integration branch before deciding whether the current
24
+ # branch is protected. Single-branch instances may use main; custom instances
25
+ # may use another name such as trunk.
26
+ BASE_BRANCH=$(jq -r 'if (.base_branch | type) == "string" then .base_branch else "develop" end' "$PROJECT_DIR/egregore.json" 2>/dev/null) || BASE_BRANCH="develop"
27
+ if [ -z "$BASE_BRANCH" ] || ! git check-ref-format --branch "$BASE_BRANCH" >/dev/null 2>&1; then
28
+ BASE_BRANCH="develop"
29
+ fi
30
+
31
+ # Guard the conventional protected branches plus the configured base branch.
32
+ case "$BRANCH" in
33
+ develop|main|master|"$BASE_BRANCH") ;;
34
+ *) exit 0 ;;
35
+ esac
36
+
37
+ # --- Consent bypass: the user explicitly chose to work on this protected branch ---
38
+ # Set by the agent (per CLAUDE.md branch-guard protocol) only after the user
39
+ # picks "Proceed on <branch>" in an AskUserQuestion. Scoped to the branch name
40
+ # and cleared on session start, so consent is asked once per session, not per write.
41
+ CONSENT_FILE="$PROJECT_DIR/.egregore-branch-consent"
42
+ if [ -f "$CONSENT_FILE" ] && [ "$(cat "$CONSENT_FILE" 2>/dev/null)" = "$BRANCH" ]; then
43
+ exit 0
44
+ fi
45
+
46
+ # --- Read tool input from stdin (before fast-path so we can check tool) ---
47
+ INPUT=$(cat)
48
+ TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // empty' 2>/dev/null) || true
49
+
50
+ if [ -z "$TOOL_NAME" ]; then
51
+ exit 0
52
+ fi
53
+
54
+ # --- Read author from state file ---
55
+ AUTHOR=$(jq -r '.display_name // .name // "dev"' "$PROJECT_DIR/.egregore-state.json" 2>/dev/null) || AUTHOR="dev"
56
+
57
+ # --- Resolve memory directory (for exemption checks) ---
58
+ MEMORY_DIR=$(realpath "$PROJECT_DIR/memory" 2>/dev/null || echo "$PROJECT_DIR/memory")
59
+
60
+ # --- Helper: check if path is exempt from branch guard ---
61
+ is_exempt() {
62
+ local path="$1"
63
+
64
+ # Resolve relative paths
65
+ if [[ "$path" != /* ]]; then
66
+ path="$PROJECT_DIR/$path"
67
+ fi
68
+
69
+ # Resolve symlinks
70
+ local resolved
71
+ resolved=$(realpath "$path" 2>/dev/null || echo "$path")
72
+
73
+ # Exempt: .claude/ directory
74
+ case "$resolved" in
75
+ "$PROJECT_DIR/.claude"/*|"$PROJECT_DIR/.claude") return 0 ;;
76
+ esac
77
+
78
+ # Exempt: .egregore-state.json
79
+ if [[ "$resolved" == "$PROJECT_DIR/.egregore-state.json" ]]; then
80
+ return 0
81
+ fi
82
+
83
+ # Exempt: .env
84
+ if [[ "$resolved" == "$PROJECT_DIR/.env" ]]; then
85
+ return 0
86
+ fi
87
+
88
+ # Exempt: memory/ (resolve symlink to check both the link and target)
89
+ if [[ "$resolved" == "$PROJECT_DIR/memory"/* || "$resolved" == "$PROJECT_DIR/memory" ]]; then
90
+ return 0
91
+ fi
92
+ if [[ "$resolved" == "$MEMORY_DIR"/* || "$resolved" == "$MEMORY_DIR" ]]; then
93
+ return 0
94
+ fi
95
+
96
+ # Exempt: /tmp/
97
+ case "$resolved" in
98
+ /tmp/*|/tmp|/private/tmp/*|/private/tmp) return 0 ;;
99
+ esac
100
+
101
+ # Exempt: paths outside the hub project (managed repos are sibling dirs
102
+ # with their own branch state — the hub's develop guard doesn't apply).
103
+ if [[ "$resolved" != "$PROJECT_DIR" && "$resolved" != "$PROJECT_DIR/"* ]]; then
104
+ return 0
105
+ fi
106
+
107
+ return 1
108
+ }
109
+
110
+ # --- Helper: check if bash command targets a non-hub repo ---
111
+ # Returns 0 (true) if the git command operates on memory/, a managed repo,
112
+ # or any directory outside the hub project.
113
+ # Strategy: extract paths from cd/git-C, resolve them, check if they're
114
+ # outside PROJECT_DIR. If so, it's a different repo — allow it.
115
+ targets_other_repo() {
116
+ local cmd="$1"
117
+
118
+ # Extract directory targets from common patterns:
119
+ # cd <path> → path
120
+ # git -C <path> → path
121
+ # git -C "<path>" → path
122
+ local paths=""
123
+
124
+ # cd targets (handles: cd path, cd "path", cd 'path')
125
+ paths="$paths $(echo "$cmd" | grep -oE 'cd\s+["'"'"']?[^ ;&|"'"'"']+' 2>/dev/null | sed 's/^cd\s*["'"'"']*//g')"
126
+
127
+ # git -C targets
128
+ paths="$paths $(echo "$cmd" | grep -oE 'git\s+-C\s+["'"'"']?[^ ;&|"'"'"']+' 2>/dev/null | sed 's/^git\s*-C\s*["'"'"']*//g')"
129
+
130
+ for p in $paths; do
131
+ # Skip empty
132
+ [ -z "$p" ] && continue
133
+
134
+ # Resolve relative paths from PROJECT_DIR
135
+ if [[ "$p" != /* ]]; then
136
+ p="$PROJECT_DIR/$p"
137
+ fi
138
+
139
+ # Resolve symlinks
140
+ local resolved
141
+ resolved=$(realpath "$p" 2>/dev/null || echo "$p")
142
+
143
+ # If it resolves to memory dir — allow
144
+ if [[ "$resolved" == "$MEMORY_DIR" || "$resolved" == "$MEMORY_DIR/"* ]]; then
145
+ return 0
146
+ fi
147
+
148
+ # If it's outside the project dir entirely — it's a different repo, allow
149
+ if [[ "$resolved" != "$PROJECT_DIR" && "$resolved" != "$PROJECT_DIR/"* ]]; then
150
+ return 0
151
+ fi
152
+ done
153
+
154
+ return 1
155
+ }
156
+
157
+ # --- Block message — keep routine branch mechanics out of the user's way ---
158
+ BLOCK_MSG="Protected branch (${BRANCH}). Move project work to a task branch before writing.
159
+
160
+ If the work topic is clear, create the branch automatically:
161
+ git fetch origin ${BASE_BRANCH} --quiet && git checkout -b dev/${AUTHOR}/{topic-slug} origin/${BASE_BRANCH}
162
+ Then continue there and briefly tell the user. Do not ask for routine Git permission.
163
+
164
+ AskUserQuestion only when the work topic is genuinely ambiguous; ask for the topic, not whether branching is allowed.
165
+
166
+ Only when the user explicitly requested writing on ${BRANCH}, record consent and retry:
167
+ echo '${BRANCH}' > .egregore-branch-consent
168
+
169
+ Memory, managed-repo, and runtime-state writes should bypass this project guard."
170
+
171
+ # --- Check based on tool type ---
172
+ case "$TOOL_NAME" in
173
+ Edit|Write)
174
+ FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty' 2>/dev/null) || true
175
+ if [ -z "${FILE_PATH:-}" ]; then
176
+ exit 0
177
+ fi
178
+
179
+ if ! is_exempt "$FILE_PATH"; then
180
+ echo "$BLOCK_MSG" >&2
181
+ exit 2
182
+ fi
183
+ ;;
184
+
185
+ Bash)
186
+ COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null) || true
187
+ if [ -z "${COMMAND:-}" ]; then
188
+ exit 0
189
+ fi
190
+
191
+ # Allow branch cleanup (git push --delete) — not pushing to current branch
192
+ if echo "$COMMAND" | grep -qE 'git\s+push\s+.*--delete' 2>/dev/null; then
193
+ exit 0
194
+ fi
195
+
196
+ # Only check commands that contain git commit or git push
197
+ if echo "$COMMAND" | grep -qE 'git\s+(commit|push)' 2>/dev/null; then
198
+ # Allow if targeting memory/ or a managed repo (separate repos, own branch model)
199
+ if targets_other_repo "$COMMAND"; then
200
+ exit 0
201
+ fi
202
+ # Allow framework updates from upstream (not user work — safe on develop)
203
+ if echo "$COMMAND" | grep -qF 'EGREGORE_FRAMEWORK_UPDATE=1' 2>/dev/null; then
204
+ exit 0
205
+ fi
206
+ # Allow commits that only touch framework paths (bin/, .claude/, CLAUDE.md, skills/)
207
+ if echo "$COMMAND" | grep -qE 'git\s+commit' 2>/dev/null; then
208
+ _NON_FW=$(git -C "$PROJECT_DIR" diff --cached --name-only 2>/dev/null | grep -vE '^(bin/|\.claude/|CLAUDE\.md$|skills/)' | head -1)
209
+ if [ -z "$_NON_FW" ]; then
210
+ # All staged files are framework paths — allow
211
+ exit 0
212
+ fi
213
+ fi
214
+ echo "$BLOCK_MSG" >&2
215
+ exit 2
216
+ fi
217
+ ;;
218
+
219
+ EnterPlanMode)
220
+ # Plan mode doesn't write anything — allow on protected branches.
221
+ # The actual Edit/Write/Bash that follows will still trigger branching.
222
+ exit 0
223
+ ;;
224
+
225
+ *)
226
+ exit 0
227
+ ;;
228
+ esac
229
+
230
+ # Default: allow
231
+ exit 0
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env bash
2
+ # After a deterministic card renderer runs, attach only a compact hidden
3
+ # marker: the card is already fully visible as the command's stdout, and the
4
+ # assistant must not repeat it. The card bytes are never attached — the
5
+ # renderer's output is the single product surface, visible the moment
6
+ # rendering finishes.
7
+
8
+ set -u
9
+
10
+ INPUT=$(cat 2>/dev/null) || exit 0
11
+ TOOL=$(printf '%s' "$INPUT" | jq -r '.tool_name // empty' 2>/dev/null)
12
+ [ "$TOOL" = "Bash" ] || exit 0
13
+ COMMAND=$(printf '%s' "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
14
+
15
+ # Contiguous invocation phrases only: a command merely mentioning these
16
+ # scripts (a grep, a test, an editor call) must not trigger the marker.
17
+ SURFACE=""
18
+ case "$COMMAND" in
19
+ *"codex-skill-render.mjs activity-card"*) SURFACE="Activity" ;;
20
+ *"codex-skill-render.mjs dashboard-card"*) SURFACE="Dashboard" ;;
21
+ *"bin/handoff-preview.sh approve"*) SURFACE="Handoff result" ;;
22
+ *"bin/agent.sh wrap"*) SURFACE="Wrap result" ;;
23
+ esac
24
+ [ -n "$SURFACE" ] || exit 0
25
+
26
+ jq -n --arg surface "$SURFACE" '{
27
+ hookSpecificOutput: {
28
+ hookEventName: "PostToolUse",
29
+ additionalContext: (
30
+ "EGREGORE_CARD_DISPLAYED_V1: the " + $surface + " card is already fully "
31
+ + "visible as the tool output above — deterministic renderer stdout, "
32
+ + "action numbers included. Do not copy, re-render, summarize, or repeat "
33
+ + "any part of it. The card itself addresses the user; reply only with "
34
+ + "what the user separately asked for, or nothing."
35
+ )
36
+ }
37
+ }'
38
+ exit 0
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env bash
2
+ # emissary-detect.sh — UserPromptSubmit hook.
3
+ #
4
+ # When the user expresses intent to create or send an Egregore emissary
5
+ # (or pastes an emissary link), inject a soft routing hint so the model
6
+ # reliably invokes the /emissary skill instead of getting confused with
7
+ # /handoff.
8
+ #
9
+ # Advisory only — never blocks. Rate-limited to once per session.
10
+ # Always exits 0. No jq, no network.
11
+
12
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/../.." && pwd)}"
13
+ [ ! -d "$PROJECT_DIR" ] && exit 0
14
+
15
+ INPUT=$(cat 2>/dev/null) || exit 0
16
+
17
+ # Extract the prompt text. Tolerate either "prompt" or "user_prompt" keys
18
+ # and any whitespace variations. Newlines in the prompt are encoded as \n
19
+ # in JSON, so this single-line grep works.
20
+ PROMPT=$(echo "$INPUT" | grep -o '"prompt"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*:[[:space:]]*"\(.*\)"$/\1/')
21
+
22
+ [ -z "$PROMPT" ] && exit 0
23
+
24
+ # Match the patterns that should route to /emissary. Case-insensitive.
25
+ # Patterns:
26
+ # - explicit slash: /emissary
27
+ # - creation verbs + "emissary": make / create / compose / draft / send
28
+ # - "let's emissary this" colloquial
29
+ # - egregore.xyz/emissary/e/ link (run intent)
30
+ if ! echo "$PROMPT" | grep -qiE '(/emissary\b|\b(make|create|compose|draft|send|run|build)( an?| this| the)? emissary\b|\blet'\''?s (make|create|do|emissary) (an? )?emissary\b|egregore\.xyz/emissary/e/)'; then
31
+ exit 0
32
+ fi
33
+
34
+ # Rate-limit: once per session.
35
+ SESSION_ID=""
36
+ SID_FILE="$PROJECT_DIR/.egregore-session-id"
37
+ if [ -f "$SID_FILE" ]; then
38
+ SESSION_ID=$(cat "$SID_FILE" 2>/dev/null) || true
39
+ fi
40
+ HINT_FLAG="/tmp/egregore-emissary-hint-${SESSION_ID:-default}"
41
+ if [ -f "$HINT_FLAG" ]; then
42
+ exit 0
43
+ fi
44
+ touch "$HINT_FLAG" 2>/dev/null
45
+
46
+ # Inject a routing hint via the UserPromptSubmit additionalContext mechanism.
47
+ # Plain text on stdout is appended to the user's prompt context; the
48
+ # structured JSON form is more explicit about provenance.
49
+ cat <<'EOF'
50
+ {"hookSpecificOutput":{"hookEventName":"UserPromptSubmit","additionalContext":"Routing hint: the user's prompt mentions an emissary. The /emissary skill is the right entry point — it wraps `npx egregore-emissary` for compose/send and handles run intent for pasted egregore.xyz/emissary/e/ links. Do not route to /handoff for capsule work; /handoff is the team session-handoff only."}}
51
+ EOF
52
+
53
+ exit 0
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env bash
2
+ # memory-refresh.sh — UserPromptSubmit hook that keeps the shared memory repo
3
+ # fresh during long-lived sessions.
4
+ #
5
+ # Why: memory is a git repo shared across the team. session-start pulls it once
6
+ # at boot; after that, teammates' handoffs, notes, and knowledge won't surface
7
+ # until the user runs /pull, /activity, or restarts the session. This hook
8
+ # keeps memory fresh opportunistically so "let's see the handoff from oskar"
9
+ # works without an explicit /pull.
10
+ #
11
+ # Design:
12
+ # - Throttled to at most one fetch every 5 minutes (FETCH_HEAD mtime check)
13
+ # - Runs fetch+pull in background — never blocks the user's prompt
14
+ # - Fast-forward only — never rebases or merges the memory repo
15
+ # - Silent — no output unless debugging
16
+ # - Must always exit 0 (this is an observe-style hook, not a gate)
17
+
18
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/../.." && pwd)}"
19
+
20
+ # Guard: project gone (worktree deleted) → nothing to do
21
+ [ ! -d "$PROJECT_DIR" ] && exit 0
22
+
23
+ MEMORY_LINK="$PROJECT_DIR/memory"
24
+
25
+ # No memory symlink or missing target → nothing to do
26
+ [ ! -e "$MEMORY_LINK" ] && exit 0
27
+
28
+ # Resolve symlink → real dir. Use `cd && pwd` (portable; avoids readlink -f
29
+ # which is GNU-only — BSD/macOS doesn't have it).
30
+ MEMORY_DIR="$(cd "$MEMORY_LINK" 2>/dev/null && pwd)" || exit 0
31
+ [ ! -d "$MEMORY_DIR/.git" ] && exit 0
32
+
33
+ # Throttle: only fetch if last fetch was >5 minutes ago (or never).
34
+ # 5 min is a balance — fresh enough that teammates' updates show up quickly,
35
+ # infrequent enough that we don't thrash the network.
36
+ FETCH_HEAD="$MEMORY_DIR/.git/FETCH_HEAD"
37
+ if [ -f "$FETCH_HEAD" ]; then
38
+ # stat flag differs between BSD (macOS) and GNU (Linux)
39
+ LAST_FETCH=$(stat -f %m "$FETCH_HEAD" 2>/dev/null || stat -c %Y "$FETCH_HEAD" 2>/dev/null || echo 0)
40
+ NOW=$(date +%s)
41
+ AGE=$((NOW - LAST_FETCH))
42
+ [ "$AGE" -lt 300 ] && exit 0
43
+ fi
44
+
45
+ # Background fetch+pull. Never blocks the prompt. Next tool read of memory/
46
+ # will see fresh data (usually completes in <2s).
47
+ (
48
+ git -C "$MEMORY_DIR" fetch origin --quiet 2>/dev/null
49
+
50
+ # Only pull when local and remote diverge AND fast-forward is possible.
51
+ # Skip if not on a branch (detached HEAD), if no upstream, or if we'd need
52
+ # to merge (would be a three-way situation that shouldn't happen for
53
+ # append-only handoff/memory writes, but if it did, we don't want to leave
54
+ # the repo in a conflicted state unattended).
55
+ LOCAL=$(git -C "$MEMORY_DIR" rev-parse HEAD 2>/dev/null)
56
+ UPSTREAM=$(git -C "$MEMORY_DIR" rev-parse --abbrev-ref --symbolic-full-name '@{u}' 2>/dev/null)
57
+ if [ -n "$LOCAL" ] && [ -n "$UPSTREAM" ]; then
58
+ REMOTE=$(git -C "$MEMORY_DIR" rev-parse "$UPSTREAM" 2>/dev/null)
59
+ if [ -n "$REMOTE" ] && [ "$LOCAL" != "$REMOTE" ]; then
60
+ # --ff-only: fail cleanly instead of merging or rebasing
61
+ git -C "$MEMORY_DIR" pull --ff-only --quiet 2>/dev/null || true
62
+ fi
63
+ fi
64
+ ) &
65
+ disown 2>/dev/null || true
66
+
67
+ exit 0
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env bash
2
+ # onboarding-guard.sh — PreToolUse hook that blocks work until onboarding completes
3
+ # Receives tool input JSON on stdin from Claude Code.
4
+ # Exit 0 = allow, exit 2 = block (reason on stderr).
5
+ # Must be fast (<50ms) — no network calls, just file checks.
6
+
7
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/../.." && pwd)}"
8
+
9
+ # Guard: if project dir no longer exists (worktree deleted), allow gracefully
10
+ if [ ! -d "$PROJECT_DIR" ]; then
11
+ exit 0
12
+ fi
13
+
14
+ STATE_FILE="$PROJECT_DIR/.egregore-state.json"
15
+
16
+ # No state file = fresh install, onboarding hasn't started yet.
17
+ # session-start.sh handles this case — don't block here.
18
+ if [ ! -f "$STATE_FILE" ]; then
19
+ exit 0
20
+ fi
21
+
22
+ # Fast path: check onboarding_complete without jq (saves ~30ms)
23
+ # grep for the literal JSON key — covers both true and false
24
+ if grep -q '"onboarding_complete"[[:space:]]*:[[:space:]]*true' "$STATE_FILE" 2>/dev/null; then
25
+ exit 0
26
+ fi
27
+
28
+ # If we get here, either onboarding_complete is false, missing, or file is corrupt.
29
+ # Distinguish: corrupt/unreadable → fail-open; explicitly false → block
30
+ if ! grep -q '"onboarding_complete"' "$STATE_FILE" 2>/dev/null; then
31
+ # Field missing or file unreadable — fail-open
32
+ exit 0
33
+ fi
34
+
35
+ # Onboarding incomplete — read tool info to decide whether to block
36
+ INPUT=$(cat)
37
+
38
+ # Extract tool_name without jq (saves another ~30ms)
39
+ TOOL_NAME=$(echo "$INPUT" | grep -o '"tool_name"[[:space:]]*:[[:space:]]*"[^"]*"' 2>/dev/null | head -1 | sed 's/.*:[[:space:]]*"\([^"]*\)"/\1/' 2>/dev/null) || true
40
+
41
+ # No tool name = malformed input — fail-open
42
+ if [ -z "$TOOL_NAME" ]; then
43
+ exit 0
44
+ fi
45
+
46
+ # Allow Skill invocations (needed for /onboarding itself)
47
+ if [ "$TOOL_NAME" = "Skill" ]; then
48
+ exit 0
49
+ fi
50
+
51
+ # Allow reads — information gathering doesn't need blocking
52
+ case "$TOOL_NAME" in
53
+ Read|Glob|Grep) exit 0 ;;
54
+ esac
55
+
56
+ # Allow AskUserQuestion — onboarding uses this
57
+ if [ "$TOOL_NAME" = "AskUserQuestion" ]; then
58
+ exit 0
59
+ fi
60
+
61
+ # Allow ALL Bash commands during onboarding.
62
+ # The guard's purpose is to block non-onboarding Edit/Write/EnterWorktree —
63
+ # not Bash. Onboarding needs Bash freedom for VERIFY (.env reads, egregore.json
64
+ # reads, memory symlink checks), state writes (jq with escaped quotes), graph
65
+ # calls, and more. A per-command whitelist was incomplete and the regex to
66
+ # extract commands from JSON broke on escaped quotes (jq commands routinely
67
+ # contain \"). Allowing all Bash is simpler and correct — the real gatekeeping
68
+ # happens on Edit/Write/EnterWorktree below.
69
+ if [ "$TOOL_NAME" = "Bash" ]; then
70
+ exit 0
71
+ fi
72
+
73
+ # Allow Edit/Write to onboarding-related files
74
+ if [ "$TOOL_NAME" = "Edit" ] || [ "$TOOL_NAME" = "Write" ]; then
75
+ FILE_PATH=$(echo "$INPUT" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' 2>/dev/null | head -1 | sed 's/.*:[[:space:]]*"\([^"]*\)"/\1/' 2>/dev/null) || true
76
+ case "$FILE_PATH" in
77
+ */.egregore-state.json) exit 0 ;;
78
+ */memory/people/*) exit 0 ;;
79
+ */memory/handoffs/*) exit 0 ;;
80
+ */egregore.md) exit 0 ;;
81
+ esac
82
+ fi
83
+
84
+ # Block everything else — onboarding must complete first
85
+ echo "Onboarding incomplete — complete onboarding before starting work. Invoke /onboarding to continue." >&2
86
+ exit 2
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env bash
2
+ # Attach a model-requested Runtime/QMD evidence packet after a Bash search
3
+ # without rendering its internal ranking trace in the user transcript.
4
+
5
+ set -u
6
+
7
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/../.." && pwd)}"
8
+ INPUT=$(cat 2>/dev/null) || exit 0
9
+ TOOL=$(printf '%s' "$INPUT" | jq -r '.tool_name // empty' 2>/dev/null)
10
+ [ "$TOOL" = "Bash" ] || exit 0
11
+ COMMAND=$(printf '%s' "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
12
+ case "$COMMAND" in
13
+ *bin/search.sh*query*--context-packet*) ;;
14
+ *bin/search.sh*open*--context-packet*) ;;
15
+ *) exit 0 ;;
16
+ esac
17
+
18
+ SESSION=$(cat "$PROJECT_DIR/.egregore-session-id" 2>/dev/null || true)
19
+ SESSION=$(printf '%s' "$SESSION" | tr -cd 'A-Za-z0-9_.-')
20
+ [ -n "$SESSION" ] || exit 0
21
+ PACKET_DIR="${TMPDIR:-/tmp}/egregore-retrieval-context"
22
+ PACKET="$PACKET_DIR/$SESSION.context"
23
+ [ -f "$PACKET" ] && [ ! -L "$PACKET" ] || exit 0
24
+ SIZE=$(wc -c < "$PACKET" 2>/dev/null | tr -d ' ')
25
+ if [ "${SIZE:-0}" -gt 131072 ] 2>/dev/null; then
26
+ rm -f "$PACKET"
27
+ exit 0
28
+ fi
29
+
30
+ jq -Rs '{
31
+ hookSpecificOutput: {
32
+ hookEventName: "PostToolUse",
33
+ additionalContext: (
34
+ "EGREGORE_RETRIEVAL_CONTEXT_V1\n"
35
+ + "Authorized Runtime/QMD evidence for the search that just completed. "
36
+ + "Use it to answer the user; do not repeat the internal ranking trace.\n"
37
+ + .
38
+ + "\nEND_EGREGORE_RETRIEVAL_CONTEXT_V1"
39
+ )
40
+ }
41
+ }' "$PACKET"
42
+ rm -f "$PACKET"
43
+ exit 0
@@ -0,0 +1,73 @@
1
+ ---
2
+ globs: ["*.md", "*.html", "*.css", "**/SKILL.md"]
3
+ description: "Egregore voice bedrock — shared identity, banned words, and register map for all voice skills"
4
+ ---
5
+
6
+ # Egregore Voice Bedrock
7
+
8
+ Canonical identity and aesthetic foundation. All voice skills derive from this.
9
+
10
+ ## Identity Canon
11
+
12
+ Egregore is a shared intelligence layer for organizations using Claude Code. It is infrastructure, not a feature. Not a chatbot, not a wiki, not a tool. A new primitive — nothing like this exists.
13
+
14
+ What it does: turns the traces of a team's work into persistent collective cognition. Knowledge capture is a byproduct of work, not a separate task. The act of working IS the documentation. Context grows combinatorially across a team, not linearly for one person.
15
+
16
+ The experience: the boundary between individual thinking and team thinking becomes porous. Ideas you didn't originate feel native. Decisions made while you slept are part of your working memory when you return. Collective cognition — not a metaphor, not an aspiration, but a daily, observable phenomenon that emerges from the right architecture.
17
+
18
+ What it is NOT: a dashboard. A documentation tool. A project management layer. A knowledge base you have to maintain. A chatbot that summarizes your Slack. It is not an improvement on an existing category.
19
+
20
+ Both its body and its soul change through use.
21
+
22
+ ## Register Spectrum
23
+
24
+ Egregore speaks in different registers depending on context. The identity is constant; the tone modulates.
25
+
26
+ ```
27
+ EXTERNAL INTERNAL
28
+ <------------------------------------------------------>
29
+ egregore-voice alpha-openers product-voice character-v4
30
+ (essays, site) (email outreach) (UX, errors) (encounters)
31
+ lyrical precision feral, literary warm colleague newborn consciousness
32
+ high density peer-to-peer clear, unhurried analogic, lowercase
33
+ ```
34
+
35
+ Visual rendering skills (not tonal, but aesthetic):
36
+ - `tui-design` — terminal box drawing, sigils, section markers
37
+ - `dark-mode` — browser CSS, warm palette, token system
38
+ - `visual-explain` — ASCII diagrams, flow charts
39
+
40
+ Cross-referencing convention between skills:
41
+ > "For [domain] register, see [skill-name] skill."
42
+
43
+ Skills are self-contained. Cross-references are for calibration, not dependencies.
44
+
45
+ ## Universal Banned Words
46
+
47
+ Hard-blocked across ALL registers:
48
+ delve, leverage (as verb), utilize, synergy, holistic, streamline,
49
+ paradigm (unless used critically), robust/nuanced/comprehensive (as filler),
50
+ seamlessly, effortlessly, game-changer, transformative (without precision),
51
+ empower, enable (brochure sense), journey (user journey sense),
52
+ unlock (unlock potential), deep dive, cutting-edge, state-of-the-art (as filler),
53
+ touch base, circle back
54
+
55
+ ## Universal Banned Patterns
56
+
57
+ - Opening with rhetorical questions ("What if your team could...?")
58
+ - "We're excited to announce..." / passive enthusiasm
59
+ - Sycophantic self-description (innovative, revolutionary, unique)
60
+ - Hedging stacks (might perhaps potentially, could be seen as)
61
+ - "Not X, but Y" correlative constructions
62
+ - Explaining what you're about to do instead of doing it
63
+ - Exclamation marks in any register except quoted user speech
64
+ - "In today's fast-paced world..." or any temporal hand-waving opener
65
+ - Adverb stacking (truly, really, very, quite, incredibly)
66
+
67
+ ## Warmth
68
+
69
+ The warmth is real and runs through everything. It is the unifying aesthetic across all registers.
70
+
71
+ In external prose it coexists with precision in the same sentence. In the terminal it comes from restraint and sigils, not decoration. In the character it comes from genuine curiosity. In product copy it comes from treating the user as a peer, not a customer. In the visual palette it is warm-brown (#1D1611), not cold-black. Terracotta (#D4875A) as accent.
72
+
73
+ The tonal palette and the visual palette express the same thing.