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,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest
|
|
3
|
+
description: "Route and run organizational ingestion through Egregore Runtime for files, folders, meetings, Google Workspace, Notion, interviews, or bulk corpora. Use for 'ingest', 'bring this into Egregore', 'index this folder', or 'import our docs'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ingest
|
|
7
|
+
|
|
8
|
+
Route external material into an authorized intake plane, then promote selected
|
|
9
|
+
evidence into curated organizational memory. Do not collapse intake and
|
|
10
|
+
promotion.
|
|
11
|
+
|
|
12
|
+
## When to invoke
|
|
13
|
+
|
|
14
|
+
Route and run organizational ingestion through Egregore Runtime for files, folders, meetings, Google Workspace, Notion, interviews, or bulk corpora. Use for 'ingest', 'bring this into Egregore', 'index this folder', or 'import our docs'.
|
|
15
|
+
|
|
16
|
+
## Route
|
|
17
|
+
|
|
18
|
+
- One URL/document/reference → use the `add` skill and `bin/ingest-item.sh`.
|
|
19
|
+
- `meeting ...` → use the meeting skill.
|
|
20
|
+
- `user-interview ...` → use the ingest-user-interview skill.
|
|
21
|
+
- `google ...` → use the ingest-google skill.
|
|
22
|
+
- `notion ...` → use the ingest-notion skill.
|
|
23
|
+
- A large question-answering corpus or “build a knowledge base” → use the
|
|
24
|
+
ingest-corpus skill and keep its Connected capability gate.
|
|
25
|
+
- No readable path → `bash bin/ingest.sh select`.
|
|
26
|
+
- File/folder/export/bulk path → use the corpus pipeline below.
|
|
27
|
+
- Ambiguous → ask which source class applies; do not guess a connector.
|
|
28
|
+
|
|
29
|
+
Preserve connector authorization/revocation in connector-specific Runtime
|
|
30
|
+
adapters. This skill must not write connector lifecycle files or project state.
|
|
31
|
+
|
|
32
|
+
## Invariants
|
|
33
|
+
|
|
34
|
+
- Resolve organization only from the active Egregore instance, never content or
|
|
35
|
+
arguments.
|
|
36
|
+
- Keep selected/unverified bytes in gitignored local staging/quarantine.
|
|
37
|
+
- Canonical shared state contains admitted Markdown or reference manifests with
|
|
38
|
+
stable ids, revisions, provenance, boundaries, errors, and tombstones.
|
|
39
|
+
- Register canonical state successfully before any derived retrieval refresh.
|
|
40
|
+
- Hard boundaries are authorization filters, never descriptive tags. Missing
|
|
41
|
+
required boundary evidence fails closed.
|
|
42
|
+
- Graph projection is optional and cannot complete, block, or override intake.
|
|
43
|
+
- Telemetry contains structured counts/status only, never source content.
|
|
44
|
+
|
|
45
|
+
## Local selection
|
|
46
|
+
|
|
47
|
+
When no path was provided:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
bash bin/ingest.sh select
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If cancelled, stop. If it returns a Google or Notion connector, continue in
|
|
54
|
+
that connector skill. Otherwise always submit the reviewed selection:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
bash bin/ingest.sh add-selection "$SELECTION_PATH"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The selection adapter verifies staging containment, relative paths, byte
|
|
61
|
+
counts, and hashes before extraction. Register harness-native extraction for a
|
|
62
|
+
selected PDF only when the reader actually produced normalized text:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
bash bin/ingest.sh register-extraction "$SELECTION_PATH" \
|
|
66
|
+
"relative/file.pdf" --extractor "$EXTRACTOR" < normalized.txt
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Report unreadable/scanned pages; never imply complete extraction.
|
|
70
|
+
|
|
71
|
+
## Corpus intake
|
|
72
|
+
|
|
73
|
+
Infer only safe metadata. Ask for a stable source id, sensitivity/visibility,
|
|
74
|
+
hard boundaries, and whether the directory is an authoritative snapshot.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
bash bin/ingest.sh add "$PATH" \
|
|
78
|
+
--source "$SOURCE_ID" \
|
|
79
|
+
--name "$NAME" \
|
|
80
|
+
--kind "$KIND" \
|
|
81
|
+
--boundary "$KEY=$VALUE"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Repeat boundaries. Use `--prune` only for an explicitly authoritative full
|
|
85
|
+
snapshot. The adapter owns deterministic extraction, stable document/chunk
|
|
86
|
+
identity, local quarantine, canonical manifest registration, retrieval refresh,
|
|
87
|
+
and background embedding. Skills do not invoke those mechanics separately.
|
|
88
|
+
|
|
89
|
+
## Verify
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
bash bin/ingest.sh status
|
|
93
|
+
bash bin/ingest.sh search "a known phrase" --source "$SOURCE_ID" -n 5
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Include every required hard boundary in verification searches. Open exact
|
|
97
|
+
evidence before making consequential claims. Report indexed/skipped/failed
|
|
98
|
+
counts and gaps honestly.
|
|
99
|
+
|
|
100
|
+
## Promote
|
|
101
|
+
|
|
102
|
+
Intake is not curated knowledge. Retrieve candidate evidence, open its exact
|
|
103
|
+
source, then use the appropriate Runtime ritual for a decision, finding,
|
|
104
|
+
research synthesis, meeting, or domain claim. Preserve source id, document id,
|
|
105
|
+
revision/content hash, exact chunk ids, boundaries, reviewer, confidence, and
|
|
106
|
+
conflicts. No evidence chunk means no promoted claim.
|
|
107
|
+
|
|
108
|
+
## Completion
|
|
109
|
+
|
|
110
|
+
Report source id, documents/chunks admitted, extraction failures, boundaries,
|
|
111
|
+
canonical manifest/writeback status, semantic-build state, and next review or
|
|
112
|
+
promotion step. Do not run a second save, index, telemetry, or projection step.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest-corpus
|
|
3
|
+
description: "Turn a large folder of documents into a Connect-only knowledge base that answers questions with sources. Say 'build a knowledge base'. Not a few files (/ingest) or a meeting/Notion/Google source."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Turn a folder of documents into a knowledge base that answers questions with its sources.
|
|
7
|
+
|
|
8
|
+
## When to invoke
|
|
9
|
+
|
|
10
|
+
`/ingest` routes here when the user brings **a body of documents to be asked questions of** —
|
|
11
|
+
a research archive, a contract set, a manual library, a regulatory corpus. Signals: hundreds
|
|
12
|
+
or thousands of files, subject folders, "make this searchable", "build a knowledge base",
|
|
13
|
+
"I want to ask these questions".
|
|
14
|
+
|
|
15
|
+
Not this: a handful of files to keep for reference → the plain `/ingest` path · a meeting
|
|
16
|
+
recording → `ingest-meeting` · a Notion or Google source → those connectors.
|
|
17
|
+
|
|
18
|
+
## Step 0 — Connected mode only
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
MODE=$(jq -r '.mode // "connected"' egregore.json 2>/dev/null)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If `mode` is `local`, stop and tell the user:
|
|
25
|
+
|
|
26
|
+
> Building a knowledge base needs Egregore Connect. The statements it produces
|
|
27
|
+
> are shared through the graph, so your team asks one archive rather than each
|
|
28
|
+
> keeping a private copy. This configuration has no graph.
|
|
29
|
+
>
|
|
30
|
+
> Plain `/ingest` still works — it stores your documents and makes them
|
|
31
|
+
> searchable on this machine.
|
|
32
|
+
|
|
33
|
+
Then stop. Do not run the survey, and do not offer a way to turn Connect on.
|
|
34
|
+
|
|
35
|
+
## What makes this different from plain ingest
|
|
36
|
+
|
|
37
|
+
Plain ingest stores documents and makes them searchable. This additionally works out **which
|
|
38
|
+
document may answer which question**, extracts the sentences that carry advice, and checks
|
|
39
|
+
each one against the sentence it came from.
|
|
40
|
+
|
|
41
|
+
That needs a profile: which folder means which region or client, which source outranks which,
|
|
42
|
+
and what a sentence carrying advice looks like in the language the documents are written in.
|
|
43
|
+
Nobody can write that file cold. So it is generated from a survey plus two answers.
|
|
44
|
+
|
|
45
|
+
## Step 1 — Look before asking
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python3 bin/corpus_survey.py # or: python3 -c "import sys;sys.path.append('bin');import corpus_survey as cs;print(cs.summarise(cs.survey('<path>')))"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Show the user what was found, verbatim — document count, folders with counts, file types,
|
|
52
|
+
detected language, and every note. **Do not summarise away the notes.** They carry the things
|
|
53
|
+
that will otherwise be discovered from an empty result: a language with no grammar, files that
|
|
54
|
+
cannot be read, a spreadsheet sitting beside the documents.
|
|
55
|
+
|
|
56
|
+
## Step 2 — Ask what must be kept apart
|
|
57
|
+
|
|
58
|
+
Only if the survey reports more than one group. One group means there is nothing to separate,
|
|
59
|
+
so ask nothing.
|
|
60
|
+
|
|
61
|
+
Use `AskUserQuestion` with the question `corpus_survey.boundary_question()` returns. It already
|
|
62
|
+
carries the user's own folder names and states the consequence. Keep both options in the order
|
|
63
|
+
given: **keeping them together is first**, because most folder structures are subjects, and
|
|
64
|
+
separating subjects removes real answers.
|
|
65
|
+
|
|
66
|
+
If the user separates them, ask what the groups are — clients, regions, products, versions —
|
|
67
|
+
and use that word as the boundary key.
|
|
68
|
+
|
|
69
|
+
## Step 3 — Ask which source wins
|
|
70
|
+
|
|
71
|
+
Use `corpus_survey.trust_question()`. The user ranks the groups, or picks "Don't know".
|
|
72
|
+
|
|
73
|
+
"Don't know" is a real answer and must stay on offer. It leaves every source equal, so a
|
|
74
|
+
disagreement is shown rather than resolved — which is honest, and better than a ranking nobody
|
|
75
|
+
chose.
|
|
76
|
+
|
|
77
|
+
## Step 4 — Write the profile
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
import corpus_profile as cp
|
|
81
|
+
profile = cp.build(survey, separate_groups=<bool>, trust_order=[...], boundary_key="<word>")
|
|
82
|
+
cp.write(profile, "memory/knowledge/tools/<name>-ontology/publisher-profile.json")
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Show `cp.summarise(profile)` to the user. Read out every line under `open` — those are the
|
|
86
|
+
things this profile will **not** do. A language with no grammar means those documents yield no
|
|
87
|
+
advice at all, and that must be said now rather than found later.
|
|
88
|
+
|
|
89
|
+
## Step 5 — Ingest
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
python3 bin/ingest.py add <path> --source <id> --boundary <key>=<value>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The profile is found automatically once it is under `memory/knowledge/tools/*/`. If ingest
|
|
96
|
+
warns that no profile was found, stop — every document will carry no region, and every later
|
|
97
|
+
question will be refused.
|
|
98
|
+
|
|
99
|
+
Expect roughly two hours per thousand documents. Run it in the background.
|
|
100
|
+
|
|
101
|
+
## Correcting the profile after ingest
|
|
102
|
+
|
|
103
|
+
A profile is usually wrong the first time in a way nothing reveals until questions
|
|
104
|
+
are asked of it — a publisher classed regional that is national, a tier too low. Fix
|
|
105
|
+
the profile, then apply it:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
python3 bin/ingest.py reresolve --source <id> --dry-run # what would change
|
|
109
|
+
python3 bin/ingest.py reresolve --source <id> # apply it
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Do not re-run `add` to apply a profile change.** It skips on the content hash and
|
|
113
|
+
returns before it consults the profile, so it reports every document unchanged and
|
|
114
|
+
applies nothing — which reads as the correction not working.
|
|
115
|
+
|
|
116
|
+
`reresolve` re-runs the resolver against each document's stored path. No file is
|
|
117
|
+
reopened and no text is re-extracted, so a corpus that took hours to ingest is
|
|
118
|
+
corrected in seconds. A boundary the operator stated with `--boundary`, or one the
|
|
119
|
+
catalogue recorded, is reported as `protected` and never overwritten.
|
|
120
|
+
|
|
121
|
+
Report `placed` (documents that had no zone and now have one) first. Those were
|
|
122
|
+
invisible: a zoneless passage is dropped before ranking, so they could not be
|
|
123
|
+
retrieved at all, however well they matched.
|
|
124
|
+
|
|
125
|
+
## Step 6 — Check it before handing it over
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
python3 bin/retrieval_eval.py --fixture <questions.json> --manifest <meta>/sources/<id>/manifest.json \
|
|
129
|
+
--data-root <root> --vocabulary <ontology>/*.json
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Report **boundary violations** first — the target is zero and anything else is a failure
|
|
133
|
+
regardless of how good the answers look.
|
|
134
|
+
|
|
135
|
+
Report the citation hit rate as **unavailable** unless someone who knows the subject has
|
|
136
|
+
confirmed which documents should answer each question. A hit rate computed from unconfirmed
|
|
137
|
+
expectations measures agreement with whoever wrote the fixture, not with the domain.
|
|
138
|
+
|
|
139
|
+
## Step 7 — Build the map, then spend only on demand
|
|
140
|
+
|
|
141
|
+
Intake made the documents retrievable. Do **not** run statement extraction over
|
|
142
|
+
the corpus wholesale — most passages are never retrieved, and extracting them
|
|
143
|
+
buys nothing. Build the map instead:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
python3 bin/corpus_map.py build --source <id> --map-dir memory/corpora/<name>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
One card per document — publisher, tier, zone, genre, the author's own abstract
|
|
150
|
+
verbatim — at **zero model cost**, in the memory repo where every agent can read
|
|
151
|
+
it. `index.md` is the whole corpus in one read; `map.jsonl` is the same thing
|
|
152
|
+
for grep and jq. Never re-ingest to find a document; read the map.
|
|
153
|
+
|
|
154
|
+
From then on the corpus runs a demand loop, and every step writes `ledger.md`:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
python3 bin/corpus_map.py retrieve --source <id> --question "…" --zone <zone> # BM25, zone-bounded
|
|
158
|
+
python3 bin/corpus_map.py touch <doc> --source <id> --question "…" # usage = curation signal
|
|
159
|
+
python3 bin/corpus_map.py promote <doc> --source <id> --reason "<the question>" # THIS document only
|
|
160
|
+
python3 bin/corpus_map.py validate <doc> --source <id> # claims checked against source
|
|
161
|
+
python3 bin/corpus_map.py answer --source <id> --question "…" --zone <zone> # invariants enforced
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Promotion is judgment applied to what a question needs, never to the corpus at
|
|
165
|
+
large. The deterministic path records the source's own sentences verbatim and
|
|
166
|
+
cannot misquote; a refined claim (slots file) is validated against the sentence
|
|
167
|
+
it came from. A refused answer is recorded in `gaps.md` — that file is the
|
|
168
|
+
curator's acquisition queue, not an apology. The ledger records the exact local
|
|
169
|
+
scan performed and its trigger. `corpus_map.py` makes no model call; any later
|
|
170
|
+
model or expert refinement must record its own actual cost rather than treating
|
|
171
|
+
promoted text as model input.
|
|
172
|
+
|
|
173
|
+
## What to tell the user at the end
|
|
174
|
+
|
|
175
|
+
- how many documents went in, and how many were skipped and why
|
|
176
|
+
- that answers carry their source and trust level, and that questions outside the boundary are refused
|
|
177
|
+
- what the profile will not do, from its `open` list
|
|
178
|
+
- that nobody has checked the answers yet, if nobody has
|
|
179
|
+
|
|
180
|
+
## Rules
|
|
181
|
+
|
|
182
|
+
- **Never write the profile without showing its `open` list.** Those are the silent failures.
|
|
183
|
+
- **Never present an unconfirmed accuracy figure.** Withhold it and say why.
|
|
184
|
+
- **A survey note is not noise.** Files that could not be read, an undetected language, and a
|
|
185
|
+
found spreadsheet all change what the knowledge base can do.
|
|
186
|
+
- The user answers questions about their own folders, by name. Never ask them to describe their
|
|
187
|
+
corpus in the abstract.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest-notion
|
|
3
|
+
description: "Bring selected Notion pages into shared Egregore memory via Notion's official MCP. Routed from /ingest when the source is Notion — say '/ingest notion'. Selected pages only, not a full-workspace sync."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Bring selected Notion pages into shared Egregore memory through Notion's official MCP.
|
|
7
|
+
|
|
8
|
+
Arguments: $ARGUMENTS (Optional: a page URL/ID, a topic or title to search, or `--auto`)
|
|
9
|
+
|
|
10
|
+
## When to invoke
|
|
11
|
+
|
|
12
|
+
Routed from `/ingest` when the source is Notion. Users normally say
|
|
13
|
+
`/ingest notion`; they do not need to connect Notion first.
|
|
14
|
+
|
|
15
|
+
## What this flow does
|
|
16
|
+
|
|
17
|
+
Notion MCP is the live bridge. This skill adds the memory layer:
|
|
18
|
+
|
|
19
|
+
1. connect to Notion when needed;
|
|
20
|
+
2. search or fetch what the user names;
|
|
21
|
+
3. show exactly what will be imported;
|
|
22
|
+
4. write only the approved pages into Egregore memory with provenance.
|
|
23
|
+
|
|
24
|
+
This is a selected-page flow. Do not offer full-workspace mirroring,
|
|
25
|
+
background sync, asset export, or `bulk --all`. Those belonged to the legacy
|
|
26
|
+
REST connector and are intentionally outside the MCP path.
|
|
27
|
+
|
|
28
|
+
## Step 0 — Ensure Notion MCP is available
|
|
29
|
+
|
|
30
|
+
Discover tools using the current runtime's registry:
|
|
31
|
+
|
|
32
|
+
- Claude Code: ToolSearch for `notion`.
|
|
33
|
+
- Codex/OpenAI: discover Notion tools; `notion-search`/`notion-fetch` may be
|
|
34
|
+
exposed as `search`/`fetch`.
|
|
35
|
+
- Other MCP clients: inspect tools from the server named `notion`.
|
|
36
|
+
|
|
37
|
+
Require both of these capabilities:
|
|
38
|
+
|
|
39
|
+
- search: `notion-search` or the Notion server's `search`
|
|
40
|
+
- fetch: `notion-fetch` or the Notion server's `fetch`
|
|
41
|
+
|
|
42
|
+
Do not match an unrelated web-search or generic fetch tool. Confirm the tool's
|
|
43
|
+
server/provider is Notion.
|
|
44
|
+
|
|
45
|
+
If either capability is missing, follow `.claude/skills/notion-connect/SKILL.md`
|
|
46
|
+
inside this flow. If the runtime loads the tools immediately, continue. If it
|
|
47
|
+
requires a restart, stop after the connection receipt; the next `/ingest notion`
|
|
48
|
+
resumes here.
|
|
49
|
+
|
|
50
|
+
There is no Connected-tier gate. Notion OAuth is between the user's runtime
|
|
51
|
+
and Notion, and imported files work in both local and connected Egregores.
|
|
52
|
+
|
|
53
|
+
## Step 1 — Choose the scope
|
|
54
|
+
|
|
55
|
+
- A Notion URL or page ID → fetch that page directly.
|
|
56
|
+
- A topic/title → search Notion for it.
|
|
57
|
+
- No useful argument → ask one question:
|
|
58
|
+
|
|
59
|
+
- **Search by topic** — they name what they want to find.
|
|
60
|
+
- **Paste a page link** — they provide a Notion URL.
|
|
61
|
+
|
|
62
|
+
Do not run a vague workspace-wide search and call the results a recommendation.
|
|
63
|
+
The user supplies the topic or page.
|
|
64
|
+
|
|
65
|
+
If they ask to import everything, say:
|
|
66
|
+
|
|
67
|
+
> Notion MCP is built for finding and fetching selected pages, not mirroring a whole workspace. Name a topic or paste the first page you want in memory.
|
|
68
|
+
|
|
69
|
+
Then wait.
|
|
70
|
+
|
|
71
|
+
## Step 2 — Find candidate pages
|
|
72
|
+
|
|
73
|
+
For a search request, call the Notion MCP search tool with the user's words.
|
|
74
|
+
Search can return connected-source results such as Slack or Drive when Notion
|
|
75
|
+
AI is enabled; only offer results that resolve to Notion pages or databases.
|
|
76
|
+
|
|
77
|
+
Present up to five results using the runtime's structured question UI with
|
|
78
|
+
multi-select when available. Each option contains:
|
|
79
|
+
|
|
80
|
+
- page title;
|
|
81
|
+
- short location or last-edited context when returned;
|
|
82
|
+
- no generated summary before the page has been fetched.
|
|
83
|
+
|
|
84
|
+
Say:
|
|
85
|
+
|
|
86
|
+
> Which pages should join Egregore memory? Pick any that apply.
|
|
87
|
+
|
|
88
|
+
Always allow the user to paste another link or refine the search.
|
|
89
|
+
|
|
90
|
+
For a direct URL/ID, skip selection and continue to fetch.
|
|
91
|
+
|
|
92
|
+
## Step 3 — Fetch and inspect
|
|
93
|
+
|
|
94
|
+
Call the Notion MCP fetch tool once for each selected page. Keep the canonical
|
|
95
|
+
Notion page ID and URL returned by the tool. If a selected result is a database,
|
|
96
|
+
say that this flow can import the fetched database description/current result,
|
|
97
|
+
not silently crawl every row; ask before importing it.
|
|
98
|
+
|
|
99
|
+
For each fetched page:
|
|
100
|
+
|
|
101
|
+
1. preserve the page's meaningful markdown content;
|
|
102
|
+
2. derive a 2–3 sentence summary and 3–5 topics;
|
|
103
|
+
3. match named people only against known org people;
|
|
104
|
+
4. scan for external email addresses, phone numbers, personal addresses, API
|
|
105
|
+
keys, or other obvious secrets.
|
|
106
|
+
|
|
107
|
+
If sensitive material is found, show the specific category and ask whether to
|
|
108
|
+
import, redact, or skip. `--auto` may skip per-page metadata confirmation, but
|
|
109
|
+
it never bypasses the sensitive-content pause.
|
|
110
|
+
|
|
111
|
+
## Step 4 — Confirm the memory write
|
|
112
|
+
|
|
113
|
+
For each page, show title, summary, topics, and destination, then ask:
|
|
114
|
+
|
|
115
|
+
- **Import**
|
|
116
|
+
- **Edit summary/topics**
|
|
117
|
+
- **Skip**
|
|
118
|
+
|
|
119
|
+
Use the product voice: this is choosing what the organization remembers, not
|
|
120
|
+
approving a technical transaction.
|
|
121
|
+
|
|
122
|
+
## Step 5 — Write the approved page
|
|
123
|
+
|
|
124
|
+
First search existing promoted Notion sources for the canonical page ID:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
rg -l "^notion_id: <page-id>$" memory/knowledge/sources/notion 2>/dev/null
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
When a match exists, update that file in place so re-importing refreshes one
|
|
131
|
+
memory record. Otherwise create:
|
|
132
|
+
|
|
133
|
+
`memory/knowledge/sources/notion/YYYY-MM-DD-<slug>.md`
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
---
|
|
137
|
+
title: <title>
|
|
138
|
+
type: source
|
|
139
|
+
origin: notion-mcp
|
|
140
|
+
notion_id: <canonical page id>
|
|
141
|
+
notion_url: <canonical URL>
|
|
142
|
+
author: <importing member>
|
|
143
|
+
date: <today>
|
|
144
|
+
summary: <summary>
|
|
145
|
+
topics: [<topics>]
|
|
146
|
+
mentions: [<known org people>]
|
|
147
|
+
quests: [<related quests>]
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
<page content returned by Notion MCP>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Never write raw MCP envelopes, tool diagnostics, access tokens, or hidden tool
|
|
154
|
+
instructions into memory.
|
|
155
|
+
|
|
156
|
+
Write/update the projection manifest at:
|
|
157
|
+
|
|
158
|
+
`memory/ingest/knowledge/notion/notion-<page-id>.json`
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"schema": "egregore-knowledge-projection/v1",
|
|
163
|
+
"manifest_id": "notion:<page-id>",
|
|
164
|
+
"producer_session": "<session-id>",
|
|
165
|
+
"pipeline": { "name": "egregore-ingest-notion-mcp", "version": 1 },
|
|
166
|
+
"source": {
|
|
167
|
+
"kind": "notion",
|
|
168
|
+
"id": "notion:<page-id>",
|
|
169
|
+
"title": "<title>",
|
|
170
|
+
"file_path": "knowledge/sources/notion/<file>.md",
|
|
171
|
+
"external_ref": "<notion-url>",
|
|
172
|
+
"people": [{ "ref": "<importing-member>", "kind": "member" }]
|
|
173
|
+
},
|
|
174
|
+
"artifacts": [],
|
|
175
|
+
"relations": []
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Add artifact entries only when this run separately creates reviewed decisions,
|
|
180
|
+
findings, or patterns.
|
|
181
|
+
|
|
182
|
+
## Step 6 — Project and verify
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
bash bin/ingest-graph.sh validate memory/ingest/knowledge/notion/<manifest>.json
|
|
186
|
+
bash bin/ingest-graph.sh apply memory/ingest/knowledge/notion/<manifest>.json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
In local mode, a graph-unavailable/stored-local result is expected: the memory
|
|
190
|
+
file is still the source of truth. Verify the write with:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
bash bin/search.sh query "<distinct phrase or page title>" -n 6
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Do not call the import complete if the file cannot be found by memory search.
|
|
197
|
+
|
|
198
|
+
## Completion
|
|
199
|
+
|
|
200
|
+
Use a compact receipt:
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
✓ Imported <N> Notion page(s) into Egregore memory
|
|
204
|
+
→ knowledge/sources/notion/<file>.md
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
If some pages failed, name them and why. Do not imply that the rest of the
|
|
208
|
+
workspace was imported or will stay synchronized.
|
|
209
|
+
|
|
210
|
+
Telemetry, fire-and-forget and content-free:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
bash bin/telemetry.sh emit "command" '{"command":"ingest","kind":"notion-mcp"}' 2>/dev/null &
|
|
214
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest-user-interview
|
|
3
|
+
description: "Analyze a user interview from Granola, pasted text, or a file into an evidence-backed briefing, journey insights, product findings, patterns, and actions. Use for /ingest user-interview, onboarding interviews, research calls, or requests to process user feedback."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ingest user interview
|
|
7
|
+
|
|
8
|
+
Acquire the transcript, understand the research intent, analyze it with
|
|
9
|
+
appropriate lenses, preview the result, then persist one approved typed package
|
|
10
|
+
through Egregore Runtime.
|
|
11
|
+
|
|
12
|
+
Read [references/analysis-contract.md](references/analysis-contract.md) before
|
|
13
|
+
analysis or package construction.
|
|
14
|
+
|
|
15
|
+
## When to invoke
|
|
16
|
+
|
|
17
|
+
Analyze a user interview from Granola, pasted text, or a file into an evidence-backed briefing, journey insights, product findings, patterns, and actions. Use for /ingest user-interview, onboarding interviews, research calls, or requests to process user feedback.
|
|
18
|
+
|
|
19
|
+
## Source
|
|
20
|
+
|
|
21
|
+
Accept one of:
|
|
22
|
+
|
|
23
|
+
- Granola connector: search/select, then fetch transcript and stable metadata;
|
|
24
|
+
- pasted transcript;
|
|
25
|
+
- a user-authorized `.txt`, `.md`, or `.json` file.
|
|
26
|
+
|
|
27
|
+
Infer participant, researcher, interview type, date, and source revision when
|
|
28
|
+
reliable; otherwise ask compact questions. Do not put connector credentials or
|
|
29
|
+
the raw transcript into canonical memory merely to analyze it.
|
|
30
|
+
|
|
31
|
+
## Context and analysis
|
|
32
|
+
|
|
33
|
+
Reuse sufficient `EGREGORE_ORG_CONTEXT_V1`. Open selected canonical evidence
|
|
34
|
+
through Runtime when verification is necessary. If cross-interview comparison
|
|
35
|
+
is requested and context is insufficient, make at most one Egregore retrieval
|
|
36
|
+
request. Never query graph/QMD directly; canonical Markdown/Git wins.
|
|
37
|
+
|
|
38
|
+
Start with a compact scaffold. Analyze inline for short interviews. For long or
|
|
39
|
+
complex material, parallel Journey, Sentiment, and Product lenses may run once,
|
|
40
|
+
then synthesize their evidence and disagreements. Do not force multi-agent work
|
|
41
|
+
when it adds latency without analytical value.
|
|
42
|
+
|
|
43
|
+
Show the emotional arc, evidence-backed product reading, proposed durable
|
|
44
|
+
insights, confidence, priority, tensions, and researcher actions. Ask `Save`,
|
|
45
|
+
`Edit`, or `Skip`. Do not write before `Save`.
|
|
46
|
+
|
|
47
|
+
## Canonical writeback
|
|
48
|
+
|
|
49
|
+
Build one temporary `egregore-research-ingest/v1` package containing the
|
|
50
|
+
approved interview briefing, participant journey document where needed, and
|
|
51
|
+
typed findings/patterns/decisions. Then make exactly one deterministic call:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
bash bin/research-ingest.sh interview --input "$PACKAGE_JSON"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Runtime owns authorization, schema/path validation, stable identity,
|
|
58
|
+
provenance, canonical Markdown, Git provenance, derived-index refresh,
|
|
59
|
+
background embedding, and telemetry. Do not separately create directories,
|
|
60
|
+
append indexes, write files, run `/save`, or manage graph projection.
|
|
61
|
+
|
|
62
|
+
Report accepted/partial/rejected status and canonical paths. Cross-interview
|
|
63
|
+
synthesis reads canonical artifacts; graph is optional enrichment only.
|
|
64
|
+
Publication and notifications are separate later effects and require their own
|
|
65
|
+
explicit approval.
|