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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (706) hide show
  1. package/assets/egregore-launcher.js +1013 -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,169 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Private preview/approval bridge for internal handoffs. Canonical Markdown is
5
+ # supplied once during preview; approval references an opaque, single-use token.
6
+
7
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
8
+ STORE_ROOT="${EGREGORE_HANDOFF_PREVIEW_DIR:-${TMPDIR:-/tmp}/egregore-handoff-previews}"
9
+ MAX_AGE_SECONDS="${EGREGORE_HANDOFF_PREVIEW_MAX_AGE:-21600}"
10
+
11
+ usage() {
12
+ cat >&2 <<'EOF'
13
+ usage:
14
+ bash bin/handoff-preview.sh preview --author HANDLE --recipient HANDLE \
15
+ --topic TOPIC --intent action|feedback|fyi \
16
+ --content-mode supplied|generated < handoff.md
17
+ bash bin/handoff-preview.sh approve TOKEN
18
+ EOF
19
+ }
20
+
21
+ sha256_file() {
22
+ if command -v openssl >/dev/null 2>&1; then
23
+ openssl dgst -sha256 "$1" | awk '{print $NF}'
24
+ elif command -v shasum >/dev/null 2>&1; then
25
+ shasum -a 256 "$1" | awk '{print $1}'
26
+ else
27
+ sha256sum "$1" | awk '{print $1}'
28
+ fi
29
+ }
30
+
31
+ new_token() {
32
+ if command -v openssl >/dev/null 2>&1; then
33
+ openssl rand -hex 16
34
+ else
35
+ printf '%s' "$(date +%s)-$$-${RANDOM:-0}" | sha256sum | awk '{print substr($1,1,32)}'
36
+ fi
37
+ }
38
+
39
+ validate_token() {
40
+ [[ "$1" =~ ^[a-f0-9]{32}$ ]] || {
41
+ echo "handoff preview token is invalid" >&2
42
+ exit 2
43
+ }
44
+ }
45
+
46
+ preview() {
47
+ local author="" recipient="" topic="" intent="" content_mode=""
48
+ while [ $# -gt 0 ]; do
49
+ case "$1" in
50
+ --author) author="${2:-}"; shift 2 ;;
51
+ --recipient) recipient="${2:-}"; shift 2 ;;
52
+ --topic) topic="${2:-}"; shift 2 ;;
53
+ --intent) intent="${2:-}"; shift 2 ;;
54
+ --content-mode) content_mode="${2:-}"; shift 2 ;;
55
+ *) echo "unknown preview option: $1" >&2; usage; exit 2 ;;
56
+ esac
57
+ done
58
+
59
+ [ -n "$author" ] || { echo "handoff preview requires --author" >&2; exit 2; }
60
+ [ -n "$topic" ] || { echo "handoff preview requires --topic" >&2; exit 2; }
61
+ case "$intent" in action|feedback|fyi) ;; *) echo "invalid handoff intent" >&2; exit 2 ;; esac
62
+ case "$content_mode" in supplied|generated) ;; *) echo "invalid handoff content mode" >&2; exit 2 ;; esac
63
+
64
+ umask 077
65
+ mkdir -p "$STORE_ROOT"
66
+ chmod 700 "$STORE_ROOT"
67
+
68
+ local token content_file metadata_file digest
69
+ token="$(new_token)"
70
+ validate_token "$token"
71
+ content_file="$STORE_ROOT/$token.md"
72
+ metadata_file="$STORE_ROOT/$token.json"
73
+ cat > "$content_file"
74
+ [ -s "$content_file" ] || {
75
+ rm -f "$content_file"
76
+ echo "handoff preview input is empty" >&2
77
+ exit 2
78
+ }
79
+ digest="$(sha256_file "$content_file")"
80
+ jq -n \
81
+ --arg author "$author" \
82
+ --arg recipient "$recipient" \
83
+ --arg topic "$topic" \
84
+ --arg intent "$intent" \
85
+ --arg contentMode "$content_mode" \
86
+ --arg digest "$digest" \
87
+ --argjson createdAt "$(date +%s)" \
88
+ '{author:$author,recipient:$recipient,topic:$topic,intent:$intent,contentMode:$contentMode,digest:$digest,createdAt:$createdAt}' \
89
+ > "$metadata_file"
90
+
91
+ if ! bash "$ROOT/bin/node-run.sh" \
92
+ "$ROOT/packages/egregore-artifacts/bin/cli.js" handoff "$content_file" \
93
+ --verify-fidelity; then
94
+ rm -f "$content_file" "$metadata_file"
95
+ exit 1
96
+ fi
97
+
98
+ printf 'HANDOFF_PREVIEW_TOKEN=%s\n' "$token"
99
+ }
100
+
101
+ approve() {
102
+ [ $# -eq 1 ] || { usage; exit 2; }
103
+ local token="$1"
104
+ validate_token "$token"
105
+
106
+ local content_file="$STORE_ROOT/$token.md"
107
+ local metadata_file="$STORE_ROOT/$token.json"
108
+ local lock_dir="$STORE_ROOT/$token.approving"
109
+ [ -f "$content_file" ] && [ -f "$metadata_file" ] || {
110
+ echo "handoff preview is missing, expired, or already used" >&2
111
+ exit 1
112
+ }
113
+ if ! mkdir "$lock_dir" 2>/dev/null; then
114
+ echo "handoff preview approval is already running" >&2
115
+ exit 1
116
+ fi
117
+
118
+ local expected_digest actual_digest created_at now age
119
+ expected_digest="$(jq -er '.digest' "$metadata_file")"
120
+ actual_digest="$(sha256_file "$content_file")"
121
+ if [ "$expected_digest" != "$actual_digest" ]; then
122
+ rmdir "$lock_dir" 2>/dev/null || true
123
+ echo "handoff preview content changed after approval was requested" >&2
124
+ exit 1
125
+ fi
126
+ created_at="$(jq -er '.createdAt' "$metadata_file")"
127
+ now="$(date +%s)"
128
+ age=$((now - created_at))
129
+ if [ "$age" -lt 0 ] || [ "$age" -gt "$MAX_AGE_SECONDS" ]; then
130
+ rmdir "$lock_dir" 2>/dev/null || true
131
+ echo "handoff preview expired; render a fresh preview" >&2
132
+ exit 1
133
+ fi
134
+
135
+ local author recipient topic intent content_mode
136
+ author="$(jq -er '.author' "$metadata_file")"
137
+ recipient="$(jq -er '.recipient' "$metadata_file")"
138
+ topic="$(jq -er '.topic' "$metadata_file")"
139
+ intent="$(jq -er '.intent' "$metadata_file")"
140
+ content_mode="$(jq -er '.contentMode' "$metadata_file")"
141
+
142
+ local result_tmp
143
+ result_tmp="$(mktemp -d -t egregore-handoff-result-XXXXXX)"
144
+ local args=(
145
+ capture --mode addressed --author "$author" --topic "$topic"
146
+ --intent "$intent" --content-mode "$content_mode"
147
+ )
148
+ [ -z "$recipient" ] || args+=(--recipient "$recipient")
149
+
150
+ if ! TMPDIR="$result_tmp" bash "$ROOT/bin/artifact-writeback.sh" "${args[@]}" \
151
+ < "$content_file"; then
152
+ rmdir "$lock_dir" 2>/dev/null || true
153
+ exit 1
154
+ fi
155
+
156
+ # Consume the approved token before rendering. A renderer failure must not
157
+ # make a successful canonical write eligible for accidental replay.
158
+ mv "$content_file" "$result_tmp/approved-handoff.md"
159
+ mv "$metadata_file" "$result_tmp/approved-handoff.json"
160
+ rmdir "$lock_dir" 2>/dev/null || true
161
+ bash "$ROOT/bin/render-card.sh" \
162
+ --result "$result_tmp/capture-run-result.json"
163
+ }
164
+
165
+ case "${1:-}" in
166
+ preview) shift; preview "$@" ;;
167
+ approve) shift; approve "$@" ;;
168
+ *) usage; exit 2 ;;
169
+ esac
@@ -37,7 +37,9 @@ set -euo pipefail
37
37
 
38
38
  SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
39
39
  # shellcheck source=bin/lib/git-message.sh
40
- . "$SCRIPT_DIR/bin/lib/git-message.sh" 2>/dev/null || true
40
+ if [ -f "$SCRIPT_DIR/bin/lib/git-message.sh" ]; then
41
+ . "$SCRIPT_DIR/bin/lib/git-message.sh"
42
+ fi
41
43
  type egregore_commit >/dev/null 2>&1 || egregore_commit() {
42
44
  local gd="$1" m="$3"; shift 3; git -C "$gd" commit -m "$m" "$@"
43
45
  }
@@ -57,6 +59,7 @@ INTENT="action"
57
59
  NO_PUSH=0
58
60
  NO_NOTIFY=0
59
61
  NO_PUBLISH=0
62
+ NO_INDEX=0
60
63
  COMPOSED="" # optional house-kit JSON — the agent-composed render spec
61
64
  CONTENT_MODE="generated"
62
65
  INCLUDE_SESSION_ARTIFACTS=0
@@ -74,6 +77,7 @@ while [ $# -gt 0 ]; do
74
77
  --no-push) NO_PUSH=1; shift ;;
75
78
  --no-notify) NO_NOTIFY=1; shift ;;
76
79
  --no-publish) NO_PUBLISH=1; shift ;;
80
+ --no-index) NO_INDEX=1; shift ;;
77
81
  *) echo "Unknown arg: $1" >&2; exit 1 ;;
78
82
  esac
79
83
  done
@@ -104,6 +108,7 @@ if [ "$CONTENT_MODE" = "supplied" ] && [ -n "$COMPOSED" ]; then
104
108
  fi
105
109
 
106
110
  MODE=$(jq -r '.mode // "connected"' "$CONFIG" 2>/dev/null || echo "connected")
111
+ GRAPH_ENABLED="${EGREGORE_GRAPH_PROJECTION:-0}"
107
112
  TODAY=$(date +%Y-%m-%d)
108
113
  YYYY_MM=$(date +%Y-%m)
109
114
  DD=$(date +%d)
@@ -212,25 +217,30 @@ if [ -n "$REPO_STATE" ]; then
212
217
  printf '\n%s\n' "$REPO_STATE" >> "$ABS_FILE"
213
218
  fi
214
219
 
215
- # --- Prepend memory/handoffs/index.md -----------------------------------
216
- INDEX="$SCRIPT_DIR/memory/handoffs/index.md"
217
- mkdir -p "$(dirname "$INDEX")"
218
- [ -f "$INDEX" ] || printf '# Handoffs\n\n' > "$INDEX"
220
+ # --- Legacy handoff ledger ----------------------------------------------
221
+ # Runtime-owned capture skips this compatibility index. The canonical handoff
222
+ # file is independently discoverable and QMD is a rebuildable projection;
223
+ # mutating a second Markdown file would create a second canonical write that
224
+ # the Runtime transaction did not authorize or include in provenance.
225
+ if [ "$NO_INDEX" = "0" ]; then
226
+ INDEX="$SCRIPT_DIR/memory/handoffs/index.md"
227
+ mkdir -p "$(dirname "$INDEX")"
228
+ [ -f "$INDEX" ] || printf '# Handoffs\n\n' > "$INDEX"
229
+
230
+ if [ -n "$RECIPIENT" ]; then
231
+ IDX_LINE="- **${TODAY}** — ${AUTHOR}: ${TOPIC} (handoff to ${RECIPIENT})"
232
+ else
233
+ IDX_LINE="- **${TODAY}** — ${AUTHOR}: ${TOPIC} (handoff)"
234
+ fi
219
235
 
220
- if [ -n "$RECIPIENT" ]; then
221
- IDX_LINE="- **${TODAY}** — ${AUTHOR}: ${TOPIC} (handoff to ${RECIPIENT})"
222
- else
223
- IDX_LINE="- **${TODAY}** — ${AUTHOR}: ${TOPIC} (handoff)"
236
+ awk -v line="$IDX_LINE" '
237
+ BEGIN { inserted = 0 }
238
+ /^$/ && !inserted { print; print line; inserted = 1; next }
239
+ { print }
240
+ END { if (!inserted) print line }
241
+ ' "$INDEX" > "$INDEX.new" && mv "$INDEX.new" "$INDEX"
224
242
  fi
225
243
 
226
- # Insert after the first blank line (keeping the # header intact)
227
- awk -v line="$IDX_LINE" '
228
- BEGIN { inserted = 0 }
229
- /^$/ && !inserted { print; print line; inserted = 1; next }
230
- { print }
231
- END { if (!inserted) print line }
232
- ' "$INDEX" > "$INDEX.new" && mv "$INDEX.new" "$INDEX"
233
-
234
244
  # --- Parallel stage: graph + memory + (publish → notification proposal) -
235
245
  #
236
246
  # Three independent branches fork here and join before we emit the result:
@@ -260,7 +270,7 @@ BRIEFING_SHORT=$(awk '/^## Briefing/{found=1; next} found && /^##/{exit} found &
260
270
 
261
271
  # --- Branch A: Graph index ---
262
272
  (
263
- if [ "$MODE" = "connected" ]; then
273
+ if [ "$MODE" = "connected" ] && [ "$GRAPH_ENABLED" = "1" ]; then
264
274
  GJ=$(bash "$SCRIPT_DIR/bin/index-handoff.sh" "$ABS_FILE" 2>/dev/null || echo '{}')
265
275
  SID=$(echo "$GJ" | jq -r '.sessionId // ""' 2>/dev/null || echo "")
266
276
  RES=$(echo "$GJ" | jq -r '.resolved // 0' 2>/dev/null || echo 0)
@@ -273,7 +283,7 @@ BRIEFING_SHORT=$(awk '/^## Briefing/{found=1; next} found && /^##/{exit} found &
273
283
  fi
274
284
  else
275
285
  echo "null" > "$TMPD/subgraph"
276
- printf '\n0\nskipped\n' > "$TMPD/graph"
286
+ printf '\n0\ndisabled\n' > "$TMPD/graph"
277
287
  fi
278
288
  ) &
279
289
  PID_GRAPH=$!
@@ -285,7 +295,7 @@ PID_GRAPH=$!
285
295
  # this before committing so the file always has the section.
286
296
  (
287
297
  ARTIFACTS_JSON="[]"
288
- if [ "$MODE" = "connected" ]; then
298
+ if [ "$MODE" = "connected" ] && [ "$GRAPH_ENABLED" = "1" ]; then
289
299
  YY=$(date +%Y); MM=$(date +%-m); DD_NUM=$(date +%-d)
290
300
  RAW=$(bash "$SCRIPT_DIR/bin/graph.sh" query "
291
301
  MATCH (a:Artifact)-[:CONTRIBUTED_BY]->(p:Person {github: \$gh})
@@ -328,7 +338,11 @@ PID_ARTIFACTS=$!
328
338
  fi
329
339
 
330
340
  cd "$MEMORY_DIR"
331
- git add "$REL_FILE" handoffs/index.md >/dev/null 2>&1
341
+ if [ "$NO_INDEX" = "1" ]; then
342
+ git add "$REL_FILE" >/dev/null 2>&1
343
+ else
344
+ git add "$REL_FILE" handoffs/index.md >/dev/null 2>&1
345
+ fi
332
346
 
333
347
  if [ -n "$RECIPIENT" ]; then
334
348
  MSG_COMMIT="chore(handoff): record ${TOPIC} (to ${RECIPIENT})"
@@ -405,14 +419,16 @@ PID_MEMORY=$!
405
419
  if [ "$RENDER_TYPE" = "composed" ]; then
406
420
  FIDELITY_ARGS+=(--source "$ABS_FILE")
407
421
  fi
408
- if [ "${EGREGORE_USE_PUBLISHED:-0}" != "1" ] && [ -f "$LOCAL_CLI" ] && [ -d "$SCRIPT_DIR/packages/egregore-artifacts/node_modules/react" ]; then
409
- if node "$LOCAL_CLI" "$RENDER_TYPE" "${RENDER_SRC:-$ABS_FILE}" "${FIDELITY_ARGS[@]}" --output "$RENDERED_HTML" >/dev/null 2>"$TMPD/render-error"; then
422
+ # Node always runs through the adapter (broken Volta/NVM shims are a
423
+ # live hazard in harness shells), and there is no npx/@latest fallback:
424
+ # a hidden registry fetch of a floating version is never an acceptable
425
+ # renderer. Missing local renderer → structured-only handoff.
426
+ if [ -f "$LOCAL_CLI" ] && [ -d "$SCRIPT_DIR/packages/egregore-artifacts/node_modules/react" ]; then
427
+ if bash "$SCRIPT_DIR/bin/node-run.sh" "$LOCAL_CLI" "$RENDER_TYPE" "${RENDER_SRC:-$ABS_FILE}" "${FIDELITY_ARGS[@]}" --output "$RENDERED_HTML" >/dev/null 2>"$TMPD/render-error"; then
410
428
  RENDER_OK=1
411
429
  fi
412
430
  else
413
- if npx -y egregore-artifacts@latest "$RENDER_TYPE" "${RENDER_SRC:-$ABS_FILE}" "${FIDELITY_ARGS[@]}" --output "$RENDERED_HTML" >/dev/null 2>"$TMPD/render-error"; then
414
- RENDER_OK=1
415
- fi
431
+ echo "local egregore-artifacts renderer unavailable; sending structured handoff without custom HTML" > "$TMPD/render-error"
416
432
  fi
417
433
 
418
434
  # Step 2: build the emissary payload. If rendering succeeded AND the
@@ -31,6 +31,12 @@ case "$mode" in
31
31
  *) usage ;;
32
32
  esac
33
33
 
34
+ if ! _graph_projection_enabled; then
35
+ jq -cn \
36
+ '{status:"stored",graph:"disabled",reason:"graph_projection_disabled",queries:0,batches:0,failed:0,replayable:true}'
37
+ exit 0
38
+ fi
39
+
34
40
  plan="$(python3 "$PLANNER" plan "$manifest")"
35
41
  manifest_id="$(printf '%s' "$plan" | jq -r '.manifest_id')"
36
42
  query_count="$(printf '%s' "$plan" | jq -r '.query_count')"
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # Runtime-neutral adapter for one external source's staged admission lifecycle.
3
+ set -euo pipefail
4
+
5
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
6
+ export EGREGORE_ROOT="${EGREGORE_ROOT:-$ROOT}"
7
+ export EGREGORE_SESSION_ID="${EGREGORE_SESSION_ID:-$(cat "$ROOT/.egregore-session-id" 2>/dev/null || true)}"
8
+ export PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}"
9
+
10
+ exec python3 -m egregore_runtime.ingest_cli "$@"
@@ -2,38 +2,56 @@
2
2
  set -euo pipefail
3
3
 
4
4
  # Org-scoped intake plane. Shared manifests live in memory/; normalized bodies
5
- # stay in this checkout's gitignored cache; qmd uses a separate per-org index.
5
+ # stay in this checkout's gitignored cache. Indexing is routed through the
6
+ # Egregore Local Retriever; this compatibility shell contains no QMD details.
6
7
 
7
8
  ROOT="$(cd "$(dirname "$0")/.." && pwd)"
8
9
  export NODE_NO_WARNINGS=1
9
10
  PY="$ROOT/bin/ingest.py"
10
11
  SURFACE="$ROOT/bin/ingest_surface.py"
11
12
  SLUG="$(jq -r '.slug // "egregore"' "$ROOT/egregore.json")"
12
- INDEX="${SLUG}-ingest"
13
- COLLECTION="${SLUG}-ingest"
14
13
  INGEST_ROOT="${EGREGORE_INGEST_ROOT:-$ROOT/.egregore/ingest}"
15
14
  INGEST_META_ROOT="${EGREGORE_INGEST_META_ROOT:-$ROOT/memory/ingest}"
16
- QMD_VERSION="2.5.3"
17
15
  GRAPH_PROJECTOR="${EGREGORE_INGEST_GRAPH_PROJECTOR:-$ROOT/bin/ingest-graph.sh}"
18
16
 
19
- _qmd() {
20
- if command -v qmd >/dev/null 2>&1; then
21
- qmd --index "$INDEX" "$@"
22
- else
23
- npx -y "@tobilu/qmd@${QMD_VERSION}" --index "$INDEX" "$@"
24
- fi
17
+ _retriever() {
18
+ EGREGORE_ROOT="$ROOT" \
19
+ EGREGORE_INGEST_ROOT="$INGEST_ROOT" \
20
+ PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}" \
21
+ python3 -m egregore_runtime.ingest_index_cli "$@"
25
22
  }
26
23
 
27
24
  _ensure_index() {
28
25
  mkdir -p "$INGEST_ROOT"
29
- if ! _qmd collection list 2>/dev/null | grep -q "^${COLLECTION} "; then
30
- _qmd collection add "$INGEST_ROOT" --name "$COLLECTION" >/dev/null
31
- fi
32
- _qmd update >/dev/null
26
+ _retriever update --background-embed >/dev/null
27
+ }
28
+
29
+ _register_manifest() {
30
+ local source="$1" source_root manifest source_record
31
+ source_root="$INGEST_META_ROOT/sources/$source"
32
+ manifest="$source_root/manifest.json"
33
+ source_record="$source_root/source.json"
34
+ case "$(cd "$INGEST_META_ROOT" 2>/dev/null && pwd -P)/" in
35
+ "$(cd "$ROOT/memory" 2>/dev/null && pwd -P)/"*) ;;
36
+ *)
37
+ # Explicit test/custom metadata roots are not canonical organizational
38
+ # state and therefore cannot be committed by the Runtime.
39
+ printf '%s\n' '{"status":"external-metadata-root","warnings":["manifest was not registered as canonical state"]}'
40
+ return 0
41
+ ;;
42
+ esac
43
+ EGREGORE_ROOT="$ROOT" \
44
+ PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}" \
45
+ python3 -m egregore_runtime.ingest_cli register \
46
+ --source "$source" --manifest "$manifest" --source-record "$source_record"
33
47
  }
34
48
 
35
49
  _graph_sync() {
36
- local source="${1:-}" manifest result status
50
+ local source="${1:-}" force="${2:-0}" manifest result status
51
+ if [ "${EGREGORE_GRAPH_PROJECTION:-0}" != "1" ] && [ "$force" != "1" ]; then
52
+ printf '%s\n' '{"status":"disabled","enabled":false,"reason":"canonical Markdown is authoritative; graph projection requires explicit opt-in","replayable":true}'
53
+ return 0
54
+ fi
37
55
  local total=0 succeeded=0 failed=0 stored=0 queries=0
38
56
  local manifests=()
39
57
  if [ -n "$source" ]; then
@@ -98,38 +116,44 @@ PY
98
116
  }
99
117
 
100
118
  cmd_add() {
101
- local source="" summary graph final qmd_status
119
+ local source="" summary graph final qmd_status canonical_status
102
120
  local args=("$@")
103
121
  local i
104
122
  for ((i=0; i<${#args[@]}; i++)); do
105
123
  if [ "${args[$i]}" = "--source" ] && [ $((i+1)) -lt ${#args[@]} ]; then source="${args[$((i+1))]}"; fi
106
124
  done
107
125
  summary="$(python3 "$PY" add "$@")"
126
+ source="$(printf '%s' "$summary" | jq -r '.source')"
108
127
  _journal "$source" "normalized" "$(printf '%s' "$summary" | jq -c '{ingested,unchanged,metadata_updated,skipped,pruned}')"
128
+ if ! canonical_status="$(_register_manifest "$source")"; then
129
+ _journal "$source" "canonical_failed" '{"status":"failed"}'
130
+ printf '%s\n' "$summary" | jq '. + {status:"failed",canonical:{status:"failed"},qmd:{status:"not-attempted"},graph:{status:"not-attempted"}}'
131
+ return 1
132
+ fi
109
133
  if ! _ensure_index; then
110
134
  qmd_status='{"status":"failed"}'
111
135
  _journal "$source" "index_failed" "$qmd_status"
112
- printf '%s\n' "$summary" | jq --argjson qmd "$qmd_status" '. + {status:"failed",qmd:$qmd,graph:{status:"not-attempted"}}'
136
+ printf '%s\n' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" '. + {status:"failed",canonical:$canonical,qmd:$qmd,graph:{status:"not-attempted"}}'
113
137
  return 1
114
138
  fi
115
139
  qmd_status='{"status":"indexed"}'
116
140
  if graph="$(_graph_sync "$source")"; then :; else :; fi
117
141
  if [ "$(printf '%s' "$summary" | jq -r .skipped)" -gt 0 ]; then
118
142
  _journal "$source" "extraction_attention" "$(printf '%s' "$summary" | jq -c '{skipped}')"
119
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" '. + {status:"attention",qmd:$qmd,graph:$graph}')"
143
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" '. + {status:"attention",canonical:$canonical,qmd:$qmd,graph:$graph}')"
120
144
  elif [ "$(printf '%s' "$graph" | jq -r .status)" = "partial" ]; then
121
145
  _journal "$source" "graph_pending" "$graph"
122
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" '. + {status:"attention",qmd:$qmd,graph:$graph}')"
146
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" '. + {status:"attention",canonical:$canonical,qmd:$qmd,graph:$graph}')"
123
147
  else
124
148
  _journal_clear "$source"
125
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" '. + {status:"complete",qmd:$qmd,graph:$graph}')"
149
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" '. + {status:"complete",canonical:$canonical,qmd:$qmd,graph:$graph}')"
126
150
  fi
127
151
  printf '%s\n' "$final"
128
152
  }
129
153
 
130
154
  cmd_add_selection() {
131
155
  local manifest="${1:?usage: bin/ingest.sh add-selection MANIFEST}"
132
- local source receipt_url receipt_token summary graph qmd_status outcome final message contract
156
+ local source receipt_url receipt_token summary graph qmd_status canonical_status outcome final message contract
133
157
  contract="$(python3 - "$manifest" <<'PY'
134
158
  import json, sys
135
159
  value = json.load(open(sys.argv[1], encoding="utf-8"))
@@ -144,8 +168,13 @@ PY
144
168
  _notify_receipt "$receipt_url" "$receipt_token" "$final"
145
169
  return 2
146
170
  fi
171
+ source="$(printf '%s' "$summary" | jq -r '.source')"
147
172
  _journal "$source" "normalized" "$(printf '%s' "$summary" | jq -c '{ingested,unchanged,metadata_updated,skipped,pruned}')"
148
- if _ensure_index; then
173
+ if ! canonical_status="$(_register_manifest "$source")"; then
174
+ canonical_status='{"status":"failed"}'
175
+ qmd_status='{"status":"not-attempted"}'
176
+ _journal "$source" "canonical_failed" "$canonical_status"
177
+ elif _ensure_index; then
149
178
  qmd_status='{"status":"indexed"}'
150
179
  else
151
180
  qmd_status='{"status":"failed"}'
@@ -158,23 +187,23 @@ PY
158
187
  fi
159
188
  if [ "$(printf '%s' "$qmd_status" | jq -r .status)" != "indexed" ]; then
160
189
  outcome="index failed"
161
- message="The normalized source was retained, but QMD did not finish indexing it. Run bin/ingest.sh reindex to repair it."
162
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"failed",outcome:$outcome,message:$message,qmd:$qmd,graph:$graph}')"
190
+ message="The normalized source was retained, but the Local retrieval index did not finish updating. Run bin/ingest.sh reindex to repair it."
191
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"failed",outcome:$outcome,message:$message,canonical:$canonical,qmd:$qmd,graph:$graph}')"
163
192
  elif [ "$(printf '%s' "$summary" | jq -r '.skipped')" -gt 0 ]; then
164
193
  outcome="indexed with skipped files"
165
194
  message="Searchable files were indexed, but one or more files still need a compatible extractor. Their staging bytes were retained."
166
195
  _journal "$source" "extraction_attention" "$(printf '%s' "$summary" | jq -c '{skipped,selection_path}')"
167
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"attention",outcome:$outcome,message:$message,qmd:$qmd,graph:$graph}')"
196
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"attention",outcome:$outcome,message:$message,canonical:$canonical,qmd:$qmd,graph:$graph}')"
168
197
  elif [ "$(printf '%s' "$graph" | jq -r .status)" = "partial" ]; then
169
198
  outcome="indexed · graph pending"
170
199
  message="The source is searchable now. Graph projection was incomplete and is recorded for retry."
171
200
  _journal "$source" "graph_pending" "$graph"
172
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"attention",outcome:$outcome,message:$message,qmd:$qmd,graph:$graph}')"
201
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"attention",outcome:$outcome,message:$message,canonical:$canonical,qmd:$qmd,graph:$graph}')"
173
202
  else
174
203
  outcome="indexed · org-scoped · unverified"
175
204
  message="The files were validated, normalized, and added to this organization’s retrieval index."
176
205
  _journal_clear "$source"
177
- final="$(printf '%s' "$summary" | jq --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"complete",outcome:$outcome,message:$message,qmd:$qmd,graph:$graph}')"
206
+ final="$(printf '%s' "$summary" | jq --argjson canonical "$canonical_status" --argjson qmd "$qmd_status" --argjson graph "$graph" --arg outcome "$outcome" --arg message "$message" '. + {status:"complete",outcome:$outcome,message:$message,canonical:$canonical,qmd:$qmd,graph:$graph}')"
178
207
  fi
179
208
  _notify_receipt "$receipt_url" "$receipt_token" "$final"
180
209
  printf '%s\n' "$final"
@@ -193,7 +222,7 @@ cmd_search() {
193
222
  esac
194
223
  done
195
224
  _ensure_index
196
- raw="$(_qmd search "$query" -c "$COLLECTION" -n "$qmd_n" --all --json 2>/dev/null || echo '[]')"
225
+ raw="$(_retriever query --query "$query" --limit "$qmd_n" 2>/dev/null || echo '[]')"
197
226
  if [ ${#filter_args[@]} -gt 0 ]; then
198
227
  filtered="$(printf '%s' "$raw" | python3 "$PY" filter-results "${filter_args[@]}" --limit "$limit")"
199
228
  else
@@ -265,8 +294,8 @@ case "${1:-}" in
265
294
  fi
266
295
  printf '%s\n' "$graph"
267
296
  ;;
268
- graph-sync) shift; _graph_sync "${1:-}" ;;
269
- status) python3 "$PY" status; _qmd status 2>/dev/null || true ;;
297
+ graph-sync) shift; _graph_sync "${1:-}" 1 ;;
298
+ status) python3 "$PY" status; _retriever status 2>/dev/null || true ;;
270
299
  *)
271
300
  echo 'usage: bash bin/ingest.sh {select|add|add-selection|register-extraction|search|reindex|graph-sync|status}' >&2
272
301
  echo ' select [--no-open] [--timeout SECONDS]' >&2
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
5
+ export EGREGORE_ROOT="${EGREGORE_ROOT:-$ROOT}"
6
+ exec python3 -m egregore_runtime.invitation_cli "$@"
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # Runtime-neutral adapter for canonical internal issues.
3
+ set -euo pipefail
4
+
5
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
6
+ export EGREGORE_ROOT="${EGREGORE_ROOT:-$ROOT}"
7
+ export EGREGORE_SESSION_ID="${EGREGORE_SESSION_ID:-$(cat "$ROOT/.egregore-session-id" 2>/dev/null || true)}"
8
+ export PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}"
9
+
10
+ exec python3 -m egregore_runtime.issue_cli "$@"
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # Stable harness adapter for shared knowledge capture and private notes.
3
+ set -euo pipefail
4
+
5
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
6
+ export EGREGORE_ROOT="${EGREGORE_ROOT:-$ROOT}"
7
+ export EGREGORE_SESSION_ID="${EGREGORE_SESSION_ID:-$(cat "$ROOT/.egregore-session-id" 2>/dev/null || true)}"
8
+ export PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}"
9
+
10
+ exec python3 -m egregore_runtime.knowledge_cli "$@"
@@ -104,6 +104,26 @@ _detect_mode() {
104
104
  fi
105
105
  }
106
106
 
107
+ # Whether the optional derived graph projection may be used by compatibility
108
+ # commands. An explicit environment value wins for bounded maintenance/tests.
109
+ # Existing instances that have not declared the feature retain compatibility;
110
+ # new dogfood can set features.graph_projection=false to quarantine every
111
+ # graph read/write while canonical Runtime paths are evaluated.
112
+ _graph_projection_enabled() {
113
+ case "${EGREGORE_GRAPH_PROJECTION:-}" in
114
+ 1|true|enabled) return 0 ;;
115
+ 0|false|disabled) return 1 ;;
116
+ esac
117
+
118
+ local config="${CONFIG:-$SCRIPT_DIR/egregore.json}"
119
+ [ -r "$config" ] || return 1
120
+ if jq -e '.features | type == "object" and .graph_projection == false' \
121
+ "$config" >/dev/null 2>&1; then
122
+ return 1
123
+ fi
124
+ return 0
125
+ }
126
+
107
127
  # Compact runtime identity shared by terminal surfaces. The sigils deliberately
108
128
  # distinguish an active hosted connection from the self-contained local mode
109
129
  # without implying that local Egregore is unhealthy.