@a-company/paradigm 5.37.11 → 6.0.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/dist/{accept-orchestration-SBZVK3H4.js → accept-orchestration-QQISPINV.js} +1 -1
- package/dist/add-UOR4INIV.js +8 -0
- package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
- package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
- package/dist/{aggregate-W66DM3GA.js → aggregate-A5S5MTCC.js} +1 -1
- package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
- package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
- package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
- package/dist/{beacon-5QVYV5DF.js → beacon-QVUD3MGP.js} +1 -1
- package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
- package/dist/{chunk-SI6SV76D.js → chunk-3DZK54RU.js} +72 -19
- package/dist/{chunk-CHVQNRRT.js → chunk-4PSD5R7N.js} +2 -2
- package/dist/chunk-6SKSV5B2.js +24 -0
- package/dist/{chunk-KFNHCQ4R.js → chunk-FEYOQMZ5.js} +1 -1
- package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
- package/dist/chunk-GRZQIKST.js +2 -0
- package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
- package/dist/chunk-LPBCQM5Y.js +6 -0
- package/dist/{chunk-T6IDXUUA.js → chunk-LWAIVOSF.js} +1 -1
- package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
- package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
- package/dist/chunk-PHEX6LU4.js +111 -0
- package/dist/chunk-Q527BPUF.js +2 -0
- package/dist/chunk-R5ECMBIV.js +11 -0
- package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
- package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
- package/dist/{chunk-SUU6M4JH.js → chunk-TOYQ2QCB.js} +1 -1
- package/dist/chunk-TZDYIPVU.js +521 -0
- package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
- package/dist/chunk-VIG5LSGZ.js +2 -0
- package/dist/chunk-VNIX5KBT.js +3 -0
- package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
- package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
- package/dist/{chunk-LBQBWIEX.js → chunk-Y4P4SGZV.js} +1 -1
- package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
- package/dist/chunk-Z5QW6USC.js +2 -0
- package/dist/chunk-ZJQY5PPP.js +7 -0
- package/dist/{commands-LMUD5L6R.js → commands-ANRJNG2W.js} +1 -1
- package/dist/compliance-BNFWQPKM.js +6 -0
- package/dist/config-schema-FLHRVZMI.js +2 -0
- package/dist/{constellation-CG7C4WFE.js → constellation-NWLXYATA.js} +1 -1
- package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
- package/dist/{cost-IDNVMAEV.js → cost-24UZSS2P.js} +1 -1
- package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
- package/dist/decision-loader-HELL2AMX.js +2 -0
- package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
- package/dist/{diff-JVEYCXUC.js → diff-MF55KQZH.js} +1 -1
- package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
- package/dist/dist-JZZJLVMR.js +2 -0
- package/dist/{dist-3ZCH25SG.js → dist-OG6MM4VY.js} +1 -1
- package/dist/dist-SE67SOXB.js +2 -0
- package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
- package/dist/doctor-IG5XM4C4.js +2 -0
- package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
- package/dist/{flow-POQP27WA.js → flow-BGXOVE2V.js} +1 -1
- package/dist/{hooks-IG2GOAHP.js → hooks-TFMMMB2H.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/init-M44SO65G.js +2 -0
- package/dist/init-V4KSEKPK.js +2 -0
- package/dist/{integrity-UYDOOJDP.js → integrity-ROO3G43N.js} +1 -1
- package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
- package/dist/list-CFHINXIS.js +12 -0
- package/dist/lore-loader-D2ISOASW.js +2 -0
- package/dist/lore-loader-PXFKMKAN.js +2 -0
- package/dist/mcp.js +19 -11
- package/dist/metrics-UESGUHTA.js +2 -0
- package/dist/{migrate-IBDE7VK4.js → migrate-Z5UQN57G.js} +1 -1
- package/dist/migrate-assessments-YSITX7KM.js +4 -0
- package/dist/migrate-decisions-NPLQOEEH.js +6 -0
- package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
- package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
- package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
- package/dist/{orchestrate-RCAMBOIB.js → orchestrate-RID7HHHH.js} +1 -1
- package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
- package/dist/portal-check-DV2VSJ5E.js +8 -0
- package/dist/{portal-compliance-4MG5F2GI.js → portal-compliance-JONQ4SOP.js} +1 -1
- package/dist/{probe-B22G2JKF.js → probe-5HAXULAD.js} +1 -1
- package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
- package/dist/quiz-WYIZJG5K.js +10 -0
- package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
- package/dist/reindex-FWPD2VGM.js +2 -0
- package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
- package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
- package/dist/{review-6UAH6V3R.js → review-VMSX2PKI.js} +1 -1
- package/dist/{ripple-ZGDITCGB.js → ripple-FNZI47SH.js} +1 -1
- package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
- package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
- package/dist/sentinel.js +1 -1
- package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
- package/dist/serve-OQYUO7CR.js +12 -0
- package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
- package/dist/server-FGUL2FWQ.js +7 -0
- package/dist/session-tracker-KGORN6B5.js +2 -0
- package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
- package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
- package/dist/{setup-3F5IK7MO.js → setup-ZSEC72BS.js} +2 -2
- package/dist/{shift-FDADESC4.js → shift-TVNY2CQF.js} +6 -6
- package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
- package/dist/show-WVHAL4VU.js +7 -0
- package/dist/{snapshot-L2G56RPL.js → snapshot-3IYB67D4.js} +1 -1
- package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
- package/dist/{status-77M3SDIF.js → status-DB3KNLW3.js} +1 -1
- package/dist/status-S7Z5FVIE.js +6 -0
- package/dist/{summary-LXLHFRN7.js → summary-WLI3NF4G.js} +2 -2
- package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
- package/dist/sync-55U6QPIA.js +2 -0
- package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
- package/dist/team-MGT66HZQ.js +2 -0
- package/dist/{test-BQJMS4Y2.js → test-WLEPZQFC.js} +1 -1
- package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
- package/dist/tools-QJHAVYI6.js +2 -0
- package/dist/university-content/notes/N-para-001-build-something.md +126 -0
- package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
- package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
- package/dist/university-content/notes/N-para-101-component-types.md +99 -0
- package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
- package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
- package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
- package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
- package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
- package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
- package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
- package/dist/university-content/notes/N-para-101-welcome.md +51 -0
- package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
- package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
- package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
- package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
- package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
- package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
- package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
- package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
- package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
- package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
- package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
- package/dist/university-content/notes/N-para-301-context-management.md +53 -0
- package/dist/university-content/notes/N-para-301-decisions.md +99 -0
- package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
- package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
- package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
- package/dist/university-content/notes/N-para-301-history-system.md +42 -0
- package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
- package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
- package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
- package/dist/university-content/notes/N-para-301-protocols.md +113 -0
- package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
- package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
- package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
- package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
- package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
- package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
- package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
- package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
- package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
- package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
- package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
- package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
- package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
- package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
- package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
- package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
- package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
- package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
- package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
- package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
- package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
- package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
- package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
- package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
- package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
- package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
- package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
- package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
- package/dist/university-content/notes/N-para-501-task-management.md +100 -0
- package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
- package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
- package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
- package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
- package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
- package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
- package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
- package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
- package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
- package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
- package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
- package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
- package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
- package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
- package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
- package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
- package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
- package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
- package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
- package/dist/university-content/paths/LP-para-001.yaml +29 -0
- package/dist/university-content/paths/LP-para-101.yaml +59 -0
- package/dist/university-content/paths/LP-para-201.yaml +69 -0
- package/dist/university-content/paths/LP-para-301.yaml +84 -0
- package/dist/university-content/paths/LP-para-401.yaml +74 -0
- package/dist/university-content/paths/LP-para-501.yaml +89 -0
- package/dist/university-content/paths/LP-para-601.yaml +59 -0
- package/dist/university-content/paths/LP-para-701.yaml +64 -0
- package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
- package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
- package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
- package/dist/university-content/reference.json +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
- package/dist/{validate-VZXTJHGO.js → validate-BB6LRWIY.js} +1 -1
- package/dist/validate-XUQZTF3H.js +9 -0
- package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
- package/dist/workspace-VMSPYIBV.js +2 -0
- package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
- package/lore-ui/dist/index.html +1 -1
- package/package.json +3 -2
- package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
- package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
- package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
- package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
- package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
- package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
- package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
- package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
- package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
- package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
- package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
- package/platform-ui/dist/index.html +1 -1
- package/templates/paradigm/specs/symbols.md +4 -2
- package/dist/add-P76GEMGF.js +0 -8
- package/dist/chunk-3TR6LLXP.js +0 -111
- package/dist/chunk-G7XFK2GI.js +0 -11
- package/dist/chunk-J6KWGCHN.js +0 -24
- package/dist/chunk-JQKKVAAN.js +0 -2
- package/dist/chunk-ODVKPZZ4.js +0 -2
- package/dist/chunk-Q2J542ST.js +0 -2
- package/dist/chunk-QT2LKB3P.js +0 -7
- package/dist/chunk-SHD27BQX.js +0 -6
- package/dist/chunk-WS2N27RX.js +0 -3
- package/dist/chunk-YT52WLBF.js +0 -521
- package/dist/compliance-WJINB5DM.js +0 -6
- package/dist/config-schema-GUQY2QN7.js +0 -2
- package/dist/decision-loader-2XPZE4EZ.js +0 -2
- package/dist/dist-R3RWD35F.js +0 -2
- package/dist/dist-VXCZWVVJ.js +0 -2
- package/dist/doctor-QJ47XAUP.js +0 -2
- package/dist/init-HIBRSVUB.js +0 -2
- package/dist/list-5IUGP3ZB.js +0 -7
- package/dist/lore-loader-RVQI5GXL.js +0 -2
- package/dist/lore-loader-XY5MZRR2.js +0 -2
- package/dist/migrate-assessments-GEI5WMI2.js +0 -4
- package/dist/portal-check-Z3OCQEQR.js +0 -8
- package/dist/quiz-FE5UGAY2.js +0 -10
- package/dist/reindex-FO5VMZVQ.js +0 -2
- package/dist/serve-OY6XYL7F.js +0 -12
- package/dist/server-2MNROHF6.js +0 -7
- package/dist/session-tracker-MWJAJA6Z.js +0 -2
- package/dist/show-BOAVWZPZ.js +0 -7
- package/dist/status-A37ECYNJ.js +0 -6
- package/dist/sync-DLUBV5HQ.js +0 -2
- package/dist/team-NSP6PMPS.js +0 -2
- package/dist/tools-CERDNVCG.js +0 -2
- package/dist/university-content/courses/.purpose +0 -492
- package/dist/university-content/courses/para-001.json +0 -166
- package/dist/university-content/courses/para-101.json +0 -615
- package/dist/university-content/courses/para-201.json +0 -794
- package/dist/university-content/courses/para-301.json +0 -830
- package/dist/university-content/courses/para-401.json +0 -868
- package/dist/university-content/courses/para-501.json +0 -1166
- package/dist/university-content/courses/para-601.json +0 -719
- package/dist/university-content/courses/para-701.json +0 -807
- package/dist/university-content/plsat/.purpose +0 -162
- package/dist/university-content/plsat/v2.0.json +0 -760
- package/dist/university-content/plsat/v3.0.json +0 -3453
- package/dist/validate-C6SMKGYD.js +0 -9
- package/dist/workspace-MKSQN7B2.js +0 -2
- package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
- /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
- /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-session-intelligence
|
|
3
|
+
title: Session Intelligence
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- four-checkpoint-phases
|
|
12
|
+
- breadcrumbs-auto-track-every
|
|
13
|
+
- paradigmsessionrecover-restores-last
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 4
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## The Session Problem
|
|
24
|
+
|
|
25
|
+
AI agent sessions are ephemeral. When a session ends — whether by completion, crash, context exhaustion, or human interruption — everything the agent knew vanishes. The next session starts blank, with no memory of what was explored, decided, or partially implemented. Session Intelligence solves this with checkpoints, breadcrumbs, and a global brain that persists knowledge across sessions and even across projects.
|
|
26
|
+
|
|
27
|
+
## Session Checkpoints
|
|
28
|
+
|
|
29
|
+
Checkpoints are deliberate snapshots saved at phase transitions. There are four phases:
|
|
30
|
+
|
|
31
|
+
| Phase | When to Checkpoint | What to Capture |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `planning` | After reading requirements, before coding | Plan, approach, key decisions |
|
|
34
|
+
| `implementing` | After starting code changes | Modified files, symbols touched, decisions made |
|
|
35
|
+
| `validating` | After implementation, before tests | All modified files, test plan |
|
|
36
|
+
| `complete` | Task finished | Summary, final file list |
|
|
37
|
+
|
|
38
|
+
Create a checkpoint with `paradigm_session_checkpoint`:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
paradigm_session_checkpoint({
|
|
42
|
+
phase: "implementing",
|
|
43
|
+
context: "Adding JWT auth middleware — RS256 signing, httpOnly refresh tokens",
|
|
44
|
+
modifiedFiles: ["src/middleware/auth.ts", "src/handlers/refresh.ts"],
|
|
45
|
+
symbolsTouched: ["#auth-middleware", "^authenticated"],
|
|
46
|
+
decisions: ["RS256 over HS256 for public key verification"]
|
|
47
|
+
})
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Only `phase` and `context` are required — everything else is optional. The context field should be a concise 1-3 sentence summary of your current state of mind. Think of it as answering "if I were teleported into this session right now, what would I need to know?"
|
|
51
|
+
|
|
52
|
+
Checkpoints are stored in `.paradigm/session-checkpoint.json` and auto-expire after 7 days.
|
|
53
|
+
|
|
54
|
+
## Breadcrumb Tracking
|
|
55
|
+
|
|
56
|
+
While checkpoints are deliberate, breadcrumbs are automatic. Every MCP tool call generates a breadcrumb recording the timestamp, tool name, symbol being modified (if applicable), and a human-readable summary. Breadcrumbs are stored in `.paradigm/session-breadcrumbs.json` with a maximum of 50 entries (auto-rotating — oldest dropped when full).
|
|
57
|
+
|
|
58
|
+
Breadcrumbs capture the narrative of a session: "searched for payment symbols → checked ripple on #payment-service → read auth middleware → modified #auth-handler → created ^refund-eligible gate." This trail lets the next session understand not just what was done but the reasoning path.
|
|
59
|
+
|
|
60
|
+
## Session Recovery
|
|
61
|
+
|
|
62
|
+
Recovery is the payoff. Call `paradigm_session_recover` (or let it happen automatically — recovery data is surfaced on your first Paradigm tool call in a new session) to get:
|
|
63
|
+
|
|
64
|
+
- **breadcrumbs** — The last session's tool call trail
|
|
65
|
+
- **lastCheckpoint** — The most recent checkpoint with phase, context, and details
|
|
66
|
+
- **symbolsModified** — All symbols that were changed
|
|
67
|
+
- **recentActivity** — A human-readable summary of what happened
|
|
68
|
+
|
|
69
|
+
This is crash recovery for AI agents. If a session dies at 87% context with half-finished auth middleware, the next session immediately knows: phase was `implementing`, auth middleware was being added, RS256 was chosen, these files were modified, and tests still need to be written.
|
|
70
|
+
|
|
71
|
+
## The Global Brain
|
|
72
|
+
|
|
73
|
+
Session Intelligence extends beyond individual projects through the Global Brain at `~/.paradigm/`. This user-level directory stores:
|
|
74
|
+
|
|
75
|
+
- **Global wisdom** — Antipatterns and decisions that apply everywhere (e.g., "never use HS256 for JWT signing in production")
|
|
76
|
+
- **Global habits** — Behavioral overrides that apply to all projects
|
|
77
|
+
- **Cross-project practice events** — Compliance data aggregated across projects
|
|
78
|
+
|
|
79
|
+
The distinction between project scope and global scope is important:
|
|
80
|
+
|
|
81
|
+
| Scope | Location | Applies To | Example |
|
|
82
|
+
|---|---|---|---|
|
|
83
|
+
| Project | `.paradigm/` | This project only | "Use Redis for caching in this app" |
|
|
84
|
+
| Global | `~/.paradigm/` | All projects | "Always check fragility before modifying critical symbols" |
|
|
85
|
+
|
|
86
|
+
## Wisdom Promotion
|
|
87
|
+
|
|
88
|
+
When a project-local wisdom entry proves universally valuable, promote it to global scope with `paradigm_wisdom_promote`. This copies the entry from `.paradigm/wisdom/` to `~/.paradigm/wisdom/`, making it available in every project.
|
|
89
|
+
|
|
90
|
+
For example, if a team discovers that "always wrap Express v5 async middleware in try-catch" prevents errors across multiple projects, promoting this wisdom means every future project session gets this advice automatically when touching Express middleware.
|
|
91
|
+
|
|
92
|
+
## Handoff Persistence
|
|
93
|
+
|
|
94
|
+
When context usage exceeds 80-85%, `paradigm_session_health` recommends a handoff. `paradigm_handoff_prepare` creates a structured handoff document with: summary of work done, modified files, symbols touched, next steps, and open questions. This document is stored alongside session data so the receiving session can `paradigm_session_recover` and pick up exactly where the previous session left off.
|
|
95
|
+
|
|
96
|
+
The handoff is not just a note — it is a contract between sessions. The outgoing session declares what was done and what remains. The incoming session validates against the actual file state and continues.
|
|
97
|
+
|
|
98
|
+
## Best Practices
|
|
99
|
+
|
|
100
|
+
- Checkpoint at every phase transition — the cost is ~100 tokens, the value is crash recovery
|
|
101
|
+
- Write `context` as if briefing a stranger with no prior knowledge
|
|
102
|
+
- Promote wisdom that survives 3+ projects to global scope
|
|
103
|
+
- Use handoffs proactively at 80% context, not reactively at 95%
|
|
104
|
+
- Let breadcrumbs accumulate naturally — don't try to manage them manually
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-symphony-a-mail
|
|
3
|
+
title: 'Symphony: Multi-Agent Messaging with The Score'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- the-score-is
|
|
12
|
+
- agent-identity-is
|
|
13
|
+
- mailbox-protocol-uses
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 7
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Agents Need to Talk
|
|
24
|
+
|
|
25
|
+
Until now, every Paradigm agent has worked in isolation. A Claude Code session modifying the backend has no awareness of what the session working on the frontend is doing. Two developers on the same team, each with their own AI assistant, have no way for those assistants to coordinate — even when they are working on the same project at the same time.
|
|
26
|
+
|
|
27
|
+
Symphony changes this. It is Paradigm's multi-agent, multi-human collaborative intelligence layer. And its foundation is The Score: a lightweight, file-based messaging protocol that gives every Claude Code session its own mailbox.
|
|
28
|
+
|
|
29
|
+
## The Metaphor: Email for AI Agents
|
|
30
|
+
|
|
31
|
+
The Score works exactly like email. Each agent has an identity, an inbox, and an outbox. Messages are delivered as JSONL files on the filesystem. Agents poll for new messages on a timer. There is no persistent server, no WebSocket connection, and no cloud dependency. If two agents are running on the same machine, they can message each other through nothing more than file reads and writes.
|
|
32
|
+
|
|
33
|
+
This simplicity is deliberate. The Score is the CLI-only foundation of Symphony — it works with zero dependencies beyond the Paradigm CLI. No Conductor, no Sentinel, no network configuration. The only requirement is that agents are running on the same machine (or connected via a lightweight TCP relay for cross-machine scenarios).
|
|
34
|
+
|
|
35
|
+
## Agent Identity and Discovery
|
|
36
|
+
|
|
37
|
+
Every Claude Code session that participates in The Score has a stable identity. The identity is derived from the project directory and the agent's role — for example, `a-paradigm/backend` or `a-kamiki/frontend`. This deterministic naming means the same project opened in the same context always gets the same identity, even across session restarts.
|
|
38
|
+
|
|
39
|
+
When you run `paradigm symphony join`, the CLI discovers all Claude Code sessions on the current machine and connects them into a mail network. Each session gets a mailbox directory at `~/.paradigm/score/agents/{agent-id}/` containing four files:
|
|
40
|
+
|
|
41
|
+
- **`inbox.jsonl`** — Messages waiting for this agent, one per line, append-only
|
|
42
|
+
- **`outbox.jsonl`** — Replies from this agent, append-only
|
|
43
|
+
- **`ack.json`** — The ID of the last acknowledged message (for garbage collection)
|
|
44
|
+
- **`identity.json`** — Agent ID, project, role, PID, and session start time
|
|
45
|
+
|
|
46
|
+
The JSONL format — one JSON object per line — makes appending atomic and parsing trivial. No file locking, no corruption risk from concurrent writes, no binary format to decode.
|
|
47
|
+
|
|
48
|
+
## Messaging and Threading
|
|
49
|
+
|
|
50
|
+
Messages in The Score carry structured metadata beyond plain text. Every message has an **intent** that classifies its purpose:
|
|
51
|
+
|
|
52
|
+
| Intent | Meaning |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `question` | Asking for information from other agents |
|
|
55
|
+
| `context` | Providing background or context |
|
|
56
|
+
| `proposal` | Proposing an action or fix |
|
|
57
|
+
| `action` | Announcing an action the agent took |
|
|
58
|
+
| `decision` | Recording a decision |
|
|
59
|
+
| `alert` | Forwarding a Sentinel alert |
|
|
60
|
+
| `approval` / `rejection` | Responding to a proposal |
|
|
61
|
+
| `handoff` | Transferring responsibility to another agent |
|
|
62
|
+
| `fileRequest` | Requesting a file from another agent |
|
|
63
|
+
| `fileDelivery` | Delivering a requested file |
|
|
64
|
+
|
|
65
|
+
Intents serve two purposes. First, they give the receiving agent structured context about what kind of response is expected — a question needs an answer, a proposal needs approval or rejection, a decision needs acknowledgment. Second, they feed into Lore: when a message has `intent: decision`, Symphony can automatically record it as a lore entry.
|
|
66
|
+
|
|
67
|
+
Messages belong to **threads**. A thread starts when the first message on a topic is sent (with no `parentId`). Subsequent replies reference the thread root, building a conversation tree. Thread state is tracked in `~/.paradigm/score/threads/{thread-id}.json`, which records the topic, participants, message count, and last activity timestamp.
|
|
68
|
+
|
|
69
|
+
## The File Pipeline
|
|
70
|
+
|
|
71
|
+
Agents often need to share files — a type definition, an API contract, a configuration file. The Score's file pipeline enables this with a critical security constraint: **every file transfer requires explicit human approval**.
|
|
72
|
+
|
|
73
|
+
The flow works like this: Agent A sends a `fileRequest` message specifying the file path, a reason, and the target agent. The request appears in the owning human's terminal (via `paradigm symphony requests`). The human reviews and either approves, denies, or approves with redaction (stripping sensitive lines). Only after human approval does the file content get written to the requester's inbox.
|
|
74
|
+
|
|
75
|
+
Trust configuration lives in `~/.paradigm/score/trust.yaml`. You can define auto-approve patterns for trusted users (`docs/**`, `*.md`) and never-approve patterns for sensitive files (`.env*`, `*.key`, `*.pem`, `**/secrets/**`). The never-approve list is enforced absolutely — even clicking approve on a `.env` file will be denied by the system. File requests expire after one hour without action, and all transfers are logged.
|
|
76
|
+
|
|
77
|
+
## /loop: The Agent Heartbeat
|
|
78
|
+
|
|
79
|
+
The glue that makes The Score work is `/loop`. Each Claude Code session runs `/loop 10s paradigm_symphony_poll`, which polls the inbox every 10 seconds for new messages. The `paradigm_symphony_poll` MCP tool reads `inbox.jsonl`, formats messages as structured prompts the agent can reason about, and suggests actions.
|
|
80
|
+
|
|
81
|
+
Without `/loop`, messages would accumulate in the inbox with nobody reading them. The loop is the heartbeat — it keeps agents responsive. When an agent processes a message and replies via `paradigm_symphony_send`, the reply goes to `outbox.jsonl`. A mail router (or Conductor, in later phases) picks up outbox messages and delivers them to the appropriate inbox files.
|
|
82
|
+
|
|
83
|
+
The convenience command `paradigm symphony join` combines registration and loop setup in one step — it registers the session's identity and starts the polling loop automatically.
|
|
84
|
+
|
|
85
|
+
## Thread Resolution and Lore Integration
|
|
86
|
+
|
|
87
|
+
Conversation threads are not meant to live forever. When a thread reaches a conclusion, any participant (human or agent) can resolve it with `paradigm symphony resolve <thread-id>`. Resolution triggers an automatic lore entry that captures the full conversation: topic, participants, decisions made, actions taken, and symbols discussed.
|
|
88
|
+
|
|
89
|
+
This is the bridge between ephemeral conversation and permanent project memory. A 15-minute exchange between three agents about a serialization bug becomes a searchable lore entry tagged with the relevant symbols and arc. The next developer encountering a similar issue can find the conversation, the decision, and the fix — all linked together.
|
|
90
|
+
|
|
91
|
+
## CLI Commands
|
|
92
|
+
|
|
93
|
+
The `paradigm symphony` command group provides the complete human interface:
|
|
94
|
+
|
|
95
|
+
- `paradigm symphony whoami` — Show this agent's identity and linked peers
|
|
96
|
+
- `paradigm symphony list` — List all known agents with status (awake/asleep) and location
|
|
97
|
+
- `paradigm symphony join` — Discover and connect Claude Code sessions on this machine
|
|
98
|
+
- `paradigm symphony join --remote <ip>` — Connect to a remote machine's mail server
|
|
99
|
+
- `paradigm symphony send "message"` — Broadcast to all linked agents
|
|
100
|
+
- `paradigm symphony send --to <agent> "message"` — Direct message to a specific agent
|
|
101
|
+
- `paradigm symphony send --thread <id> "message"` — Reply to an existing thread
|
|
102
|
+
- `paradigm symphony read` — Show unread messages
|
|
103
|
+
- `paradigm symphony threads` — List active threads
|
|
104
|
+
- `paradigm symphony resolve <id>` — Resolve a thread, creating a lore entry
|
|
105
|
+
- `paradigm symphony status` — Network overview (agents, threads, unread count)
|
|
106
|
+
|
|
107
|
+
For the file pipeline: `paradigm symphony request`, `paradigm symphony requests`, `paradigm symphony approve`, and `paradigm symphony deny`.
|
|
108
|
+
|
|
109
|
+
## MCP Tools for Agent Participation
|
|
110
|
+
|
|
111
|
+
Six MCP tools power agent-side Symphony participation:
|
|
112
|
+
|
|
113
|
+
- **`paradigm_symphony_poll`** — The heartbeat. Reads inbox, returns formatted messages and thread summaries. Called by `/loop`.
|
|
114
|
+
- **`paradigm_symphony_send`** — Send a message with intent, text, optional symbols, diff, or decision. Writes to outbox.
|
|
115
|
+
- **`paradigm_symphony_status`** — Overview of the local network: agents, threads, Sentinel endpoint.
|
|
116
|
+
- **`paradigm_symphony_thread`** — Get full context of a conversation thread with messages, participants, and extracted decisions.
|
|
117
|
+
- **`paradigm_symphony_request_file`** — Request a file from another agent. Returns immediately with `pending` status; delivery arrives via future poll.
|
|
118
|
+
- **`paradigm_symphony_approve_file`** — Approve or deny a pending file request after human confirmation.
|
|
119
|
+
|
|
120
|
+
These tools compose naturally with existing Paradigm workflows. An agent can poll for messages, discover a question about `#payment-serializer`, call `paradigm_ripple` to check impact, and respond with full context — all within a single `/loop` cycle.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-symphony-networking
|
|
3
|
+
title: 'Symphony Networking: Cross-Machine Relay'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- hub-and-spoke-topology-one
|
|
12
|
+
- websocket-relay-watches
|
|
13
|
+
- pairing-6-digit-code
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 4
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Beyond Single-Machine Messaging
|
|
24
|
+
|
|
25
|
+
Symphony Phase 0 (A-Mail) established file-based agent-to-agent messaging on a single machine — JSONL mailboxes at `~/.paradigm/score/`, polled via `/loop`. But what happens when two developers on the same WiFi, or at different locations, want their Claude instances to collaborate?
|
|
26
|
+
|
|
27
|
+
Symphony Phase 1 adds cross-machine networking via a WebSocket relay. The key design principle: **the local mailbox model is unchanged**. Networking is a transparent sync layer that watches local outboxes and delivers remote messages to local inboxes.
|
|
28
|
+
|
|
29
|
+
## Hub-and-Spoke Topology
|
|
30
|
+
|
|
31
|
+
One machine runs `paradigm symphony serve` (the **hub**), and others connect with `paradigm symphony join --remote` (the **spokes**). The hub relays messages between all connected machines.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Machine A (Hub) Machine B (Spoke)
|
|
35
|
+
┌─────────────────────┐ ┌─────────────────────┐
|
|
36
|
+
│ ~/.paradigm/score/ │ │ ~/.paradigm/score/ │
|
|
37
|
+
│ agents/projA/core │ │ agents/projB/core │
|
|
38
|
+
│ inbox.jsonl │◄────ws───►│ inbox.jsonl │
|
|
39
|
+
│ outbox.jsonl │ :3939 │ outbox.jsonl │
|
|
40
|
+
└─────────────────────┘ └─────────────────────┘
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The relay watches each local agent's outbox file (polling every 2 seconds via `fs.stat`). When new messages appear, they're pushed to all connected peers as WebSocket frames. Incoming messages from peers are written to the appropriate local inbox via `appendToInbox()`.
|
|
44
|
+
|
|
45
|
+
## Pairing & Authentication
|
|
46
|
+
|
|
47
|
+
Security is critical when connecting machines over a network. Symphony uses a pairing code + HMAC challenge-response protocol:
|
|
48
|
+
|
|
49
|
+
1. The hub generates a 32-byte random secret and derives a **6-digit pairing code**
|
|
50
|
+
2. The code is displayed on the hub's terminal
|
|
51
|
+
3. The spoke connects and receives a `hello` frame with a random challenge nonce
|
|
52
|
+
4. The user enters the code on the spoke terminal (or embeds it in the connection string)
|
|
53
|
+
5. The spoke computes `HMAC-SHA256(challenge, SHA256(code))` and sends an `auth` frame
|
|
54
|
+
6. The hub verifies the code and HMAC proof, then sends `auth_ok` with its agent list
|
|
55
|
+
|
|
56
|
+
Pairing codes rotate every 5 minutes. After 3 failed attempts from the same IP, a 60-second cooldown is enforced. Peer records are saved to `~/.paradigm/score/peers.json` (file mode 0600) for auto-reconnect.
|
|
57
|
+
|
|
58
|
+
## Two Connection Modes
|
|
59
|
+
|
|
60
|
+
### LAN Pairing (same WiFi)
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
# Machine A (hub)
|
|
64
|
+
paradigm symphony serve
|
|
65
|
+
# Shows: Pairing Code: 847 291
|
|
66
|
+
|
|
67
|
+
# Machine B (spoke)
|
|
68
|
+
paradigm symphony join --remote 192.168.1.42:3939
|
|
69
|
+
# Prompted for code
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Internet Direct Connect
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
# Machine A
|
|
76
|
+
paradigm symphony serve --public
|
|
77
|
+
# Shows connection string
|
|
78
|
+
|
|
79
|
+
# Machine B
|
|
80
|
+
paradigm symphony join --remote 73.162.44.103:3939#847291
|
|
81
|
+
# Code embedded — no prompt
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Internet mode requires port 3939 to be reachable (port forward, VPN, or SSH tunnel).
|
|
85
|
+
|
|
86
|
+
## Trust Management
|
|
87
|
+
|
|
88
|
+
Peers are managed via CLI commands:
|
|
89
|
+
|
|
90
|
+
- `paradigm symphony peers` — List trusted peers with agent counts and last-seen times
|
|
91
|
+
- `paradigm symphony peers revoke <id>` — Immediately disconnect and block reconnection
|
|
92
|
+
- `paradigm symphony peers forget --force` — Clear all peer trust records
|
|
93
|
+
|
|
94
|
+
Existing `trust.yaml` hard-deny patterns (`.env*`, `*.key`, `*.pem`) apply to remote file requests — the trust boundary extends across the network.
|
|
95
|
+
|
|
96
|
+
## Relay Internals
|
|
97
|
+
|
|
98
|
+
The `SymphonyRelay` class handles both server and client modes:
|
|
99
|
+
|
|
100
|
+
- **Outbox watcher**: Polls every 2s, compares outbox line counts against stored positions, forwards new messages
|
|
101
|
+
- **Deduplication**: Bounded `Set<string>` of message IDs (max 10,000) prevents duplicate delivery
|
|
102
|
+
- **Keepalive**: Ping/pong every 30s with 10s pong timeout. Dead connections are auto-terminated
|
|
103
|
+
- **Auto-reconnect**: Client mode uses exponential backoff (1s → 2s → 4s → ... → 30s max)
|
|
104
|
+
- **Rate limiting**: 3 failed auth attempts from the same IP triggers a 60s cooldown
|
|
105
|
+
|
|
106
|
+
## Remote Agent Visibility
|
|
107
|
+
|
|
108
|
+
Remote agents appear throughout the Symphony CLI and MCP tools:
|
|
109
|
+
|
|
110
|
+
- `paradigm symphony list` shows remote agents with a `(remote: peer-name)` tag
|
|
111
|
+
- `paradigm symphony status` includes peer count and remote agent totals
|
|
112
|
+
- `paradigm_symphony_status` MCP tool returns a `peers` array in its response
|
|
113
|
+
- Platform UI `GET /api/symphony/peers` endpoint returns connected peer data
|
|
114
|
+
|
|
115
|
+
Local MCP tools (`peek`, `poll`, `send`) work unchanged — they just read/write local files. The relay handles the network transport transparently.
|
|
116
|
+
|
|
117
|
+
## Backward Compatibility
|
|
118
|
+
|
|
119
|
+
If `paradigm symphony serve` is never run, Symphony operates exactly as Phase 0: local-only file-based messaging. Networking is purely additive — no existing workflows change.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-task-management
|
|
3
|
+
title: Task Management
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- tasks-are-persistent
|
|
12
|
+
- auto-generated-ids-t-date-sequence
|
|
13
|
+
- three-priority-levels
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 4
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Why Tasks Exist
|
|
24
|
+
|
|
25
|
+
AI agent sessions are stateless. You can discuss a plan, identify five things that need doing, and then the session ends. The next session starts blank — those five items are gone. Sticky notes on a monitor do not help when your developer is a language model.
|
|
26
|
+
|
|
27
|
+
Paradigm's Task Management system provides a persistent scratch pad that survives context windows. Tasks are lightweight, date-partitioned YAML entries that capture what needs doing, how urgent it is, and what project knowledge relates to it. They are not a full project management system — they are the missing short-term memory between sessions.
|
|
28
|
+
|
|
29
|
+
The key difference from lore: lore records what happened (past tense). Tasks record what should happen (future tense). Together they form a complete timeline — memory of the past and intention for the future.
|
|
30
|
+
|
|
31
|
+
## Anatomy of a Task
|
|
32
|
+
|
|
33
|
+
Every task follows a consistent structure:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
id: T-2026-02-26-001
|
|
37
|
+
blurb: "Add rate limiting to the /api/payments endpoint"
|
|
38
|
+
priority: high
|
|
39
|
+
status: open
|
|
40
|
+
tags: [security, payments]
|
|
41
|
+
related_lore: [L-2026-02-25-003]
|
|
42
|
+
created: "2026-02-26T10:15:00Z"
|
|
43
|
+
updated: "2026-02-26T10:15:00Z"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The `id` field is auto-generated: `T-{date}-{sequence}`, following the same date-partitioned pattern as lore entries. The `blurb` is the only required field — a concise description of what needs to be done. Everything else is optional but useful.
|
|
47
|
+
|
|
48
|
+
Three priority levels exist: `high` (do this soon), `medium` (do this eventually), and `low` (nice to have). Tasks without an explicit priority default to `medium`.
|
|
49
|
+
|
|
50
|
+
Three statuses track lifecycle: `open` (needs doing), `done` (completed), and `shelved` (parked for later — not abandoned, just deferred).
|
|
51
|
+
|
|
52
|
+
## Storage: Date-Partitioned YAML
|
|
53
|
+
|
|
54
|
+
Tasks live in `.paradigm/tasks/entries/` organized by creation date:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
.paradigm/tasks/
|
|
58
|
+
entries/
|
|
59
|
+
2026-02-25/
|
|
60
|
+
T-2026-02-25-001.yaml
|
|
61
|
+
T-2026-02-25-002.yaml
|
|
62
|
+
2026-02-26/
|
|
63
|
+
T-2026-02-26-001.yaml
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Date partitioning keeps directories small. Each task is a standalone YAML file, making them easy to read, edit, and version-control. The date in the path matches the date in the task ID.
|
|
67
|
+
|
|
68
|
+
## The Five MCP Tools
|
|
69
|
+
|
|
70
|
+
**`paradigm_task_create`** — Create a new task. The `blurb` field is required — a short description of what needs to be done. Optional fields include `priority` (high/medium/low), `tags` (for categorization and filtering), and `related_lore` (linking to lore entries that provide context). The task is written to the correct date directory with an auto-incremented ID and starts with status `open`.
|
|
71
|
+
|
|
72
|
+
**`paradigm_task_list`** — List tasks with filters. Filter by `status` (open/done/shelved/all), `priority` (high/medium/low), or `tag`. Results are sorted by priority (high first) then by date (newest first). Without filters, it returns all open tasks.
|
|
73
|
+
|
|
74
|
+
**`paradigm_task_update`** — Update any field on an existing task by ID. You can change the blurb, priority, status, tags, or related_lore. Only specified fields are modified — everything else is preserved.
|
|
75
|
+
|
|
76
|
+
**`paradigm_task_done`** — Shorthand to mark a task as complete. Pass the task ID and the status changes to `done` with an updated timestamp. This is equivalent to `paradigm_task_update` with `status: done` but more ergonomic for the common case.
|
|
77
|
+
|
|
78
|
+
**`paradigm_task_shelve`** — Shorthand to shelve a task for later. Pass the task ID and the status changes to `shelved`. Shelved tasks are not deleted — they remain searchable and can be reopened by updating their status back to `open`.
|
|
79
|
+
|
|
80
|
+
## Session Recovery Integration
|
|
81
|
+
|
|
82
|
+
The top 5 open tasks are automatically surfaced during session recovery. When a new session starts and the agent calls any Paradigm MCP tool, the recovery data includes the highest-priority open tasks alongside the usual breadcrumbs and checkpoint data.
|
|
83
|
+
|
|
84
|
+
This means every session begins with awareness of outstanding work. The agent does not need to ask "what should I work on?" — the task list is already there, sorted by priority. This is the scratch-pad-that-survives pattern: write tasks in one session, see them in the next.
|
|
85
|
+
|
|
86
|
+
## When to Create Tasks
|
|
87
|
+
|
|
88
|
+
Create tasks when:
|
|
89
|
+
- You identify work that cannot be completed in the current session
|
|
90
|
+
- A code review surfaces follow-up items
|
|
91
|
+
- You discover a bug or improvement while working on something else
|
|
92
|
+
- The user mentions something that should be tracked but is not the current focus
|
|
93
|
+
- A handoff needs to communicate specific next steps
|
|
94
|
+
|
|
95
|
+
Do not use tasks for:
|
|
96
|
+
- Tracking completed work (that is what lore is for)
|
|
97
|
+
- Long-term roadmap items (use your project management tool)
|
|
98
|
+
- Architectural decisions (use lore entries with type `decision`)
|
|
99
|
+
|
|
100
|
+
Tasks are ephemeral intentions — they should be created quickly, completed or shelved promptly, and never allowed to accumulate into a backlog of hundreds. If your task list grows beyond 20-30 open items, it is time to triage: shelve the low-priority items and focus on what matters.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-agent-renaissance
|
|
3
|
+
title: Agent Manifest Renaissance
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- six-new-dimensions
|
|
12
|
+
- intrinsic-learning-optional
|
|
13
|
+
- five-collaboration-stances
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 5
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Six New Dimensions
|
|
24
|
+
|
|
25
|
+
Before v5.0, an agent profile (`AgentProfile`) had six core fields: `id`, `role`, `description`, `personality`, `expertise`, and `transferable` patterns. These covered identity and knowledge but said nothing about how agents observe, learn, contribute context, report work, collaborate, or decide when to speak up.
|
|
26
|
+
|
|
27
|
+
v5.0 adds six new dimensions to the agent manifest, transforming it from a static identity card into a living behavioral specification:
|
|
28
|
+
|
|
29
|
+
1. **Attention** (`AgentAttention`) — What this agent notices in the event stream
|
|
30
|
+
2. **Learning** (`AgentLearning`) — How this agent improves over time
|
|
31
|
+
3. **Context** (`AgentContext`) — What this agent contributes to shared context
|
|
32
|
+
4. **Reporting** (`AgentReporting`) — How this agent logs work and learnings
|
|
33
|
+
5. **Collaboration** (`AgentCollaboration`) — How this agent interacts with others
|
|
34
|
+
6. **Nomination** (`AgentNomination`) — When this agent speaks up in ambient mode
|
|
35
|
+
|
|
36
|
+
All six are optional on the `AgentProfile` interface for backward compatibility. Agents without these fields use sensible defaults or are treated as non-ambient (they do not participate in the observation-nomination loop).
|
|
37
|
+
|
|
38
|
+
## Attention (AgentAttention)
|
|
39
|
+
|
|
40
|
+
Covered in detail in the Attention & Scoring lesson. The attention dimension defines what the agent watches for: symbol patterns, file paths, semantic concepts, and signal types. The threshold determines sensitivity.
|
|
41
|
+
|
|
42
|
+
Default configs exist for five standard roles via `DEFAULT_ATTENTION`. For example, the security agent defaults to watching all gate symbols (`^*`), auth-related components and paths, security concepts, and gate/route signals with a low threshold of 0.4.
|
|
43
|
+
|
|
44
|
+
## Learning (AgentLearning)
|
|
45
|
+
|
|
46
|
+
The learning dimension has two layers:
|
|
47
|
+
|
|
48
|
+
**Intrinsic Learning** (`IntrinsicLearning`) — The agent's own drive to improve. This is optional for downloaded agents (they may or may not want to learn from user feedback). Four sub-sections:
|
|
49
|
+
|
|
50
|
+
- **feedback** — When to ask for assessment: after work, after recommendations, from which agents, from humans. A security agent might configure `from_agents: ['architect', 'reviewer']` to weight peer feedback.
|
|
51
|
+
- **adaptation** — How to adjust: `confidence_ema_alpha` (default 0.3) controls how quickly confidence scores move. `notebook_auto_promote` auto-promotes high-value journal entries. `pattern_extraction` extracts reusable patterns from learnings.
|
|
52
|
+
- **reflection** — When to self-reflect: on failure, on correction, on debate loss. Each trigger records a journal entry with the relevant trigger type.
|
|
53
|
+
- **calibration** — Accuracy targets: `target_accuracy` (default 0.85) is the goal. `overconfidence_alert` (default 0.15) triggers when estimated confidence exceeds actual accuracy by more than 15 points.
|
|
54
|
+
|
|
55
|
+
**Platform Learning** (`PlatformLearning`) — Mandated for all marketplace agents. `feedback_required: true` is always set. Collects `work_outcome`, `helpfulness`, and `would_use_again` metrics. Feedback flows upstream anonymized. Aggregation is configurable per-offering, per-session, or per-project.
|
|
56
|
+
|
|
57
|
+
## Context (AgentContext)
|
|
58
|
+
|
|
59
|
+
The context dimension defines what the agent contributes to the composed context and what it requires to be loaded.
|
|
60
|
+
|
|
61
|
+
**Contributions** — An array of `ContextContribution` items. Each specifies a `section` name (e.g., "Security Warnings"), inline `content` or a `content_ref` MCP resource URI, and a `priority` (high, medium, low). High-priority contributions are always included in composed context. Medium-priority contributions are included if token budget allows. Low-priority contributions are loaded on demand.
|
|
62
|
+
|
|
63
|
+
**Requirements** — An array of `ContextRequirement` items specifying files or sections the agent needs loaded before it can work effectively. A security agent might require `portal.yaml` and the "gates" section of CLAUDE.md.
|
|
64
|
+
|
|
65
|
+
## Reporting (AgentReporting)
|
|
66
|
+
|
|
67
|
+
The reporting dimension controls how the agent captures its work and learnings in the knowledge streams.
|
|
68
|
+
|
|
69
|
+
**Work Log Config** (`WorkLogConfig`):
|
|
70
|
+
- `auto_record` — Automatically create work log entries when work completes
|
|
71
|
+
- `structure` — Which structured fields to include: `task_ref`, `files_modified`, `symbols_touched`, `next_steps`, `blockers`
|
|
72
|
+
- `destination` — Always `'work-log'`
|
|
73
|
+
|
|
74
|
+
**Learning Journal Config** (`LearningJournalConfig`):
|
|
75
|
+
- `auto_record` — Automatically record learning moments
|
|
76
|
+
- `triggers` — Which events trigger journal entries: `correction_received`, `confidence_miss`, `pattern_discovered`
|
|
77
|
+
- `destination` — Always `'journal'` (agent-private)
|
|
78
|
+
|
|
79
|
+
## Collaboration (AgentCollaboration)
|
|
80
|
+
|
|
81
|
+
The collaboration dimension defines how the agent interacts with others in multi-agent contexts.
|
|
82
|
+
|
|
83
|
+
**Default Stance** (`CollaborationStance`) — One of five stances:
|
|
84
|
+
- `lead` — Drives decisions, sets direction (architect default)
|
|
85
|
+
- `advisory` — Offers guidance but does not drive (reviewer, security defaults)
|
|
86
|
+
- `supportive` — Follows direction, executes (builder default)
|
|
87
|
+
- `observer` — Watches but rarely acts
|
|
88
|
+
- `peer` — Equal footing with no hierarchy
|
|
89
|
+
|
|
90
|
+
**Per-Agent Relationships** — The `with` record allows overriding stance per agent. A builder might be `supportive` by default but `peer` with another builder.
|
|
91
|
+
|
|
92
|
+
**Debate Config** — Controls debate behavior: `will_challenge` (will push back), `evidence_required` (must cite specific code/patterns), `escalate_to_human` (ask human if debate does not resolve).
|
|
93
|
+
|
|
94
|
+
Default configs exist via `DEFAULT_COLLABORATION`. The architect defaults to `lead` stance with evidence-based challenging and human escalation. The builder defaults to `supportive` with `can_contradict: false` toward the architect.
|
|
95
|
+
|
|
96
|
+
## Nomination (AgentNomination)
|
|
97
|
+
|
|
98
|
+
The nomination dimension defines behavioral rules for self-nomination beyond the threshold check.
|
|
99
|
+
|
|
100
|
+
**speak_when** — Conditions for speaking up:
|
|
101
|
+
- `relevance_above` — Score threshold (default 0.6, mirrors attention threshold)
|
|
102
|
+
- `urgency` — Always speak for specific urgency types: `security_risk`, `breaking_change`, `gate_missing`, `test_failure`, `performance_risk`
|
|
103
|
+
- `asked_directly` — Always respond to direct questions (default: true)
|
|
104
|
+
|
|
105
|
+
**quiet_when** — Conditions for staying silent:
|
|
106
|
+
- `relevance_below` — Hard floor below which the agent never speaks
|
|
107
|
+
- `another_agent_handling` — Stay quiet if another agent is already addressing this
|
|
108
|
+
- `human_explicitly_excluded` — Respect human's explicit exclusion
|
|
109
|
+
|
|
110
|
+
**contribution_style** — How the agent communicates:
|
|
111
|
+
- `brief_first` — Start with a short summary, elaborate if asked
|
|
112
|
+
- `cite_sources` — Reference specific code and patterns
|
|
113
|
+
- `offer_action` — Offer concrete actions rather than just observations
|
|
114
|
+
|
|
115
|
+
## buildProfileEnrichment
|
|
116
|
+
|
|
117
|
+
The `buildProfileEnrichment` function composes all six dimensions into a prompt enrichment string for orchestration. It takes the agent profile, relevant symbols, optional notebook entries, and optional ambient context (recent decisions, journal insights, pending nominations).
|
|
118
|
+
|
|
119
|
+
The output is structured markdown with sections for: Agent Identity, Expertise on Relevant Symbols, Transferable Patterns, Relevant Notebook Entries, Attention patterns, Collaboration stance, Nomination preferences, Recent Team Decisions, Transferable Insights, and Pending Nominations.
|
|
120
|
+
|
|
121
|
+
This enrichment is injected into the agent's prompt during orchestration, giving it full awareness of its identity, capabilities, behavioral rules, and ambient context — all derived from the `.agent` file and the knowledge streams.
|