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.
- package/assets/egregore-launcher.js +1013 -16
- package/bin/cli.js +11 -0
- package/lib/claude-runtime.js +192 -0
- package/lib/local.js +38 -31
- package/lib/pi-runtime.js +1 -0
- package/lib/prime-runtime.js +1 -0
- package/lib/runtime-identity.js +146 -0
- package/lib/setup.js +116 -17
- package/package.json +10 -6
- package/runtime/claude/.claude/context/commit-format.md +110 -0
- package/runtime/claude/.claude/context/git-language.md +46 -0
- package/runtime/claude/.claude/context/notification-consent.md +66 -0
- package/runtime/claude/.claude/context/pr-format.md +67 -0
- package/runtime/claude/.claude/context/telemetry.md +133 -0
- package/runtime/claude/.claude/hooks/boundary-check.sh +333 -0
- package/runtime/claude/.claude/hooks/branch-guard.sh +231 -0
- package/runtime/claude/.claude/hooks/card-context.sh +38 -0
- package/runtime/claude/.claude/hooks/emissary-detect.sh +53 -0
- package/runtime/claude/.claude/hooks/memory-refresh.sh +67 -0
- package/runtime/claude/.claude/hooks/onboarding-guard.sh +86 -0
- package/runtime/claude/.claude/hooks/retrieval-context.sh +43 -0
- package/runtime/claude/.claude/rules/voice-bedrock.md +73 -0
- package/runtime/claude/.claude/settings.json +131 -0
- package/runtime/claude/.claude/skills/activity/SKILL.md +68 -0
- package/runtime/claude/.claude/skills/announce/SKILL.md +54 -0
- package/runtime/claude/.claude/skills/archive/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/branch/SKILL.md +147 -0
- package/runtime/claude/.claude/skills/checkup/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/commit/SKILL.md +103 -0
- package/runtime/claude/.claude/skills/contribute/SKILL.md +343 -0
- package/runtime/claude/.claude/skills/create-skill/SKILL.md +135 -0
- package/runtime/claude/.claude/skills/dark-mode/SKILL.md +410 -0
- package/runtime/claude/.claude/skills/dashboard/SKILL.md +43 -0
- package/runtime/claude/.claude/skills/deep-reflect/REPORT.md +140 -0
- package/runtime/claude/.claude/skills/deep-reflect/RESEARCH.md +132 -0
- package/runtime/claude/.claude/skills/deep-reflect/ROLES.md +104 -0
- package/runtime/claude/.claude/skills/deep-reflect/SKILL.md +170 -0
- package/runtime/claude/.claude/skills/delete-user/SKILL.md +150 -0
- package/runtime/claude/.claude/skills/emissary/SKILL.md +220 -0
- package/runtime/claude/.claude/skills/handoff/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/harvest/AUDIT.md +546 -0
- package/runtime/claude/.claude/skills/harvest/FORMAT.md +436 -0
- package/runtime/claude/.claude/skills/harvest/PROCESS.md +395 -0
- package/runtime/claude/.claude/skills/harvest/QUESTION_PALETTE.md +76 -0
- package/runtime/claude/.claude/skills/harvest/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/ingest/SKILL.md +112 -0
- package/runtime/claude/.claude/skills/ingest-corpus/SKILL.md +187 -0
- package/runtime/claude/.claude/skills/ingest-notion/SKILL.md +214 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/SKILL.md +65 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/references/analysis-contract.md +125 -0
- package/runtime/claude/.claude/skills/invite/SKILL.md +111 -0
- package/runtime/claude/.claude/skills/issue/SKILL.md +104 -0
- package/runtime/claude/.claude/skills/me/SKILL.md +81 -0
- package/runtime/claude/.claude/skills/meeting/SKILL.md +76 -0
- package/runtime/claude/.claude/skills/meeting/references/analysis-contract.md +102 -0
- package/runtime/claude/.claude/skills/note/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/notion-connect/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/onboarding/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/pr/SKILL.md +85 -0
- package/runtime/claude/.claude/skills/pull/SKILL.md +79 -0
- package/runtime/claude/.claude/skills/push/SKILL.md +47 -0
- package/runtime/claude/.claude/skills/quest/SKILL.md +121 -0
- package/runtime/claude/.claude/skills/reflect/SKILL.md +69 -0
- package/runtime/claude/.claude/skills/review-pr/SKILL.md +276 -0
- package/runtime/claude/.claude/skills/save/SKILL.md +92 -0
- package/runtime/claude/.claude/skills/slack-connect/SKILL.md +148 -0
- package/runtime/claude/.claude/skills/summon/SKILL.md +240 -0
- package/runtime/claude/.claude/skills/sync-repos/SKILL.md +82 -0
- package/runtime/claude/.claude/skills/teams-connect/SKILL.md +216 -0
- package/runtime/claude/.claude/skills/telegram-connect/SKILL.md +110 -0
- package/runtime/claude/.claude/skills/telemetry/SKILL.md +117 -0
- package/runtime/claude/.claude/skills/test/SKILL.md +87 -0
- package/runtime/claude/.claude/skills/the-spiral/SKILL.md +492 -0
- package/runtime/claude/.claude/skills/tui-design/SKILL.md +188 -0
- package/runtime/claude/.claude/skills/tutorial/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/update/SKILL.md +265 -0
- package/runtime/claude/.claude/skills/view/SKILL.md +393 -0
- package/runtime/claude/.claude/skills/view/compose-scaffold.html +221 -0
- package/runtime/claude/.claude/skills/visual-explain/SKILL.md +132 -0
- package/runtime/claude/.claude/skills/wrap/SKILL.md +98 -0
- package/runtime/claude/CLAUDE.md +447 -0
- package/runtime/claude/bin/activity-action.sh +92 -0
- package/runtime/claude/bin/activity-data.sh +17 -0
- package/runtime/claude/bin/agent.sh +783 -0
- package/runtime/claude/bin/artifact-register.sh +164 -0
- package/runtime/claude/bin/artifact-writeback.sh +53 -0
- package/runtime/claude/bin/artifacts.sh +288 -0
- package/runtime/claude/bin/attendant.sh +707 -0
- package/runtime/claude/bin/autosave.sh +112 -0
- package/runtime/claude/bin/boundary.sh +253 -0
- package/runtime/claude/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/claude/bin/capture-reconcile.sh +69 -0
- package/runtime/claude/bin/capture-run.sh +357 -0
- package/runtime/claude/bin/codex-install-skills.sh +78 -0
- package/runtime/claude/bin/codex-render-spec.mjs +462 -0
- package/runtime/claude/bin/codex-session-start.sh +275 -0
- package/runtime/claude/bin/codex-skill-render.mjs +349 -0
- package/runtime/claude/bin/codex-sync-skills.sh +237 -0
- package/runtime/claude/bin/connect-refresh.sh +33 -0
- package/runtime/claude/bin/contribute-guard.sh +79 -0
- package/runtime/claude/bin/corpus_map.py +806 -0
- package/runtime/claude/bin/corpus_survey.py +304 -0
- package/runtime/claude/bin/dashboard-data.sh +18 -0
- package/runtime/claude/bin/github-auth.sh +121 -0
- package/runtime/claude/bin/graph-batch.sh +86 -0
- package/runtime/claude/bin/graph-op.sh +1106 -0
- package/runtime/claude/bin/graph-projection.sh +54 -0
- package/runtime/claude/bin/graph-wal.sh +242 -0
- package/runtime/claude/bin/graph.sh +267 -0
- package/runtime/claude/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/claude/bin/handoff-lifecycle.sh +280 -0
- package/runtime/claude/bin/handoff-pr-backfill.sh +86 -0
- package/runtime/claude/bin/handoff-preview.sh +169 -0
- package/runtime/claude/bin/handoff-run.sh +692 -0
- package/runtime/claude/bin/handoff-save-egregore.sh +224 -0
- package/runtime/claude/bin/index-handoff.sh +322 -0
- package/runtime/claude/bin/ingest-graph.sh +86 -0
- package/runtime/claude/bin/ingest-item.sh +10 -0
- package/runtime/claude/bin/ingest-surface.html +495 -0
- package/runtime/claude/bin/ingest.py +1011 -0
- package/runtime/claude/bin/ingest.sh +308 -0
- package/runtime/claude/bin/ingest_graph.py +856 -0
- package/runtime/claude/bin/ingest_surface.py +544 -0
- package/runtime/claude/bin/invite.sh +6 -0
- package/runtime/claude/bin/issue.sh +10 -0
- package/runtime/claude/bin/knowledge.sh +10 -0
- package/runtime/claude/bin/lib/artifact-id.sh +46 -0
- package/runtime/claude/bin/lib/config.sh +136 -0
- package/runtime/claude/bin/lib/context.sh +642 -0
- package/runtime/claude/bin/lib/dashboard-artifact.sh +242 -0
- package/runtime/claude/bin/lib/ensure-develop.sh +183 -0
- package/runtime/claude/bin/lib/git-message.sh +37 -0
- package/runtime/claude/bin/lib/git-sync.sh +494 -0
- package/runtime/claude/bin/lib/greeting.sh +548 -0
- package/runtime/claude/bin/lib/handoff-meta.sh +97 -0
- package/runtime/claude/bin/lib/hash.sh +13 -0
- package/runtime/claude/bin/lib/identity.sh +213 -0
- package/runtime/claude/bin/lib/metrics.sh +374 -0
- package/runtime/claude/bin/lib/noncode.sh +31 -0
- package/runtime/claude/bin/lib/permissions.sh +106 -0
- package/runtime/claude/bin/lib/time.sh +56 -0
- package/runtime/claude/bin/lib/worktree-links.sh +85 -0
- package/runtime/claude/bin/node-run.sh +42 -0
- package/runtime/claude/bin/notification.sh +6 -0
- package/runtime/claude/bin/notify.sh +636 -0
- package/runtime/claude/bin/observe-context.sh +14 -0
- package/runtime/claude/bin/onboarding.sh +6 -0
- package/runtime/claude/bin/person.py +634 -0
- package/runtime/claude/bin/person.sh +481 -0
- package/runtime/claude/bin/pi-render-spec.mjs +140 -0
- package/runtime/claude/bin/post-update.sh +37 -0
- package/runtime/claude/bin/prime-render-spec.mjs +147 -0
- package/runtime/claude/bin/publish-artifact.sh +324 -0
- package/runtime/claude/bin/publish-references.sh +144 -0
- package/runtime/claude/bin/quest.sh +9 -0
- package/runtime/claude/bin/question.sh +8 -0
- package/runtime/claude/bin/repo-state.sh +96 -0
- package/runtime/claude/bin/research-ingest.sh +7 -0
- package/runtime/claude/bin/restore-owned-skills.sh +67 -0
- package/runtime/claude/bin/retrieval_eval.py +385 -0
- package/runtime/claude/bin/runtime-identity.sh +70 -0
- package/runtime/claude/bin/runtime-upgrade.sh +43 -0
- package/runtime/claude/bin/scroll.sh +9 -0
- package/runtime/claude/bin/search.sh +318 -0
- package/runtime/claude/bin/session-autosave.sh +220 -0
- package/runtime/claude/bin/session-log.sh +199 -0
- package/runtime/claude/bin/session-start.sh +696 -0
- package/runtime/claude/bin/settings.sh +532 -0
- package/runtime/claude/bin/startup-check.sh +136 -0
- package/runtime/claude/bin/statusline.sh +41 -0
- package/runtime/claude/bin/telemetry.sh +666 -0
- package/runtime/claude/bin/test-changes.sh +344 -0
- package/runtime/claude/bin/thread.sh +9 -0
- package/runtime/claude/bin/todo.sh +9 -0
- package/runtime/claude/bin/view-render.sh +126 -0
- package/runtime/claude/bin/worktree-create.sh +145 -0
- package/runtime/claude/bin/worktree-remove.sh +50 -0
- package/runtime/claude/bin/worktree.sh +198 -0
- package/runtime/claude/egregore_runtime/__init__.py +228 -0
- package/runtime/claude/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/claude/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/claude/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/claude/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/claude/egregore_runtime/admin_gate.py +102 -0
- package/runtime/claude/egregore_runtime/artifacts.py +523 -0
- package/runtime/claude/egregore_runtime/contracts.py +499 -0
- package/runtime/claude/egregore_runtime/entitlements.py +85 -0
- package/runtime/claude/egregore_runtime/errors.py +10 -0
- package/runtime/claude/egregore_runtime/graph.py +356 -0
- package/runtime/claude/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/claude/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/claude/egregore_runtime/identity.py +734 -0
- package/runtime/claude/egregore_runtime/identity_cli.py +91 -0
- package/runtime/claude/egregore_runtime/ingest.py +575 -0
- package/runtime/claude/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/claude/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/claude/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/claude/egregore_runtime/invitations.py +116 -0
- package/runtime/claude/egregore_runtime/issue_cli.py +305 -0
- package/runtime/claude/egregore_runtime/issues.py +359 -0
- package/runtime/claude/egregore_runtime/knowledge.py +376 -0
- package/runtime/claude/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/claude/egregore_runtime/lifecycle.py +888 -0
- package/runtime/claude/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/claude/egregore_runtime/notification_cli.py +125 -0
- package/runtime/claude/egregore_runtime/notifications.py +230 -0
- package/runtime/claude/egregore_runtime/observe.py +342 -0
- package/runtime/claude/egregore_runtime/onboarding.py +290 -0
- package/runtime/claude/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/claude/egregore_runtime/policy.py +144 -0
- package/runtime/claude/egregore_runtime/profile.py +193 -0
- package/runtime/claude/egregore_runtime/quest_cli.py +216 -0
- package/runtime/claude/egregore_runtime/question_cli.py +180 -0
- package/runtime/claude/egregore_runtime/questions.py +304 -0
- package/runtime/claude/egregore_runtime/quests.py +419 -0
- package/runtime/claude/egregore_runtime/readiness.py +379 -0
- package/runtime/claude/egregore_runtime/research_ingest.py +256 -0
- package/runtime/claude/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/claude/egregore_runtime/runtime.py +464 -0
- package/runtime/claude/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/claude/egregore_runtime/scrolls.py +726 -0
- package/runtime/claude/egregore_runtime/status.py +412 -0
- package/runtime/claude/egregore_runtime/status_cli.py +174 -0
- package/runtime/claude/egregore_runtime/sync.py +218 -0
- package/runtime/claude/egregore_runtime/teamsync.py +139 -0
- package/runtime/claude/egregore_runtime/telemetry.py +640 -0
- package/runtime/claude/egregore_runtime/thread_cli.py +173 -0
- package/runtime/claude/egregore_runtime/threads.py +517 -0
- package/runtime/claude/egregore_runtime/todo_cli.py +142 -0
- package/runtime/claude/egregore_runtime/todos.py +244 -0
- package/runtime/claude/egregore_runtime/upgrade.py +770 -0
- package/runtime/claude/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/claude/egregore_runtime/writeback.py +391 -0
- package/runtime/claude/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/claude/manifest.json +284 -0
- package/runtime/codex/.codex/hooks/search-hint.js +21 -52
- package/runtime/codex/.codex/hooks.json +3 -3
- package/runtime/codex/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/codex/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/codex/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/codex/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/codex/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/codex/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/codex/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/codex/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/codex/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/codex/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/codex/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/codex/.codex/skills/note/SKILL.md +30 -25
- package/runtime/codex/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/codex/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/codex/.codex/skills/save/SKILL.md +2 -2
- package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/codex/.codex/skills/view/SKILL.md +115 -111
- package/runtime/codex/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/codex/.codex/spec-manifest.json +9 -9
- package/runtime/codex/AGENTS.md +62 -58
- package/runtime/codex/bin/activity-action.sh +92 -0
- package/runtime/codex/bin/activity-data.sh +12 -233
- package/runtime/codex/bin/agent.sh +84 -100
- package/runtime/codex/bin/artifact-register.sh +164 -0
- package/runtime/codex/bin/artifact-writeback.sh +53 -0
- package/runtime/codex/bin/artifacts.sh +288 -0
- package/runtime/codex/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/codex/bin/capture-run.sh +18 -2
- package/runtime/codex/bin/codex-render-spec.mjs +41 -16
- package/runtime/codex/bin/codex-session-start.sh +14 -4
- package/runtime/codex/bin/codex-skill-render.mjs +9 -7
- package/runtime/codex/bin/corpus_map.py +806 -0
- package/runtime/codex/bin/corpus_survey.py +304 -0
- package/runtime/codex/bin/dashboard-data.sh +11 -171
- package/runtime/codex/bin/github-auth.sh +121 -0
- package/runtime/codex/bin/graph-batch.sh +7 -0
- package/runtime/codex/bin/graph-op.sh +4 -0
- package/runtime/codex/bin/graph-projection.sh +54 -0
- package/runtime/codex/bin/graph-wal.sh +13 -0
- package/runtime/codex/bin/graph.sh +44 -0
- package/runtime/codex/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/codex/bin/handoff-lifecycle.sh +280 -0
- package/runtime/codex/bin/handoff-preview.sh +169 -0
- package/runtime/codex/bin/handoff-run.sh +42 -26
- package/runtime/codex/bin/ingest-graph.sh +6 -0
- package/runtime/codex/bin/ingest-item.sh +10 -0
- package/runtime/codex/bin/ingest.sh +59 -30
- package/runtime/codex/bin/invite.sh +6 -0
- package/runtime/codex/bin/issue.sh +10 -0
- package/runtime/codex/bin/knowledge.sh +10 -0
- package/runtime/codex/bin/lib/config.sh +20 -0
- package/runtime/codex/bin/lib/context.sh +46 -25
- package/runtime/codex/bin/lib/git-sync.sh +70 -6
- package/runtime/codex/bin/lib/greeting.sh +34 -5
- package/runtime/codex/bin/lib/handoff-meta.sh +97 -0
- package/runtime/codex/bin/lib/worktree-links.sh +6 -0
- package/runtime/codex/bin/node-run.sh +42 -0
- package/runtime/codex/bin/notification.sh +6 -0
- package/runtime/codex/bin/observe-context.sh +14 -0
- package/runtime/codex/bin/onboarding.sh +6 -0
- package/runtime/codex/bin/person.py +4 -0
- package/runtime/codex/bin/person.sh +43 -10
- package/runtime/codex/bin/pi-render-spec.mjs +140 -0
- package/runtime/codex/bin/post-update.sh +37 -0
- package/runtime/codex/bin/prime-render-spec.mjs +147 -0
- package/runtime/codex/bin/publish-artifact.sh +55 -2
- package/runtime/codex/bin/quest.sh +9 -0
- package/runtime/codex/bin/question.sh +8 -0
- package/runtime/codex/bin/research-ingest.sh +7 -0
- package/runtime/codex/bin/restore-owned-skills.sh +67 -0
- package/runtime/codex/bin/retrieval_eval.py +385 -0
- package/runtime/codex/bin/runtime-identity.sh +70 -0
- package/runtime/codex/bin/runtime-upgrade.sh +43 -0
- package/runtime/codex/bin/scroll.sh +9 -0
- package/runtime/codex/bin/search.sh +231 -195
- package/runtime/codex/bin/settings.sh +174 -5
- package/runtime/codex/bin/startup-check.sh +136 -0
- package/runtime/codex/bin/telemetry.sh +522 -247
- package/runtime/codex/bin/test-changes.sh +344 -0
- package/runtime/codex/bin/thread.sh +9 -0
- package/runtime/codex/bin/todo.sh +9 -0
- package/runtime/codex/bin/view-render.sh +126 -0
- package/runtime/codex/bin/worktree-create.sh +19 -5
- package/runtime/codex/egregore_runtime/__init__.py +228 -0
- package/runtime/codex/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/codex/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/codex/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/codex/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/codex/egregore_runtime/admin_gate.py +102 -0
- package/runtime/codex/egregore_runtime/artifacts.py +523 -0
- package/runtime/codex/egregore_runtime/contracts.py +499 -0
- package/runtime/codex/egregore_runtime/entitlements.py +85 -0
- package/runtime/codex/egregore_runtime/errors.py +10 -0
- package/runtime/codex/egregore_runtime/graph.py +356 -0
- package/runtime/codex/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/codex/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/codex/egregore_runtime/identity.py +734 -0
- package/runtime/codex/egregore_runtime/identity_cli.py +91 -0
- package/runtime/codex/egregore_runtime/ingest.py +575 -0
- package/runtime/codex/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/codex/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/codex/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/codex/egregore_runtime/invitations.py +116 -0
- package/runtime/codex/egregore_runtime/issue_cli.py +305 -0
- package/runtime/codex/egregore_runtime/issues.py +359 -0
- package/runtime/codex/egregore_runtime/knowledge.py +376 -0
- package/runtime/codex/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/codex/egregore_runtime/lifecycle.py +888 -0
- package/runtime/codex/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/codex/egregore_runtime/notification_cli.py +125 -0
- package/runtime/codex/egregore_runtime/notifications.py +230 -0
- package/runtime/codex/egregore_runtime/observe.py +342 -0
- package/runtime/codex/egregore_runtime/onboarding.py +290 -0
- package/runtime/codex/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/codex/egregore_runtime/policy.py +144 -0
- package/runtime/codex/egregore_runtime/profile.py +193 -0
- package/runtime/codex/egregore_runtime/quest_cli.py +216 -0
- package/runtime/codex/egregore_runtime/question_cli.py +180 -0
- package/runtime/codex/egregore_runtime/questions.py +304 -0
- package/runtime/codex/egregore_runtime/quests.py +419 -0
- package/runtime/codex/egregore_runtime/readiness.py +379 -0
- package/runtime/codex/egregore_runtime/research_ingest.py +256 -0
- package/runtime/codex/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/codex/egregore_runtime/runtime.py +464 -0
- package/runtime/codex/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/codex/egregore_runtime/scrolls.py +726 -0
- package/runtime/codex/egregore_runtime/status.py +412 -0
- package/runtime/codex/egregore_runtime/status_cli.py +174 -0
- package/runtime/codex/egregore_runtime/sync.py +218 -0
- package/runtime/codex/egregore_runtime/teamsync.py +139 -0
- package/runtime/codex/egregore_runtime/telemetry.py +640 -0
- package/runtime/codex/egregore_runtime/thread_cli.py +173 -0
- package/runtime/codex/egregore_runtime/threads.py +517 -0
- package/runtime/codex/egregore_runtime/todo_cli.py +142 -0
- package/runtime/codex/egregore_runtime/todos.py +244 -0
- package/runtime/codex/egregore_runtime/upgrade.py +770 -0
- package/runtime/codex/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/codex/egregore_runtime/writeback.py +391 -0
- package/runtime/codex/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/codex/manifest.json +98 -1
- package/runtime/pi/.codex/hooks/search-hint.js +21 -52
- package/runtime/pi/.codex/hooks.json +3 -3
- package/runtime/pi/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/pi/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/pi/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/pi/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/pi/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/pi/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/pi/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/pi/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/pi/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/pi/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/pi/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/pi/.codex/skills/note/SKILL.md +30 -25
- package/runtime/pi/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/pi/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/pi/.codex/skills/save/SKILL.md +2 -2
- package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/pi/.codex/skills/view/SKILL.md +115 -111
- package/runtime/pi/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/pi/.codex/spec-manifest.json +9 -9
- package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -48
- package/runtime/pi/.pi/extensions/egregore.ts +7 -0
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +62 -58
- package/runtime/pi/bin/activity-action.sh +92 -0
- package/runtime/pi/bin/activity-data.sh +12 -233
- package/runtime/pi/bin/agent.sh +84 -100
- package/runtime/pi/bin/artifact-register.sh +164 -0
- package/runtime/pi/bin/artifact-writeback.sh +53 -0
- package/runtime/pi/bin/artifacts.sh +288 -0
- package/runtime/pi/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/pi/bin/capture-run.sh +18 -2
- package/runtime/pi/bin/codex-render-spec.mjs +41 -16
- package/runtime/pi/bin/codex-session-start.sh +14 -4
- package/runtime/pi/bin/codex-skill-render.mjs +9 -7
- package/runtime/pi/bin/corpus_map.py +806 -0
- package/runtime/pi/bin/corpus_survey.py +304 -0
- package/runtime/pi/bin/dashboard-data.sh +11 -171
- package/runtime/pi/bin/github-auth.sh +121 -0
- package/runtime/pi/bin/graph-batch.sh +7 -0
- package/runtime/pi/bin/graph-op.sh +4 -0
- package/runtime/pi/bin/graph-projection.sh +54 -0
- package/runtime/pi/bin/graph-wal.sh +13 -0
- package/runtime/pi/bin/graph.sh +44 -0
- package/runtime/pi/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/pi/bin/handoff-lifecycle.sh +280 -0
- package/runtime/pi/bin/handoff-preview.sh +169 -0
- package/runtime/pi/bin/handoff-run.sh +42 -26
- package/runtime/pi/bin/ingest-graph.sh +6 -0
- package/runtime/pi/bin/ingest-item.sh +10 -0
- package/runtime/pi/bin/ingest.sh +59 -30
- package/runtime/pi/bin/invite.sh +6 -0
- package/runtime/pi/bin/issue.sh +10 -0
- package/runtime/pi/bin/knowledge.sh +10 -0
- package/runtime/pi/bin/lib/config.sh +20 -0
- package/runtime/pi/bin/lib/context.sh +46 -25
- package/runtime/pi/bin/lib/git-sync.sh +70 -6
- package/runtime/pi/bin/lib/greeting.sh +34 -5
- package/runtime/pi/bin/lib/handoff-meta.sh +97 -0
- package/runtime/pi/bin/lib/worktree-links.sh +6 -0
- package/runtime/pi/bin/node-run.sh +42 -0
- package/runtime/pi/bin/notification.sh +6 -0
- package/runtime/pi/bin/observe-context.sh +14 -0
- package/runtime/pi/bin/onboarding.sh +6 -0
- package/runtime/pi/bin/person.py +4 -0
- package/runtime/pi/bin/person.sh +43 -10
- package/runtime/pi/bin/pi-observe-context.mjs +93 -0
- package/runtime/pi/bin/pi-product-workflows.mjs +1 -1
- package/runtime/pi/bin/pi-render-spec.mjs +1 -1
- package/runtime/pi/bin/post-update.sh +37 -0
- package/runtime/pi/bin/prime-render-spec.mjs +147 -0
- package/runtime/pi/bin/publish-artifact.sh +55 -2
- package/runtime/pi/bin/quest.sh +9 -0
- package/runtime/pi/bin/question.sh +8 -0
- package/runtime/pi/bin/research-ingest.sh +7 -0
- package/runtime/pi/bin/restore-owned-skills.sh +67 -0
- package/runtime/pi/bin/retrieval_eval.py +385 -0
- package/runtime/pi/bin/runtime-identity.sh +70 -0
- package/runtime/pi/bin/runtime-upgrade.sh +43 -0
- package/runtime/pi/bin/scroll.sh +9 -0
- package/runtime/pi/bin/search.sh +231 -195
- package/runtime/pi/bin/settings.sh +174 -5
- package/runtime/pi/bin/startup-check.sh +136 -0
- package/runtime/pi/bin/telemetry.sh +522 -247
- package/runtime/pi/bin/test-changes.sh +344 -0
- package/runtime/pi/bin/thread.sh +9 -0
- package/runtime/pi/bin/todo.sh +9 -0
- package/runtime/pi/bin/view-render.sh +126 -0
- package/runtime/pi/bin/worktree-create.sh +19 -5
- package/runtime/pi/egregore_runtime/__init__.py +228 -0
- package/runtime/pi/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/pi/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/pi/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/pi/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/pi/egregore_runtime/admin_gate.py +102 -0
- package/runtime/pi/egregore_runtime/artifacts.py +523 -0
- package/runtime/pi/egregore_runtime/contracts.py +499 -0
- package/runtime/pi/egregore_runtime/entitlements.py +85 -0
- package/runtime/pi/egregore_runtime/errors.py +10 -0
- package/runtime/pi/egregore_runtime/graph.py +356 -0
- package/runtime/pi/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/pi/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/pi/egregore_runtime/identity.py +734 -0
- package/runtime/pi/egregore_runtime/identity_cli.py +91 -0
- package/runtime/pi/egregore_runtime/ingest.py +575 -0
- package/runtime/pi/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/pi/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/pi/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/pi/egregore_runtime/invitations.py +116 -0
- package/runtime/pi/egregore_runtime/issue_cli.py +305 -0
- package/runtime/pi/egregore_runtime/issues.py +359 -0
- package/runtime/pi/egregore_runtime/knowledge.py +376 -0
- package/runtime/pi/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/pi/egregore_runtime/lifecycle.py +888 -0
- package/runtime/pi/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/pi/egregore_runtime/notification_cli.py +125 -0
- package/runtime/pi/egregore_runtime/notifications.py +230 -0
- package/runtime/pi/egregore_runtime/observe.py +342 -0
- package/runtime/pi/egregore_runtime/onboarding.py +290 -0
- package/runtime/pi/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/pi/egregore_runtime/policy.py +144 -0
- package/runtime/pi/egregore_runtime/profile.py +193 -0
- package/runtime/pi/egregore_runtime/quest_cli.py +216 -0
- package/runtime/pi/egregore_runtime/question_cli.py +180 -0
- package/runtime/pi/egregore_runtime/questions.py +304 -0
- package/runtime/pi/egregore_runtime/quests.py +419 -0
- package/runtime/pi/egregore_runtime/readiness.py +379 -0
- package/runtime/pi/egregore_runtime/research_ingest.py +256 -0
- package/runtime/pi/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/pi/egregore_runtime/runtime.py +464 -0
- package/runtime/pi/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/pi/egregore_runtime/scrolls.py +726 -0
- package/runtime/pi/egregore_runtime/status.py +412 -0
- package/runtime/pi/egregore_runtime/status_cli.py +174 -0
- package/runtime/pi/egregore_runtime/sync.py +218 -0
- package/runtime/pi/egregore_runtime/teamsync.py +139 -0
- package/runtime/pi/egregore_runtime/telemetry.py +640 -0
- package/runtime/pi/egregore_runtime/thread_cli.py +173 -0
- package/runtime/pi/egregore_runtime/threads.py +517 -0
- package/runtime/pi/egregore_runtime/todo_cli.py +142 -0
- package/runtime/pi/egregore_runtime/todos.py +244 -0
- package/runtime/pi/egregore_runtime/upgrade.py +770 -0
- package/runtime/pi/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/pi/egregore_runtime/writeback.py +391 -0
- package/runtime/pi/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/pi/manifest.json +98 -1
- package/runtime/prime/.codex/hooks/search-hint.js +21 -52
- package/runtime/prime/.codex/hooks.json +3 -3
- package/runtime/prime/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/prime/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/prime/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/prime/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/prime/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/prime/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/prime/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/prime/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/prime/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/prime/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/prime/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/prime/.codex/skills/note/SKILL.md +30 -25
- package/runtime/prime/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/prime/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/prime/.codex/skills/save/SKILL.md +2 -2
- package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/prime/.codex/skills/view/SKILL.md +115 -111
- package/runtime/prime/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/prime/.codex/spec-manifest.json +9 -9
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +57 -48
- package/runtime/prime/.prime/agent/extensions/egregore.ts +7 -0
- package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
- package/runtime/prime/AGENTS.md +62 -58
- package/runtime/prime/bin/activity-action.sh +92 -0
- package/runtime/prime/bin/activity-data.sh +12 -233
- package/runtime/prime/bin/agent.sh +84 -100
- package/runtime/prime/bin/artifact-register.sh +164 -0
- package/runtime/prime/bin/artifact-writeback.sh +53 -0
- package/runtime/prime/bin/artifacts.sh +288 -0
- package/runtime/prime/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/prime/bin/capture-run.sh +18 -2
- package/runtime/prime/bin/codex-render-spec.mjs +41 -16
- package/runtime/prime/bin/codex-session-start.sh +14 -4
- package/runtime/prime/bin/codex-skill-render.mjs +9 -7
- package/runtime/prime/bin/corpus_map.py +806 -0
- package/runtime/prime/bin/corpus_survey.py +304 -0
- package/runtime/prime/bin/dashboard-data.sh +11 -171
- package/runtime/prime/bin/github-auth.sh +121 -0
- package/runtime/prime/bin/graph-batch.sh +7 -0
- package/runtime/prime/bin/graph-op.sh +4 -0
- package/runtime/prime/bin/graph-projection.sh +54 -0
- package/runtime/prime/bin/graph-wal.sh +13 -0
- package/runtime/prime/bin/graph.sh +44 -0
- package/runtime/prime/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/prime/bin/handoff-lifecycle.sh +280 -0
- package/runtime/prime/bin/handoff-preview.sh +169 -0
- package/runtime/prime/bin/handoff-run.sh +42 -26
- package/runtime/prime/bin/ingest-graph.sh +6 -0
- package/runtime/prime/bin/ingest-item.sh +10 -0
- package/runtime/prime/bin/ingest.sh +59 -30
- package/runtime/prime/bin/invite.sh +6 -0
- package/runtime/prime/bin/issue.sh +10 -0
- package/runtime/prime/bin/knowledge.sh +10 -0
- package/runtime/prime/bin/lib/config.sh +20 -0
- package/runtime/prime/bin/lib/context.sh +46 -25
- package/runtime/prime/bin/lib/git-sync.sh +70 -6
- package/runtime/prime/bin/lib/greeting.sh +34 -5
- package/runtime/prime/bin/lib/handoff-meta.sh +97 -0
- package/runtime/prime/bin/lib/worktree-links.sh +6 -0
- package/runtime/prime/bin/node-run.sh +42 -0
- package/runtime/prime/bin/notification.sh +6 -0
- package/runtime/prime/bin/observe-context.sh +14 -0
- package/runtime/prime/bin/onboarding.sh +6 -0
- package/runtime/prime/bin/person.py +4 -0
- package/runtime/prime/bin/person.sh +43 -10
- package/runtime/prime/bin/pi-observe-context.mjs +93 -0
- package/runtime/prime/bin/pi-product-workflows.mjs +1 -1
- package/runtime/prime/bin/pi-render-spec.mjs +140 -0
- package/runtime/prime/bin/post-update.sh +37 -0
- package/runtime/prime/bin/prime-render-spec.mjs +1 -1
- package/runtime/prime/bin/publish-artifact.sh +55 -2
- package/runtime/prime/bin/quest.sh +9 -0
- package/runtime/prime/bin/question.sh +8 -0
- package/runtime/prime/bin/research-ingest.sh +7 -0
- package/runtime/prime/bin/restore-owned-skills.sh +67 -0
- package/runtime/prime/bin/retrieval_eval.py +385 -0
- package/runtime/prime/bin/runtime-identity.sh +70 -0
- package/runtime/prime/bin/runtime-upgrade.sh +43 -0
- package/runtime/prime/bin/scroll.sh +9 -0
- package/runtime/prime/bin/search.sh +231 -195
- package/runtime/prime/bin/settings.sh +174 -5
- package/runtime/prime/bin/startup-check.sh +136 -0
- package/runtime/prime/bin/telemetry.sh +522 -247
- package/runtime/prime/bin/test-changes.sh +344 -0
- package/runtime/prime/bin/thread.sh +9 -0
- package/runtime/prime/bin/todo.sh +9 -0
- package/runtime/prime/bin/view-render.sh +126 -0
- package/runtime/prime/bin/worktree-create.sh +19 -5
- package/runtime/prime/egregore_runtime/__init__.py +228 -0
- package/runtime/prime/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/prime/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/prime/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/prime/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/prime/egregore_runtime/admin_gate.py +102 -0
- package/runtime/prime/egregore_runtime/artifacts.py +523 -0
- package/runtime/prime/egregore_runtime/contracts.py +499 -0
- package/runtime/prime/egregore_runtime/entitlements.py +85 -0
- package/runtime/prime/egregore_runtime/errors.py +10 -0
- package/runtime/prime/egregore_runtime/graph.py +356 -0
- package/runtime/prime/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/prime/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/prime/egregore_runtime/identity.py +734 -0
- package/runtime/prime/egregore_runtime/identity_cli.py +91 -0
- package/runtime/prime/egregore_runtime/ingest.py +575 -0
- package/runtime/prime/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/prime/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/prime/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/prime/egregore_runtime/invitations.py +116 -0
- package/runtime/prime/egregore_runtime/issue_cli.py +305 -0
- package/runtime/prime/egregore_runtime/issues.py +359 -0
- package/runtime/prime/egregore_runtime/knowledge.py +376 -0
- package/runtime/prime/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/prime/egregore_runtime/lifecycle.py +888 -0
- package/runtime/prime/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/prime/egregore_runtime/notification_cli.py +125 -0
- package/runtime/prime/egregore_runtime/notifications.py +230 -0
- package/runtime/prime/egregore_runtime/observe.py +342 -0
- package/runtime/prime/egregore_runtime/onboarding.py +290 -0
- package/runtime/prime/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/prime/egregore_runtime/policy.py +144 -0
- package/runtime/prime/egregore_runtime/profile.py +193 -0
- package/runtime/prime/egregore_runtime/quest_cli.py +216 -0
- package/runtime/prime/egregore_runtime/question_cli.py +180 -0
- package/runtime/prime/egregore_runtime/questions.py +304 -0
- package/runtime/prime/egregore_runtime/quests.py +419 -0
- package/runtime/prime/egregore_runtime/readiness.py +379 -0
- package/runtime/prime/egregore_runtime/research_ingest.py +256 -0
- package/runtime/prime/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/prime/egregore_runtime/runtime.py +464 -0
- package/runtime/prime/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/prime/egregore_runtime/scrolls.py +726 -0
- package/runtime/prime/egregore_runtime/status.py +412 -0
- package/runtime/prime/egregore_runtime/status_cli.py +174 -0
- package/runtime/prime/egregore_runtime/sync.py +218 -0
- package/runtime/prime/egregore_runtime/teamsync.py +139 -0
- package/runtime/prime/egregore_runtime/telemetry.py +640 -0
- package/runtime/prime/egregore_runtime/thread_cli.py +173 -0
- package/runtime/prime/egregore_runtime/threads.py +517 -0
- package/runtime/prime/egregore_runtime/todo_cli.py +142 -0
- package/runtime/prime/egregore_runtime/todos.py +244 -0
- package/runtime/prime/egregore_runtime/upgrade.py +770 -0
- package/runtime/prime/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/prime/egregore_runtime/writeback.py +391 -0
- package/runtime/prime/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/prime/manifest.json +98 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Detached reconciliation worker for explicit captures.
|
|
5
|
+
# The foreground path only appends to graph-wal.sh; this worker pays network
|
|
6
|
+
# latency and retries queued writes. It may propose completion notifications,
|
|
7
|
+
# but detached reconciliation never approves or dispatches them.
|
|
8
|
+
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
10
|
+
MODE="$(jq -r '.mode // "connected"' "$SCRIPT_DIR/egregore.json" 2>/dev/null || echo connected)"
|
|
11
|
+
[ "$MODE" = "connected" ] || exit 0
|
|
12
|
+
|
|
13
|
+
SESSION_ID=""
|
|
14
|
+
AUTHOR=""
|
|
15
|
+
SUMMARY=""
|
|
16
|
+
while [ $# -gt 0 ]; do
|
|
17
|
+
case "$1" in
|
|
18
|
+
--session-id) SESSION_ID="${2:-}"; shift 2 ;;
|
|
19
|
+
--author) AUTHOR="${2:-}"; shift 2 ;;
|
|
20
|
+
--summary) SUMMARY="${2:-}"; shift 2 ;;
|
|
21
|
+
*) echo "Unknown reconcile option: $1" >&2; exit 1 ;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
[ -n "$SESSION_ID" ] || exit 0
|
|
25
|
+
|
|
26
|
+
# Applies Session capture first, then the idempotent handoff transition.
|
|
27
|
+
bash "$SCRIPT_DIR/bin/graph-wal.sh" drain >/dev/null 2>&1 || exit 0
|
|
28
|
+
|
|
29
|
+
# Claim completion notifications atomically. A stale claim can be retried;
|
|
30
|
+
# successful sends are permanently marked on the IMPLEMENTS relationship.
|
|
31
|
+
# shellcheck disable=SC2016 # $name tokens are Cypher parameters.
|
|
32
|
+
CLAIM_CYPHER='
|
|
33
|
+
MATCH (impl:Session {id: $sessionId})-[r:IMPLEMENTS]->(ho:Session)-[:BY]->(origin:Person)
|
|
34
|
+
WHERE ho.handoffStatus = "done"
|
|
35
|
+
AND r.completionNotifiedAt IS NULL
|
|
36
|
+
AND r.completionNotifyProposedAt IS NULL
|
|
37
|
+
AND (r.completionNotifyClaimedAt IS NULL
|
|
38
|
+
OR r.completionNotifyClaimedAt < datetime() - duration("PT1H"))
|
|
39
|
+
SET r.completionNotifyClaimedAt = datetime()
|
|
40
|
+
RETURN ho.id AS handoffId, ho.topic AS topic,
|
|
41
|
+
coalesce(origin.github, origin.name) AS recipient'
|
|
42
|
+
PARAMS="$(jq -nc --arg sessionId "$SESSION_ID" '{sessionId:$sessionId}')"
|
|
43
|
+
CLAIMS="$(bash "$SCRIPT_DIR/bin/graph.sh" query "$CLAIM_CYPHER" "$PARAMS" 2>/dev/null || echo '{}')"
|
|
44
|
+
|
|
45
|
+
printf '%s' "$CLAIMS" | jq -r '.values[]? | @tsv' 2>/dev/null |
|
|
46
|
+
while IFS=$'\t' read -r handoff_id topic recipient; do
|
|
47
|
+
[ -n "$handoff_id" ] && [ -n "$recipient" ] || continue
|
|
48
|
+
message="${AUTHOR:-A teammate} completed your handoff '${topic:-$handoff_id}'"
|
|
49
|
+
[ -n "$SUMMARY" ] && message="${message} — $(printf '%s' "$SUMMARY" | tr '\n' ' ' | cut -c1-180)"
|
|
50
|
+
|
|
51
|
+
notify_result="$(bash "$SCRIPT_DIR/bin/notify.sh" plan send "$recipient" "$message" 2>/dev/null || echo '{}')"
|
|
52
|
+
if printf '%s' "$notify_result" | jq -e '.status == "approval_required"' >/dev/null 2>&1; then
|
|
53
|
+
bash "$SCRIPT_DIR/bin/graph.sh" query '
|
|
54
|
+
MATCH (impl:Session {id: $sessionId})-[r:IMPLEMENTS]->(ho:Session {id: $handoffId})
|
|
55
|
+
SET r.completionNotifyProposedAt = datetime(),
|
|
56
|
+
r.completionNotifyClaimedAt = null
|
|
57
|
+
RETURN ho.id AS id
|
|
58
|
+
' "$(jq -nc --arg sessionId "$SESSION_ID" --arg handoffId "$handoff_id" \
|
|
59
|
+
'{sessionId:$sessionId,handoffId:$handoffId}')" >/dev/null 2>&1 || true
|
|
60
|
+
else
|
|
61
|
+
bash "$SCRIPT_DIR/bin/graph.sh" query '
|
|
62
|
+
MATCH (impl:Session {id: $sessionId})-[r:IMPLEMENTS]->(ho:Session {id: $handoffId})
|
|
63
|
+
SET r.completionNotifyClaimedAt = null,
|
|
64
|
+
r.completionNotifyProposalFailedAt = datetime()
|
|
65
|
+
RETURN ho.id AS id
|
|
66
|
+
' "$(jq -nc --arg sessionId "$SESSION_ID" --arg handoffId "$handoff_id" \
|
|
67
|
+
'{sessionId:$sessionId,handoffId:$handoffId}')" >/dev/null 2>&1 || true
|
|
68
|
+
fi
|
|
69
|
+
done
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Shared capture engine for the three ways an Egregore session leaves a trace.
|
|
5
|
+
#
|
|
6
|
+
# addressed /handoff: rich team handoff (delegates to the addressed worker)
|
|
7
|
+
# personal /wrap: explicit personal close
|
|
8
|
+
# baseline SessionEnd: automatic, loss-prevention trace
|
|
9
|
+
#
|
|
10
|
+
# Lifecycle reconciliation is never performed on the caller's critical path.
|
|
11
|
+
# Connected-mode captures append idempotent graph statements to graph-wal.sh
|
|
12
|
+
# and optionally start capture-reconcile.sh as a detached worker.
|
|
13
|
+
|
|
14
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
15
|
+
CONFIG="$SCRIPT_DIR/egregore.json"
|
|
16
|
+
CAPTURE_SCHEMA="egregore-capture/v1"
|
|
17
|
+
GRAPH_ENABLED="${EGREGORE_GRAPH_PROJECTION:-0}"
|
|
18
|
+
|
|
19
|
+
queue_handoff_completion() {
|
|
20
|
+
local session_id="$1"
|
|
21
|
+
[ -n "$session_id" ] || return 0
|
|
22
|
+
# shellcheck disable=SC2016 # $name tokens are Cypher parameters.
|
|
23
|
+
local cypher='
|
|
24
|
+
MATCH (impl:Session {id: $sessionId})-[:IMPLEMENTS]->(ho:Session)
|
|
25
|
+
MATCH (impl)-[:BY]->(recipient:Person)
|
|
26
|
+
MATCH (ho)-[:HANDED_TO]->(recipient)
|
|
27
|
+
WHERE coalesce(ho.handoffStatus, "pending") IN ["pending","read","claimed"]
|
|
28
|
+
AND coalesce(ho.handoffLifecycleVersion, 0) >= 1
|
|
29
|
+
WITH DISTINCT ho, size([(ho)-[:HANDED_TO]->(:Person) | 1]) AS recipientCount
|
|
30
|
+
WHERE recipientCount = 1
|
|
31
|
+
SET ho.handoffStatus = "done",
|
|
32
|
+
ho.handoffDoneAt = coalesce(ho.handoffDoneAt, datetime()),
|
|
33
|
+
ho.handoffUpdatedAt = datetime(),
|
|
34
|
+
ho.handoffLifecycleReason = "single_recipient_implemented",
|
|
35
|
+
ho.handoffLifecycleVersion = 1
|
|
36
|
+
RETURN ho.id AS id'
|
|
37
|
+
local params
|
|
38
|
+
params="$(jq -nc --arg sessionId "$session_id" '{sessionId:$sessionId}')"
|
|
39
|
+
GRAPH_WAL_LOCK_ATTEMPTS=1 \
|
|
40
|
+
bash "$SCRIPT_DIR/bin/graph-wal.sh" append "$cypher" "$params" >/dev/null 2>&1 || true
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
start_reconcile() {
|
|
44
|
+
local session_id="$1"
|
|
45
|
+
local author="$2"
|
|
46
|
+
local summary="$3"
|
|
47
|
+
[ -n "$session_id" ] || return 0
|
|
48
|
+
(
|
|
49
|
+
bash "$SCRIPT_DIR/bin/capture-reconcile.sh" \
|
|
50
|
+
--session-id "$session_id" \
|
|
51
|
+
--author "$author" \
|
|
52
|
+
--summary "$summary" >/dev/null 2>&1 &
|
|
53
|
+
) >/dev/null 2>&1
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
usage() {
|
|
57
|
+
cat <<'EOF'
|
|
58
|
+
Usage:
|
|
59
|
+
capture-run.sh --mode addressed [handoff-run options] < handoff.md
|
|
60
|
+
capture-run.sh --mode personal|baseline --author HANDLE --topic TOPIC
|
|
61
|
+
--summary SUMMARY [--session-id ID] [--branch BRANCH] [--date ISO]
|
|
62
|
+
[--duration TEXT] [--open-threads-json JSON] [--no-push]
|
|
63
|
+
[--async-push] [--no-reconcile] < details.md
|
|
64
|
+
EOF
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
|
68
|
+
usage
|
|
69
|
+
exit 0
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
CAPTURE_MODE=""
|
|
73
|
+
if [ "${1:-}" = "--mode" ]; then
|
|
74
|
+
CAPTURE_MODE="${2:-}"
|
|
75
|
+
shift 2
|
|
76
|
+
fi
|
|
77
|
+
[ -n "$CAPTURE_MODE" ] || {
|
|
78
|
+
echo "Missing --mode (addressed|personal|baseline)" >&2
|
|
79
|
+
exit 1
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
case "$CAPTURE_MODE" in
|
|
83
|
+
addressed)
|
|
84
|
+
# Keep the mature publishing/notification worker intact behind the shared
|
|
85
|
+
# entry point. It continues writing its compatibility result file.
|
|
86
|
+
ADDRESSED_AUTHOR=""
|
|
87
|
+
ADDRESSED_TOPIC=""
|
|
88
|
+
PREV=""
|
|
89
|
+
for VALUE in "$@"; do
|
|
90
|
+
if [ "$PREV" = "--author" ]; then ADDRESSED_AUTHOR="$VALUE"; fi
|
|
91
|
+
if [ "$PREV" = "--topic" ]; then ADDRESSED_TOPIC="$VALUE"; fi
|
|
92
|
+
PREV="$VALUE"
|
|
93
|
+
done
|
|
94
|
+
|
|
95
|
+
if bash "$SCRIPT_DIR/bin/handoff-run.sh" "$@"; then
|
|
96
|
+
status=0
|
|
97
|
+
else
|
|
98
|
+
status=$?
|
|
99
|
+
fi
|
|
100
|
+
old_result="${TMPDIR:-/tmp}/handoff-run-result.json"
|
|
101
|
+
capture_result="${TMPDIR:-/tmp}/capture-run-result.json"
|
|
102
|
+
if [ -s "$old_result" ]; then
|
|
103
|
+
jq --arg schema "$CAPTURE_SCHEMA" --arg captureMode "$CAPTURE_MODE" \
|
|
104
|
+
'. + {captureSchema:$schema,captureMode:$captureMode}' \
|
|
105
|
+
"$old_result" > "$capture_result" 2>/dev/null || cp "$old_result" "$capture_result"
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
# Addressed capture is also explicit session-close evidence. Queue the
|
|
109
|
+
# same guarded transition as /wrap after the addressed worker has marked
|
|
110
|
+
# the current Session handed_off.
|
|
111
|
+
ADDRESSED_CONFIG_MODE="$(jq -r '.mode // "connected"' "$CONFIG" 2>/dev/null || echo connected)"
|
|
112
|
+
if [ "$status" = "0" ] && [ "$ADDRESSED_CONFIG_MODE" = "connected" ] && [ "$GRAPH_ENABLED" = "1" ]; then
|
|
113
|
+
CURRENT_SID="$(cat "$SCRIPT_DIR/.egregore-session-id" 2>/dev/null || true)"
|
|
114
|
+
if [ -z "$CURRENT_SID" ]; then
|
|
115
|
+
PROJ_HASH="$(printf '%s' "$SCRIPT_DIR" | md5 2>/dev/null || printf '%s' "$SCRIPT_DIR" | md5sum 2>/dev/null | cut -d' ' -f1)"
|
|
116
|
+
CURRENT_SID="$(cat "$HOME/.egregore/session-${PROJ_HASH}.id" 2>/dev/null || true)"
|
|
117
|
+
fi
|
|
118
|
+
queue_handoff_completion "$CURRENT_SID"
|
|
119
|
+
start_reconcile "$CURRENT_SID" "$ADDRESSED_AUTHOR" "$ADDRESSED_TOPIC"
|
|
120
|
+
fi
|
|
121
|
+
exit "$status"
|
|
122
|
+
;;
|
|
123
|
+
personal|baseline) ;;
|
|
124
|
+
*)
|
|
125
|
+
echo "Invalid --mode: $CAPTURE_MODE (addressed|personal|baseline)" >&2
|
|
126
|
+
exit 1
|
|
127
|
+
;;
|
|
128
|
+
esac
|
|
129
|
+
|
|
130
|
+
AUTHOR=""
|
|
131
|
+
DISPLAY_NAME=""
|
|
132
|
+
TOPIC=""
|
|
133
|
+
SUMMARY=""
|
|
134
|
+
SESSION_ID=""
|
|
135
|
+
BRANCH=""
|
|
136
|
+
CAPTURE_DATE=""
|
|
137
|
+
DURATION=""
|
|
138
|
+
OPEN_THREADS_JSON="[]"
|
|
139
|
+
NO_PUSH=0
|
|
140
|
+
ASYNC_PUSH=0
|
|
141
|
+
NO_RECONCILE=0
|
|
142
|
+
|
|
143
|
+
while [ $# -gt 0 ]; do
|
|
144
|
+
case "$1" in
|
|
145
|
+
--author) AUTHOR="${2:-}"; shift 2 ;;
|
|
146
|
+
--display-name) DISPLAY_NAME="${2:-}"; shift 2 ;;
|
|
147
|
+
--topic) TOPIC="${2:-}"; shift 2 ;;
|
|
148
|
+
--summary) SUMMARY="${2:-}"; shift 2 ;;
|
|
149
|
+
--session-id) SESSION_ID="${2:-}"; shift 2 ;;
|
|
150
|
+
--branch) BRANCH="${2:-}"; shift 2 ;;
|
|
151
|
+
--date) CAPTURE_DATE="${2:-}"; shift 2 ;;
|
|
152
|
+
--duration) DURATION="${2:-}"; shift 2 ;;
|
|
153
|
+
--open-threads-json) OPEN_THREADS_JSON="${2:-[]}"; shift 2 ;;
|
|
154
|
+
--no-push) NO_PUSH=1; shift ;;
|
|
155
|
+
--async-push) ASYNC_PUSH=1; shift ;;
|
|
156
|
+
--no-reconcile) NO_RECONCILE=1; shift ;;
|
|
157
|
+
--no-index|--no-publish|--no-notify) shift ;; # addressed-only compatibility flags
|
|
158
|
+
*) echo "Unknown capture option: $1" >&2; exit 1 ;;
|
|
159
|
+
esac
|
|
160
|
+
done
|
|
161
|
+
|
|
162
|
+
AUTHOR="$(printf '%s' "$AUTHOR" | tr -cd 'a-zA-Z0-9_-')"
|
|
163
|
+
[ -n "$AUTHOR" ] || { echo "Missing --author" >&2; exit 1; }
|
|
164
|
+
[ -n "$TOPIC" ] || { echo "Missing --topic" >&2; exit 1; }
|
|
165
|
+
[ -n "$SUMMARY" ] || SUMMARY="$TOPIC"
|
|
166
|
+
if ! printf '%s' "$OPEN_THREADS_JSON" | jq -e 'type == "array"' >/dev/null 2>&1; then
|
|
167
|
+
echo "Invalid --open-threads-json: expected an array" >&2
|
|
168
|
+
exit 1
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
DETAILS="$(cat /dev/stdin 2>/dev/null || true)"
|
|
172
|
+
NOW="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
173
|
+
[ -n "$CAPTURE_DATE" ] || CAPTURE_DATE="$NOW"
|
|
174
|
+
DATE_ONLY="$(printf '%s' "$CAPTURE_DATE" | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}' || true)"
|
|
175
|
+
[ -n "$DATE_ONLY" ] || DATE_ONLY="$(date +%Y-%m-%d)"
|
|
176
|
+
YYYY_MM="${DATE_ONLY%??}"
|
|
177
|
+
YYYY_MM="${YYYY_MM%-}"
|
|
178
|
+
DD="${DATE_ONLY##*-}"
|
|
179
|
+
[ -n "$BRANCH" ] || BRANCH="$(git -C "$SCRIPT_DIR" branch --show-current 2>/dev/null || true)"
|
|
180
|
+
[ -n "$BRANCH" ] || BRANCH="develop"
|
|
181
|
+
|
|
182
|
+
slugify() {
|
|
183
|
+
printf '%s' "$1" \
|
|
184
|
+
| tr '[:upper:]' '[:lower:]' \
|
|
185
|
+
| sed -E 's/[^a-z0-9]+/-/g; s/^-+|-+$//g' \
|
|
186
|
+
| cut -c1-50
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
SLUG="$(slugify "$TOPIC")"
|
|
190
|
+
[ -n "$SLUG" ] || SLUG="session"
|
|
191
|
+
AUTHOR_LC="$(printf '%s' "$AUTHOR" | tr '[:upper:]' '[:lower:]')"
|
|
192
|
+
|
|
193
|
+
yaml_scalar() {
|
|
194
|
+
# JSON strings are valid YAML scalars and preserve punctuation safely.
|
|
195
|
+
jq -Rn --arg value "$1" '$value'
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if [ "$CAPTURE_MODE" = "personal" ]; then
|
|
199
|
+
REL_FILE="wraps/${YYYY_MM}/${DD}-${AUTHOR_LC}-${SLUG}.md"
|
|
200
|
+
TITLE_PREFIX="Wrap"
|
|
201
|
+
else
|
|
202
|
+
REL_FILE="sessions/${YYYY_MM}/${DD}-${AUTHOR_LC}-${SLUG}.md"
|
|
203
|
+
TITLE_PREFIX="Session"
|
|
204
|
+
fi
|
|
205
|
+
ABS_FILE="$SCRIPT_DIR/memory/$REL_FILE"
|
|
206
|
+
mkdir -p "$(dirname "$ABS_FILE")"
|
|
207
|
+
|
|
208
|
+
# Never overwrite an existing capture. Session IDs make concurrent same-topic
|
|
209
|
+
# sessions deterministic while retaining the human-readable prefix.
|
|
210
|
+
if [ -e "$ABS_FILE" ]; then
|
|
211
|
+
suffix="$(printf '%s' "${SESSION_ID:-$NOW}" | tr -cd 'a-zA-Z0-9' | tail -c 7)"
|
|
212
|
+
[ -n "$suffix" ] || suffix="2"
|
|
213
|
+
ABS_FILE="${ABS_FILE%.md}-${suffix}.md"
|
|
214
|
+
REL_FILE="${REL_FILE%.md}-${suffix}.md"
|
|
215
|
+
fi
|
|
216
|
+
|
|
217
|
+
{
|
|
218
|
+
printf '%s\n' '---'
|
|
219
|
+
printf 'capture_schema: %s\n' "$CAPTURE_SCHEMA"
|
|
220
|
+
printf 'capture_mode: %s\n' "$CAPTURE_MODE"
|
|
221
|
+
printf 'kind: %s\n' "$CAPTURE_MODE"
|
|
222
|
+
printf 'from: %s\n' "$(yaml_scalar "$AUTHOR_LC")"
|
|
223
|
+
printf 'date: %s\n' "$DATE_ONLY"
|
|
224
|
+
printf 'topic: %s\n' "$(yaml_scalar "$TOPIC")"
|
|
225
|
+
printf 'status: active\n'
|
|
226
|
+
printf '%s\n\n' '---'
|
|
227
|
+
printf '# %s: %s\n\n' "$TITLE_PREFIX" "$TOPIC"
|
|
228
|
+
printf '**Capture Schema**: %s\n' "$CAPTURE_SCHEMA"
|
|
229
|
+
printf '**Capture Mode**: %s\n' "$CAPTURE_MODE"
|
|
230
|
+
printf '**Date**: %s\n' "$CAPTURE_DATE"
|
|
231
|
+
printf '**Author**: %s\n' "${DISPLAY_NAME:-$AUTHOR}"
|
|
232
|
+
printf '**To**: %s\n' "$AUTHOR"
|
|
233
|
+
printf '**Branch**: %s\n' "$BRANCH"
|
|
234
|
+
[ -n "$SESSION_ID" ] && printf '**Session**: %s\n' "$SESSION_ID"
|
|
235
|
+
[ -n "$DURATION" ] && printf '**Duration**: %s\n' "$DURATION"
|
|
236
|
+
printf '\n## Summary\n\n%s\n' "$SUMMARY"
|
|
237
|
+
if [ -n "$DETAILS" ]; then
|
|
238
|
+
if [ "$CAPTURE_MODE" = "personal" ]; then
|
|
239
|
+
printf '\n## Notes\n\n%s\n' "$DETAILS"
|
|
240
|
+
else
|
|
241
|
+
printf '\n%s\n' "$DETAILS"
|
|
242
|
+
fi
|
|
243
|
+
fi
|
|
244
|
+
} > "$ABS_FILE"
|
|
245
|
+
|
|
246
|
+
memory_save() {
|
|
247
|
+
local message="$1"
|
|
248
|
+
(
|
|
249
|
+
cd "$SCRIPT_DIR/memory" 2>/dev/null || exit 0
|
|
250
|
+
git add "$REL_FILE" >/dev/null 2>&1 || exit 0
|
|
251
|
+
git commit --only --quiet -m "$message" -- "$REL_FILE" >/dev/null 2>&1 || true
|
|
252
|
+
if git remote get-url origin >/dev/null 2>&1; then
|
|
253
|
+
local _
|
|
254
|
+
for _ in 1 2 3; do
|
|
255
|
+
git pull --rebase origin main --quiet >/dev/null 2>&1 || true
|
|
256
|
+
git push origin main --quiet >/dev/null 2>&1 && exit 0
|
|
257
|
+
sleep 1
|
|
258
|
+
done
|
|
259
|
+
exit 1
|
|
260
|
+
fi
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
MEMORY_STATUS="skipped"
|
|
265
|
+
if [ "$NO_PUSH" = "0" ]; then
|
|
266
|
+
if [ "$ASYNC_PUSH" = "1" ]; then
|
|
267
|
+
( memory_save "Capture: ${AUTHOR} — ${TOPIC}" >/dev/null 2>&1 & ) >/dev/null 2>&1
|
|
268
|
+
MEMORY_STATUS="queued"
|
|
269
|
+
elif memory_save "Capture: ${AUTHOR} — ${TOPIC}"; then
|
|
270
|
+
MEMORY_STATUS="ok"
|
|
271
|
+
else
|
|
272
|
+
MEMORY_STATUS="failed"
|
|
273
|
+
fi
|
|
274
|
+
fi
|
|
275
|
+
|
|
276
|
+
GRAPH_STATUS="skipped"
|
|
277
|
+
MODE="$(jq -r '.mode // "connected"' "$CONFIG" 2>/dev/null || echo connected)"
|
|
278
|
+
if [ "$MODE" = "connected" ] && [ "$GRAPH_ENABLED" = "1" ] && [ -n "$SESSION_ID" ]; then
|
|
279
|
+
# shellcheck disable=SC2016 # $name tokens are Cypher parameters.
|
|
280
|
+
CAPTURE_CYPHER='
|
|
281
|
+
MERGE (s:Session {id: $sessionId})
|
|
282
|
+
ON CREATE SET s.date = date($date), s.startedAt = datetime($capturedAt)
|
|
283
|
+
SET s.topic = $topic,
|
|
284
|
+
s.summary = $summary,
|
|
285
|
+
s.filePath = $filePath,
|
|
286
|
+
s.branch = $branch,
|
|
287
|
+
s.captureSchema = $captureSchema,
|
|
288
|
+
s.captureMode = $captureMode,
|
|
289
|
+
s.captureUpdatedAt = datetime()
|
|
290
|
+
FOREACH (_ IN CASE WHEN $captureMode = "personal" THEN [1] ELSE [] END |
|
|
291
|
+
SET s.status = "wrapped",
|
|
292
|
+
s.wrappedAt = coalesce(s.wrappedAt, datetime()),
|
|
293
|
+
s.openThreads = $openThreads)
|
|
294
|
+
FOREACH (_ IN CASE WHEN $captureMode = "baseline" THEN [1] ELSE [] END |
|
|
295
|
+
SET s.status = CASE
|
|
296
|
+
WHEN s.status IN ["wrapped","handed_off","completed"] THEN s.status
|
|
297
|
+
ELSE "captured"
|
|
298
|
+
END,
|
|
299
|
+
s.endedAt = coalesce(s.endedAt, datetime()))
|
|
300
|
+
WITH s
|
|
301
|
+
OPTIONAL MATCH (p:Person)
|
|
302
|
+
WHERE toLower(p.name) = toLower($author)
|
|
303
|
+
OR toLower(coalesce(p.github, "")) = toLower($author)
|
|
304
|
+
FOREACH (_ IN CASE WHEN p IS NOT NULL THEN [1] ELSE [] END |
|
|
305
|
+
MERGE (s)-[:BY]->(p))
|
|
306
|
+
RETURN s.id AS id'
|
|
307
|
+
CAPTURE_PARAMS="$(jq -nc \
|
|
308
|
+
--arg sessionId "$SESSION_ID" \
|
|
309
|
+
--arg date "$DATE_ONLY" \
|
|
310
|
+
--arg capturedAt "$NOW" \
|
|
311
|
+
--arg topic "$TOPIC" \
|
|
312
|
+
--arg summary "$SUMMARY" \
|
|
313
|
+
--arg filePath "$REL_FILE" \
|
|
314
|
+
--arg branch "$BRANCH" \
|
|
315
|
+
--arg captureSchema "$CAPTURE_SCHEMA" \
|
|
316
|
+
--arg captureMode "$CAPTURE_MODE" \
|
|
317
|
+
--arg author "$AUTHOR_LC" \
|
|
318
|
+
--argjson openThreads "$OPEN_THREADS_JSON" \
|
|
319
|
+
'{sessionId:$sessionId,date:$date,capturedAt:$capturedAt,topic:$topic,
|
|
320
|
+
summary:$summary,filePath:$filePath,branch:$branch,
|
|
321
|
+
captureSchema:$captureSchema,captureMode:$captureMode,author:$author,
|
|
322
|
+
openThreads:$openThreads}')"
|
|
323
|
+
GRAPH_WAL_LOCK_ATTEMPTS=1 \
|
|
324
|
+
bash "$SCRIPT_DIR/bin/graph-wal.sh" append "$CAPTURE_CYPHER" "$CAPTURE_PARAMS" >/dev/null 2>&1 || true
|
|
325
|
+
GRAPH_STATUS="queued"
|
|
326
|
+
|
|
327
|
+
# An explicit wrap is strong completion evidence. Queue the transition after
|
|
328
|
+
# the Session update; do not query the graph or wait for reconciliation here.
|
|
329
|
+
if [ "$CAPTURE_MODE" = "personal" ]; then
|
|
330
|
+
queue_handoff_completion "$SESSION_ID"
|
|
331
|
+
fi
|
|
332
|
+
|
|
333
|
+
if [ "$NO_RECONCILE" = "0" ] && [ "$CAPTURE_MODE" = "personal" ]; then
|
|
334
|
+
start_reconcile "$SESSION_ID" "$AUTHOR_LC" "$SUMMARY"
|
|
335
|
+
fi
|
|
336
|
+
fi
|
|
337
|
+
|
|
338
|
+
RESULT_FILE="${TMPDIR:-/tmp}/capture-run-result.json"
|
|
339
|
+
jq -nc \
|
|
340
|
+
--arg schema "$CAPTURE_SCHEMA" \
|
|
341
|
+
--arg captureMode "$CAPTURE_MODE" \
|
|
342
|
+
--arg file "$REL_FILE" \
|
|
343
|
+
--arg absFile "$ABS_FILE" \
|
|
344
|
+
--arg sessionId "$SESSION_ID" \
|
|
345
|
+
--arg memoryStatus "$MEMORY_STATUS" \
|
|
346
|
+
--arg graphStatus "$GRAPH_STATUS" \
|
|
347
|
+
'{
|
|
348
|
+
captureSchema:$schema,
|
|
349
|
+
captureMode:$captureMode,
|
|
350
|
+
file:$file,
|
|
351
|
+
absFile:$absFile,
|
|
352
|
+
sessionId:$sessionId,
|
|
353
|
+
memoryStatus:$memoryStatus,
|
|
354
|
+
graphStatus:$graphStatus
|
|
355
|
+
}' > "$RESULT_FILE"
|
|
356
|
+
|
|
357
|
+
printf 'capture: memory/%s\n' "$REL_FILE"
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Make Egregore's project-local Codex skills available without duplicating
|
|
3
|
+
# them in CODEX_HOME.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
7
|
+
SOURCE_DIR="$SCRIPT_DIR/.codex/skills"
|
|
8
|
+
HOOKS_FILE="$SCRIPT_DIR/.codex/hooks.json"
|
|
9
|
+
HOOKS_DIR="$SCRIPT_DIR/.codex/hooks"
|
|
10
|
+
CODEX_HOME_DIR="${CODEX_HOME:-$HOME/.codex}"
|
|
11
|
+
TARGET_DIR="$CODEX_HOME_DIR/skills"
|
|
12
|
+
|
|
13
|
+
[ -d "$SOURCE_DIR" ] || exit 0
|
|
14
|
+
|
|
15
|
+
# Current Codex discovers project skills via .agents/skills (and follows
|
|
16
|
+
# symlinks). The repo commits .agents/skills -> ../.codex/skills; repair it
|
|
17
|
+
# here for checkouts that lost the symlink (zip downloads, some Windows
|
|
18
|
+
# clones). Never clobber a real directory the user created.
|
|
19
|
+
AGENTS_DIR="$SCRIPT_DIR/.agents"
|
|
20
|
+
AGENTS_LINK="$AGENTS_DIR/skills"
|
|
21
|
+
if [ ! -e "$AGENTS_LINK" ] && [ ! -L "$AGENTS_LINK" ]; then
|
|
22
|
+
mkdir -p "$AGENTS_DIR"
|
|
23
|
+
ln -s ../.codex/skills "$AGENTS_LINK" 2>/dev/null || true
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
is_egregore_skill() {
|
|
27
|
+
local file="$1"
|
|
28
|
+
[ -f "$file" ] || return 1
|
|
29
|
+
grep -q 'Egregore' "$file" 2>/dev/null || return 1
|
|
30
|
+
grep -Eq 'bin/agent\.sh|bin/activity-data\.sh|bin/codex-skill-render\.mjs|Native Codex|generated-by: bin/codex-sync-skills\.sh|\.claude/skills' "$file" 2>/dev/null
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
installed=0
|
|
34
|
+
for skill_dir in "$SOURCE_DIR"/*; do
|
|
35
|
+
[ -d "$skill_dir" ] || continue
|
|
36
|
+
[ -f "$skill_dir/SKILL.md" ] || continue
|
|
37
|
+
installed=$((installed + 1))
|
|
38
|
+
done
|
|
39
|
+
|
|
40
|
+
# Current Codex loads project-local .codex/skills from --cd. Older Egregore
|
|
41
|
+
# builds copied the same skills globally, which makes Codex show duplicates.
|
|
42
|
+
# Default to local-only and remove legacy global copies that are recognizably
|
|
43
|
+
# Egregore-managed. Set EGREGORE_CODEX_INSTALL_GLOBAL=1 for older Codex builds.
|
|
44
|
+
if [ "${EGREGORE_CODEX_INSTALL_GLOBAL:-0}" != "1" ]; then
|
|
45
|
+
removed=0
|
|
46
|
+
if [ -d "$TARGET_DIR" ]; then
|
|
47
|
+
for skill_dir in "$SOURCE_DIR"/*; do
|
|
48
|
+
[ -d "$skill_dir" ] || continue
|
|
49
|
+
[ -f "$skill_dir/SKILL.md" ] || continue
|
|
50
|
+
name="$(basename "$skill_dir")"
|
|
51
|
+
target="$TARGET_DIR/$name/SKILL.md"
|
|
52
|
+
if cmp -s "$skill_dir/SKILL.md" "$target" 2>/dev/null || is_egregore_skill "$target"; then
|
|
53
|
+
rm -rf "$TARGET_DIR/$name"
|
|
54
|
+
removed=$((removed + 1))
|
|
55
|
+
fi
|
|
56
|
+
done
|
|
57
|
+
fi
|
|
58
|
+
hooks_ready=0
|
|
59
|
+
if [ -f "$HOOKS_FILE" ] && [ -d "$HOOKS_DIR" ]; then
|
|
60
|
+
hooks_ready=1
|
|
61
|
+
fi
|
|
62
|
+
echo "codex project skills ready: $installed (removed global duplicates: $removed; hooks ready: $hooks_ready)"
|
|
63
|
+
exit 0
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
mkdir -p "$TARGET_DIR"
|
|
67
|
+
|
|
68
|
+
copied=0
|
|
69
|
+
for skill_dir in "$SOURCE_DIR"/*; do
|
|
70
|
+
[ -d "$skill_dir" ] || continue
|
|
71
|
+
[ -f "$skill_dir/SKILL.md" ] || continue
|
|
72
|
+
name="$(basename "$skill_dir")"
|
|
73
|
+
mkdir -p "$TARGET_DIR/$name"
|
|
74
|
+
cp -R "$skill_dir/." "$TARGET_DIR/$name/"
|
|
75
|
+
copied=$((copied + 1))
|
|
76
|
+
done
|
|
77
|
+
|
|
78
|
+
echo "codex global skills installed: $copied"
|